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.
Files changed (129) hide show
  1. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/PKG-INFO +41 -5
  2. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/README.md +31 -1
  3. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/pyproject.toml +3 -2
  4. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/__init__.py +1 -1
  5. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/search/watch_flow.py +10 -0
  6. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/locales/de.json +2 -1
  7. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/locales/en.json +2 -1
  8. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/locales/pl.json +2 -1
  9. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/locales/tr.json +2 -1
  10. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/local_library.py +12 -1
  11. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli.egg-info/PKG-INFO +41 -5
  12. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli.egg-info/requires.txt +10 -3
  13. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/LICENSE +0 -0
  14. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/setup.cfg +0 -0
  15. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_anilist_tracker.py +0 -0
  16. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_aniworld_provider.py +0 -0
  17. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_api.py +0 -0
  18. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_cache.py +0 -0
  19. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_exceptions.py +0 -0
  20. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_kitsu_tracker.py +0 -0
  21. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_mal_tracker.py +0 -0
  22. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_providers.py +0 -0
  23. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_restful_api.py +0 -0
  24. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_sanitizer.py +0 -0
  25. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_sanitizer_security.py +0 -0
  26. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/tests/test_sdk.py +0 -0
  27. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/__main__.py +0 -0
  28. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/__init__.py +0 -0
  29. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/api.py +0 -0
  30. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/downloads.py +0 -0
  31. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/library.py +0 -0
  32. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/search/__init__.py +0 -0
  33. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/search/anime_details.py +0 -0
  34. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/search/download_flow.py +0 -0
  35. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/search/episode_utils.py +0 -0
  36. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/search/search_handlers.py +0 -0
  37. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/search/stream_utils.py +0 -0
  38. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/search.py +0 -0
  39. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/serve.py +0 -0
  40. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/serve_restful.py +0 -0
  41. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/settings/__init__.py +0 -0
  42. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_backup.py +0 -0
  43. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_cache.py +0 -0
  44. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_config.py +0 -0
  45. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_download.py +0 -0
  46. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_drives.py +0 -0
  47. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_menu.py +0 -0
  48. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_shortcuts.py +0 -0
  49. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_trackers.py +0 -0
  50. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/settings.py +0 -0
  51. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/setup.py +0 -0
  52. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/commands/watchlist.py +0 -0
  53. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/config.py +0 -0
  54. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/constants.py +0 -0
  55. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/exceptions.py +0 -0
  56. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/i18n.py +0 -0
  57. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/main.py +0 -0
  58. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/__init__.py +0 -0
  59. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/base.py +0 -0
  60. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/de/__init__.py +0 -0
  61. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/de/aniworld.py +0 -0
  62. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/en/__init__.py +0 -0
  63. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/en/allanime.py +0 -0
  64. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/en/hianime.py +0 -0
  65. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/__init__.py +0 -0
  66. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/doodstream.py +0 -0
  67. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/filemoon.py +0 -0
  68. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/megacloud.py +0 -0
  69. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/streamtape.py +0 -0
  70. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/vidoza.py +0 -0
  71. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/voe.py +0 -0
  72. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/pl/__init__.py +0 -0
  73. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/pl/docchi.py +0 -0
  74. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/registry.py +0 -0
  75. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/tr/__init__.py +0 -0
  76. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/tr/animecix.py +0 -0
  77. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/tr/anizle.py +0 -0
  78. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/tr/turkanime.py +0 -0
  79. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/providers/tr/weeb.py +0 -0
  80. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/sdk.py +0 -0
  81. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/__init__.py +0 -0
  82. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/_base.py +0 -0
  83. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/_tracker_base.py +0 -0
  84. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/aniskip.py +0 -0
  85. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/cache.py +0 -0
  86. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/database.py +0 -0
  87. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/dependency_manager.py +0 -0
  88. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/details.py +0 -0
  89. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/discord_rpc.py +0 -0
  90. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/download/__init__.py +0 -0
  91. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/download/context.py +0 -0
  92. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/download/manager.py +0 -0
  93. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/download/queue.py +0 -0
  94. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/download/strategies/__init__.py +0 -0
  95. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/download/strategies/aria2.py +0 -0
  96. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/download/strategies/base.py +0 -0
  97. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/download/strategies/ffmpeg.py +0 -0
  98. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/download/strategies/generic.py +0 -0
  99. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/download/strategies/ytdlp.py +0 -0
  100. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/downloader.py +0 -0
  101. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/error_handler.py +0 -0
  102. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/headless_downloader.py +0 -0
  103. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/logger.py +0 -0
  104. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/notifier.py +0 -0
  105. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/player.py +0 -0
  106. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/progress.py +0 -0
  107. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/scraper.py +0 -0
  108. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/search.py +0 -0
  109. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/shortcuts.py +0 -0
  110. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/stream_validator.py +0 -0
  111. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/tracker.py +0 -0
  112. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/updater.py +0 -0
  113. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/services/watch.py +0 -0
  114. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/templates/anilist_error.html +0 -0
  115. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/templates/anilist_success.html +0 -0
  116. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/templates/mal_error.html +0 -0
  117. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/templates/mal_success.html +0 -0
  118. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/ui/__init__.py +0 -0
  119. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/ui/header.py +0 -0
  120. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/ui/menu.py +0 -0
  121. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/ui/prompt.py +0 -0
  122. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/utils/__init__.py +0 -0
  123. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/utils/decorators.py +0 -0
  124. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/utils/sanitizer.py +0 -0
  125. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli/utils/shortcuts.py +0 -0
  126. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli.egg-info/SOURCES.txt +0 -0
  127. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli.egg-info/dependency_links.txt +0 -0
  128. {weeb_cli-2.16.1 → weeb_cli-2.16.3}/weeb_cli.egg-info/entry_points.txt +0 -0
  129. {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.1
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
- pip install -e .
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
- pip install -e .
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.1"
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 = ["."]
@@ -31,7 +31,7 @@ Attributes:
31
31
  __version__ (str): Current version of Weeb CLI.
32
32
  """
33
33
 
34
- __version__ = "2.16.1"
34
+ __version__ = "2.16.3"
35
35
 
36
36
  # SDK exports for easy import
37
37
  from weeb_cli.sdk import WeebSDK, list_providers, get_provider_info
@@ -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
- # Try to sync to all trackers
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.1
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
- pip install -e .
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