weeb-cli 0.1.3__tar.gz → 0.2.0__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.
Files changed (38) hide show
  1. {weeb_cli-0.1.3/weeb_cli.egg-info → weeb_cli-0.2.0}/PKG-INFO +4 -4
  2. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/README.md +3 -3
  3. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/pyproject.toml +2 -2
  4. weeb_cli-0.2.0/weeb_cli/__init__.py +1 -0
  5. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/main.py +10 -12
  6. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/services/api.py +4 -4
  7. weeb_cli-0.2.0/weeb_cli/ui/prompt.py +120 -0
  8. {weeb_cli-0.1.3 → weeb_cli-0.2.0/weeb_cli.egg-info}/PKG-INFO +4 -4
  9. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli.egg-info/SOURCES.txt +2 -1
  10. weeb_cli-0.1.3/weeb_cli/__init__.py +0 -1
  11. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/LICENSE +0 -0
  12. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/setup.cfg +0 -0
  13. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/__main__.py +0 -0
  14. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/commands/downloads.py +0 -0
  15. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/commands/search.py +0 -0
  16. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/commands/settings.py +0 -0
  17. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/commands/setup.py +0 -0
  18. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/commands/watchlist.py +0 -0
  19. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/config.py +0 -0
  20. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/i18n.py +0 -0
  21. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/locales/en.json +0 -0
  22. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/locales/tr.json +0 -0
  23. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/services/__init__.py +0 -0
  24. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/services/dependency_manager.py +0 -0
  25. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/services/details.py +0 -0
  26. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/services/downloader.py +0 -0
  27. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/services/player.py +0 -0
  28. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/services/progress.py +0 -0
  29. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/services/search.py +0 -0
  30. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/services/updater.py +0 -0
  31. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/services/watch.py +0 -0
  32. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/ui/__init__.py +0 -0
  33. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/ui/header.py +0 -0
  34. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli/ui/menu.py +0 -0
  35. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli.egg-info/dependency_links.txt +0 -0
  36. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli.egg-info/entry_points.txt +0 -0
  37. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli.egg-info/requires.txt +0 -0
  38. {weeb_cli-0.1.3 → weeb_cli-0.2.0}/weeb_cli.egg-info/top_level.txt +0 -0
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: weeb-cli
3
- Version: 0.1.3
3
+ Version: 0.2.0
4
4
  Summary: Tarayıcı yok, reklam yok, dikkat dağıtıcı unsur yok. Sadece siz ve eşsiz bir anime izleme deneyimi.
5
5
  Author-email: ewgsta <ewgst@proton.me>
6
6
  License-Expression: CC-BY-NC-ND-4.0
7
- Project-URL: Homepage, https://github.com/ewgsta/weeb-cli
7
+ Project-URL: Homepage, https://weeb-cli.ewgsta.me
8
8
  Project-URL: Repository, https://github.com/ewgsta/weeb-cli
9
9
  Project-URL: Issues, https://github.com/ewgsta/weeb-cli/issues
10
10
  Keywords: anime,weeb,anime-download,anizm,anime-watch,anime-watching,anime-downloading,anime-cli,allanime,animecix,anime-indir,anime-izle,weeb-cli,anime-izleme,anime-indirme,weebanime,tranime
@@ -58,7 +58,7 @@ Weeb CLI, anime severler için tasarlanmış güçlü, platformlar arası bir ko
58
58
  - Akıllı dosya isimlendirme (Örn: `Anime Adı - S1B1.mp4`).
59
59
  - **İzleme Geçmişi**: İlerlemenizi otomatik takip eder. Kaldığınız yeri (`●`) ve tamamlanan bölümleri (`✓`) işaretler.
60
60
  - **Çoklu Dil**: Tam Türkçe ve İngilizce arayüz desteği.
61
- - **Çoklu Kaynak**: HiAnime, AllAnime (İngilizce), Animecix, Anizle, Turkanime, Weeb (Türkçe)
61
+ - **Çoklu Kaynak**: HiAnime, AllAnime (İngilizce), Animecix, Anizle, Turkanime, Weeb (Yerel Kaynak) (Türkçe)
62
62
  - **Otomatik Kurulum**: Gerekli araçları (MPV, FFmpeg, Aria2, yt-dlp) eksikse otomatik tespit eder ve kurar.
63
63
 
64
64
  ## Kurulum
@@ -98,7 +98,7 @@ choco install weeb-cli
98
98
  Aracı terminalden başlatmak için:
99
99
 
100
100
  ```bash
101
- weeb
101
+ weeb-cli
102
102
  ```
103
103
 
104
104
  ### Kontroller
@@ -36,7 +36,7 @@ Weeb CLI, anime severler için tasarlanmış güçlü, platformlar arası bir ko
36
36
  - Akıllı dosya isimlendirme (Örn: `Anime Adı - S1B1.mp4`).
37
37
  - **İzleme Geçmişi**: İlerlemenizi otomatik takip eder. Kaldığınız yeri (`●`) ve tamamlanan bölümleri (`✓`) işaretler.
38
38
  - **Çoklu Dil**: Tam Türkçe ve İngilizce arayüz desteği.
39
- - **Çoklu Kaynak**: HiAnime, AllAnime (İngilizce), Animecix, Anizle, Turkanime, Weeb (Türkçe)
39
+ - **Çoklu Kaynak**: HiAnime, AllAnime (İngilizce), Animecix, Anizle, Turkanime, Weeb (Yerel Kaynak) (Türkçe)
40
40
  - **Otomatik Kurulum**: Gerekli araçları (MPV, FFmpeg, Aria2, yt-dlp) eksikse otomatik tespit eder ve kurar.
41
41
 
42
42
  ## Kurulum
@@ -76,7 +76,7 @@ choco install weeb-cli
76
76
  Aracı terminalden başlatmak için:
77
77
 
78
78
  ```bash
79
- weeb
79
+ weeb-cli
80
80
  ```
81
81
 
82
82
  ### Kontroller
@@ -119,4 +119,4 @@ Yapılandırma dosyası `~/.weeb-cli/config.json` konumunda saklanır. Uygulama
119
119
  Bu proje Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Lisansı (CC BY-NC-ND 4.0) ile lisanslanmıştır.
120
120
  Detaylar için [LICENSE](LICENSE) dosyasına bakınız.
121
121
 
122
- ---
122
+ ---
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "weeb-cli"
7
- version = "0.1.3"
7
+ version = "0.2.0"
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" }]
@@ -31,7 +31,7 @@ include = ["weeb_cli*"]
31
31
  weeb_cli = ["locales/*.json"]
32
32
 
33
33
  [project.urls]
34
- Homepage = "https://github.com/ewgsta/weeb-cli"
34
+ Homepage = "https://weeb-cli.ewgsta.me"
35
35
  Repository = "https://github.com/ewgsta/weeb-cli"
36
36
  Issues = "https://github.com/ewgsta/weeb-cli/issues"
37
37
 
@@ -0,0 +1 @@
1
+ __version__ = "0.2.0"
@@ -12,6 +12,7 @@ from weeb_cli.i18n import i18n
12
12
  from weeb_cli.commands.setup import start_setup_wizard
13
13
  from weeb_cli.services.dependency_manager import dependency_manager
14
14
  from weeb_cli.services.updater import update_prompt
15
+ from weeb_cli.ui.prompt import prompt
15
16
 
16
17
  app = typer.Typer(add_completion=False)
17
18
  console = Console()
@@ -26,19 +27,17 @@ def run_setup():
26
27
  "English": "en"
27
28
  }
28
29
 
29
- selected = questionary.select(
30
+ choices = [(k, v) for k, v in langs.items()]
31
+
32
+ selected_code = prompt.select(
30
33
  "Select Language / Dil Seçiniz",
31
- choices=list(langs.keys()),
32
- use_indicator=True,
33
- pointer=">"
34
- ).ask()
34
+ choices
35
+ )
36
+
37
+ i18n.set_language(selected_code)
35
38
 
36
- if selected:
37
- lang_code = langs[selected]
38
- i18n.set_language(lang_code)
39
-
40
- console.print(f"[dim]{i18n.t('common.ctrl_c_hint')}[/dim]")
41
- start_setup_wizard()
39
+ console.print(f"[dim]{i18n.t('common.ctrl_c_hint')}[/dim]")
40
+ start_setup_wizard()
42
41
 
43
42
  def check_ffmpeg_silent():
44
43
  if not dependency_manager.check_dependency("ffmpeg"):
@@ -50,7 +49,6 @@ def start():
50
49
  if not config.get("language"):
51
50
  run_setup()
52
51
 
53
- # Check for updates silently first (the prompt internally handles silence during check)
54
52
  update_prompt()
55
53
 
56
54
  check_network()
@@ -28,19 +28,19 @@ class WeebClient:
28
28
  source = config.get("scraping_source")
29
29
  if source == "weeb": source = "local"
30
30
 
31
- return self._get("/api/v1/anime/search", params={"query": query, "source": source})
31
+ return self._get("/api/v2/anime/search", params={"query": query, "source": source})
32
32
 
33
33
  def get_details(self, slug):
34
34
  source = config.get("scraping_source")
35
35
  if source == "weeb": source = "local"
36
- return self._get(f"/api/v1/anime/detail/{slug}", params={"source": source})
36
+ return self._get(f"/api/v2/anime/detail/{slug}", params={"source": source})
37
37
 
38
38
  def get_streams(self, slug, episode):
39
39
  source = config.get("scraping_source")
40
40
  if source == "weeb": source = "local"
41
- return self._get(f"/api/v1/anime/watch/{slug}/{episode}", params={"source": source})
41
+ return self._get(f"/api/v2/anime/watch/{slug}/{episode}", params={"source": source})
42
42
 
43
43
  def get_sources(self):
44
- return self._get("/api/v1/sources/")
44
+ return self._get("/api/v2/sources/")
45
45
 
46
46
  api_client = WeebClient()
@@ -0,0 +1,120 @@
1
+ import sys
2
+ import typer
3
+ from rich.console import Console
4
+ from rich.live import Live
5
+ from rich.table import Table
6
+ from rich.text import Text
7
+ from typing import List, Any, Union, Tuple
8
+
9
+ console = Console()
10
+
11
+ class Prompt:
12
+ def __init__(self):
13
+ self.console = Console()
14
+
15
+ def _get_input(self):
16
+ try:
17
+ return typer.getchar()
18
+ except Exception:
19
+ return sys.stdin.read(1)
20
+
21
+ def select(self, title: str, options: List[Union[str, Tuple[str, Any]]], pointer: str = ">", page_size: int = 10) -> Any:
22
+ processed_options = []
23
+ for opt in options:
24
+ if isinstance(opt, tuple):
25
+ processed_options.append(opt)
26
+ else:
27
+ processed_options.append((opt, opt))
28
+
29
+ current_idx = 0
30
+ total_options = len(processed_options)
31
+ window_start = 0
32
+
33
+ def generate_table():
34
+ table = Table.grid(padding=(0, 1))
35
+ table.add_column("Pointer", width=2)
36
+ table.add_column("Option")
37
+
38
+ nonlocal window_start
39
+ if current_idx >= window_start + page_size:
40
+ window_start = current_idx - page_size + 1
41
+ elif current_idx < window_start:
42
+ window_start = current_idx
43
+
44
+ display_options = processed_options[window_start : window_start + page_size]
45
+
46
+ if title:
47
+ self.console.print(f"[bold cyan]? {title}[/bold cyan]")
48
+
49
+ for i, (label, _) in enumerate(display_options):
50
+ abs_idx = window_start + i
51
+ if abs_idx == current_idx:
52
+ table.add_row(f"[cyan]{pointer}[/cyan]", f"[cyan]{label}[/cyan]")
53
+ else:
54
+ table.add_row(" ", label)
55
+
56
+ if total_options > page_size:
57
+ table.add_row(" ", f"[dim]({window_start+1}-{min(window_start+page_size, total_options)} of {total_options})[/dim]")
58
+
59
+ return table
60
+
61
+
62
+ self.console.print(f"[bold cyan]? {title}[/bold cyan]")
63
+
64
+ with Live("", refresh_per_second=20, auto_refresh=False, transient=True) as live:
65
+ while True:
66
+ table = Table.grid(padding=(0, 1))
67
+ table.add_column("Pointer", width=2)
68
+ table.add_column("Option")
69
+
70
+ if current_idx >= window_start + page_size:
71
+ window_start = current_idx - page_size + 1
72
+ elif current_idx < window_start:
73
+ window_start = current_idx
74
+
75
+ limit = min(window_start + page_size, total_options)
76
+
77
+ for idx in range(window_start, limit):
78
+ label = processed_options[idx][0]
79
+ if idx == current_idx:
80
+ table.add_row(f"[cyan]{pointer}[/cyan]", f"[cyan]{label}[/cyan]")
81
+ else:
82
+ table.add_row(" ", label)
83
+
84
+ if total_options > page_size:
85
+ progress = f"({window_start+1}-{limit}/{total_options})"
86
+ table.add_row(" ", f"[dim]{progress}[/dim]")
87
+
88
+ live.update(table)
89
+ live.refresh()
90
+
91
+ key = self._get_input()
92
+
93
+ if key in ["w", "W", "k", "K"] or key == '\x1b[A' or key == '\xe0H': # \xe0H is windows arrow up sometimes
94
+ current_idx = (current_idx - 1) % total_options
95
+ elif key in ["s", "S", "j", "J"] or key == '\x1b[B' or key == '\xe0P':
96
+ current_idx = (current_idx + 1) % total_options
97
+ elif key == '\r' or key == '\n':
98
+ return processed_options[current_idx][1]
99
+ elif key == '\x03':
100
+ sys.exit(0)
101
+ elif key == '\xe0':
102
+ try:
103
+ next_key = typer.getchar()
104
+ if next_key == 'H':
105
+ current_idx = (current_idx - 1) % total_options
106
+ elif next_key == 'P':
107
+ current_idx = (current_idx + 1) % total_options
108
+ except: pass
109
+ elif key == '\x1b':
110
+ try:
111
+ k2 = typer.getchar()
112
+ if k2 == '[':
113
+ k3 = typer.getchar()
114
+ if k3 == 'A':
115
+ current_idx = (current_idx - 1) % total_options
116
+ elif k3 == 'B':
117
+ current_idx = (current_idx + 1) % total_options
118
+ except: pass
119
+
120
+ prompt = Prompt()
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: weeb-cli
3
- Version: 0.1.3
3
+ Version: 0.2.0
4
4
  Summary: Tarayıcı yok, reklam yok, dikkat dağıtıcı unsur yok. Sadece siz ve eşsiz bir anime izleme deneyimi.
5
5
  Author-email: ewgsta <ewgst@proton.me>
6
6
  License-Expression: CC-BY-NC-ND-4.0
7
- Project-URL: Homepage, https://github.com/ewgsta/weeb-cli
7
+ Project-URL: Homepage, https://weeb-cli.ewgsta.me
8
8
  Project-URL: Repository, https://github.com/ewgsta/weeb-cli
9
9
  Project-URL: Issues, https://github.com/ewgsta/weeb-cli/issues
10
10
  Keywords: anime,weeb,anime-download,anizm,anime-watch,anime-watching,anime-downloading,anime-cli,allanime,animecix,anime-indir,anime-izle,weeb-cli,anime-izleme,anime-indirme,weebanime,tranime
@@ -58,7 +58,7 @@ Weeb CLI, anime severler için tasarlanmış güçlü, platformlar arası bir ko
58
58
  - Akıllı dosya isimlendirme (Örn: `Anime Adı - S1B1.mp4`).
59
59
  - **İzleme Geçmişi**: İlerlemenizi otomatik takip eder. Kaldığınız yeri (`●`) ve tamamlanan bölümleri (`✓`) işaretler.
60
60
  - **Çoklu Dil**: Tam Türkçe ve İngilizce arayüz desteği.
61
- - **Çoklu Kaynak**: HiAnime, AllAnime (İngilizce), Animecix, Anizle, Turkanime, Weeb (Türkçe)
61
+ - **Çoklu Kaynak**: HiAnime, AllAnime (İngilizce), Animecix, Anizle, Turkanime, Weeb (Yerel Kaynak) (Türkçe)
62
62
  - **Otomatik Kurulum**: Gerekli araçları (MPV, FFmpeg, Aria2, yt-dlp) eksikse otomatik tespit eder ve kurar.
63
63
 
64
64
  ## Kurulum
@@ -98,7 +98,7 @@ choco install weeb-cli
98
98
  Aracı terminalden başlatmak için:
99
99
 
100
100
  ```bash
101
- weeb
101
+ weeb-cli
102
102
  ```
103
103
 
104
104
  ### Kontroller
@@ -31,4 +31,5 @@ weeb_cli/services/updater.py
31
31
  weeb_cli/services/watch.py
32
32
  weeb_cli/ui/__init__.py
33
33
  weeb_cli/ui/header.py
34
- weeb_cli/ui/menu.py
34
+ weeb_cli/ui/menu.py
35
+ weeb_cli/ui/prompt.py
@@ -1 +0,0 @@
1
- __version__ = "0.1.3"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes