aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBobby <[email protected]>2023-03-27 21:20:38 -0400
committerBobby <[email protected]>2023-03-27 21:20:38 -0400
commitbe50c68340ee923da97756bb5cf95b6199703c4c (patch)
treeb482826f0b76510569de07868105bef9d6cc0ca5
parent4054f27033a35934b87945057f3c6cd74f343db6 (diff)
downloadthatcomputerscientist-be50c68340ee923da97756bb5cf95b6199703c4c.tar.xz
thatcomputerscientist-be50c68340ee923da97756bb5cf95b6199703c4c.zip
Socialify available in fun stuff
-rw-r--r--blog/urls.py1
-rw-r--r--blog/views.py31
-rw-r--r--ignis/urls.py5
-rw-r--r--ignis/views.py20
-rw-r--r--templates/blog/partials/sidebar.html10
-rw-r--r--templates/blog/socialify.html103
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>&emsp;</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>&emsp;</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>&emsp;&emsp;&emsp;&emsp;&emsp;</span>
+ <span><b>Font:</b></span>
+ <span>&emsp;</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>&emsp;</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>&emsp;&emsp;</span>
+ <input type="checkbox" name="name" id="name" {% if options.name %}checked{% endif %} />
+ <label for="name">Show name</label>
+ <span>&emsp;&emsp;</span>
+ <input type="checkbox" name="description" id="description" {% if options.description %}checked{% endif %} />
+ <label for="description">Show description</label>
+ <span>&emsp;&emsp;</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>&emsp;&emsp;</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>&emsp;&emsp;</span>
+ <input type="checkbox" name="forks" id="forks" {% if options.forks %}checked{% endif %} />
+ <label for="forks">Show forks</label>
+ <span>&emsp;&emsp;</span>
+ <input type="checkbox" name="issues" id="issues" {% if options.issues %}checked{% endif %} />
+ <label for="issues">Show issues</label>
+ <span>&emsp;&emsp;</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 %}
+