From 5acc1ea718c882914a1e2ef59000c491f05347d6 Mon Sep 17 00:00:00 2001 From: Simon Date: Thu, 31 Aug 2023 21:31:47 +0700 Subject: [PATCH] add all duration aggs --- tubearchivist/api/src/aggs.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/tubearchivist/api/src/aggs.py b/tubearchivist/api/src/aggs.py index f8724df..f663d13 100644 --- a/tubearchivist/api/src/aggs.py +++ b/tubearchivist/api/src/aggs.py @@ -103,6 +103,8 @@ class WatchProgress(AggBase): }, }, }, + "total_duration": {"sum": {"field": "player.duration"}}, + "total_vids": {"value_count": {"field": "_index"}}, }, } @@ -112,13 +114,24 @@ class WatchProgress(AggBase): buckets = aggregations[self.name]["buckets"] response = {} + all_duration = int(aggregations["total_duration"].get("value")) + response.update( + { + "all": { + "duration": all_duration, + "duration_str": DurationConverter().get_str(all_duration), + "items": aggregations["total_vids"].get("value"), + } + } + ) + for bucket in buckets: - response.update(self._build_bucket(bucket)) + response.update(self._build_bucket(bucket, all_duration)) return response @staticmethod - def _build_bucket(bucket): + def _build_bucket(bucket, all_duration): """parse bucket""" duration = int(bucket["watch_docs"]["duration"]["value"]) @@ -133,6 +146,7 @@ class WatchProgress(AggBase): key: { "duration": duration, "duration_str": duration_str, + "progress": duration / all_duration if all_duration else 0, "items": items, } }