diff options
Diffstat (limited to 'wsgi')
| -rw-r--r-- | wsgi/__init__.py | 18 | ||||
| -rw-r--r-- | wsgi/utils.py | 14 |
2 files changed, 29 insertions, 3 deletions
diff --git a/wsgi/__init__.py b/wsgi/__init__.py index d3343b0..d029c12 100644 --- a/wsgi/__init__.py +++ b/wsgi/__init__.py @@ -5,11 +5,23 @@ from components.videos import VideoTuple from flask import Flask from flask_cors import CORS +from .utils import vid_dicts_from_tuple_list, sub_info_from_dict + app = Flask(__name__) CORS(app) @app.route("/vid-from-link/<id>") def videos_from_link(id: str) -> List[Dict[str, Any]]: - sub = subscriptions.find_one({"_id": id}) - assert sub - return [VideoTuple._make(vid)._asdict() for vid in sub["videos"]] + sub_dict = subscriptions.find_one({"_id": id}) + assert sub_dict + return vid_dicts_from_tuple_list(sub_dict["videos"]) + +@app.route("/sub-info/<id>") +def sub_dict(id: str) -> Dict[str, Any]: + sub_dict = subscriptions.find_one({"_id": id}) + assert sub_dict + return sub_info_from_dict(sub_dict) + +@app.route("/subs-info") +def subs_info() -> List[Dict[str, Any]]: + return [sub_info_from_dict(sub_dict) for sub_dict in subscriptions.find()] diff --git a/wsgi/utils.py b/wsgi/utils.py new file mode 100644 index 0000000..2c9e1e5 --- /dev/null +++ b/wsgi/utils.py @@ -0,0 +1,14 @@ +from typing import Any, Dict, List +from components.subscriptions.main import Subscription +from components.subscriptions.typing import SubsDict +from components.videos import VideoTuple + +def vid_dicts_from_tuple_list(tuple_list: List[VideoTuple]) -> List[Dict[str, Any]]: + return [VideoTuple._make(vid)._asdict() for vid in tuple_list] + +def sub_info_from_dict(sub_dict: SubsDict) -> Dict[str, Any]: + return { + **sub_dict, + "videos": len(sub_dict["videos"]), + "new_vids": len(Subscription(**sub_dict).get_new_vids()), + } |
