From 2ebd0a3e2f6d39703cc9b6f795b2f7fe01671ee4 Mon Sep 17 00:00:00 2001 From: simon Date: Thu, 25 Nov 2021 11:52:14 +0700 Subject: [PATCH] extend unsubscribe for channels and playlists --- tubearchivist/home/src/download.py | 1 - tubearchivist/home/views.py | 30 +++++++++++++++++++++++------- tubearchivist/static/script.js | 6 +++--- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/tubearchivist/home/src/download.py b/tubearchivist/home/src/download.py index 3ed462a..7f13eec 100644 --- a/tubearchivist/home/src/download.py +++ b/tubearchivist/home/src/download.py @@ -423,7 +423,6 @@ class PlaylistSubscription: return False # update subscribed status - print(f"changing status of {playlist_id} to {subscribe_status}") headers = {"Content-type": "application/json"} url = f"{es_url}/ta_playlist/_update/{playlist_id}" payload = json.dumps( diff --git a/tubearchivist/home/views.py b/tubearchivist/home/views.py index 38b118b..e05949a 100644 --- a/tubearchivist/home/views.py +++ b/tubearchivist/home/views.py @@ -27,7 +27,11 @@ from home.forms import ( VideoSearchForm, ) from home.src.config import AppConfig -from home.src.download import ChannelSubscription, PendingList +from home.src.download import ( + ChannelSubscription, + PendingList, + PlaylistSubscription, +) from home.src.helper import RedisArchivist, RedisQueue, UrlListParser from home.src.index import ( WatchState, @@ -1077,12 +1081,24 @@ class PostData: return {"success": True} def unsubscribe(self): - """unsubscribe from channel""" - channel_id_unsub = self.exec_val - print("unsubscribe from " + channel_id_unsub) - ChannelSubscription().change_subscribe( - channel_id_unsub, channel_subscribed=False - ) + """unsubscribe from channels or playlists""" + id_unsub = self.exec_val + print("unsubscribe from " + id_unsub) + to_unsub_list = UrlListParser(id_unsub).process_list() + for to_unsub in to_unsub_list: + unsub_type = to_unsub["type"] + unsub_id = to_unsub["url"] + if unsub_type == "playlist": + PlaylistSubscription().change_subscribe( + unsub_id, subscribe_status=False + ) + elif unsub_type == "channel": + ChannelSubscription().change_subscribe( + unsub_id, channel_subscribed=False + ) + else: + raise ValueError("failed to process " + id_unsub) + return {"success": True} def sort_order(self): diff --git a/tubearchivist/static/script.js b/tubearchivist/static/script.js index f3e7d39..d6c3a50 100644 --- a/tubearchivist/static/script.js +++ b/tubearchivist/static/script.js @@ -45,10 +45,10 @@ function isUnwatched(youtube_id) { document.getElementById(youtube_id).replaceWith(unseenIcon); } -function unsubscribe(channel_id) { - var payload = JSON.stringify({'unsubscribe': channel_id}); +function unsubscribe(id_unsub) { + var payload = JSON.stringify({'unsubscribe': id_unsub}); sendPost(payload); - document.getElementById(channel_id).remove(); + document.getElementById(id_unsub).remove(); } function changeView(image) {