From 2292e6506d20ae54927f9288e6902d0db69c68d6 Mon Sep 17 00:00:00 2001 From: simon Date: Mon, 4 Apr 2022 22:55:43 +0700 Subject: [PATCH 01/16] bump libraries --- tubearchivist/requirements.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tubearchivist/requirements.txt b/tubearchivist/requirements.txt index 409ebe5..b6ad2a8 100644 --- a/tubearchivist/requirements.txt +++ b/tubearchivist/requirements.txt @@ -1,10 +1,10 @@ beautifulsoup4==4.10.0 -celery==5.2.3 +celery==5.2.5 Django==4.0.3 django-cors-headers==3.11.0 djangorestframework==3.13.1 -Pillow==9.0.1 -redis==4.2.1 +Pillow==9.1.0 +redis==4.2.2 requests==2.27.1 ryd-client==0.0.3 uWSGI==2.0.20 From 77228ccb65b6a102c610603fee8e73bbf4ec0d63 Mon Sep 17 00:00:00 2001 From: simon Date: Mon, 4 Apr 2022 23:08:44 +0700 Subject: [PATCH 02/16] implement basic sponsblock indexing, #119 --- tubearchivist/home/config.json | 3 ++- tubearchivist/home/src/frontend/forms.py | 9 +++++++++ tubearchivist/home/src/index/video.py | 15 +++++++++++++++ tubearchivist/home/templates/home/settings.html | 5 +++++ 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/tubearchivist/home/config.json b/tubearchivist/home/config.json index 1b6000e..edb6356 100644 --- a/tubearchivist/home/config.json +++ b/tubearchivist/home/config.json @@ -27,7 +27,8 @@ "subtitle_source": false, "subtitle_index": false, "throttledratelimit": false, - "integrate_ryd": false + "integrate_ryd": false, + "integrate_sponsorblock": false }, "application": { "app_root": "/app", diff --git a/tubearchivist/home/src/frontend/forms.py b/tubearchivist/home/src/frontend/forms.py index c4ac817..53ef284 100644 --- a/tubearchivist/home/src/frontend/forms.py +++ b/tubearchivist/home/src/frontend/forms.py @@ -62,6 +62,12 @@ class ApplicationSettingsForm(forms.Form): ("1", "enable ryd integration"), ] + SP_CHOICES = [ + ("", "-- change sponsorblock integrations"), + ("0", "disable sponsorblock integration"), + ("1", "enable sponsorblock integration"), + ] + CAST_CHOICES = [ ("", "-- change Cast integration --"), ("0", "disable Cast"), @@ -103,6 +109,9 @@ class ApplicationSettingsForm(forms.Form): downloads_integrate_ryd = forms.ChoiceField( widget=forms.Select, choices=RYD_CHOICES, required=False ) + downloads_integrate_sponsorblock = forms.ChoiceField( + widget=forms.Select, choices=SP_CHOICES, required=False + ) application_enable_cast = forms.ChoiceField( widget=forms.Select, choices=CAST_CHOICES, required=False ) diff --git a/tubearchivist/home/src/index/video.py b/tubearchivist/home/src/index/video.py index 1dafb7b..bac9e30 100644 --- a/tubearchivist/home/src/index/video.py +++ b/tubearchivist/home/src/index/video.py @@ -306,6 +306,9 @@ class YoutubeVideo(YouTubeItem, YoutubeSubtitle): if self.config["downloads"]["integrate_ryd"]: self._get_ryd_stats() + if self.config["downloads"]["integrate_sponsorblock"]: + self._get_sponsorblock() + return def _process_youtube_meta(self): @@ -447,6 +450,18 @@ class YoutubeVideo(YouTubeItem, YoutubeSubtitle): return True + def _get_sponsorblock(self): + """get optional sponsorblock timestamps from sponsor.ajay.app""" + api = "https://sponsor.ajay.app/api" + url = f"{api}/skipSegments?videoID={self.youtube_id}" + print(f"{self.youtube_id}: get sponsorblock timestamps") + response = requests.get(url) + if not response.ok: + print(f"{self.youtube_id}: failed to get sponsorblock data") + return + + self.json_data["sponsorblock"] = response.json() + def check_subtitles(self): """optionally add subtitles""" handler = YoutubeSubtitle(self) diff --git a/tubearchivist/home/templates/home/settings.html b/tubearchivist/home/templates/home/settings.html index 740ca40..e4d9534 100644 --- a/tubearchivist/home/templates/home/settings.html +++ b/tubearchivist/home/templates/home/settings.html @@ -128,6 +128,11 @@ Before activating that, make sure you have a scraping sleep interval of at least 3 secs set to avoid ratelimiting issues.
{{ app_form.downloads_integrate_ryd }} +
+

Integrate with SponsorBlock to get sponsored timestamps: {{ config.downloads.integrate_sponsorblock }}

+ Before activating that, make sure you have a scraping sleep interval of at least 3 secs set to avoid ratelimiting issues.
+ {{ app_form.downloads_integrate_sponsorblock }} +

Current Cast integration: {{ config.application.enable_cast }}

Enabling Cast will load an additional JS library from Google. HTTPS and a supported browser are required for this integration.
From 00750500a181fbdbabf68d9cdf8bec528a0498d9 Mon Sep 17 00:00:00 2001 From: crocs <34723037+pairofcrocs@users.noreply.github.com> Date: Mon, 4 Apr 2022 11:16:24 -0500 Subject: [PATCH 03/16] Add files via upload --- docs/assets/TubeArchivist-ES.png | Bin 0 -> 59730 bytes docs/assets/TubeArchivist-RedisJSON.png | Bin 0 -> 48982 bytes docs/assets/TubeArchivist.png | Bin 0 -> 70347 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/assets/TubeArchivist-ES.png create mode 100644 docs/assets/TubeArchivist-RedisJSON.png create mode 100644 docs/assets/TubeArchivist.png diff --git a/docs/assets/TubeArchivist-ES.png b/docs/assets/TubeArchivist-ES.png new file mode 100644 index 0000000000000000000000000000000000000000..ae8f65676e03e9badf12180297c8938fc62d983c GIT binary patch literal 59730 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 LZfm|*w|V|AMHfO= literal 0 HcmV?d00001 diff --git a/docs/assets/TubeArchivist-RedisJSON.png b/docs/assets/TubeArchivist-RedisJSON.png new file mode 100644 index 0000000000000000000000000000000000000000..c86c37ac96bae2d23fcaa95e72363004678a3c04 GIT binary patch literal 48982 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

VcQHw-2of=%65Li8S_CsBkxMkf8xX?kowbM zS>cN&9%@sctS=V{MbB38E}j*n7*F6nuHsm4r1*%@^*Ag2vN3>o#*AsM>wC*rMIl{k zdo@dt{+&LoH7z76rBsg>M>R;}_%?_@3ntny=Ae3XQ=ry1pY+ME z+HIi1dvaN|ACR`^FD$I<&0QJ19b!NAsVpl#t7a2av=hak{|Rla-d6UOccyaXz!s_| zbgYW+rsSLR{7$*DoaUr#|9a?C|H?;o(+uT;9l11G^fIlQKRUzYO4oJb054|_aSoof zN#6}lm250BNb9*$0d-q^=Q7eU=fY?*Ny#1G)<-HCoyI8u%^;cnuWZldFITwEQf@P- z3OU9EaK#}vON^LS{ue-Ue%k1ElIm3w)#&RkeO z^OKHKbYny9-i|oi_hrYw>m+|=A-}@O8G>hDdrcGd;8AoKU!!jG-C(^15}Wv z`}xfc*04m60!M(x$3DKpZf9=5c58X8&z5a%{5N*SxO)l7mKKGF34>Bkr0Z~GcqA`uh>IorwZ#&6oB9!|>)YjZC6T|`# zg+NS9%8kYX0p@aARa-f$*^`6~@er?sR$k0$#K*3-ji2_-lh-}RJtG2N5?8%5`B7j| zaq^%sbZc-ZHgpB(L^?hjyZpjTa_OL=v8fI?!ka28e~-M2J1;(%?lP|*DAA?q-?(C( z$)~8K?=JasmN+{vNM(TM{h9etO6~p zyJizEECgz;N{?S?5#UEamoL*_sRloWKsC3Q-f7NM$|ao5>gN^q5NVL0TL<6X`Ro}E zJj2FzlzBOSZS>Z@x=f-}l|NLzDv4?aH1(7fq{uj$l^W`m5&M-z4{i}yOZAF@V(8cx zL}a!KCYa|e0)v;RQ!DNvEqq1V%o^ah}-=D)8rpaSpWR*;yYUURqV&uj?~{1$7qsZ z!xDn=BKI9bjZM+4hI=6zktZ5x0!dOz{FvwU7q{uBW5Wg!sXSsIZNkm4k|u3`tS$;W z*Mn*Z8zH+H(mX67}8?IlT(%Z$43Xxtlw47qu+V5#FG9{mOIXLoHHgyBZ*ljNMZ zFEk`0x4d%}+ga7Y#&-8;272P+bqT}b;KTl_acp}~z8iN_CCQ@Cpz&`*<~CWrP)x5> z-G@Ry1YgML|FY>ER;C)53)05~XtbXMbjcoeuPrdvTzlK2PRwaJr)q54c~?BRL@Dce z;jTP3;r8V4IZ~-Q6dVCC$C>*vF7iPuV_JDL{4#zQZgON}Yn_4~W3`xQb;iX`s~XC7 z;{|gU{7iMPN>F3CBJAyR_A=%AVozm@syf^+s3w>wz&e6uIy@1Ls&Ou#YRs|oq4{aM zequq|c<)ki6iFADCy(EEP9u?Ema1WlswFO6pfc&oTm%qg&TTC69Gf67Rbn%Jqra{1 z%|Cpvn#Xv&rPJG7(ij0tPVb_zb45xl7&qWMt;pD9)xGf0pC>lgTesvp;I{V*uQFFw zw^W%;m)T8Ka}(V8_z?d6!bH*fd3#V|!5@*Z&Msd}M9K_o%+mB%JXZ0IO zn&f*fh8)b~vwrpE^S`w1@yCLDS(K&%bH0bSk)KE2ZsMi0+`?#W26U3;eW6F{HtyYb{yzvde0 z(Z5O6--4{HNaG|S+z{p{5MN3Di1cQbLs&KKeLKY1jSxk}O)9HpJKAezYH_VRwe84n vSXOiCC@iz=zq5G%KTlf!f8HTeo2eRJSsy(Vd)M{oooK7;KPh|sEaHCvIs%bx literal 0 HcmV?d00001 diff --git a/docs/assets/TubeArchivist.png b/docs/assets/TubeArchivist.png new file mode 100644 index 0000000000000000000000000000000000000000..20c61d7b655ec4c59cb26619ba5ab934f53f3baf GIT binary patch literal 70347 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%0DacycYQ~b8gb?j(m@11!#DL5q)*>wmP4|Ou6A0Y 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 Y@}#3rZ-&tS4)4!Ybe@(yv3~Pk0QCI_U;qFB literal 0 HcmV?d00001 From 71c441d871e3d1c6f541ef3a632350592869b233 Mon Sep 17 00:00:00 2001 From: simon Date: Mon, 4 Apr 2022 23:24:51 +0700 Subject: [PATCH 04/16] better error message on sponsorblock fail --- tubearchivist/home/src/index/video.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tubearchivist/home/src/index/video.py b/tubearchivist/home/src/index/video.py index bac9e30..559ad2c 100644 --- a/tubearchivist/home/src/index/video.py +++ b/tubearchivist/home/src/index/video.py @@ -457,7 +457,7 @@ class YoutubeVideo(YouTubeItem, YoutubeSubtitle): print(f"{self.youtube_id}: get sponsorblock timestamps") response = requests.get(url) if not response.ok: - print(f"{self.youtube_id}: failed to get sponsorblock data") + print(f"{self.youtube_id}: sponsorblock failed: {response.text}") return self.json_data["sponsorblock"] = response.json() From 29f8e148da804bd95091254fb264619bc3069f17 Mon Sep 17 00:00:00 2001 From: simon Date: Mon, 4 Apr 2022 22:55:43 +0700 Subject: [PATCH 05/16] bump libraries --- tubearchivist/requirements.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tubearchivist/requirements.txt b/tubearchivist/requirements.txt index 409ebe5..b6ad2a8 100644 --- a/tubearchivist/requirements.txt +++ b/tubearchivist/requirements.txt @@ -1,10 +1,10 @@ beautifulsoup4==4.10.0 -celery==5.2.3 +celery==5.2.5 Django==4.0.3 django-cors-headers==3.11.0 djangorestframework==3.13.1 -Pillow==9.0.1 -redis==4.2.1 +Pillow==9.1.0 +redis==4.2.2 requests==2.27.1 ryd-client==0.0.3 uWSGI==2.0.20 From 730d12212f0c5f0f26d8cacde7487b0751ad890d Mon Sep 17 00:00:00 2001 From: simon Date: Mon, 4 Apr 2022 23:08:44 +0700 Subject: [PATCH 06/16] implement basic sponsblock indexing, #119 --- tubearchivist/home/config.json | 3 ++- tubearchivist/home/src/frontend/forms.py | 9 +++++++++ tubearchivist/home/src/index/video.py | 15 +++++++++++++++ tubearchivist/home/templates/home/settings.html | 5 +++++ 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/tubearchivist/home/config.json b/tubearchivist/home/config.json index 1b6000e..edb6356 100644 --- a/tubearchivist/home/config.json +++ b/tubearchivist/home/config.json @@ -27,7 +27,8 @@ "subtitle_source": false, "subtitle_index": false, "throttledratelimit": false, - "integrate_ryd": false + "integrate_ryd": false, + "integrate_sponsorblock": false }, "application": { "app_root": "/app", diff --git a/tubearchivist/home/src/frontend/forms.py b/tubearchivist/home/src/frontend/forms.py index c4ac817..53ef284 100644 --- a/tubearchivist/home/src/frontend/forms.py +++ b/tubearchivist/home/src/frontend/forms.py @@ -62,6 +62,12 @@ class ApplicationSettingsForm(forms.Form): ("1", "enable ryd integration"), ] + SP_CHOICES = [ + ("", "-- change sponsorblock integrations"), + ("0", "disable sponsorblock integration"), + ("1", "enable sponsorblock integration"), + ] + CAST_CHOICES = [ ("", "-- change Cast integration --"), ("0", "disable Cast"), @@ -103,6 +109,9 @@ class ApplicationSettingsForm(forms.Form): downloads_integrate_ryd = forms.ChoiceField( widget=forms.Select, choices=RYD_CHOICES, required=False ) + downloads_integrate_sponsorblock = forms.ChoiceField( + widget=forms.Select, choices=SP_CHOICES, required=False + ) application_enable_cast = forms.ChoiceField( widget=forms.Select, choices=CAST_CHOICES, required=False ) diff --git a/tubearchivist/home/src/index/video.py b/tubearchivist/home/src/index/video.py index 1dafb7b..bac9e30 100644 --- a/tubearchivist/home/src/index/video.py +++ b/tubearchivist/home/src/index/video.py @@ -306,6 +306,9 @@ class YoutubeVideo(YouTubeItem, YoutubeSubtitle): if self.config["downloads"]["integrate_ryd"]: self._get_ryd_stats() + if self.config["downloads"]["integrate_sponsorblock"]: + self._get_sponsorblock() + return def _process_youtube_meta(self): @@ -447,6 +450,18 @@ class YoutubeVideo(YouTubeItem, YoutubeSubtitle): return True + def _get_sponsorblock(self): + """get optional sponsorblock timestamps from sponsor.ajay.app""" + api = "https://sponsor.ajay.app/api" + url = f"{api}/skipSegments?videoID={self.youtube_id}" + print(f"{self.youtube_id}: get sponsorblock timestamps") + response = requests.get(url) + if not response.ok: + print(f"{self.youtube_id}: failed to get sponsorblock data") + return + + self.json_data["sponsorblock"] = response.json() + def check_subtitles(self): """optionally add subtitles""" handler = YoutubeSubtitle(self) diff --git a/tubearchivist/home/templates/home/settings.html b/tubearchivist/home/templates/home/settings.html index 740ca40..e4d9534 100644 --- a/tubearchivist/home/templates/home/settings.html +++ b/tubearchivist/home/templates/home/settings.html @@ -128,6 +128,11 @@ Before activating that, make sure you have a scraping sleep interval of at least 3 secs set to avoid ratelimiting issues.
{{ app_form.downloads_integrate_ryd }}

+
+

Integrate with SponsorBlock to get sponsored timestamps: {{ config.downloads.integrate_sponsorblock }}

+ Before activating that, make sure you have a scraping sleep interval of at least 3 secs set to avoid ratelimiting issues.
+ {{ app_form.downloads_integrate_sponsorblock }} +

Current Cast integration: {{ config.application.enable_cast }}

Enabling Cast will load an additional JS library from Google. HTTPS and a supported browser are required for this integration.
From a8b62e5cdc1bccc0da08b25af9cc76a8d55c902a Mon Sep 17 00:00:00 2001 From: simon Date: Mon, 4 Apr 2022 23:24:51 +0700 Subject: [PATCH 07/16] better error message on sponsorblock fail --- tubearchivist/home/src/index/video.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tubearchivist/home/src/index/video.py b/tubearchivist/home/src/index/video.py index bac9e30..559ad2c 100644 --- a/tubearchivist/home/src/index/video.py +++ b/tubearchivist/home/src/index/video.py @@ -457,7 +457,7 @@ class YoutubeVideo(YouTubeItem, YoutubeSubtitle): print(f"{self.youtube_id}: get sponsorblock timestamps") response = requests.get(url) if not response.ok: - print(f"{self.youtube_id}: failed to get sponsorblock data") + print(f"{self.youtube_id}: sponsorblock failed: {response.text}") return self.json_data["sponsorblock"] = response.json() From e404bac7c3b9d5790b0cd49bbc7d21fdf0f8b4a6 Mon Sep 17 00:00:00 2001 From: simon Date: Tue, 5 Apr 2022 18:35:06 +0700 Subject: [PATCH 08/16] bump celery --- tubearchivist/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tubearchivist/requirements.txt b/tubearchivist/requirements.txt index b6ad2a8..af75bb3 100644 --- a/tubearchivist/requirements.txt +++ b/tubearchivist/requirements.txt @@ -1,5 +1,5 @@ beautifulsoup4==4.10.0 -celery==5.2.5 +celery==5.2.6 Django==4.0.3 django-cors-headers==3.11.0 djangorestframework==3.13.1 From 1ac92254adaa2c7cacfbb928fd6da2b099e42b02 Mon Sep 17 00:00:00 2001 From: simon Date: Tue, 5 Apr 2022 18:43:15 +0700 Subject: [PATCH 09/16] add global vars for version and url --- tubearchivist/config/settings.py | 4 ++++ tubearchivist/home/templates/home/base.html | 2 +- tubearchivist/home/views.py | 16 +++++++++++++--- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/tubearchivist/config/settings.py b/tubearchivist/config/settings.py index 5447788..251ad5c 100644 --- a/tubearchivist/config/settings.py +++ b/tubearchivist/config/settings.py @@ -151,3 +151,7 @@ CORS_ALLOWED_ORIGIN_REGEXES = [r"moz-extension://*", r"chrome-extension://*"] CORS_ALLOW_HEADERS = list(default_headers) + [ "mode", ] + +# TA application settings +TA_UPSTREAM = "https://github.com/bbilly1/tubearchivist" +TA_VERSION = "v0.1.3" diff --git a/tubearchivist/home/templates/home/base.html b/tubearchivist/home/templates/home/base.html index f2a1765..ceb35d5 100644 --- a/tubearchivist/home/templates/home/base.html +++ b/tubearchivist/home/templates/home/base.html @@ -132,7 +132,7 @@
diff --git a/tubearchivist/home/views.py b/tubearchivist/home/views.py index d8c34ea..19d1cfe 100644 --- a/tubearchivist/home/views.py +++ b/tubearchivist/home/views.py @@ -9,6 +9,7 @@ import urllib.parse from time import sleep from django import forms +from django.conf import settings from django.contrib.auth import login from django.contrib.auth.forms import AuthenticationForm from django.http import JsonResponse @@ -122,6 +123,7 @@ class ArchivistViewConfig(View): "hide_watched": self._get_hide_watched(), "show_ignored_only": self._get_show_ignore_only(), "show_subed_only": self._get_show_subed_only(), + "version": settings.TA_VERSION, } @@ -329,8 +331,11 @@ class AboutView(View): @staticmethod def get(request): """handle http get""" - colors = AppConfig(request.user.id).colors - context = {"title": "About", "colors": colors} + context = { + "title": "About", + "colors": AppConfig(request.user.id).colors, + "version": settings.TA_VERSION, + } return render(request, "home/about.html", context) @@ -690,6 +695,7 @@ class VideoView(View): "title": video_title, "colors": colors, "cast": cast, + "version": settings.TA_VERSION, } return render(request, "home/video.html", context) @@ -746,7 +752,10 @@ class SearchView(ArchivistResultsView): all_styles = self.get_all_view_styles() self.context.update({"all_styles": all_styles}) self.context.update( - {"search_form": MultiSearchForm(initial=all_styles)} + { + "search_form": MultiSearchForm(initial=all_styles), + "version": settings.TA_VERSION, + } ) return render(request, "home/search.html", self.context) @@ -778,6 +787,7 @@ class SettingsView(View): "user_form": user_form, "app_form": app_form, "scheduler_form": scheduler_form, + "version": settings.TA_VERSION, } return render(request, "home/settings.html", context) From 738b083a7fbc686b8aa124f14fff41097cc52ced Mon Sep 17 00:00:00 2001 From: simon Date: Tue, 5 Apr 2022 21:50:40 +0700 Subject: [PATCH 10/16] create dedicated SponsorBlock class to handle integration --- tubearchivist/home/src/index/video.py | 68 +++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 9 deletions(-) diff --git a/tubearchivist/home/src/index/video.py b/tubearchivist/home/src/index/video.py index 559ad2c..108a3b7 100644 --- a/tubearchivist/home/src/index/video.py +++ b/tubearchivist/home/src/index/video.py @@ -9,14 +9,17 @@ import os from datetime import datetime import requests +from django.conf import settings from home.src.es.connect import ElasticWrap from home.src.index import channel as ta_channel from home.src.index.generic import YouTubeItem from home.src.ta.helper import ( DurationConverter, clean_string, + randomizor, requests_headers, ) +from home.src.ta.ta_redis import RedisArchivist from ryd_client import ryd_client @@ -280,6 +283,59 @@ class SubtitleParser: return chunk_list +class SponsorBlock: + """handle sponsor block integration""" + + API = "https://sponsor.ajay.app/api" + + def __init__(self, user_id=False): + self.user_id = user_id + self.user_agent = f"{settings.TA_UPSTREAM} {settings.TA_VERSION}" + + def get_sb_id(self): + """get sponsorblock userid or generate if needed""" + if not self.user_id: + print("missing request user id") + raise ValueError + + key = f"{self.user_id}:id_sponsorblock" + sb_id = RedisArchivist().get_message(key) + if not sb_id["status"]: + sb_id = {"status": randomizor(32)} + RedisArchivist().set_message(key, sb_id, expire=False) + + return sb_id + + def get_timestamps(self, youtube_id): + """get timestamps from the API""" + url = f"{self.API}/skipSegments?videoID={youtube_id}" + headers = {"User-Agent": self.user_agent} + print(f"{youtube_id}: get sponsorblock timestamps") + response = requests.get(url, headers=headers) + if not response.ok: + print(f"{youtube_id}: sponsorblock failed: {response.text}") + return False + + return response.json() + + def post_timestamps(self, youtube_id, start_time, end_time): + """post timestamps to api""" + user_id = self.get_sb_id().get("status") + data = { + "videoID": youtube_id, + "startTime": start_time, + "endTime": end_time, + "category": "sponsor", + "userID": user_id, + "userAgent": self.user_agent, + } + url = f"{self.API}/skipSegments?videoID={youtube_id}" + print(f"post: {data}") + print(f"to: {url}") + + return {"success": True}, 200 + + class YoutubeVideo(YouTubeItem, YoutubeSubtitle): """represents a single youtube video""" @@ -452,15 +508,9 @@ class YoutubeVideo(YouTubeItem, YoutubeSubtitle): def _get_sponsorblock(self): """get optional sponsorblock timestamps from sponsor.ajay.app""" - api = "https://sponsor.ajay.app/api" - url = f"{api}/skipSegments?videoID={self.youtube_id}" - print(f"{self.youtube_id}: get sponsorblock timestamps") - response = requests.get(url) - if not response.ok: - print(f"{self.youtube_id}: sponsorblock failed: {response.text}") - return - - self.json_data["sponsorblock"] = response.json() + sponsorblock = SponsorBlock().get_timestamps(self.youtube_id) + if sponsorblock: + self.json_data["sponsorblock"] = sponsorblock def check_subtitles(self): """optionally add subtitles""" From bace7d41af3777580fc82e0bb20a67db702a79ce Mon Sep 17 00:00:00 2001 From: simon Date: Tue, 5 Apr 2022 21:51:10 +0700 Subject: [PATCH 11/16] add random string generator helper function --- tubearchivist/home/src/ta/helper.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tubearchivist/home/src/ta/helper.py b/tubearchivist/home/src/ta/helper.py index 31ba727..c572ccc 100644 --- a/tubearchivist/home/src/ta/helper.py +++ b/tubearchivist/home/src/ta/helper.py @@ -37,6 +37,12 @@ def ignore_filelist(filelist): return cleaned +def randomizor(length): + """generate random alpha numeric string""" + pool = string.digits + string.ascii_letters + return "".join(random.choice(pool) for i in range(length)) + + def requests_headers(): """build header with random user agent for requests outside of yt-dlp""" From 286b1cf9b67f2ff0080a38cd18f2286b03624e4b Mon Sep 17 00:00:00 2001 From: simon Date: Tue, 5 Apr 2022 21:51:45 +0700 Subject: [PATCH 12/16] simulate sponsorblock post request --- tubearchivist/api/urls.py | 6 ++++++ tubearchivist/api/views.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/tubearchivist/api/urls.py b/tubearchivist/api/urls.py index 8c1a5f8..0cdf11a 100644 --- a/tubearchivist/api/urls.py +++ b/tubearchivist/api/urls.py @@ -11,6 +11,7 @@ from api.views import ( VideoApiListView, VideoApiView, VideoProgressView, + VideoSponsorView, ) from django.urls import path @@ -32,6 +33,11 @@ urlpatterns = [ VideoProgressView.as_view(), name="api-video-progress", ), + path( + "video//sponsor/", + VideoSponsorView.as_view(), + name="api-video-sponsor", + ), path( "channel/", ChannelApiListView.as_view(), diff --git a/tubearchivist/api/views.py b/tubearchivist/api/views.py index bf391a9..f590d43 100644 --- a/tubearchivist/api/views.py +++ b/tubearchivist/api/views.py @@ -3,6 +3,7 @@ from api.src.search_processor import SearchProcess from home.src.download.thumbnails import ThumbManager from home.src.es.connect import ElasticWrap +from home.src.index.video import SponsorBlock from home.src.ta.config import AppConfig from home.src.ta.helper import UrlListParser from home.src.ta.ta_redis import RedisArchivist @@ -144,6 +145,35 @@ class VideoProgressView(ApiBaseView): return Response(self.response) +class VideoSponsorView(ApiBaseView): + """resolves to /api/video// + handle sponsor block integration + """ + + search_base = "ta_video/_doc/" + + def get(self, request, video_id): + """get sponsor info""" + # pylint: disable=unused-argument + + self.get_document(video_id) + sponsorblock = self.response["data"].get("sponsorblock") + + return Response(sponsorblock) + + @staticmethod + def post(request, video_id): + """post verification and timestamps""" + start_time = request.data.get("startTime") + end_time = request.data.get("endTime") + + response, status_code = SponsorBlock(request.user.id).post_timestamps( + video_id, start_time, end_time + ) + + return Response(response, status=status_code) + + class ChannelApiView(ApiBaseView): """resolves to /api/channel// GET: returns metadata dict of channel From 03dd25cff4a589a2d76ebd912a7815b09d001af8 Mon Sep 17 00:00:00 2001 From: simon Date: Tue, 5 Apr 2022 22:25:40 +0700 Subject: [PATCH 13/16] implement vote on sponsorblock segments api --- tubearchivist/api/views.py | 32 ++++++++++++++++++++++----- tubearchivist/home/src/index/video.py | 14 ++++++++++++ 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/tubearchivist/api/views.py b/tubearchivist/api/views.py index f590d43..d938b2f 100644 --- a/tubearchivist/api/views.py +++ b/tubearchivist/api/views.py @@ -146,7 +146,7 @@ class VideoProgressView(ApiBaseView): class VideoSponsorView(ApiBaseView): - """resolves to /api/video// + """resolves to /api/video//sponsor/ handle sponsor block integration """ @@ -161,17 +161,37 @@ class VideoSponsorView(ApiBaseView): return Response(sponsorblock) - @staticmethod - def post(request, video_id): + def post(self, request, video_id): """post verification and timestamps""" - start_time = request.data.get("startTime") - end_time = request.data.get("endTime") + if "segment" in request.data: + response, status_code = self._create_segment(request, video_id) + elif "vote" in request.data: + response, status_code = self._vote_on_segment(request) + return Response(response, status=status_code) + + @staticmethod + def _create_segment(request, video_id): + """create segment in API""" + start_time = request.data["segment"]["startTime"] + end_time = request.data["segment"]["endTime"] response, status_code = SponsorBlock(request.user.id).post_timestamps( video_id, start_time, end_time ) - return Response(response, status=status_code) + return response, status_code + + @staticmethod + def _vote_on_segment(request): + """validate on existing segment""" + user_id = request.user.id + uuid = request.data["vote"]["uuid"] + vote = request.data["vote"]["yourVote"] + response, status_code = SponsorBlock(user_id).vote_on_segment( + uuid, vote + ) + + return response, status_code class ChannelApiView(ApiBaseView): diff --git a/tubearchivist/home/src/index/video.py b/tubearchivist/home/src/index/video.py index 108a3b7..411b4af 100644 --- a/tubearchivist/home/src/index/video.py +++ b/tubearchivist/home/src/index/video.py @@ -335,6 +335,20 @@ class SponsorBlock: return {"success": True}, 200 + def vote_on_segment(self, uuid, vote): + """send vote on existing segment""" + user_id = self.get_sb_id().get("status") + data = { + "UUID": uuid, + "userID": user_id, + "type": vote, + } + url = f"{self.API}/api/voteOnSponsorTime" + print(f"post: {data}") + print(f"to: {url}") + + return {"success": True}, 200 + class YoutubeVideo(YouTubeItem, YoutubeSubtitle): """represents a single youtube video""" From a84e6575778fd25a346347811c84b583aff480eb Mon Sep 17 00:00:00 2001 From: simon Date: Tue, 5 Apr 2022 22:27:55 +0700 Subject: [PATCH 14/16] add documentation for sponsorblock api endpoints --- tubearchivist/api/README.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/tubearchivist/api/README.md b/tubearchivist/api/README.md index 9852208..3c019cd 100644 --- a/tubearchivist/api/README.md +++ b/tubearchivist/api/README.md @@ -70,6 +70,43 @@ POST /api/video/\/progress ### Delete player position of video DELETE /api/video/\/progress + +## Sponsor Block View +/api/video/\/sponsor/ + +Integrate with sponsorblock + +### Get list of segments +GET /api/video/\/sponsor/ + + +### Vote on existing segment +**This only simulates the request** +POST /api/video/\/sponsor/ +```json +{ + "vote": { + "uuid": "", + "yourVote": 1 + } +} +``` +yourVote needs to be *int*: 0 for downvote, 1 for upvote, 20 to undo vote + +### Create new segment +**This only simulates the request** +POST /api/video/\/sponsor/ +```json +{ + "segment": { + "startTime": 5, + "endTime": 10 + } +} +``` +Timestamps either *int* or *float*, end time can't be before start time. + + ## Channel List View /api/channel/ From 348a114981e0b8907015d5c276de3edb2d64c3b8 Mon Sep 17 00:00:00 2001 From: simon Date: Tue, 5 Apr 2022 22:32:55 +0700 Subject: [PATCH 15/16] update Roadmap --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 201ed77..91dd601 100644 --- a/README.md +++ b/README.md @@ -150,6 +150,7 @@ We have come far, nonetheless we are not short of ideas on how to improve and ex - [ ] Implement [PyFilesystem](https://github.com/PyFilesystem/pyfilesystem2) for flexible video storage - [ ] Implement [Apprise](https://github.com/caronc/apprise) for notifications (#97) - [ ] Add [SponsorBlock](https://sponsor.ajay.app/) integration +- [ ] Add passing browser cookies to yt-dlp (#199) - [ ] User created playlists (#108) - [ ] Auto play or play next link - [ ] Show similar videos on video page From 39a6fbea74c38270e83421e7348a4b85259e0cc4 Mon Sep 17 00:00:00 2001 From: simon Date: Tue, 5 Apr 2022 22:56:47 +0700 Subject: [PATCH 16/16] add links to roadmap issues --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 91dd601..9d4b259 100644 --- a/README.md +++ b/README.md @@ -148,20 +148,20 @@ We have come far, nonetheless we are not short of ideas on how to improve and ex - [ ] User roles - [ ] Podcast mode to serve channel as mp3 - [ ] Implement [PyFilesystem](https://github.com/PyFilesystem/pyfilesystem2) for flexible video storage -- [ ] Implement [Apprise](https://github.com/caronc/apprise) for notifications (#97) +- [ ] Implement [Apprise](https://github.com/caronc/apprise) for notifications ([#97](https://github.com/bbilly1/tubearchivist/issues/97)) - [ ] Add [SponsorBlock](https://sponsor.ajay.app/) integration -- [ ] Add passing browser cookies to yt-dlp (#199) -- [ ] User created playlists (#108) +- [ ] Add passing browser cookies to yt-dlp ([#199](https://github.com/bbilly1/tubearchivist/issues/199)) +- [ ] User created playlists ([#108](https://github.com/bbilly1/tubearchivist/issues/108)) - [ ] Auto play or play next link - [ ] Show similar videos on video page - [ ] Multi language support - [ ] Show total video downloaded vs total videos available in channel - [ ] Make items in grid row configurable to use more of the screen - [ ] Add statistics of index -- [ ] Implement complete offline media file import from json file (#138) -- [ ] Filter and query in search form, search by url query (#134, #139) -- [ ] Auto ignore videos by keyword (#163) -- [ ] Custom searchable notes to videos, channels, playlists (#144) +- [ ] Implement complete offline media file import from json file ([#138](https://github.com/bbilly1/tubearchivist/issues/138)) +- [ ] Filter and query in search form, search by url query ([#134](https://github.com/bbilly1/tubearchivist/issues/134), [#139](https://github.com/bbilly1/tubearchivist/issues/139)) +- [ ] Auto ignore videos by keyword ([#163](https://github.com/bbilly1/tubearchivist/issues/163)) +- [ ] Custom searchable notes to videos, channels, playlists ([#144](https://github.com/bbilly1/tubearchivist/issues/144)) Implemented: - [X] Implement per channel settings [2022-03-26]