From 1283fa1e42035659ba84d8990cf5aca142a6e666 Mon Sep 17 00:00:00 2001 From: Benny Date: Fri, 6 Dec 2024 17:27:19 +0000 Subject: [PATCH] add metrics (#174) --- YYeTsFE | 2 +- yyetsweb/databases/grafana.py | 7 +++++-- yyetsweb/databases/resources.py | 19 +++++++++++++++++-- yyetsweb/handlers/grafana.py | 3 ++- yyetsweb/handlers/resources.py | 4 ++++ 5 files changed, 29 insertions(+), 6 deletions(-) diff --git a/YYeTsFE b/YYeTsFE index 3c57d80ec..af2104915 160000 --- a/YYeTsFE +++ b/YYeTsFE @@ -1 +1 @@ -Subproject commit 3c57d80ec759c0b1575cf5c66c3f692ea1fa6d3d +Subproject commit af2104915f451d968c8fab907f1c3d1457b9496b diff --git a/yyetsweb/databases/grafana.py b/yyetsweb/databases/grafana.py index bb1460b85..dbff4c3b1 100644 --- a/yyetsweb/databases/grafana.py +++ b/yyetsweb/databases/grafana.py @@ -16,9 +16,12 @@ def get_grafana_data(self, date_series) -> str: class Metrics(Mongo): - def set_metrics(self, metrics_type: str): + def set_metrics(self, metrics_type: str, data: str): today = time.strftime("%Y-%m-%d", time.localtime()) - self.db["metrics"].update_one({"date": today}, {"$inc": {metrics_type: 1}}, upsert=True) + if metrics_type == "viewSubtitle": + self.db["subtitle"].find_one_and_update({"id": data}, {"$inc": {"views": 1}}) + else: + self.db["metrics"].update_one({"date": today}, {"$inc": {metrics_type: 1}}, upsert=True) def get_metrics(self, from_date: str, to_date: str) -> dict: start_int = [int(i) for i in from_date.split("-")] diff --git a/yyetsweb/databases/resources.py b/yyetsweb/databases/resources.py index acc699b04..9bfd58aa2 100644 --- a/yyetsweb/databases/resources.py +++ b/yyetsweb/databases/resources.py @@ -14,6 +14,11 @@ from databases.comment import CommentSearch +class SubtitleDownload(Mongo): + def add_download(self, _id): + self.db["subtitle"].find_one_and_update({"id": _id}, {"$inc": {"downloads": 1}}) + + class Resource(SearchEngine): def fansub_search(self, class_name: str, kw: str): class_ = globals().get(class_name) @@ -79,8 +84,18 @@ def search_resource(): data = self.db["yyets"].find( { "$or": [ - {"data.info.cnname": {"$regex": f".*{keyword}.*", "$options": "i"}}, - {"data.info.enname": {"$regex": f".*{keyword}.*", "$options": "i"}}, + { + "data.info.cnname": { + "$regex": f".*{keyword}.*", + "$options": "i", + } + }, + { + "data.info.enname": { + "$regex": f".*{keyword}.*", + "$options": "i", + } + }, { "data.info.aliasname": { "$regex": f".*{keyword}.*", diff --git a/yyetsweb/handlers/grafana.py b/yyetsweb/handlers/grafana.py index b092a87a5..a29bef823 100644 --- a/yyetsweb/handlers/grafana.py +++ b/yyetsweb/handlers/grafana.py @@ -21,8 +21,9 @@ class MetricsHandler(BaseHandler): def set_metrics(self): payload = self.json metrics_type = payload.get("type", self.get_query_argument("type", "unknown")) + _id = payload.get("id") - self.instance.set_metrics(metrics_type) + self.instance.set_metrics(metrics_type, _id) self.set_status(HTTPStatus.CREATED) return {} diff --git a/yyetsweb/handlers/resources.py b/yyetsweb/handlers/resources.py index 5831f1c41..76e44de8a 100644 --- a/yyetsweb/handlers/resources.py +++ b/yyetsweb/handlers/resources.py @@ -13,14 +13,18 @@ class SubtitleDownloadHandler(BaseHandler): + filename = filename + @run_on_executor() def find_and_download(self): file = self.json.get("file") + _id = self.json.get("id") self.set_header("x-filename", Path(file).name) p = Path(__file__).parent.parent.joinpath("subtitle_data", file) self.set_header("Content-Type", "application/bin") try: data = p.read_bytes() + self.instance.add_download(_id) return data except FileNotFoundError: self.set_status(HTTPStatus.NOT_FOUND)