mirror of
https://github.com/dmunozv04/iSponsorBlockTV.git
synced 2026-01-27 04:40:51 +03:00
Implement autoplay
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
"skip_count_tracking": true,
|
||||
"mute_ads": true,
|
||||
"skip_ads": true,
|
||||
"autoplay": true,
|
||||
"apikey": "",
|
||||
"channel_whitelist": [
|
||||
{"id": "",
|
||||
|
||||
@@ -163,5 +163,12 @@ def main(config, debug: bool) -> None:
|
||||
)
|
||||
== "n"
|
||||
)
|
||||
|
||||
config.auto_play = (
|
||||
not input(
|
||||
"Do you want to enable autoplay? (y/n) "
|
||||
)
|
||||
== "n"
|
||||
)
|
||||
print("Config finished")
|
||||
config.save()
|
||||
|
||||
@@ -41,6 +41,7 @@ class Config:
|
||||
self.skip_count_tracking = True
|
||||
self.mute_ads = False
|
||||
self.skip_ads = False
|
||||
self.auto_play = True
|
||||
self.__load()
|
||||
|
||||
def validate(self):
|
||||
|
||||
@@ -848,6 +848,34 @@ class ChannelWhitelistManager(Vertical):
|
||||
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):
|
||||
"""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(
|
||||
config=self.config, id="api-key-manager", classes="container"
|
||||
)
|
||||
yield AutoPlayManager(
|
||||
config=self.config, id="autoplay-manager", classes="container"
|
||||
)
|
||||
|
||||
def on_mount(self) -> None:
|
||||
if self.check_for_old_config_entries():
|
||||
|
||||
@@ -20,9 +20,11 @@ class YtLoungeApi(pyytlounge.YtLoungeApi):
|
||||
self.callback = None
|
||||
self.logger = logger
|
||||
self.shorts_disconnected = False
|
||||
self.auto_play = True
|
||||
if config:
|
||||
self.mute_ads = config.mute_ads
|
||||
self.skip_ads = config.skip_ads
|
||||
self.auto_play = config.auto_play
|
||||
|
||||
# Ensures that we still are subscribed to the lounge
|
||||
async def _watchdog(self):
|
||||
@@ -136,6 +138,8 @@ class YtLoungeApi(pyytlounge.YtLoungeApi):
|
||||
data = args[0]
|
||||
if data["reason"] == "disconnectedByUserScreenInitiated": # Short playing?
|
||||
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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user