diff options
| author | Bobby <[email protected]> | 2023-03-27 21:20:38 -0400 |
|---|---|---|
| committer | Bobby <[email protected]> | 2023-03-27 21:20:38 -0400 |
| commit | be50c68340ee923da97756bb5cf95b6199703c4c (patch) | |
| tree | b482826f0b76510569de07868105bef9d6cc0ca5 | |
| parent | 4054f27033a35934b87945057f3c6cd74f343db6 (diff) | |
| download | thatcomputerscientist-be50c68340ee923da97756bb5cf95b6199703c4c.tar.xz thatcomputerscientist-be50c68340ee923da97756bb5cf95b6199703c4c.zip | |
Socialify available in fun stuff
| -rw-r--r-- | blog/urls.py | 1 | ||||
| -rw-r--r-- | blog/views.py | 31 | ||||
| -rw-r--r-- | ignis/urls.py | 5 | ||||
| -rw-r--r-- | ignis/views.py | 20 | ||||
| -rw-r--r-- | templates/blog/partials/sidebar.html | 10 | ||||
| -rw-r--r-- | templates/blog/socialify.html | 103 |
6 files changed, 169 insertions, 1 deletions
diff --git a/blog/urls.py b/blog/urls.py index 1719f124..0910484a 100644 --- a/blog/urls.py +++ b/blog/urls.py @@ -19,4 +19,5 @@ urlpatterns = [ path('categories/<str:cg>', views.articles, name='category_posts'), path('~<str:username>', views.user_activity, name='user_activity'), path('policy', views.policy, name='policy'), + path('socialify', views.socialify, name='socialify'), ] diff --git a/blog/views.py b/blog/views.py index 5e0c3885..1936011d 100644 --- a/blog/views.py +++ b/blog/views.py @@ -303,3 +303,34 @@ def categories(request): def policy(request): return render(request, 'blog/site_policy.html', {'title': 'Site Policy'}) + +def socialify(request): + url = request.GET.get('url') if request.GET.get('url') else None + if url: + # convert Github URL to repo owner/name + if 'github.com' in url: + url = url.split('github.com/')[1] + url = url.split('/') + url = url[0] + '/' + url[1] + socialify_options = { + 'theme': 'Dark' if not request.GET.get('theme') else request.GET.get('theme'), + 'font': 'Inter' if not request.GET.get('font') else request.GET.get('font'), + 'description': 0 if not request.GET.get('description') else request.GET.get('description'), + 'forks': 0 if not request.GET.get('forks') else request.GET.get('forks'), + 'issues': 0 if not request.GET.get('issues') else request.GET.get('issues'), + 'language_1': 0 if not request.GET.get('language_1') else request.GET.get('language_1'), + 'language_2': 0 if not request.GET.get('language_2') else request.GET.get('language_2'), + 'name': 0 if not request.GET.get('name') else request.GET.get('name'), + 'owner': 1 if not request.GET.get('owner') else request.GET.get('owner'), + 'stargazers': 0 if not request.GET.get('stargazers') else request.GET.get('stargazers'), + 'pulls': 0 if not request.GET.get('pulls') else request.GET.get('pulls'), + 'pattern': 'Plus' if not request.GET.get('pattern') else request.GET.get('pattern'), + } + + for key, value in socialify_options.items(): + if value == 'on': + socialify_options[key] = 1 + elif value == 'off': + socialify_options[key] = 0 + + return render(request, 'blog/socialify.html', {'title': 'Socialify', 'options': socialify_options, 'url': url}) diff --git a/ignis/urls.py b/ignis/urls.py index 9cea0ad2..13cda935 100644 --- a/ignis/urls.py +++ b/ignis/urls.py @@ -9,5 +9,8 @@ urlpatterns = [ path('/image/<post_id>/<image_name>', views.get_image, name='get_image'), path('/cover/<str:repository>', views.cover_image, name='cover_image'), path('/captcha/<str:captcha_string>', views.captcha_image, name='captcha_image'), - path('/screenshot', views.get_screenshot, name='screenshot') + path('/screenshot', views.get_screenshot, name='screenshot'), + path('/socialify', views.socialify, name='socialify'), +# def socialify(request, repo, theme, font, pattern, name, description, language_1, language_2, stargazers, forks, issues, pulls): + ] diff --git a/ignis/views.py b/ignis/views.py index 965e6498..dbf01212 100644 --- a/ignis/views.py +++ b/ignis/views.py @@ -207,3 +207,23 @@ def get_screenshot(request): response['Pragma'] = 'no-cache' response['Expires'] = '0' return response + +def socialify(request): + repo = request.GET.get('repo') + theme = request.GET.get('theme') + font = request.GET.get('font') + pattern = request.GET.get('pattern') + name = request.GET.get('name') + description = request.GET.get('description') + language_1 = request.GET.get('language_1') + language_2 = request.GET.get('language_2') + stargazers = request.GET.get('stargazers') + forks = request.GET.get('forks') + issues = request.GET.get('issues') + pulls = request.GET.get('pulls') + + url = 'https://socialify.thatcomputerscientist.com/{}/png?description={}&font={}&forks={}&issues={}&language={}&language2={}&name={}&owner=1&pattern={}&pulls={}&stargazers={}&theme={}'.format(repo, description, font, forks, issues, language_1, language_2, name, pattern, pulls, stargazers, theme) + + print(url) + image = requests.get(url).content + return HttpResponse(image, content_type='image/png') diff --git a/templates/blog/partials/sidebar.html b/templates/blog/partials/sidebar.html index eb343898..dd9f8828 100644 --- a/templates/blog/partials/sidebar.html +++ b/templates/blog/partials/sidebar.html @@ -319,5 +319,15 @@ </a> </span> </li> + <li> + <span> + <img src="{% static 'images/site/icons/windows.gif' %}" alt="Socialify" border="0"> + </span> + <span> + <a href="{% url 'blog:socialify' %}"> + Socialify + </a> + </span> + </li> </ul> </div> diff --git a/templates/blog/socialify.html b/templates/blog/socialify.html new file mode 100644 index 00000000..872fdf8e --- /dev/null +++ b/templates/blog/socialify.html @@ -0,0 +1,103 @@ +{% extends 'blog/partials/base.html' %} {% block content %} +<h2 style="margin-top:0px;">Socialify</h2> +{% load static %} +{% if url %} +<p> + <img style="width: 730px;" src="{% url 'ignis:socialify' %}?repo={{ url }}&theme={{ options.theme }}&font={{ options.font }}&pattern={{ options.pattern }}&name={{ options.name }}&description={{ options.description }}&language_1={{ options.language_1 }}&language_2={{ options.language_2 }}&stargazers={{ options.stargazers }}&forks={{ options.forks }}&issues={{ options.issues }}&pulls={{ options.pulls }}" alt="Socialify" /> +</p> + +{% else %} +<p><img style="width: 730px;" src="{% url 'ignis:socialify' %}?repo=luciferreeves/thatcomputerscientist&theme={{ options.theme }}&font={{ options.font }}&pattern={{ options.pattern }}&name=1&description=1&language_1=1&language_2=1&stargazers=1&forks=1&issues=1&pulls=1" alt="Socialify" /> +</p> +{% endif %} +<br> +<p>Socialify is a image service that generates header images for your GitHub README.md files. Go ahead and try putting your GitHub repository URL in the input box below. A full React app is also available at <a href="https://socialify.thatcomputerscientist.com">https://socialify.thatcomputerscientist.com</a>. +</p> +<br> +<hr> +<br> +<form action="" method="get"> + <p> + <span><b>Repository URL:</b></span> + <span> </span> + <span> + <input style="width: 300px;" type="text" name="url" id="url" placeholder="GitHub repository URL" required value="{{ url }}" /> + </span> + </p> + <p> + <span><b>Theme:</b></span> + <span> </span> + <select name="theme" id="theme"> + <option value="Light" {% if options.theme == 'Light' %}selected{% endif %}>Light</option> + <option value="Dark" {% if options.theme == 'Dark' %}selected{% endif %}>Dark</option> + </select> + <span>     </span> + <span><b>Font:</b></span> + <span> </span> + <select name="font" id="font"> + <option value="Inter" {% if options.font == 'Inter' %}selected{% endif %}>Inter</option> + <option value="Bitter" {% if options.font == 'Bitter' %}selected{% endif %}>Bitter</option> + <option value="Raleway" {% if options.font == 'Raleway' %}selected{% endif %}>Raleway</option> + <option value="Rokkitt" {% if options.font == 'Rokkitt' %}selected{% endif %}>Rokkitt</option> + <option value="Source Code Pro" {% if options.font == 'Source Code Pro' %}selected{% endif %}>Source Code Pro</option> + <option value="Koho" {% if options.font == 'Koho' %}selected{% endif %}>Koho</option> + <option value="Jost" {% if options.font == 'Jost' %}selected{% endif %}>Jost</option> + </select> + </p> + <p> + <span><b>Background Pattern:</b></span> + <span> </span> + <select name="pattern" id="pattern"> + <option value="Signal" {% if options.pattern == 'Signal' %}selected{% endif %}>Signal</option> + <option value="Charlie Brown" {% if options.pattern == 'Charlie Brown' %}selected{% endif %}>Charlie Brown</option> + <option value="Formal Invitation" {% if options.pattern == 'Formal Invitation' %}selected{% endif %}>Formal Invitation</option> + <option value="Plus" {% if options.pattern == 'Plus' %}selected{% endif %}>Plus</option> + <option value="Circuit Board" {% if options.pattern == 'Circuit Board' %}selected{% endif %}>Circuit Board</option> + <option value="Overlapping Hexagons" {% if options.pattern == 'Overlapping Hexagons' %}selected{% endif %}>Overlapping Hexagons</option> + <option value="Brick Wall" {% if options.pattern == 'Brick Wall' %}selected{% endif %}>Brick Wall</option> + <option value="Floating Cogs" {% if options.pattern == 'Floating Cogs' %}selected{% endif %}>Floating Cogs</option> + <option value="Diagonal Stripes" {% if options.pattern == 'Diagonal Stripes' %}selected{% endif %}>Diagonal Stripes</option> + <option value="Solid" {% if options.pattern == 'Solid' %}selected{% endif %}>Solid</option> + </select> + </p> + <p> + <input type="checkbox" name="owner" id="owner" {% if options.owner %}checked{% endif %} disabled /> + <label for="owner">Show owner</label> + <span>  </span> + <input type="checkbox" name="name" id="name" {% if options.name %}checked{% endif %} /> + <label for="name">Show name</label> + <span>  </span> + <input type="checkbox" name="description" id="description" {% if options.description %}checked{% endif %} /> + <label for="description">Show description</label> + <span>  </span> + <input type="checkbox" name="language_1" id="language_1" {% if options.language_1 %}checked{% endif %} /> + <label for="language_1">Show language 1</label> + <span>  </span> + <input type="checkbox" name="language_2" id="language_2" {% if options.language_2 %}checked{% endif %} /> + <label for="language_2">Show language 2</label> + <br><br> + <input type="checkbox" name="stargazers" id="stargazers" {% if options.stargazers %}checked{% endif %} /> + <label for="stargazers">Show Stargazers</label> + <span>  </span> + <input type="checkbox" name="forks" id="forks" {% if options.forks %}checked{% endif %} /> + <label for="forks">Show forks</label> + <span>  </span> + <input type="checkbox" name="issues" id="issues" {% if options.issues %}checked{% endif %} /> + <label for="issues">Show issues</label> + <span>  </span> + <input type="checkbox" name="pulls" id="pulls" {% if options.pulls %}checked{% endif %} /> + <label for="pulls">Show pulls</label> + </p> + <p> + <input type="submit" value="Generate" class="button button-special" /> + {% if url %} + <a href=" {% url 'ignis:socialify' %}?repo={{ url }}&theme={{ options.theme }}&font={{ options.font }}&pattern={{ options.pattern }}&owner={{ options.owner }}&name={{ options.name }}&description={{ options.description }}&language_1={{ options.language_1 }}&language_2={{ options.language_2 }}&stargazers={{ options.stargazers }}&forks={{ options.forks }}&issues={{ options.issues }}&pulls={{ options.pulls }}" class="button" target="_blank">Download Image</a> + {% endif %} + </p> +</form> +{% if url %} +<p><i>For additional download options,<a href="https://socialify.thatcomputerscientist.com/{{ url }}?theme={{ options.theme }}&font={{ options.font }}&pattern={{ options.pattern }}&owner={{ options.owner }}&name={{ options.name }}&description={{ options.description }}&language_1={{ options.language_1 }}&language_2={{ options.language_2 }}&stargazers={{ options.stargazers }}&forks={{ options.forks }}&issues={{ options.issues }}&pulls={{ options.pulls }}" target="_blank">view this image on Socialify</a>.</i></p> +{% endif %} + +{% endblock %} + |
