Ben před 11 měsíci
rodič
revize
d19b530a8c
3 změnil soubory, kde provedl 13 přidání a 16 odebrání
  1. binární
      __pycache__/app.cpython-311.pyc
  2. 12 14
      app.py
  3. 1 2
      requirements.txt

binární
__pycache__/app.cpython-311.pyc


+ 12 - 14
app.py

@@ -1,21 +1,27 @@
 import logging
 
+import cachetools
 import yt_dlp
 from flask import Flask, request
-from tinydb import TinyDB
 
 logging.basicConfig(format='%(asctime)s [%(levelname)s] %(filename)s:%(lineno)d %(message)s',
                     datefmt='%Y-%m-%d %H:%M:%S', level=logging.INFO)
 
 app = Flask(__name__)
 
-db = TinyDB('data.json')
-
 
 def get_key(url: str) -> str:
     return f"v2:{url}"
 
 
+@cachetools.cached(cache=cachetools.TTLCache(maxsize=100000, ttl=60 * 5))
+def fetch_info(url):
+    logging.info(f"fetching: {url}")
+    with yt_dlp.YoutubeDL({"flat-playlist": True, "extract_flat": "flat-playlist"}) as ydl:
+        info = ydl.extract_info(url, download=False)
+        return info
+
+
 def convert_dto(info):
     thumbnails = []
     for item in info.get("thumbnails", []):
@@ -74,18 +80,10 @@ def convert_dto(info):
 
 @app.route("/extract", methods=["GET", "POST"])
 def extract():
-    url = request.json.get("url")
+    url: str = request.json.get("url")
     logging.info(f"url: {url}")
-    key = get_key(url=url)
-    result = db.search(lambda x: x.get("key") == key)
-    if result:
-        logging.info("find from data.json, so return")
-        if result[0].get("result"):
-            return convert_dto(info=result[0].get("info"))
-    with yt_dlp.YoutubeDL({"flat-playlist": True, "extract_flat": "flat-playlist"}) as ydl:
-        info = ydl.extract_info(url, download=False)
-        db.insert({"info": info, "key": key})
-        return convert_dto(info=info)
+    info = fetch_info(url=url)
+    return convert_dto(info=info)
 
 
 if __name__ == '__main__':

+ 1 - 2
requirements.txt

@@ -2,5 +2,4 @@ beautifulsoup4==4.12.2
 Flask==2.3.2
 Flask_Cors==3.0.10
 Requests==2.31.0
-yt_dlp==2024.4.9
-tinydb==4.8.0
+yt_dlp==2024.4.9