weeb-cli 2.16.1__tar.gz → 2.16.3__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.16.1 → weeb_cli-2.16.3}/PKG-INFO +41 -5
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/README.md +31 -1
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/pyproject.toml +3 -2
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/__init__.py +1 -1
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/search/watch_flow.py +10 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/locales/de.json +2 -1
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/locales/en.json +2 -1
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/locales/pl.json +2 -1
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/locales/tr.json +2 -1
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/local_library.py +12 -1
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli.egg-info/PKG-INFO +41 -5
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli.egg-info/requires.txt +10 -3
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/LICENSE +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/setup.cfg +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_anilist_tracker.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_aniworld_provider.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_api.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_cache.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_exceptions.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_kitsu_tracker.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_mal_tracker.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_providers.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_restful_api.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_sanitizer.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_sanitizer_security.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_sdk.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/__main__.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/__init__.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/api.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/downloads.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/library.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/search/__init__.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/search/anime_details.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/search/download_flow.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/search/episode_utils.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/search/search_handlers.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/search/stream_utils.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/search.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/serve.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/serve_restful.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/settings/__init__.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_backup.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_cache.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_config.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_download.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_drives.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_menu.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_shortcuts.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_trackers.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/settings.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/setup.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/watchlist.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/config.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/constants.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/exceptions.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/i18n.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/main.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/__init__.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/base.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/de/__init__.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/de/aniworld.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/en/__init__.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/en/allanime.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/en/hianime.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/__init__.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/doodstream.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/filemoon.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/megacloud.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/streamtape.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/vidoza.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/voe.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/pl/__init__.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/pl/docchi.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/registry.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/tr/__init__.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/tr/animecix.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/tr/anizle.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/tr/turkanime.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/tr/weeb.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/sdk.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/__init__.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/_base.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/_tracker_base.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/aniskip.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/cache.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/database.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/dependency_manager.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/details.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/discord_rpc.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/download/__init__.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/download/context.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/download/manager.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/download/queue.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/download/strategies/__init__.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/download/strategies/aria2.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/download/strategies/base.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/download/strategies/ffmpeg.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/download/strategies/generic.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/download/strategies/ytdlp.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/downloader.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/error_handler.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/headless_downloader.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/logger.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/notifier.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/player.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/progress.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/scraper.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/search.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/shortcuts.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/stream_validator.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/tracker.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/updater.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/watch.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/templates/anilist_error.html +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/templates/anilist_success.html +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/templates/mal_error.html +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/templates/mal_success.html +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/ui/__init__.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/ui/header.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/ui/menu.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/ui/prompt.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/utils/__init__.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/utils/decorators.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/utils/sanitizer.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/utils/shortcuts.py +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli.egg-info/SOURCES.txt +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli.egg-info/dependency_links.txt +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli.egg-info/entry_points.txt +0 -0
- {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: weeb-cli
|
|
3
|
-
Version: 2.16.
|
|
3
|
+
Version: 2.16.3
|
|
4
4
|
Summary: No browser, no ads, no distractions. Just you and an unparalleled anime viewing experience.
|
|
5
5
|
Author-email: ewgsta <ewgst@proton.me>
|
|
6
6
|
License-Expression: GPL-3.0-only
|
|
@@ -42,9 +42,15 @@ Provides-Extra: dev
|
|
|
42
42
|
Requires-Dist: build; extra == "dev"
|
|
43
43
|
Requires-Dist: pyinstaller; extra == "dev"
|
|
44
44
|
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
45
|
-
Requires-Dist: pytest-cov; extra == "dev"
|
|
46
|
-
Requires-Dist: pytest-asyncio; extra == "dev"
|
|
47
|
-
Requires-Dist: pytest-mock; extra == "dev"
|
|
45
|
+
Requires-Dist: pytest-cov>=7.1.0; extra == "dev"
|
|
46
|
+
Requires-Dist: pytest-asyncio>=1.3.0; extra == "dev"
|
|
47
|
+
Requires-Dist: pytest-mock>=3.15.1; extra == "dev"
|
|
48
|
+
Provides-Extra: docs
|
|
49
|
+
Requires-Dist: mkdocs>=1.6.1; extra == "docs"
|
|
50
|
+
Requires-Dist: mkdocs-material>=9.7.6; extra == "docs"
|
|
51
|
+
Requires-Dist: mkdocstrings[python]>=1.0.4; extra == "docs"
|
|
52
|
+
Requires-Dist: pymdown-extensions>=10.21.2; extra == "docs"
|
|
53
|
+
Requires-Dist: mkdocs-static-i18n>=1.3.1; extra == "docs"
|
|
48
54
|
Dynamic: license-file
|
|
49
55
|
|
|
50
56
|
<p align="center">
|
|
@@ -147,7 +153,37 @@ Download the appropriate file for your platform from [Releases](https://github.c
|
|
|
147
153
|
```bash
|
|
148
154
|
git clone https://github.com/ewgsta/weeb-cli.git
|
|
149
155
|
cd weeb-cli
|
|
150
|
-
|
|
156
|
+
|
|
157
|
+
# Install with Makefile
|
|
158
|
+
make install-dev
|
|
159
|
+
|
|
160
|
+
# Or install manually
|
|
161
|
+
pip install -e ".[dev]"
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
#### Makefile Commands
|
|
165
|
+
|
|
166
|
+
The project includes a Makefile for common development tasks:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
# Installation
|
|
170
|
+
make install # Install core dependencies
|
|
171
|
+
make install-dev # Install with development dependencies
|
|
172
|
+
make install-serve # Install with server dependencies
|
|
173
|
+
make install-all # Install all dependencies
|
|
174
|
+
|
|
175
|
+
# Testing
|
|
176
|
+
make test # Run tests
|
|
177
|
+
make test-cov # Run tests with coverage report
|
|
178
|
+
|
|
179
|
+
# Build
|
|
180
|
+
make build # Build distribution packages
|
|
181
|
+
make clean # Clean build artifacts
|
|
182
|
+
|
|
183
|
+
# Utilities
|
|
184
|
+
make lint # Run linting checks
|
|
185
|
+
make check-deps # Verify dependencies
|
|
186
|
+
make help # Show all available commands
|
|
151
187
|
```
|
|
152
188
|
|
|
153
189
|
---
|
|
@@ -98,7 +98,37 @@ Download the appropriate file for your platform from [Releases](https://github.c
|
|
|
98
98
|
```bash
|
|
99
99
|
git clone https://github.com/ewgsta/weeb-cli.git
|
|
100
100
|
cd weeb-cli
|
|
101
|
-
|
|
101
|
+
|
|
102
|
+
# Install with Makefile
|
|
103
|
+
make install-dev
|
|
104
|
+
|
|
105
|
+
# Or install manually
|
|
106
|
+
pip install -e ".[dev]"
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
#### Makefile Commands
|
|
110
|
+
|
|
111
|
+
The project includes a Makefile for common development tasks:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# Installation
|
|
115
|
+
make install # Install core dependencies
|
|
116
|
+
make install-dev # Install with development dependencies
|
|
117
|
+
make install-serve # Install with server dependencies
|
|
118
|
+
make install-all # Install all dependencies
|
|
119
|
+
|
|
120
|
+
# Testing
|
|
121
|
+
make test # Run tests
|
|
122
|
+
make test-cov # Run tests with coverage report
|
|
123
|
+
|
|
124
|
+
# Build
|
|
125
|
+
make build # Build distribution packages
|
|
126
|
+
make clean # Clean build artifacts
|
|
127
|
+
|
|
128
|
+
# Utilities
|
|
129
|
+
make lint # Run linting checks
|
|
130
|
+
make check-deps # Verify dependencies
|
|
131
|
+
make help # Show all available commands
|
|
102
132
|
```
|
|
103
133
|
|
|
104
134
|
---
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "weeb-cli"
|
|
7
|
-
version = "2.16.
|
|
7
|
+
version = "2.16.3"
|
|
8
8
|
description = "No browser, no ads, no distractions. Just you and an unparalleled anime viewing experience."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [{ name = "ewgsta", email = "ewgst@proton.me" }]
|
|
@@ -38,7 +38,8 @@ dependencies = [
|
|
|
38
38
|
serve = ["flask>=3.0", "pyyaml>=6.0"]
|
|
39
39
|
serve-restful = ["flask>=3.0", "flask-cors>=4.0"]
|
|
40
40
|
shortcuts = ["pywin32; sys_platform == 'win32'", "winshell; sys_platform == 'win32'"]
|
|
41
|
-
dev = ["build", "pyinstaller", "pytest>=7.0.0", "pytest-cov", "pytest-asyncio", "pytest-mock"]
|
|
41
|
+
dev = ["build", "pyinstaller", "pytest>=7.0.0", "pytest-cov>=7.1.0", "pytest-asyncio>=1.3.0", "pytest-mock>=3.15.1"]
|
|
42
|
+
docs = ["mkdocs>=1.6.1", "mkdocs-material>=9.7.6", "mkdocstrings[python]>=1.0.4", "pymdown-extensions>=10.21.2", "mkdocs-static-i18n>=1.3.1"]
|
|
42
43
|
|
|
43
44
|
[tool.setuptools.packages.find]
|
|
44
45
|
where = ["."]
|
|
@@ -314,6 +314,16 @@ def _update_trackers(details, slug, ep_num=None):
|
|
|
314
314
|
("Kitsu", kitsu_tracker)
|
|
315
315
|
]
|
|
316
316
|
|
|
317
|
+
# First, try to sync any pending updates
|
|
318
|
+
for name, tracker in trackers:
|
|
319
|
+
if tracker.is_authenticated():
|
|
320
|
+
try:
|
|
321
|
+
synced_count = tracker.sync_pending()
|
|
322
|
+
if synced_count > 0:
|
|
323
|
+
console.print(f"[green]✓ {name}: {synced_count} {i18n.t('watchlist.pending_synced', 'pending updates synced')}[/green]")
|
|
324
|
+
except Exception as e:
|
|
325
|
+
log_error(f"Failed to sync pending updates for {name}: {e}")
|
|
326
|
+
|
|
317
327
|
updated = []
|
|
318
328
|
pending = []
|
|
319
329
|
|
|
@@ -284,7 +284,8 @@
|
|
|
284
284
|
"tracker_updated": "aktualisiert",
|
|
285
285
|
"tracker_syncing": "wird synchronisiert...",
|
|
286
286
|
"tracker_pending": "Zu ausstehend hinzugefügt",
|
|
287
|
-
"tracker_error": "Tracker-Fehler"
|
|
287
|
+
"tracker_error": "Tracker-Fehler",
|
|
288
|
+
"pending_synced": "ausstehende Aktualisierung(en) synchronisiert"
|
|
288
289
|
},
|
|
289
290
|
"errors": {
|
|
290
291
|
"generic": "Ein Fehler ist aufgetreten",
|
|
@@ -284,7 +284,8 @@
|
|
|
284
284
|
"tracker_updated": "updated",
|
|
285
285
|
"tracker_syncing": "syncing...",
|
|
286
286
|
"tracker_pending": "Added to pending",
|
|
287
|
-
"tracker_error": "Tracker error"
|
|
287
|
+
"tracker_error": "Tracker error",
|
|
288
|
+
"pending_synced": "pending update(s) synced"
|
|
288
289
|
},
|
|
289
290
|
"errors": {
|
|
290
291
|
"generic": "An error occurred",
|
|
@@ -280,7 +280,8 @@
|
|
|
280
280
|
"tracker_updated": "zaktualizowano",
|
|
281
281
|
"tracker_syncing": "synchronizacja...",
|
|
282
282
|
"tracker_pending": "Dodano do oczekujących",
|
|
283
|
-
"tracker_error": "Błąd trackera"
|
|
283
|
+
"tracker_error": "Błąd trackera",
|
|
284
|
+
"pending_synced": "zsynchronizowano oczekujące aktualizacje"
|
|
284
285
|
},
|
|
285
286
|
"errors": {
|
|
286
287
|
"generic": "Wystąpił błąd",
|
|
@@ -284,7 +284,8 @@
|
|
|
284
284
|
"tracker_updated": "güncellendi",
|
|
285
285
|
"tracker_syncing": "senkronize ediliyor...",
|
|
286
286
|
"tracker_pending": "Bekleyenlere eklendi",
|
|
287
|
-
"tracker_error": "Tracker hatası"
|
|
287
|
+
"tracker_error": "Tracker hatası",
|
|
288
|
+
"pending_synced": "bekleyen güncelleme senkronize edildi"
|
|
288
289
|
},
|
|
289
290
|
"errors": {
|
|
290
291
|
"generic": "Bir hata oluştu",
|
|
@@ -148,7 +148,18 @@ class LocalLibrary:
|
|
|
148
148
|
if not connected_trackers:
|
|
149
149
|
return
|
|
150
150
|
|
|
151
|
-
#
|
|
151
|
+
# First, try to sync any pending updates
|
|
152
|
+
for name, tracker in connected_trackers:
|
|
153
|
+
try:
|
|
154
|
+
synced_count = tracker.sync_pending()
|
|
155
|
+
if synced_count > 0:
|
|
156
|
+
from weeb_cli.services.logger import info
|
|
157
|
+
info(f"{name}: Synced {synced_count} pending updates")
|
|
158
|
+
except Exception as e:
|
|
159
|
+
from weeb_cli.services.logger import error
|
|
160
|
+
error(f"Failed to sync pending updates for {name}: {e}")
|
|
161
|
+
|
|
162
|
+
# Try to sync current episode to all trackers
|
|
152
163
|
for name, tracker in connected_trackers:
|
|
153
164
|
tracker.update_progress(anime_title, ep_number, total_episodes)
|
|
154
165
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: weeb-cli
|
|
3
|
-
Version: 2.16.
|
|
3
|
+
Version: 2.16.3
|
|
4
4
|
Summary: No browser, no ads, no distractions. Just you and an unparalleled anime viewing experience.
|
|
5
5
|
Author-email: ewgsta <ewgst@proton.me>
|
|
6
6
|
License-Expression: GPL-3.0-only
|
|
@@ -42,9 +42,15 @@ Provides-Extra: dev
|
|
|
42
42
|
Requires-Dist: build; extra == "dev"
|
|
43
43
|
Requires-Dist: pyinstaller; extra == "dev"
|
|
44
44
|
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
45
|
-
Requires-Dist: pytest-cov; extra == "dev"
|
|
46
|
-
Requires-Dist: pytest-asyncio; extra == "dev"
|
|
47
|
-
Requires-Dist: pytest-mock; extra == "dev"
|
|
45
|
+
Requires-Dist: pytest-cov>=7.1.0; extra == "dev"
|
|
46
|
+
Requires-Dist: pytest-asyncio>=1.3.0; extra == "dev"
|
|
47
|
+
Requires-Dist: pytest-mock>=3.15.1; extra == "dev"
|
|
48
|
+
Provides-Extra: docs
|
|
49
|
+
Requires-Dist: mkdocs>=1.6.1; extra == "docs"
|
|
50
|
+
Requires-Dist: mkdocs-material>=9.7.6; extra == "docs"
|
|
51
|
+
Requires-Dist: mkdocstrings[python]>=1.0.4; extra == "docs"
|
|
52
|
+
Requires-Dist: pymdown-extensions>=10.21.2; extra == "docs"
|
|
53
|
+
Requires-Dist: mkdocs-static-i18n>=1.3.1; extra == "docs"
|
|
48
54
|
Dynamic: license-file
|
|
49
55
|
|
|
50
56
|
<p align="center">
|
|
@@ -147,7 +153,37 @@ Download the appropriate file for your platform from [Releases](https://github.c
|
|
|
147
153
|
```bash
|
|
148
154
|
git clone https://github.com/ewgsta/weeb-cli.git
|
|
149
155
|
cd weeb-cli
|
|
150
|
-
|
|
156
|
+
|
|
157
|
+
# Install with Makefile
|
|
158
|
+
make install-dev
|
|
159
|
+
|
|
160
|
+
# Or install manually
|
|
161
|
+
pip install -e ".[dev]"
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
#### Makefile Commands
|
|
165
|
+
|
|
166
|
+
The project includes a Makefile for common development tasks:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
# Installation
|
|
170
|
+
make install # Install core dependencies
|
|
171
|
+
make install-dev # Install with development dependencies
|
|
172
|
+
make install-serve # Install with server dependencies
|
|
173
|
+
make install-all # Install all dependencies
|
|
174
|
+
|
|
175
|
+
# Testing
|
|
176
|
+
make test # Run tests
|
|
177
|
+
make test-cov # Run tests with coverage report
|
|
178
|
+
|
|
179
|
+
# Build
|
|
180
|
+
make build # Build distribution packages
|
|
181
|
+
make clean # Clean build artifacts
|
|
182
|
+
|
|
183
|
+
# Utilities
|
|
184
|
+
make lint # Run linting checks
|
|
185
|
+
make check-deps # Verify dependencies
|
|
186
|
+
make help # Show all available commands
|
|
151
187
|
```
|
|
152
188
|
|
|
153
189
|
---
|
|
@@ -20,9 +20,16 @@ winotify
|
|
|
20
20
|
build
|
|
21
21
|
pyinstaller
|
|
22
22
|
pytest>=7.0.0
|
|
23
|
-
pytest-cov
|
|
24
|
-
pytest-asyncio
|
|
25
|
-
pytest-mock
|
|
23
|
+
pytest-cov>=7.1.0
|
|
24
|
+
pytest-asyncio>=1.3.0
|
|
25
|
+
pytest-mock>=3.15.1
|
|
26
|
+
|
|
27
|
+
[docs]
|
|
28
|
+
mkdocs>=1.6.1
|
|
29
|
+
mkdocs-material>=9.7.6
|
|
30
|
+
mkdocstrings[python]>=1.0.4
|
|
31
|
+
pymdown-extensions>=10.21.2
|
|
32
|
+
mkdocs-static-i18n>=1.3.1
|
|
26
33
|
|
|
27
34
|
[serve]
|
|
28
35
|
flask>=3.0
|
|
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
|
|
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
|
|
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
|