Skip to content

Commit 7da7a6e

Browse files
Add 'some' support for other players
1 parent a44a1ef commit 7da7a6e

File tree

8 files changed

+55
-17
lines changed

8 files changed

+55
-17
lines changed

pyproject.toml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,18 @@ maintainers = [{name="Commandcracker"}]
77
license = {file = "LICENSE.txt"}
88
readme = "README.md"
99
dependencies = [
10-
"textual>=3.3.0",
11-
"textual-image[textual]>=0.8.2",
12-
"beautifulsoup4>=4.13.4",
10+
"textual>=6.1.0",
11+
"textual-image[textual]>=0.8.4",
12+
"beautifulsoup4>=4.13.5",
1313
"httpx[http2]>=0.28.1",
1414
"pypresence>=4.3.0",
1515
"packaging>=25.0",
16-
"platformdirs>=4.3.7",
16+
"platformdirs>=4.4.0",
1717
"toml>=0.10.2",
1818
"fuzzywuzzy>=0.18.0",
1919
"async_lru>=2.0.5",
20-
"rich-argparse>=1.7.0"
21-
#"yt-dlp>=2025.3.31",
20+
"rich-argparse>=1.7.1"
21+
#"yt-dlp>=2025.9.5",
2222
#"mpv>=1.0.8",
2323
]
2424
keywords = [
@@ -52,7 +52,7 @@ classifiers = [
5252
[project.optional-dependencies]
5353
speedups = [
5454
"levenshtein>=0.27.1",
55-
"orjson>=3.10.16"
55+
"orjson>=3.11.3"
5656
]
5757
socks = ["httpx[socks]>=0.28.1"]
5858

src/gucken/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
import warnings
22
warnings.filterwarnings('ignore', message='Using slow pure-python SequenceMatcher. Install python-Levenshtein to remove this warning')
33

4-
__version__ = "0.3.8"
4+
__version__ = "0.3.9"

src/gucken/gucken.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,9 @@ def compose(self) -> ComposeResult:
370370
Select.BLANK if player == "AutomaticPlayer" else player
371371
),
372372
)
373+
yield Input(placeholder="Path", id="path", value=settings["player"]["path"])
374+
yield Input(placeholder="Args - {url} {title}", id="args", value=settings["player"]["args"])
375+
373376
with Collapsible(title="ani-skip (MPV & VLC only)", collapsed=False):
374377
yield RadioButton(
375378
"Skip opening",
@@ -394,6 +397,12 @@ def compose(self) -> ComposeResult:
394397
async def input_changed(self, event: Input.Changed):
395398
if event.control.id == "input":
396399
self.lookup_anime(event.value)
400+
if event.control.id == "path":
401+
gucken_settings_manager.settings["settings"]["player"]["path"] = event.value
402+
gucken_settings_manager.save()
403+
if event.control.id == "args":
404+
gucken_settings_manager.settings["settings"]["player"]["args"] = event.value
405+
gucken_settings_manager.save()
397406

398407
@on(Select.Changed)
399408
def on_season_filter_changed(self, event: Select.Changed) -> None:
@@ -466,6 +475,7 @@ async def checkbox_changed(self, event: Checkbox.Changed):
466475

467476
if event.control.has_class("provider"):
468477
settings["providers"][id] = event.value
478+
gucken_settings_manager.save()
469479
self.lookup_anime(self.query_one("#input", Input).value)
470480

471481
@on(RadioButton.Changed)
@@ -498,6 +508,7 @@ async def radio_button_changed(self, event: RadioButton.Changed):
498508
img.image = None
499509

500510
settings[id] = event.value
511+
gucken_settings_manager.save()
501512

502513
if id == "discord_presence":
503514
if event.value is True:
@@ -868,7 +879,9 @@ async def play(
868879
fullscreen = gucken_settings_manager.settings["settings"]["fullscreen"]
869880

870881
title = f"{series_search_result.name} S{episode.season}E{episode.episode_number} - {episode.title}"
871-
args = _player.play(direct_link.url, title, fullscreen, direct_link.headers)
882+
883+
path = gucken_settings_manager.settings["settings"]["player"]["path"]
884+
args = _player.play(direct_link.url, title, fullscreen, direct_link.headers, path)
872885

873886
if self.RPC and self.RPC.sock_writer:
874887
async def update():

src/gucken/player/_players.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@
77
from .mpv import CelluloidPlayer, MPVNETPlayer, MPVPlayer
88
from .vlc import VLCPlayer
99
from .wmplayer import WMPlayer
10+
from .other import OtherPlayer
1011

1112
is_android = hasattr(sys, "getandroidapilevel")
1213

1314

1415
def get_players():
1516
if is_android:
16-
return [AndroidMPVPlayer, AndroidVLCPlayer, AndroidChoosePlayer]
17-
_all = [MPVPlayer, VLCPlayer, FFPlayPlayer]
17+
return [AndroidMPVPlayer, AndroidVLCPlayer, AndroidChoosePlayer, OtherPlayer]
18+
_all = [MPVPlayer, VLCPlayer, FFPlayPlayer, OtherPlayer]
1819

1920
if os_name == "nt":
2021
return _all + [MPVNETPlayer, WMPlayer]
@@ -49,6 +50,7 @@ def get_players():
4950
FlatpakMPVPlayer,
5051
FlatpakVLCPlayer,
5152
FlatpakCelluloidPlayer,
53+
OtherPlayer
5254
]
5355

5456
all_players_keys = []

src/gucken/player/other.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from dataclasses import dataclass
2+
3+
from .common import Player
4+
from ..settings import gucken_settings_manager
5+
6+
@dataclass
7+
class OtherPlayer(Player):
8+
supports_headers: bool = False
9+
10+
@classmethod
11+
def is_available(cls) -> bool:
12+
return True
13+
14+
def play(
15+
self,
16+
url: str,
17+
title: str,
18+
full_screen: bool,
19+
headers: dict[str, str] = None,
20+
override_executable: str = None,
21+
) -> list[str]:
22+
args = gucken_settings_manager.settings["settings"]["player"]["args"]
23+
return [override_executable, args.format(title=title, url=url)]

src/gucken/provider/aniworld.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,8 +287,8 @@ async def get_episodes_from_soup(
287287
title_en = fully_unescape(title.find("span").text.strip())
288288
title_de = fully_unescape(title.find("strong").text.strip())
289289
title = (
290-
f"{title_en} - {title_de}"
291-
if title_en and title_de
290+
title_en if title_en == title_de and title_en
291+
else f"{title_en} - {title_de}" if title_en and title_de
292292
else title_en or title_de
293293
)
294294
episodes.append(

src/gucken/provider/serienstream.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -296,8 +296,8 @@ async def get_episodes_from_soup(
296296
title_en = fully_unescape(title.find("span").text.strip())
297297
title_de = fully_unescape(title.find("strong").text.strip())
298298
title = (
299-
f"{title_en} - {title_de}"
300-
if title_en and title_de
299+
title_en if title_en == title_de and title_en
300+
else f"{title_en} - {title_de}" if title_en and title_de
301301
else title_en or title_de
302302
)
303303
episodes.append(

src/gucken/resources/default_settings.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ chapters = false
3232

3333
[settings.player]
3434
player = "AutomaticPlayer"
35-
#path = ""
36-
#args = ["--idk", "--owo"]
35+
path = ""
36+
args = "{url}"
3737

3838
[settings.autoplay]
3939
enabled = true

0 commit comments

Comments
 (0)