Add option to see animated emojos

Add option to see unlisted emojos
This commit is contained in:
wuyingren 2019-07-15 18:50:57 +08:00
parent 59b2970428
commit a2b48580e3
No known key found for this signature in database
GPG Key ID: 3208310458103B10
4 changed files with 180 additions and 13 deletions

133
.gitignore vendored
View File

@ -1,2 +1,133 @@
__pycache__ # Created by https://www.gitignore.io/api/python
# Edit at https://www.gitignore.io/?templates=python
### Python ###
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# End of https://www.gitignore.io/api/python
*.swp *.swp
.vscode/

View File

@ -25,13 +25,26 @@ app = Flask(__name__)
@app.route('/<domain>') @app.route('/<domain>')
def emojo(domain): def emojo(domain):
if request.args.get('filter_all','') == 'on':
filter_all = True
else:
filter_all = False
if request.args.get('filter_animated','') == 'on':
filter_animated = True
else:
filter_animated = False
try: try:
url = urllib.parse.urlunsplit( url = urllib.parse.urlunsplit(
('https', domain, '/api/v1/custom_emojis', '', '')) ('https', domain, '/api/v1/custom_emojis', '', ''))
if filter_all:
emojo = sorted(requests.get(url).json(),
key=operator.itemgetter('shortcode'))
else:
emojo = sorted(filter(lambda x: x.get('visible_in_picker', True), emojo = sorted(filter(lambda x: x.get('visible_in_picker', True),
requests.get(url).json()), requests.get(url).json()),
key=operator.itemgetter('shortcode')) key=operator.itemgetter('shortcode'))
return render_template('emojo.html', domain=domain, emojo=emojo) return render_template('emojo.html', domain=domain, emojo=emojo, filter_animated=filter_animated)
except requests.exceptions.RequestException as e: except requests.exceptions.RequestException as e:
return render_template('oh_no.html', domain=domain) return render_template('oh_no.html', domain=domain)
@ -57,7 +70,10 @@ def code():
def index(): def index():
if request.method == 'POST': if request.method == 'POST':
if 'instance' in request.form: if 'instance' in request.form:
return redirect(url_for('emojo', domain=request.form['instance'])) filter_all = request.form.get('filter_all')
filter_animated = request.form.get('filter_animated')
return redirect(url_for('emojo', domain=request.form['instance'],
filter_all=filter_all, filter_animated=filter_animated))
else: else:
return redirect(url_for('index')) return redirect(url_for('index'))
else: else:

View File

@ -6,12 +6,22 @@
click/touch to copy to clipboard click/touch to copy to clipboard
</p> </p>
<dl class="emojo"> <dl class="emojo">
{% if filter_animated %}
{% for emoj in emojo %}
<div>
<dt><img src="{{ emoj.url }}" alt=":{{ emoj.shortcode }}:"></dt>
<dd>:{{ emoj.shortcode }}:</dd>
</div>
{% endfor %}
{% else %}
{% for emoj in emojo %} {% for emoj in emojo %}
<div> <div>
<dt><img src="{{ emoj.static_url }}" alt=":{{ emoj.shortcode }}:"></dt> <dt><img src="{{ emoj.static_url }}" alt=":{{ emoj.shortcode }}:"></dt>
<dd>:{{ emoj.shortcode }}:</dd> <dd>:{{ emoj.shortcode }}:</dd>
</div> </div>
{% endfor %} {% endfor %}
{% endif %}
</dl> </dl>
{% endblock body %} {% endblock body %}
{% block script %} {% block script %}

View File

@ -3,7 +3,17 @@
{% block body %} {% block body %}
<p>get the emojos for:</p> <p>get the emojos for:</p>
<form method="POST" action=""> <form method="POST" action="">
<div>
<input type="text" name="instance" placeholder="instance.domain"> <input type="text" name="instance" placeholder="instance.domain">
</div>
<div>
<input type="checkbox" name="filter_all">
<label for="filter_all">See unlisted emojos</label>
</div>
<div>
<input type="checkbox" name="filter_animated">
<label for="filter_animated">See animated emojos</label>
</div>
<input type="submit" value="go"> <input type="submit" value="go">
</form> </form>
<p>(&ldquo;emojo&rdquo; is the semi-jokey term for custom emoji on <a href="https://joinmastodon.org">Mastodon</a>.)</p> <p>(&ldquo;emojo&rdquo; is the semi-jokey term for custom emoji on <a href="https://joinmastodon.org">Mastodon</a>.)</p>