weeb-cli 2.4.1__tar.gz → 2.4.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {weeb_cli-2.4.1/weeb_cli.egg-info → weeb_cli-2.4.2}/PKG-INFO +1 -1
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/pyproject.toml +1 -1
- weeb_cli-2.4.2/weeb_cli/__init__.py +1 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/commands/settings.py +22 -5
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/config.py +2 -1
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/locales/en.json +1 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/locales/tr.json +1 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/services/shortcuts.py +8 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/ui/menu.py +27 -17
- {weeb_cli-2.4.1 → weeb_cli-2.4.2/weeb_cli.egg-info}/PKG-INFO +1 -1
- weeb_cli-2.4.1/weeb_cli/__init__.py +0 -1
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/LICENSE +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/README.md +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/setup.cfg +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/__main__.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/commands/downloads.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/commands/search.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/commands/setup.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/commands/watchlist.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/i18n.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/main.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/providers/__init__.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/providers/allanime.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/providers/animecix.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/providers/anizle.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/providers/base.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/providers/extractors/__init__.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/providers/extractors/megacloud.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/providers/hianime.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/providers/registry.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/providers/turkanime.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/services/__init__.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/services/database.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/services/dependency_manager.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/services/details.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/services/discord_rpc.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/services/downloader.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/services/local_library.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/services/logger.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/services/notifier.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/services/player.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/services/progress.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/services/scraper.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/services/search.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/services/tracker.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/services/updater.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/services/watch.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/ui/__init__.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/ui/header.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli/ui/prompt.py +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli.egg-info/SOURCES.txt +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli.egg-info/dependency_links.txt +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli.egg-info/entry_points.txt +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli.egg-info/requires.txt +0 -0
- {weeb_cli-2.4.1 → weeb_cli-2.4.2}/weeb_cli.egg-info/top_level.txt +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "weeb-cli"
|
|
7
|
-
version = "2.4.
|
|
7
|
+
version = "2.4.2"
|
|
8
8
|
description = "Tarayıcı yok, reklam yok, dikkat dağıtıcı unsur yok. Sadece siz ve eşsiz bir anime izleme deneyimi."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [{ name = "ewgsta", email = "ewgst@proton.me" }]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2.4.2"
|
|
@@ -46,6 +46,7 @@ def open_settings():
|
|
|
46
46
|
ytdlp_state = i18n.get("common.enabled") if config.get("ytdlp_enabled") else i18n.get("common.disabled")
|
|
47
47
|
desc_state = i18n.get("common.enabled") if config.get("show_description", True) else i18n.get("common.disabled")
|
|
48
48
|
discord_rpc_state = i18n.get("common.enabled") if config.get("discord_rpc_enabled", False) else i18n.get("common.disabled")
|
|
49
|
+
shortcuts_state = i18n.get("common.enabled") if config.get("shortcuts_enabled", True) else i18n.get("common.disabled")
|
|
49
50
|
|
|
50
51
|
opt_lang = i18n.get("settings.language")
|
|
51
52
|
opt_source = f"{i18n.get('settings.source')} [{display_source}]"
|
|
@@ -53,15 +54,21 @@ def open_settings():
|
|
|
53
54
|
opt_drives = i18n.get("settings.external_drives")
|
|
54
55
|
opt_desc = f"{i18n.get('settings.show_description')} [{desc_state}]"
|
|
55
56
|
opt_discord_rpc = f"{i18n.get('settings.discord_rpc')} [{discord_rpc_state}]"
|
|
57
|
+
opt_shortcuts_toggle = f"{i18n.get('settings.shortcuts')} [{shortcuts_state}]"
|
|
56
58
|
opt_aria2 = f"{i18n.get('settings.aria2')} [{aria2_state}]"
|
|
57
59
|
opt_ytdlp = f"{i18n.get('settings.ytdlp')} [{ytdlp_state}]"
|
|
58
60
|
|
|
59
61
|
opt_aria2_conf = f" ↳ {i18n.get('settings.aria2_config')}"
|
|
60
62
|
opt_ytdlp_conf = f" ↳ {i18n.get('settings.ytdlp_config')}"
|
|
63
|
+
opt_shortcuts_conf = f" ↳ {i18n.get('settings.shortcuts_config')}"
|
|
61
64
|
opt_backup = i18n.get("settings.backup_restore")
|
|
62
|
-
opt_shortcuts = i18n.get("settings.shortcuts")
|
|
63
65
|
|
|
64
|
-
choices = [opt_lang, opt_source, opt_download, opt_drives, opt_desc, opt_discord_rpc,
|
|
66
|
+
choices = [opt_lang, opt_source, opt_download, opt_drives, opt_desc, opt_discord_rpc, opt_shortcuts_toggle]
|
|
67
|
+
|
|
68
|
+
if config.get("shortcuts_enabled", True):
|
|
69
|
+
choices.append(opt_shortcuts_conf)
|
|
70
|
+
|
|
71
|
+
choices.append(opt_aria2)
|
|
65
72
|
if config.get("aria2_enabled"):
|
|
66
73
|
choices.append(opt_aria2_conf)
|
|
67
74
|
|
|
@@ -72,7 +79,6 @@ def open_settings():
|
|
|
72
79
|
opt_trackers = i18n.get("settings.trackers")
|
|
73
80
|
choices.append(opt_trackers)
|
|
74
81
|
choices.append(opt_backup)
|
|
75
|
-
choices.append(opt_shortcuts)
|
|
76
82
|
|
|
77
83
|
try:
|
|
78
84
|
answer = questionary.select(
|
|
@@ -101,6 +107,10 @@ def open_settings():
|
|
|
101
107
|
toggle_description()
|
|
102
108
|
elif answer == opt_discord_rpc:
|
|
103
109
|
toggle_discord_rpc()
|
|
110
|
+
elif answer == opt_shortcuts_toggle:
|
|
111
|
+
toggle_shortcuts()
|
|
112
|
+
elif answer == opt_shortcuts_conf:
|
|
113
|
+
shortcuts_menu()
|
|
104
114
|
elif answer == opt_aria2:
|
|
105
115
|
toggle_config("aria2_enabled", "Aria2")
|
|
106
116
|
elif answer == opt_aria2_conf:
|
|
@@ -113,8 +123,6 @@ def open_settings():
|
|
|
113
123
|
trackers_menu()
|
|
114
124
|
elif answer == opt_backup:
|
|
115
125
|
backup_restore_menu()
|
|
116
|
-
elif answer == opt_shortcuts:
|
|
117
|
-
shortcuts_menu()
|
|
118
126
|
elif answer is None:
|
|
119
127
|
return
|
|
120
128
|
|
|
@@ -141,6 +149,15 @@ def toggle_discord_rpc():
|
|
|
141
149
|
console.print(f"[green]{i18n.t(msg_key, tool='Discord RPC')}[/green]")
|
|
142
150
|
time.sleep(0.5)
|
|
143
151
|
|
|
152
|
+
def toggle_shortcuts():
|
|
153
|
+
current = config.get("shortcuts_enabled", True)
|
|
154
|
+
new_val = not current
|
|
155
|
+
config.set("shortcuts_enabled", new_val)
|
|
156
|
+
|
|
157
|
+
msg_key = "settings.toggle_on" if new_val else "settings.toggle_off"
|
|
158
|
+
console.print(f"[green]{i18n.t(msg_key, tool=i18n.get('settings.shortcuts'))}[/green]")
|
|
159
|
+
time.sleep(0.5)
|
|
160
|
+
|
|
144
161
|
def change_language():
|
|
145
162
|
from weeb_cli.services.scraper import scraper
|
|
146
163
|
|
|
@@ -111,6 +111,7 @@
|
|
|
111
111
|
"backup_not_found": "Backup file not found.",
|
|
112
112
|
"restart_required": "Please restart the application to apply changes.",
|
|
113
113
|
"shortcuts": "Keyboard Shortcuts",
|
|
114
|
+
"shortcuts_config": "Shortcut Settings",
|
|
114
115
|
"shortcuts_hint": "Use single key shortcuts for quick access in menus",
|
|
115
116
|
"shortcut_search": "Search Anime",
|
|
116
117
|
"shortcut_downloads": "Downloads",
|
|
@@ -111,6 +111,7 @@
|
|
|
111
111
|
"backup_not_found": "Yedek dosyası bulunamadı.",
|
|
112
112
|
"restart_required": "Değişikliklerin uygulanması için uygulamayı yeniden başlatın.",
|
|
113
113
|
"shortcuts": "Klavye Kısayolları",
|
|
114
|
+
"shortcuts_config": "Kısayol Ayarları",
|
|
114
115
|
"shortcuts_hint": "Menülerde hızlı erişim için tek tuşla seçim yapabilirsiniz",
|
|
115
116
|
"shortcut_search": "Anime Ara",
|
|
116
117
|
"shortcut_downloads": "İndirmeler",
|
|
@@ -16,7 +16,13 @@ class ShortcutManager:
|
|
|
16
16
|
def __init__(self):
|
|
17
17
|
self._shortcuts = None
|
|
18
18
|
|
|
19
|
+
def is_enabled(self):
|
|
20
|
+
return config.get("shortcuts_enabled", True)
|
|
21
|
+
|
|
19
22
|
def get_shortcuts(self):
|
|
23
|
+
if not self.is_enabled():
|
|
24
|
+
return {}
|
|
25
|
+
|
|
20
26
|
if self._shortcuts is None:
|
|
21
27
|
self._shortcuts = {}
|
|
22
28
|
for key, default_value in DEFAULT_SHORTCUTS.items():
|
|
@@ -25,6 +31,8 @@ class ShortcutManager:
|
|
|
25
31
|
return self._shortcuts
|
|
26
32
|
|
|
27
33
|
def get_shortcut(self, action):
|
|
34
|
+
if not self.is_enabled():
|
|
35
|
+
return None
|
|
28
36
|
shortcuts = self.get_shortcuts()
|
|
29
37
|
return shortcuts.get(action, DEFAULT_SHORTCUTS.get(action))
|
|
30
38
|
|
|
@@ -44,18 +44,25 @@ def show_main_menu():
|
|
|
44
44
|
show_header("Weeb CLI", show_version=True, show_source=True)
|
|
45
45
|
|
|
46
46
|
shortcuts = shortcut_manager.get_shortcuts()
|
|
47
|
+
shortcuts_enabled = shortcut_manager.is_enabled()
|
|
47
48
|
|
|
48
|
-
opt_search =
|
|
49
|
-
opt_downloads =
|
|
50
|
-
opt_watchlist =
|
|
51
|
-
opt_settings =
|
|
52
|
-
opt_exit = f"{i18n.get('menu.options.exit')} [{shortcuts['exit']}]"
|
|
49
|
+
opt_search = i18n.get("menu.options.search")
|
|
50
|
+
opt_downloads = i18n.get("menu.options.downloads")
|
|
51
|
+
opt_watchlist = i18n.get("menu.options.watchlist")
|
|
52
|
+
opt_settings = i18n.get("menu.options.settings")
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
if shortcuts_enabled:
|
|
55
|
+
choices = [
|
|
56
|
+
questionary.Choice(opt_search, shortcut_key=shortcuts.get('search')),
|
|
57
|
+
questionary.Choice(opt_downloads, shortcut_key=shortcuts.get('downloads')),
|
|
58
|
+
questionary.Choice(opt_watchlist, shortcut_key=shortcuts.get('watchlist')),
|
|
59
|
+
]
|
|
60
|
+
else:
|
|
61
|
+
choices = [
|
|
62
|
+
opt_search,
|
|
63
|
+
opt_downloads,
|
|
64
|
+
opt_watchlist,
|
|
65
|
+
]
|
|
59
66
|
|
|
60
67
|
active_queue = [i for i in queue_manager.queue if i["status"] in ["pending", "processing"]]
|
|
61
68
|
opt_active = None
|
|
@@ -63,19 +70,22 @@ def show_main_menu():
|
|
|
63
70
|
is_running = queue_manager.is_running()
|
|
64
71
|
status = i18n.get("downloads.queue_running") if is_running else i18n.get("downloads.queue_stopped")
|
|
65
72
|
opt_active = f"{i18n.get('downloads.active_downloads')} ({len(active_queue)}) - {status}"
|
|
66
|
-
|
|
73
|
+
if shortcuts_enabled:
|
|
74
|
+
choices.append(questionary.Choice(opt_active))
|
|
75
|
+
else:
|
|
76
|
+
choices.append(opt_active)
|
|
67
77
|
|
|
68
|
-
|
|
69
|
-
questionary.Choice(opt_settings, shortcut_key=shortcuts
|
|
70
|
-
|
|
71
|
-
|
|
78
|
+
if shortcuts_enabled:
|
|
79
|
+
choices.append(questionary.Choice(opt_settings, shortcut_key=shortcuts.get('settings')))
|
|
80
|
+
else:
|
|
81
|
+
choices.append(opt_settings)
|
|
72
82
|
|
|
73
83
|
try:
|
|
74
84
|
selected = questionary.select(
|
|
75
85
|
i18n.get("menu.prompt"),
|
|
76
86
|
choices=choices,
|
|
77
87
|
pointer=">",
|
|
78
|
-
use_shortcuts=
|
|
88
|
+
use_shortcuts=shortcuts_enabled,
|
|
79
89
|
style=questionary.Style([
|
|
80
90
|
('pointer', 'fg:cyan bold'),
|
|
81
91
|
('highlighted', 'fg:cyan'),
|
|
@@ -95,7 +105,7 @@ def show_main_menu():
|
|
|
95
105
|
show_active_downloads_menu()
|
|
96
106
|
elif selected == opt_settings:
|
|
97
107
|
open_settings()
|
|
98
|
-
elif selected
|
|
108
|
+
elif selected is None:
|
|
99
109
|
_handle_exit()
|
|
100
110
|
|
|
101
111
|
show_main_menu()
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2.4.1"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|