diff --git a/tubearchivist/home/templates/home/channel_id.html b/tubearchivist/home/templates/home/channel_id.html index c6f72bf..56b163e 100644 --- a/tubearchivist/home/templates/home/channel_id.html +++ b/tubearchivist/home/templates/home/channel_id.html @@ -34,6 +34,11 @@ false {% endif %}

+

Channel id: {{ channel_info.channel_id }}

+ +
+ Delete {{ channel_info.channel_name }} including all videos? +
@@ -47,11 +52,6 @@

Total Videos archived: {{ max_hits }}

Watched:

{% endif %} -

Channel id: {{ channel_info.channel_id }}

- -
- Delete {{ channel_info.channel_name }} including all videos? -
@@ -63,12 +63,49 @@ {% endif %} -
- grid view - list view -
-

Videos

+
+

Sort by {{ sort_by }} + + +

+
+
+
+ Hide watched videos: +
+ + + +
+
+
+ grid view + list view +
+
{% if videos %} {% for video in videos %} diff --git a/tubearchivist/home/views.py b/tubearchivist/home/views.py index ecf7e9b..9b362c3 100644 --- a/tubearchivist/home/views.py +++ b/tubearchivist/home/views.py @@ -302,27 +302,47 @@ class ChannelIdView(View): def get(self, request, channel_id_detail): """get method""" - es_url, colors, view_style = self.read_config() - context = self.get_channel_videos(request, channel_id_detail, es_url) - context.update({"colors": colors, "view_style": view_style}) + # es_url, colors, view_style = self.read_config() + view_config = self.read_config() + context = self.get_channel_videos( + request, channel_id_detail, view_config + ) + context.update(view_config) return render(request, "home/channel_id.html", context) @staticmethod def read_config(): """read config file""" config = AppConfig().config - es_url = config["application"]["es_url"] - colors = config["application"]["colors"] - view_style = config["default_view"]["home"] - return es_url, colors, view_style - def get_channel_videos(self, request, channel_id_detail, es_url): + sort_by = RedisArchivist().get_message("sort_by") + if sort_by == {"status": False}: + sort_by = "published" + sort_order = RedisArchivist().get_message("sort_order") + if sort_order == {"status": False}: + sort_order = "desc" + hide_watched = RedisArchivist().get_message("hide_watched") + + view_config = { + "colors": config["application"]["colors"], + "es_url": config["application"]["es_url"], + "view_style": config["default_view"]["home"], + "sort_by": sort_by, + "sort_order": sort_order, + "hide_watched": hide_watched, + } + # return es_url, colors, view_style + return view_config + + def get_channel_videos(self, request, channel_id_detail, view_config): """get channel from video index""" page_get = int(request.GET.get("page", 0)) pagination_handler = Pagination(page_get) # get data - url = es_url + "/ta_video/_search" - data = self.build_data(pagination_handler, channel_id_detail) + url = view_config["es_url"] + "/ta_video/_search" + data = self.build_data( + pagination_handler, channel_id_detail, view_config + ) search = SearchHandler(url, data) videos_hits = search.get_data() max_hits = search.max_hits @@ -334,7 +354,7 @@ class ChannelIdView(View): else: # get details from channel index when when no hits channel_info, channel_name = self.get_channel_info( - channel_id_detail, es_url + channel_id_detail, view_config["es_url"] ) videos_hits = False pagination = False @@ -350,21 +370,43 @@ class ChannelIdView(View): return context @staticmethod - def build_data(pagination_handler, channel_id_detail): + def build_data(pagination_handler, channel_id_detail, view_config): """build data dict for search""" - page_size = pagination_handler.pagination["page_size"] - page_from = pagination_handler.pagination["page_from"] + sort_by = view_config["sort_by"] + sort_order = view_config["sort_order"] + + # overwrite sort_by to match key + if sort_by == "views": + sort_by = "stats.view_count" + elif sort_by == "likes": + sort_by = "stats.like_count" + elif sort_by == "downloaded": + sort_by = "date_downloaded" + data = { - "size": page_size, - "from": page_from, + "size": pagination_handler.pagination["page_size"], + "from": pagination_handler.pagination["page_from"], "query": { - "term": {"channel.channel_id": {"value": channel_id_detail}} + "bool": { + "must": [ + { + "term": { + "channel.channel_id": { + "value": channel_id_detail + } + } + } + ] + } }, - "sort": [ - {"published": {"order": "desc"}}, - {"date_downloaded": {"order": "desc"}}, - ], + "sort": [{sort_by: {"order": sort_order}}], } + if view_config["hide_watched"]: + to_append = {"term": {"player.watched": {"value": False}}} + data["query"]["bool"]["must"].append(to_append) + + print(data) + return data @staticmethod