implement basic sponsblock indexing, #119

This commit is contained in:
simon 2022-04-04 23:08:44 +07:00
parent 29f8e148da
commit 730d12212f
4 changed files with 31 additions and 1 deletions

View File

@ -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",

View File

@ -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
)

View File

@ -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)

View File

@ -128,6 +128,11 @@
<i>Before activating that, make sure you have a scraping sleep interval of at least 3 secs set to avoid ratelimiting issues.</i><br>
{{ app_form.downloads_integrate_ryd }}
</div>
<div class="settings-item">
<p>Integrate with <a href="https://sponsor.ajay.app/">SponsorBlock</a> to get sponsored timestamps: <span class="settings-current">{{ config.downloads.integrate_sponsorblock }}</span></p>
<i>Before activating that, make sure you have a scraping sleep interval of at least 3 secs set to avoid ratelimiting issues.</i><br>
{{ app_form.downloads_integrate_sponsorblock }}
</div>
<div class="settings-item">
<p>Current Cast integration: <span class="settings-current">{{ config.application.enable_cast }}</span></p>
<i>Enabling Cast will load an additional JS library from Google. HTTPS and a supported browser are required for this integration.</i><br>