54 lines
1.1 KiB
Python
54 lines
1.1 KiB
Python
import asyncio
|
|
from datetime import datetime
|
|
from secrets import token_hex
|
|
|
|
from flask import Flask, redirect, render_template, request, url_for
|
|
|
|
from pynyaata.bridge import search_all
|
|
from pynyaata.forms import SearchForm
|
|
from pynyaata.translations import current_lang, i18n
|
|
|
|
|
|
app = Flask(__name__)
|
|
app.config["SECRET_KEY"] = token_hex()
|
|
|
|
|
|
@app.context_processor
|
|
def utility_processor():
|
|
current_date = datetime.now()
|
|
apocalypse_left = (
|
|
datetime(current_date.year + 5 - (current_date.year % 5), 6, 4, 0, 1)
|
|
- current_date
|
|
)
|
|
|
|
return dict(
|
|
_=i18n,
|
|
current_lang=current_lang(),
|
|
search_form=SearchForm(),
|
|
apocalypse_left=apocalypse_left,
|
|
)
|
|
|
|
|
|
@app.route("/")
|
|
def index():
|
|
return render_template("index.html.j2")
|
|
|
|
|
|
@app.route("/search")
|
|
def search():
|
|
query = request.args.get("q")
|
|
if not query:
|
|
return redirect(url_for("index"))
|
|
|
|
torrents = asyncio.run(search_all(query))
|
|
|
|
return render_template("search.html.j2", torrents=torrents)
|
|
|
|
|
|
def run():
|
|
app.run("0.0.0.0")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
run()
|