Unit3Dup 0.8.7__tar.gz → 0.8.8__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.
- {unit3dup-0.8.7 → unit3dup-0.8.8}/PKG-INFO +2 -2
- {unit3dup-0.8.7 → unit3dup-0.8.8}/README.rst +1 -1
- {unit3dup-0.8.7 → unit3dup-0.8.8}/Unit3Dup.egg-info/PKG-INFO +2 -2
- {unit3dup-0.8.7 → unit3dup-0.8.8}/Unit3Dup.egg-info/SOURCES.txt +2 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/Unit3Dup.egg-info/top_level.txt +1 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/imageHost.py +20 -1
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/settings.py +50 -6
- {unit3dup-0.8.7 → unit3dup-0.8.8}/pyproject.toml +1 -1
- unit3dup-0.8.8/unit3dup/web/__init__.py +0 -0
- unit3dup-0.8.8/unit3dup/web/main.py +46 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/LICENSE +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/Unit3Dup.egg-info/dependency_links.txt +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/Unit3Dup.egg-info/entry_points.txt +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/Unit3Dup.egg-info/requires.txt +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/bdinfo_string.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/bittorrent.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/command.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/constants.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/Pw/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/Pw/core/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/Pw/core/models/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/Pw/core/models/indexers.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/Pw/core/models/search.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/Pw/core/models/torrent_client_config.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/Pw/core/pw_api.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/Pw/pw_manager.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/Pw/pw_service.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/ftpx/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/ftpx/client.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/ftpx/core/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/ftpx/core/ftpx_service.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/ftpx/core/ftpx_session.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/ftpx/core/menu.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/ftpx/core/models/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/ftpx/core/models/list.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/igdb/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/igdb/client.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/igdb/core/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/igdb/core/api.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/igdb/core/models/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/igdb/core/models/search.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/igdb/core/platformid.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/igdb/core/tags.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/imdb.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/mediaresult.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/sessions/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/sessions/agents.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/sessions/exceptions.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/sessions/session.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/api.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/keywords.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/movie/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/movie/alternative_titles.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/movie/details.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/movie/movie.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/movie/nowplaying.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/movie/release_info.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/tvshow/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/tvshow/alternative.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/tvshow/details.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/tvshow/on_the_air.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/tvshow/translations.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/tvshow/tvshow.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/videos.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/trailers/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/trailers/api.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/trailers/response.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/extractor.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/frames.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/mediainfo.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/mediainfo_string.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/title.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/torrent_clients.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/trackers/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/trackers/data.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/trackers/itt.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/trackers/sis.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/trackers/trackers.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/common/utility.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/requirements.txt +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/setup.cfg +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/__main__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/automode.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/bot.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/duplicate.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/exceptions.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/media.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/media_manager/ContentManager.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/media_manager/DocuManager.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/media_manager/GameManager.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/media_manager/MediaInfoManager.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/media_manager/SeedManager.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/media_manager/TorrentManager.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/media_manager/VideoManager.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/media_manager/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/media_manager/common.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/pvtDocu.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/pvtTorrent.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/pvtTracker.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/pvtVideo.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/torrent.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/unit3dup/upload.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/view/__init__.py +0 -0
- {unit3dup-0.8.7 → unit3dup-0.8.8}/view/custom_console.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: Unit3Dup
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.8
|
|
4
4
|
Summary: An uploader for the Unit3D torrent tracker
|
|
5
5
|
Author: Parzival
|
|
6
6
|
License-Expression: MIT
|
|
@@ -75,7 +75,7 @@ pip install unit3dup
|
|
|
75
75
|
|
|
76
76
|
Upgrade
|
|
77
77
|
-------
|
|
78
|
-
pip install --upgrade
|
|
78
|
+
pip install unit3dup --upgrade
|
|
79
79
|
|
|
80
80
|
Ubuntu/Debian Dependencies
|
|
81
81
|
--------------------------
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: Unit3Dup
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.8
|
|
4
4
|
Summary: An uploader for the Unit3D torrent tracker
|
|
5
5
|
Author: Parzival
|
|
6
6
|
License-Expression: MIT
|
|
@@ -75,7 +75,7 @@ pip install unit3dup
|
|
|
75
75
|
|
|
76
76
|
Upgrade
|
|
77
77
|
-------
|
|
78
|
-
pip install --upgrade
|
|
78
|
+
pip install unit3dup --upgrade
|
|
79
79
|
|
|
80
80
|
Ubuntu/Debian Dependencies
|
|
81
81
|
--------------------------
|
|
@@ -102,5 +102,7 @@ unit3dup/media_manager/TorrentManager.py
|
|
|
102
102
|
unit3dup/media_manager/VideoManager.py
|
|
103
103
|
unit3dup/media_manager/__init__.py
|
|
104
104
|
unit3dup/media_manager/common.py
|
|
105
|
+
unit3dup/web/__init__.py
|
|
106
|
+
unit3dup/web/main.py
|
|
105
107
|
view/__init__.py
|
|
106
108
|
view/custom_console.py
|
|
@@ -5,7 +5,6 @@ import json
|
|
|
5
5
|
import time
|
|
6
6
|
import requests
|
|
7
7
|
|
|
8
|
-
from PIL import Image
|
|
9
8
|
from abc import ABC, abstractmethod
|
|
10
9
|
from common import config_settings
|
|
11
10
|
from view import custom_console
|
|
@@ -163,6 +162,20 @@ class ImgFi(ImageUploader):
|
|
|
163
162
|
def get_field_name(self) -> str:
|
|
164
163
|
return 'source'
|
|
165
164
|
|
|
165
|
+
class PassIMA(ImageUploader):
|
|
166
|
+
|
|
167
|
+
priority= config_settings.user_preferences.PASSIMA_PRIORITY
|
|
168
|
+
def get_endpoint(self) -> str:
|
|
169
|
+
return "https://passtheima.ge/api/1/upload"
|
|
170
|
+
|
|
171
|
+
def get_data(self) -> dict:
|
|
172
|
+
return {
|
|
173
|
+
"key": self.key,
|
|
174
|
+
"title": self.image_name,
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
def get_field_name(self) -> str:
|
|
178
|
+
return 'source'
|
|
166
179
|
|
|
167
180
|
|
|
168
181
|
class ImageUploaderFallback:
|
|
@@ -213,6 +226,10 @@ class ImageUploaderFallback:
|
|
|
213
226
|
|
|
214
227
|
if uploader_host == "ImgFi":
|
|
215
228
|
return response['image']['url']
|
|
229
|
+
|
|
230
|
+
if uploader_host == "PassIMA":
|
|
231
|
+
return response['image']['url']
|
|
232
|
+
|
|
216
233
|
return None
|
|
217
234
|
|
|
218
235
|
class Build:
|
|
@@ -232,6 +249,7 @@ class Build:
|
|
|
232
249
|
self.LENSDUMP_KEY= config_settings.tracker_config.LENSDUMP_KEY
|
|
233
250
|
self.PTSCREENS_KEY= config_settings.tracker_config.PTSCREENS_KEY
|
|
234
251
|
self.IMGFI_KEY = config_settings.tracker_config.IMGFI_KEY
|
|
252
|
+
self.PASSIMA_KEY = config_settings.tracker_config.PASSIMA_KEY
|
|
235
253
|
self.extracted_frames = extracted_frames
|
|
236
254
|
|
|
237
255
|
|
|
@@ -251,6 +269,7 @@ class Build:
|
|
|
251
269
|
PtScreens(img_bytes, self.PTSCREENS_KEY,image_name=image_name),
|
|
252
270
|
LensDump(img_bytes, self.LENSDUMP_KEY,image_name=image_name),
|
|
253
271
|
ImgFi(img_bytes, self.IMGFI_KEY,image_name=image_name),
|
|
272
|
+
PassIMA(img_bytes, self.PASSIMA_KEY, image_name=image_name),
|
|
254
273
|
]
|
|
255
274
|
|
|
256
275
|
# Sorting list based on priority
|
|
@@ -13,7 +13,7 @@ from common.utility import ManageTitles
|
|
|
13
13
|
from common import trackers
|
|
14
14
|
|
|
15
15
|
config_file = "Unit3Dbot.json"
|
|
16
|
-
version = "0.8.
|
|
16
|
+
version = "0.8.8"
|
|
17
17
|
|
|
18
18
|
if os.name == "nt":
|
|
19
19
|
PW_TORRENT_ARCHIVE_PATH: Path = Path(os.getenv("LOCALAPPDATA", ".")) / "Unit3Dup_config" / "pw_torrent_archive"
|
|
@@ -46,6 +46,14 @@ def get_default_path(field: str)-> str:
|
|
|
46
46
|
return str(default_paths[field])
|
|
47
47
|
|
|
48
48
|
|
|
49
|
+
|
|
50
|
+
class Ccolors:
|
|
51
|
+
OKCYAN = '\033[96m'
|
|
52
|
+
OKGREEN = '\033[92m'
|
|
53
|
+
WARNING = '\033[93m'
|
|
54
|
+
FAIL = '\033[91m'
|
|
55
|
+
ENDC = '\033[0m'
|
|
56
|
+
|
|
49
57
|
class TrackerConfig(BaseModel):
|
|
50
58
|
ITT_URL: str
|
|
51
59
|
ITT_APIKEY: str | None = None
|
|
@@ -60,6 +68,7 @@ class TrackerConfig(BaseModel):
|
|
|
60
68
|
LENSDUMP_KEY: str | None = None
|
|
61
69
|
PTSCREENS_KEY: str | None = None
|
|
62
70
|
IMGFI_KEY: str | None = None
|
|
71
|
+
PASSIMA_KEY: str | None = None
|
|
63
72
|
YOUTUBE_KEY: str | None = None
|
|
64
73
|
IGDB_CLIENT_ID: str | None = None
|
|
65
74
|
IGDB_ID_SECRET: str | None = None
|
|
@@ -92,6 +101,7 @@ class UserPreferences(BaseModel):
|
|
|
92
101
|
FREE_IMAGE_PRIORITY: int = 2
|
|
93
102
|
IMGBB_PRIORITY: int = 3
|
|
94
103
|
IMGFI_PRIORITY: int = 4
|
|
104
|
+
PASSIMA_PRIORITY: int = 5
|
|
95
105
|
NUMBER_OF_SCREENSHOTS: int = 4
|
|
96
106
|
YOUTUBE_FAV_CHANNEL_ID: str | None = None
|
|
97
107
|
YOUTUBE_CHANNEL_ENABLE: bool = False
|
|
@@ -419,7 +429,7 @@ class Config(BaseModel):
|
|
|
419
429
|
section[field] = Validate.string(value=section[field], field_name=field)
|
|
420
430
|
|
|
421
431
|
if field in ['NUMBER_OF_SCREENSHOTS','COMPRESS_SCSHOT','IMGBB_PRIORITY','FREE_IMAGE_PRIORITY',
|
|
422
|
-
'LENSDUMP_PRIORITY','WATCHER_INTERVAL','SIZE_TH', 'FAST_LOAD']:
|
|
432
|
+
'LENSDUMP_PRIORITY','PASSIMA_PRIORITY','WATCHER_INTERVAL','SIZE_TH', 'FAST_LOAD']:
|
|
423
433
|
section[field] = Validate.integer(value=section[field], field_name=field)
|
|
424
434
|
|
|
425
435
|
if field == 'PREFERRED_LANG':
|
|
@@ -502,6 +512,7 @@ class Load:
|
|
|
502
512
|
"LENSDUMP_KEY": "no_key",
|
|
503
513
|
"PTSCREENS_KEY": "no_key",
|
|
504
514
|
"IMGFI_KEY": "no_key",
|
|
515
|
+
"PASSIMA_KEY": "no_key",
|
|
505
516
|
"YOUTUBE_KEY": "no_key",
|
|
506
517
|
"IGDB_CLIENT_ID": "no_key",
|
|
507
518
|
"IGDB_ID_SECRET": "no_key",
|
|
@@ -532,6 +543,7 @@ class Load:
|
|
|
532
543
|
"FREE_IMAGE_PRIORITY": 2,
|
|
533
544
|
"IMGBB_PRIORITY": 3,
|
|
534
545
|
"IMGFI_PRIORITY": 4,
|
|
546
|
+
"PASSIMA_PRIORITY": 5,
|
|
535
547
|
"NUMBER_OF_SCREENSHOTS": 4,
|
|
536
548
|
"YOUTUBE_FAV_CHANNEL_ID": "UCGCbxpnt25hWPFLSbvwfg_w",
|
|
537
549
|
"YOUTUBE_CHANNEL_ENABLE": "False",
|
|
@@ -741,10 +753,11 @@ class JsonConfig:
|
|
|
741
753
|
return json.loads(json_data)
|
|
742
754
|
|
|
743
755
|
except json.JSONDecodeError as e:
|
|
744
|
-
print(f"
|
|
745
|
-
|
|
746
|
-
print(
|
|
747
|
-
|
|
756
|
+
print(f"* Please fix the error{Ccolors.WARNING} near Line {e.lineno}{Ccolors.ENDC}"
|
|
757
|
+
f" and {Ccolors.WARNING}Column {e.colno}{Ccolors.ENDC} in the config file: *\n")
|
|
758
|
+
print(f"{e.msg}\n")
|
|
759
|
+
# Seek And...
|
|
760
|
+
self.aim(line=e.lineno,col=e.colno)
|
|
748
761
|
exit(1)
|
|
749
762
|
except FileNotFoundError:
|
|
750
763
|
print(f"Configuration '{self.default_json_path}' not found")
|
|
@@ -797,3 +810,34 @@ class JsonConfig:
|
|
|
797
810
|
|
|
798
811
|
print(message)
|
|
799
812
|
|
|
813
|
+
def aim(self, line: int, col: int):
|
|
814
|
+
"""
|
|
815
|
+
Try to identify the exact location of json error
|
|
816
|
+
Args:
|
|
817
|
+
line: Error line from the try block
|
|
818
|
+
col: Error line from the try block
|
|
819
|
+
Returns:
|
|
820
|
+
None
|
|
821
|
+
"""
|
|
822
|
+
|
|
823
|
+
# Open the configuration file
|
|
824
|
+
with open(self.default_json_path, 'r') as file:
|
|
825
|
+
lines = file.readlines()
|
|
826
|
+
|
|
827
|
+
# Test the line value
|
|
828
|
+
if line <= len(lines):
|
|
829
|
+
# Create a "context" around the error....
|
|
830
|
+
line_context1 = lines[line -2].rstrip('\n')
|
|
831
|
+
line_context2 = lines[line + 1].rstrip('\n')
|
|
832
|
+
|
|
833
|
+
# Try to identify the position
|
|
834
|
+
line_text = lines[line - 1].rstrip('\n')
|
|
835
|
+
print(f"{line_context1}")
|
|
836
|
+
print(f"{Ccolors.WARNING}>>> {line_text}{Ccolors.ENDC}")
|
|
837
|
+
|
|
838
|
+
# Put the cursor under the error
|
|
839
|
+
cursor = ' ' * (col-1) + '^'
|
|
840
|
+
print(f"{Ccolors.WARNING} {cursor}{Ccolors.ENDC}")
|
|
841
|
+
print(f"{line_context2}")
|
|
842
|
+
else:
|
|
843
|
+
print("Line number is out of range !")
|
|
File without changes
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from fastapi import FastAPI, APIRouter
|
|
2
|
+
from random import randint
|
|
3
|
+
from common.torrent_clients import TransmissionClient, QbittorrentClient, RTorrentClient
|
|
4
|
+
from common.command import CommandLine
|
|
5
|
+
from common.settings import Load,DEFAULT_JSON_PATH
|
|
6
|
+
|
|
7
|
+
from unit3dup.torrent import View
|
|
8
|
+
from unit3dup import pvtTracker
|
|
9
|
+
from unit3dup.bot import Bot
|
|
10
|
+
from view import custom_console
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
import uvicorn
|
|
14
|
+
import argparse
|
|
15
|
+
from random import randint
|
|
16
|
+
|
|
17
|
+
app = FastAPI()
|
|
18
|
+
|
|
19
|
+
# Classe che gestisce gli endpoint
|
|
20
|
+
class WebApp:
|
|
21
|
+
def __init__(self, config: Load):
|
|
22
|
+
self.router = APIRouter()
|
|
23
|
+
self.numb = randint(0, 100)
|
|
24
|
+
self._setup_routes()
|
|
25
|
+
|
|
26
|
+
def _setup_routes(self):
|
|
27
|
+
# Add the endpoints
|
|
28
|
+
self.router.add_api_route("/", self.root, methods=["GET"])
|
|
29
|
+
self.router.add_api_route("/upload/{name}", self.upload, methods=["GET"])
|
|
30
|
+
|
|
31
|
+
async def root(self):
|
|
32
|
+
return {"message": f"Hello World {self.numb}"}
|
|
33
|
+
|
|
34
|
+
async def upload(self, name: str):
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
return {"message": f"Hello {name}, numb is {self.numb}"}
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def web():
|
|
42
|
+
web_app = WebApp(config=Load().load_config())
|
|
43
|
+
app.include_router(web_app.router)
|
|
44
|
+
uvicorn.run("unit3dup.web.main:app", host="127.0.0.1", port=8000, reload=True)
|
|
45
|
+
|
|
46
|
+
|
|
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
|
{unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/Pw/core/models/torrent_client_config.py
RENAMED
|
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
|
{unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/__init__.py
RENAMED
|
File without changes
|
{unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/movie/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/movie/details.py
RENAMED
|
File without changes
|
{unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/movie/movie.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/tvshow/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/tvshow/details.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unit3dup-0.8.7 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/tvshow/tvshow.py
RENAMED
|
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
|