Unit3Dup 0.9.31__tar.gz → 0.10.1__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 (106) hide show
  1. {unit3dup-0.9.31 → unit3dup-0.10.1}/PKG-INFO +1 -1
  2. {unit3dup-0.9.31 → unit3dup-0.10.1}/Unit3Dup.egg-info/PKG-INFO +1 -1
  3. {unit3dup-0.9.31 → unit3dup-0.10.1}/Unit3Dup.egg-info/SOURCES.txt +1 -0
  4. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/mediainfo.py +1 -1
  5. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/settings.py +12 -6
  6. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/trackers/__init__.py +2 -1
  7. unit3dup-0.10.1/common/trackers/ban_list.py +6 -0
  8. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/trackers/data.py +9 -0
  9. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/trackers/itt.py +1 -0
  10. unit3dup-0.10.1/common/trackers/ptt.py +142 -0
  11. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/utility.py +7 -7
  12. {unit3dup-0.9.31 → unit3dup-0.10.1}/pyproject.toml +1 -1
  13. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/__main__.py +22 -26
  14. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/media.py +9 -6
  15. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/pvtTracker.py +5 -0
  16. unit3dup-0.9.31/common/trackers/ban_list.py +0 -5
  17. {unit3dup-0.9.31 → unit3dup-0.10.1}/LICENSE +0 -0
  18. {unit3dup-0.9.31 → unit3dup-0.10.1}/README.rst +0 -0
  19. {unit3dup-0.9.31 → unit3dup-0.10.1}/Unit3Dup.egg-info/dependency_links.txt +0 -0
  20. {unit3dup-0.9.31 → unit3dup-0.10.1}/Unit3Dup.egg-info/entry_points.txt +0 -0
  21. {unit3dup-0.9.31 → unit3dup-0.10.1}/Unit3Dup.egg-info/requires.txt +0 -0
  22. {unit3dup-0.9.31 → unit3dup-0.10.1}/Unit3Dup.egg-info/top_level.txt +0 -0
  23. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/__init__.py +0 -0
  24. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/bdinfo_string.py +0 -0
  25. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/bittorrent.py +0 -0
  26. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/command.py +0 -0
  27. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/constants.py +0 -0
  28. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/database.py +0 -0
  29. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/__init__.py +0 -0
  30. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/ftpx/__init__.py +0 -0
  31. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/ftpx/client.py +0 -0
  32. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/ftpx/core/__init__.py +0 -0
  33. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/ftpx/core/ftpx_service.py +0 -0
  34. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/ftpx/core/ftpx_session.py +0 -0
  35. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/ftpx/core/menu.py +0 -0
  36. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/ftpx/core/models/__init__.py +0 -0
  37. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/ftpx/core/models/list.py +0 -0
  38. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/igdb/__init__.py +0 -0
  39. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/igdb/client.py +0 -0
  40. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/igdb/core/__init__.py +0 -0
  41. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/igdb/core/api.py +0 -0
  42. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/igdb/core/models/__init__.py +0 -0
  43. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/igdb/core/models/search.py +0 -0
  44. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/igdb/core/platformid.py +0 -0
  45. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/igdb/core/tags.py +0 -0
  46. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/imageHost.py +0 -0
  47. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/mediaresult.py +0 -0
  48. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/sessions/__init__.py +0 -0
  49. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/sessions/agents.py +0 -0
  50. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/sessions/exceptions.py +0 -0
  51. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/sessions/session.py +0 -0
  52. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/theMovieDB/__init__.py +0 -0
  53. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/theMovieDB/core/__init__.py +0 -0
  54. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/theMovieDB/core/api.py +0 -0
  55. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/theMovieDB/core/keywords.py +0 -0
  56. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/theMovieDB/core/models/__init__.py +0 -0
  57. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/theMovieDB/core/models/movie/__init__.py +0 -0
  58. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/theMovieDB/core/models/movie/alternative_titles.py +0 -0
  59. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/theMovieDB/core/models/movie/details.py +0 -0
  60. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/theMovieDB/core/models/movie/movie.py +0 -0
  61. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/theMovieDB/core/models/movie/nowplaying.py +0 -0
  62. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/theMovieDB/core/models/movie/release_info.py +0 -0
  63. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/theMovieDB/core/models/tvshow/__init__.py +0 -0
  64. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/theMovieDB/core/models/tvshow/alternative.py +0 -0
  65. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/theMovieDB/core/models/tvshow/details.py +0 -0
  66. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/theMovieDB/core/models/tvshow/on_the_air.py +0 -0
  67. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/theMovieDB/core/models/tvshow/translations.py +0 -0
  68. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/theMovieDB/core/models/tvshow/tvshow.py +0 -0
  69. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/theMovieDB/core/videos.py +0 -0
  70. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/trailers/__init__.py +0 -0
  71. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/trailers/api.py +0 -0
  72. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/trailers/response.py +0 -0
  73. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/external_services/tvdb.py +0 -0
  74. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/extractor.py +0 -0
  75. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/frames.py +0 -0
  76. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/mediainfo_string.py +0 -0
  77. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/tags.py +0 -0
  78. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/title.py +0 -0
  79. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/torrent_clients.py +0 -0
  80. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/trackers/signs_list.py +0 -0
  81. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/trackers/sis.py +0 -0
  82. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/trackers/tags_list.py +0 -0
  83. {unit3dup-0.9.31 → unit3dup-0.10.1}/common/trackers/trackers.py +0 -0
  84. {unit3dup-0.9.31 → unit3dup-0.10.1}/requirements.txt +0 -0
  85. {unit3dup-0.9.31 → unit3dup-0.10.1}/setup.cfg +0 -0
  86. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/__init__.py +0 -0
  87. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/automode.py +0 -0
  88. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/bot.py +0 -0
  89. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/duplicate.py +0 -0
  90. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/exceptions.py +0 -0
  91. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/media_manager/ContentManager.py +0 -0
  92. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/media_manager/DocuManager.py +0 -0
  93. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/media_manager/GameManager.py +0 -0
  94. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/media_manager/MediaInfoManager.py +0 -0
  95. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/media_manager/SeedManager.py +0 -0
  96. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/media_manager/TorrentManager.py +0 -0
  97. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/media_manager/VideoManager.py +0 -0
  98. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/media_manager/__init__.py +0 -0
  99. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/media_manager/common.py +0 -0
  100. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/pvtDocu.py +0 -0
  101. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/pvtTorrent.py +0 -0
  102. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/pvtVideo.py +0 -0
  103. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/torrent.py +0 -0
  104. {unit3dup-0.9.31 → unit3dup-0.10.1}/unit3dup/upload.py +0 -0
  105. {unit3dup-0.9.31 → unit3dup-0.10.1}/view/__init__.py +0 -0
  106. {unit3dup-0.9.31 → unit3dup-0.10.1}/view/custom_console.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Unit3Dup
3
- Version: 0.9.31
3
+ Version: 0.10.1
4
4
  Summary: An uploader for the Unit3D torrent tracker
5
5
  Author: Parzival
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Unit3Dup
3
- Version: 0.9.31
3
+ Version: 0.10.1
4
4
  Summary: An uploader for the Unit3D torrent tracker
5
5
  Author: Parzival
6
6
  License-Expression: MIT
@@ -72,6 +72,7 @@ common/trackers/__init__.py
72
72
  common/trackers/ban_list.py
73
73
  common/trackers/data.py
74
74
  common/trackers/itt.py
75
+ common/trackers/ptt.py
75
76
  common/trackers/signs_list.py
76
77
  common/trackers/sis.py
77
78
  common/trackers/tags_list.py
@@ -158,7 +158,7 @@ class MediaFile:
158
158
  for track in self.audio_track: # + self.subtitle_track:
159
159
  lang = track.get("language", "Unknown")
160
160
  if lang != "Unknown":
161
- languages.add(ManageTitles.convert_iso(lang))
161
+ languages.add(ManageTitles.convert_iso(lang)[0])
162
162
  return list(languages) if len(languages) > 0 else ["not found"]
163
163
 
164
164
  @property
@@ -23,7 +23,7 @@ user_tags_file = "tags_list.json"
23
23
  user_sign_file = "sign_list.json"
24
24
  bane_file = "ban_list.json"
25
25
 
26
- version = "0.9.31"
26
+ version = "0.10.1"
27
27
 
28
28
  if os.name == "nt":
29
29
  WATCHER_DESTINATION_PATH: Path = Path(
@@ -72,6 +72,9 @@ class TrackerConfig(BaseModel):
72
72
  SIS_URL: str
73
73
  SIS_APIKEY: str | None = None
74
74
  SIS_PID: str | None = None
75
+ PTT_URL: str
76
+ PTT_APIKEY: str | None = None
77
+ PTT_PID: str | None = None
75
78
  MULTI_TRACKER: list[str] | None = None
76
79
  TMDB_APIKEY: str | None = None
77
80
  TVDB_APIKEY: str | None = None
@@ -407,14 +410,14 @@ class Config(BaseModel):
407
410
  else:
408
411
  field = field.upper()
409
412
 
410
- if field in ['ITT_URL', 'SIS_URL']:
413
+ if field in ['ITT_URL']:
411
414
  section[field] = Validate.url(value=section[field], field_name=field)
412
415
 
413
- if field in ['ITT_PID', 'SIS_PID']:
416
+ if field in ['ITT_PID']:
414
417
  section[field] = Validate.pid(value=section[field], field_name=field,
415
418
  multi_trackers=section['MULTI_TRACKER'])
416
419
 
417
- elif field in ['ITT', 'SIS']:
420
+ elif field in ['ITT', 'SIS', 'PTT']:
418
421
  section[field] = Validate.dict(value=section[field], field_name=field)
419
422
  elif field in ['MULTI_TRACKER']:
420
423
  section[field] = Validate.validate_multi_tracker(multi_tracker_list=section[field])
@@ -573,7 +576,10 @@ class Load:
573
576
  "SIS_URL": "https://no_tracker.xyz",
574
577
  "SIS_APIKEY": "no_key",
575
578
  "SIS_PID": "no_key",
576
- "MULTI_TRACKER": ["itt"],
579
+ "PTT_URL": "https://no_tracker.xyz",
580
+ "PTT_APIKEY": "no_key",
581
+ "PTT_PID": "no_key",
582
+ "MULTI_TRACKER": ["itt","sis","ptt"],
577
583
  "TMDB_APIKEY": "no_key",
578
584
  "TVDB_APIKEY": "no_key",
579
585
  "IMGBB_KEY": "no_key",
@@ -771,7 +777,7 @@ class JsonConfig:
771
777
  # Add the new attributes in 'tracker config'
772
778
  if self.tracker_diff_keys:
773
779
  self.updated = True
774
- missing_keys_dict = {key: '' for key in self.tracker_diff_keys}
780
+ missing_keys_dict = {key: 'no_key' for key in self.tracker_diff_keys}
775
781
  self.tracker_config.update(missing_keys_dict)
776
782
 
777
783
  def update_torrent_client_config(self):
@@ -1,6 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
  from common.trackers.itt import itt_data
4
+ from common.trackers.ptt import ptt_data
4
5
  from common.trackers.sis import sis_data
5
6
 
6
- tracker_list = {'ITT': itt_data, 'SIS': sis_data}
7
+ tracker_list = {'ITT': itt_data, 'SIS': sis_data, 'PTT': ptt_data}
@@ -0,0 +1,6 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ BAN_LIST = {
4
+ "dummy" : "banned",
5
+ "video_encoder": "banned"
6
+ }
@@ -21,6 +21,15 @@ trackers_api_data = {
21
21
  "announce": f"{config_settings.tracker_config.SIS_URL}/announce/{config_settings.tracker_config.SIS_PID}",
22
22
  "source": "ShareIsland",
23
23
  }
24
+ ,
25
+ 'PTT':
26
+ {
27
+ "url": config_settings.tracker_config.PTT_URL,
28
+ "api_key": config_settings.tracker_config.PTT_APIKEY,
29
+ "pass_key": config_settings.tracker_config.PTT_PID,
30
+ "announce": f"{config_settings.tracker_config.PTT_URL}/announce/{config_settings.tracker_config.PTT_PID}",
31
+ "source": "PolishTorrent",
32
+ }
24
33
 
25
34
  }
26
35
 
@@ -12,6 +12,7 @@ itt_data = {
12
12
  "size5": 25},
13
13
 
14
14
  "TYPE_ID":{ "full-disc": 1,
15
+ "fulldisc": 1,
15
16
  "remux": 2,
16
17
  "bdremux": 2,
17
18
  "vh": 2,
@@ -0,0 +1,142 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ptt_data = {
4
+ "CATEGORY": {
5
+ "applications": 6,
6
+ "audiobooks": 25,
7
+ "edicola": 20,
8
+ "4kmovies": 23,
9
+ "movie": 1,
10
+ "game": 5,
11
+ "others": 19,
12
+ "music": 8,
13
+ "sports": 21,
14
+ "tv": 9,
15
+ },
16
+ "FREELECH": {"size20": 100,
17
+ "size15": 75,
18
+ "size10": 50,
19
+ "size5": 25},
20
+ "TYPE_ID": {
21
+ "bdrip": 11,
22
+ "blu-ray": 16,
23
+ "bluray": 16,
24
+ "brrip": 18,
25
+ "dvdrip": 15,
26
+ "discography": 3,
27
+ "encode": 7,
28
+ "full-disc": 1,
29
+ "fulldisc": 1,
30
+ "hdtv": 6,
31
+ "others": 12,
32
+ "polish cinema": 20,
33
+ "cinema": 13,
34
+ "cam": 13,
35
+ "webscr": 13,
36
+ "music": 14,
37
+ "remux": 2,
38
+ "sdtv": 17,
39
+ "tvrip": 19,
40
+ "vr": 21,
41
+ "web-dl": 4,
42
+ "webdl": 4,
43
+ "web": 4,
44
+ "web-dlmux": 4,
45
+ "pc": 5,
46
+ "pdf": 22,
47
+ "pc games": 23,
48
+ "playstation": 24,
49
+ "xbox": 25,
50
+ "nintendo switch": 26,
51
+ "vr_2": 27,
52
+ "retro": 28,
53
+ },
54
+ "TYPE_ID_AUDIO": {"flac": 8,
55
+ "mp3": 10,
56
+ },
57
+ "TAGS": {
58
+ "SD": 1,
59
+ "HD": 0,
60
+ },
61
+
62
+ "RESOLUTION": {
63
+ "4320p": 1,
64
+ "2160p": 2,
65
+ "1440p": 12,
66
+ "1080p": 3,
67
+ "1080i": 4,
68
+ "720p": 5,
69
+ "480p": 10,
70
+ },
71
+
72
+ "CODEC": [
73
+ "h261",
74
+ "h262",
75
+ "h263",
76
+ "h264",
77
+ "x264",
78
+ "x265",
79
+ "avc",
80
+ "h265",
81
+ "hevc",
82
+ "vp8",
83
+ "vp9",
84
+ "av1",
85
+ "mpeg-1",
86
+ "mpeg-4",
87
+ "wmv",
88
+ "theora",
89
+ "divx",
90
+ "xvid",
91
+ "prores",
92
+ "dnxhd",
93
+ "cinepak",
94
+ "indeo",
95
+ "dv",
96
+ "ffv1",
97
+ "sorenson",
98
+ "rv40",
99
+ "cineform",
100
+ "huffyuv",
101
+ "mjpeg",
102
+ "lagarith",
103
+ "msu",
104
+ "rle",
105
+ "dirac",
106
+ "wmv3",
107
+ "vorbis",
108
+ "smpte",
109
+ "mjpeg",
110
+ "ffvhuff",
111
+ "v210",
112
+ "yuv4:2:2",
113
+ "yuv4:4:4",
114
+ "hap",
115
+ "sheervideo",
116
+ "ut",
117
+ "quicktime",
118
+ "rududu",
119
+ "h.266",
120
+ "vvc",
121
+ "mjpeg 4:2:0",
122
+ "h.263+",
123
+ "h.263++",
124
+ "vp4",
125
+ "vp5",
126
+ "vp6",
127
+ "vp7",
128
+ "vp8",
129
+ "vp9",
130
+ "vp10",
131
+ "vp11",
132
+ "vp12",
133
+ "vp3",
134
+ "vp2",
135
+ "vp1",
136
+ "amv",
137
+ "daala",
138
+ "gecko",
139
+ "nvenc",
140
+ "bluray",
141
+ ],
142
+ }
@@ -21,7 +21,7 @@ class ManageTitles:
21
21
  ]
22
22
 
23
23
  iso_3166_alpha3 = [
24
- "ENG", "USA", "GBR", "ITA", "DEU", "FRA", "ESP", "SPA",
24
+ "ENG", "USA", "GBR", "ITA", "DEU", "GER", "FRA", "ESP", "SPA",
25
25
  "BRA", "JPN", "CHN", "RUS", "PER", "NOR",
26
26
  "SWE", "DAN", "POL", "HIN", "TUR", "ARA", "KOR", "VIE", "IND"
27
27
  ]
@@ -29,7 +29,7 @@ class ManageTitles:
29
29
  iso_3166_alpha2_to_alpha3 = {
30
30
  "EN": "ENG", "US": "USA", "GB": "GBR", "EN-US": "ENG", "EN-GB": "ENG", "EN-AU": "ENG",
31
31
  "IT": "ITA",
32
- "DE": "DEU",
32
+ "DE": "GER",
33
33
  "FR": "FRA",
34
34
  "ES": "SPA", "ES-ES": "SPA", "ES-MX": "SPA",
35
35
  "BR": "BRA",
@@ -51,10 +51,10 @@ class ManageTitles:
51
51
 
52
52
  long_name = {
53
53
  "ENGLISH": "ENG",
54
- "AMERICAN": "USA",
55
- "BRITISH": "GBR",
54
+ "AMERICAN": "ENG",
55
+ "BRITISH": "ENG",
56
56
  "ITALIAN": "ITA",
57
- "GERMAN": "DEU",
57
+ "GERMAN": "GER",
58
58
  "FRENCH": "FRA",
59
59
  "SPANISH": "SPA",
60
60
  "BRAZILIAN": "BRA",
@@ -76,7 +76,7 @@ class ManageTitles:
76
76
  }
77
77
 
78
78
  @staticmethod
79
- def convert_iso(code) -> list | str | None:
79
+ def convert_iso(code) -> list[str] | str:
80
80
  """ Convert iso 2 to 3 """
81
81
  code = code.upper()
82
82
  # if it's 'multilang'
@@ -95,7 +95,7 @@ class ManageTitles:
95
95
  if match:
96
96
  iso_code = match.group(1)
97
97
  if len(iso_code) == 2: # // alpha-2
98
- return ManageTitles.iso_3166_alpha2_to_alpha3.get(code, None)
98
+ return ManageTitles.iso_3166_alpha2_to_alpha3.get(code, "")
99
99
  elif len(iso_code) == 3: # // alpha3
100
100
  # return the same code provided it is an alpha3
101
101
  if iso_code in ManageTitles.iso_3166_alpha3:
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
  [project]
6
6
  dynamic = ["dependencies"]
7
7
  name = "Unit3Dup"
8
- version = "0.9.31"
8
+ version = "0.10.1"
9
9
  description = "An uploader for the Unit3D torrent tracker"
10
10
  readme = "README.rst"
11
11
  requires-python = ">=3.10"
@@ -1,6 +1,8 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  import json
3
3
 
4
+ import requests
5
+
4
6
  from common.torrent_clients import TransmissionClient, QbittorrentClient, RTorrentClient
5
7
  from common.command import CommandLine
6
8
  from common.settings import Load, DEFAULT_JSON_PATH, USER_TAGS_PATH, USER_SIGN_PATH, BAN_TAGS_PATH, version
@@ -43,15 +45,25 @@ def main():
43
45
  custom_console.bot_error_log(f"No tracker name provided. Please update your configuration file")
44
46
  exit(1)
45
47
 
46
- # /// Test the Trackers
47
- for tracker_data in config.tracker_config.MULTI_TRACKER:
48
- tracker = pvtTracker.Unit3d(tracker_name=tracker_data)
48
+ # Check if the tracker name exists
49
+ if cli.args.tracker:
50
+ if not any(cli.args.tracker.upper() in tracker.upper() for tracker in config.tracker_config.MULTI_TRACKER):
51
+ custom_console.bot_error_log(
52
+ f"Tracker '{cli.args.tracker}' not found. Please update your configuration file")
53
+ exit()
54
+
55
+ tracker = pvtTracker.Unit3d(tracker_name=cli.args.tracker)
49
56
  if tracker.get_alive(alive=True, perPage=1):
50
- custom_console.bot_log(f"Tracker -> '{tracker_data.upper()}' Online")
51
- else:
52
- if cli.args.tracker == tracker_data:
53
- custom_console.bot_error_log(f"Your default tracker '{tracker_data}' is offline")
54
- exit()
57
+ custom_console.bot_log(f"Tracker -> '{cli.args.tracker.upper()}' Online")
58
+ tracker_name_list = [cli.args.tracker.upper()]
59
+
60
+ # Send content to the multi_tracker list
61
+ if cli.args.mt:
62
+ tracker_name_list = config.tracker_config.MULTI_TRACKER
63
+ for tracker_data in tracker_name_list[1:]:
64
+ tracker = pvtTracker.Unit3d(tracker_name=tracker_data)
65
+ if tracker.get_alive(alive=True, perPage=1):
66
+ custom_console.bot_log(f"Tracker -> '{tracker_data.upper()}' Online")
55
67
 
56
68
  # Test both clients only if used
57
69
  if cli.args.noseed is False and cli.args.noup is False or cli.args.reseed is True:
@@ -78,22 +90,6 @@ def main():
78
90
  custom_console.bot_error_log(f"You need to set a favorite 'torrent_client' in the config file")
79
91
  exit(1)
80
92
 
81
- # Check if the tracker name exists
82
- if cli.args.tracker and cli.args.tracker not in config.tracker_config.MULTI_TRACKER:
83
- custom_console.bot_error_log(f"Tracker '{cli.args.tracker}' not found. Please update your configuration file")
84
- exit()
85
-
86
- # Get default tracker
87
- tracker_name_list = [config.tracker_config.MULTI_TRACKER[0]]
88
-
89
- # Add a single announce if requested (disabled)
90
- if cli.args.tracker:
91
- tracker_name_list = [cli.args.tracker.upper()]
92
-
93
- # Send content to the multi_tracker list
94
- if cli.args.mt:
95
- tracker_name_list = config.tracker_config.MULTI_TRACKER
96
-
97
93
  # Load User Tags list
98
94
  tags_list = None
99
95
  if cli.args.buildtags:
@@ -138,7 +134,7 @@ def main():
138
134
  torrent_archive_path=tracker_archive,
139
135
  tags_list=tags_list,
140
136
  sign_list=sign_list,
141
- ban_list = ban_list
137
+ ban_list=ban_list
142
138
  )
143
139
  bot.run()
144
140
 
@@ -181,7 +177,7 @@ def main():
181
177
 
182
178
  # Dump
183
179
  if cli.args.dump:
184
- torrent_info.view_search(" ", inkey=False,save=True)
180
+ torrent_info.view_search(" ", inkey=False, save=True)
185
181
  return
186
182
 
187
183
  if cli.args.info:
@@ -35,7 +35,7 @@ class Media:
35
35
  self._file_name: str | None = None
36
36
  self._display_name: str | None = None
37
37
  self._category: int | None = None
38
- self._audio_languages: list[str] | None = None
38
+ self._audio_languages: list[str] = []
39
39
  self._media_file: MediaFile | None = None
40
40
  self._languages: list[str] | None = None
41
41
  self._resolution: str | None = None
@@ -255,12 +255,15 @@ class Media:
255
255
  if not self._audio_languages:
256
256
  # Get languages from the title
257
257
  filename_split = self.display_name.upper().split(" ")
258
+
258
259
  for code in filename_split:
259
- if converted_code := ManageTitles.convert_iso(code):
260
- self._audio_languages = converted_code
261
- return self._audio_languages
262
- # get from the audio track
263
- self._audio_languages = self.languages
260
+ converted_code = ManageTitles.convert_iso(code)
261
+ if converted_code:
262
+ self._audio_languages.append(converted_code[0])
263
+
264
+ if not self._audio_languages:
265
+ # get from the audio track
266
+ self._audio_languages = self.languages
264
267
  return self._audio_languages
265
268
 
266
269
  @property
@@ -91,6 +91,11 @@ class Tracker(Myhttp):
91
91
  f"or verify if the tracker is online",
92
92
  )
93
93
  exit(1)
94
+ except requests.exceptions.MissingSchema:
95
+ custom_console.bot_error_log(
96
+ f"TRACKER Connection error. Please check your configuration data"
97
+ )
98
+ exit(1)
94
99
  except requests.exceptions.ReadTimeout as e:
95
100
  custom_console.bot_error_log(f"TRACKER HTTP Error {e}. Tracker Offline !")
96
101
  exit(1)
@@ -1,5 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- BAN_LIST = {
4
- "dummy" : "banned"
5
- }
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