33 lines
1.0 KiB
Python
33 lines
1.0 KiB
Python
|
from flask import Blueprint, request, flash, session, redirect, url_for
|
||
|
|
||
|
import time
|
||
|
from api import Client
|
||
|
from utils import admin_required
|
||
|
|
||
|
api = Blueprint("api", __name__, url_prefix="/api")
|
||
|
|
||
|
|
||
|
@api.route("/add_torrent", methods=["POST"])
|
||
|
@admin_required
|
||
|
def add_torrent():
|
||
|
category = request.form.get("category")
|
||
|
c = Client()
|
||
|
hashes_1 = set(c.qbittorent.status().get("torrents", {}))
|
||
|
links = ""
|
||
|
count = 0
|
||
|
for link in request.form.getlist("torrent[]"):
|
||
|
links += link + "\n"
|
||
|
count += 1
|
||
|
c.qbittorent.add(urls=links, category=category)
|
||
|
for _ in range(10):
|
||
|
status = c.qbittorent.status().get("torrents", {})
|
||
|
hashes_2 = set(status)
|
||
|
if len(hashes_2 - hashes_1) == count:
|
||
|
break
|
||
|
time.sleep(0.5)
|
||
|
else:
|
||
|
flash("Some torrents failed to get added to QBittorrent", "waring")
|
||
|
new_torrents = sorted(hashes_2 - hashes_1)
|
||
|
session["new_torrents"] = {h: status[h] for h in new_torrents}
|
||
|
return redirect(url_for("search"))
|