flickr-mail/main.py

71 lines
1.6 KiB
Python
Executable file

#!/usr/bin/python3
import sys
from urllib.parse import unquote
import flask
app = flask.Flask(__name__)
app.debug = True
enwiki = "en.wikipedia.org/wiki/"
@app.route("/")
def start() -> str:
"""Start form."""
return flask.render_template("wikipedia_url.html")
@app.route("/flickr")
def flickr_search() -> str:
"""Search flickr."""
wikipedia_url = flask.request.args["wikipedia"]
start = wikipedia_url.find(enwiki) + len(enwiki)
name = unquote(wikipedia_url[start:]).replace("_", " ")
return flask.render_template(
"flickr_search.html", name=name, wikipedia_url=wikipedia_url
)
@app.route("/message")
def show_message() -> str:
"""Show message."""
flickr_url = flask.request.args["flickr"]
wikipedia_url = flask.request.args["wikipedia"]
start = wikipedia_url.find(enwiki) + len(enwiki)
wiki_part1 = wikipedia_url[:start]
if len(sys.argv) > 4:
name = sys.argv[4]
else:
wiki_part2 = unquote(wikipedia_url[start:])
name = wiki_part2
if "_(" in name:
name = name[: name.find("_(")]
name = name.replace("_", " ")
if "/in/" in flickr_url:
flickr_url = flickr_url[: flickr_url.find("/in/")]
msg = flask.render_template(
"message.jinja",
flickr_url=flickr_url,
wikipedia_url=wikipedia_url,
name=name,
wiki_part1=wiki_part1,
wiki_part2=wiki_part2,
)
subject = f"Request to use your photo of {name} on Wikipedia"
lines = msg.split("\n\n")
return flask.render_template("show_message.html", subject=subject, lines=lines)
if __name__ == "__main__":
app.run(host="0.0.0.0")