mirror of
https://github.com/dmunozv04/iSponsorBlockTV.git
synced 2026-01-31 14:51:15 +03:00
Implement autoplay
This commit is contained in:
@@ -12,6 +12,7 @@
|
|||||||
"skip_count_tracking": true,
|
"skip_count_tracking": true,
|
||||||
"mute_ads": true,
|
"mute_ads": true,
|
||||||
"skip_ads": true,
|
"skip_ads": true,
|
||||||
|
"autoplay": true,
|
||||||
"apikey": "",
|
"apikey": "",
|
||||||
"channel_whitelist": [
|
"channel_whitelist": [
|
||||||
{"id": "",
|
{"id": "",
|
||||||
|
|||||||
@@ -163,5 +163,12 @@ def main(config, debug: bool) -> None:
|
|||||||
)
|
)
|
||||||
== "n"
|
== "n"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
config.auto_play = (
|
||||||
|
not input(
|
||||||
|
"Do you want to enable autoplay? (y/n) "
|
||||||
|
)
|
||||||
|
== "n"
|
||||||
|
)
|
||||||
print("Config finished")
|
print("Config finished")
|
||||||
config.save()
|
config.save()
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ class Config:
|
|||||||
self.skip_count_tracking = True
|
self.skip_count_tracking = True
|
||||||
self.mute_ads = False
|
self.mute_ads = False
|
||||||
self.skip_ads = False
|
self.skip_ads = False
|
||||||
|
self.auto_play = True
|
||||||
self.__load()
|
self.__load()
|
||||||
|
|
||||||
def validate(self):
|
def validate(self):
|
||||||
|
|||||||
@@ -848,6 +848,34 @@ class ChannelWhitelistManager(Vertical):
|
|||||||
self.app.push_screen(AddChannel(self.config), callback=self.new_channel)
|
self.app.push_screen(AddChannel(self.config), callback=self.new_channel)
|
||||||
|
|
||||||
|
|
||||||
|
class AutoPlayManager(Vertical):
|
||||||
|
"""Manager for autoplay, allows enabling/disabling autoplay."""
|
||||||
|
|
||||||
|
def __init__(self, config, **kwargs) -> None:
|
||||||
|
super().__init__(**kwargs)
|
||||||
|
self.config = config
|
||||||
|
|
||||||
|
def compose(self) -> ComposeResult:
|
||||||
|
yield Label("Autoplay", classes="title")
|
||||||
|
yield Label(
|
||||||
|
(
|
||||||
|
"This feature allows you to enable/disable autoplay"
|
||||||
|
),
|
||||||
|
classes="subtitle",
|
||||||
|
id="autoplay-subtitle",
|
||||||
|
)
|
||||||
|
with Horizontal(id="autoplay-container"):
|
||||||
|
yield Checkbox(
|
||||||
|
value=self.config.auto_play,
|
||||||
|
id="autoplay-switch",
|
||||||
|
label="Enable autoplay",
|
||||||
|
)
|
||||||
|
|
||||||
|
@on(Checkbox.Changed, "#autoplay-switch")
|
||||||
|
def changed_skip(self, event: Checkbox.Changed):
|
||||||
|
self.config.auto_play = event.checkbox.value
|
||||||
|
|
||||||
|
|
||||||
class ISponsorBlockTVSetupMainScreen(Screen):
|
class ISponsorBlockTVSetupMainScreen(Screen):
|
||||||
"""Making this a separate screen to avoid a bug: https://github.com/Textualize/textual/issues/3221"""
|
"""Making this a separate screen to avoid a bug: https://github.com/Textualize/textual/issues/3221"""
|
||||||
|
|
||||||
@@ -884,6 +912,9 @@ class ISponsorBlockTVSetupMainScreen(Screen):
|
|||||||
yield ApiKeyManager(
|
yield ApiKeyManager(
|
||||||
config=self.config, id="api-key-manager", classes="container"
|
config=self.config, id="api-key-manager", classes="container"
|
||||||
)
|
)
|
||||||
|
yield AutoPlayManager(
|
||||||
|
config=self.config, id="autoplay-manager", classes="container"
|
||||||
|
)
|
||||||
|
|
||||||
def on_mount(self) -> None:
|
def on_mount(self) -> None:
|
||||||
if self.check_for_old_config_entries():
|
if self.check_for_old_config_entries():
|
||||||
|
|||||||
@@ -20,9 +20,11 @@ class YtLoungeApi(pyytlounge.YtLoungeApi):
|
|||||||
self.callback = None
|
self.callback = None
|
||||||
self.logger = logger
|
self.logger = logger
|
||||||
self.shorts_disconnected = False
|
self.shorts_disconnected = False
|
||||||
|
self.auto_play = True
|
||||||
if config:
|
if config:
|
||||||
self.mute_ads = config.mute_ads
|
self.mute_ads = config.mute_ads
|
||||||
self.skip_ads = config.skip_ads
|
self.skip_ads = config.skip_ads
|
||||||
|
self.auto_play = config.auto_play
|
||||||
|
|
||||||
# Ensures that we still are subscribed to the lounge
|
# Ensures that we still are subscribed to the lounge
|
||||||
async def _watchdog(self):
|
async def _watchdog(self):
|
||||||
@@ -136,6 +138,8 @@ class YtLoungeApi(pyytlounge.YtLoungeApi):
|
|||||||
data = args[0]
|
data = args[0]
|
||||||
if data["reason"] == "disconnectedByUserScreenInitiated": # Short playing?
|
if data["reason"] == "disconnectedByUserScreenInitiated": # Short playing?
|
||||||
self.shorts_disconnected = True
|
self.shorts_disconnected = True
|
||||||
|
elif event_type == "onAutoplayModeChanged":
|
||||||
|
create_task(self.set_auto_play_mode(self.auto_play))
|
||||||
|
|
||||||
super()._process_event(event_id, event_type, args)
|
super()._process_event(event_id, event_type, args)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user