mirror of
https://github.com/tubearchivist/tubearchivist.git
synced 2024-12-22 09:50:12 +00:00
implement basic sponsblock indexing, #119
This commit is contained in:
parent
2292e6506d
commit
77228ccb65
@ -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",
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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)
|
||||
|
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user