Unit3Dup 0.9.6__tar.gz → 0.9.9__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 (101) hide show
  1. {unit3dup-0.9.6 → unit3dup-0.9.9}/PKG-INFO +1 -1
  2. {unit3dup-0.9.6 → unit3dup-0.9.9}/Unit3Dup.egg-info/PKG-INFO +1 -1
  3. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/p2p_tags.py +61 -46
  4. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/settings.py +4 -4
  5. {unit3dup-0.9.6 → unit3dup-0.9.9}/pyproject.toml +1 -1
  6. {unit3dup-0.9.6 → unit3dup-0.9.9}/LICENSE +0 -0
  7. {unit3dup-0.9.6 → unit3dup-0.9.9}/README.rst +0 -0
  8. {unit3dup-0.9.6 → unit3dup-0.9.9}/Unit3Dup.egg-info/SOURCES.txt +0 -0
  9. {unit3dup-0.9.6 → unit3dup-0.9.9}/Unit3Dup.egg-info/dependency_links.txt +0 -0
  10. {unit3dup-0.9.6 → unit3dup-0.9.9}/Unit3Dup.egg-info/entry_points.txt +0 -0
  11. {unit3dup-0.9.6 → unit3dup-0.9.9}/Unit3Dup.egg-info/requires.txt +0 -0
  12. {unit3dup-0.9.6 → unit3dup-0.9.9}/Unit3Dup.egg-info/top_level.txt +0 -0
  13. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/__init__.py +0 -0
  14. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/bdinfo_string.py +0 -0
  15. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/bittorrent.py +0 -0
  16. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/command.py +0 -0
  17. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/constants.py +0 -0
  18. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/database.py +0 -0
  19. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/__init__.py +0 -0
  20. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/ftpx/__init__.py +0 -0
  21. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/ftpx/client.py +0 -0
  22. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/ftpx/core/__init__.py +0 -0
  23. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/ftpx/core/ftpx_service.py +0 -0
  24. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/ftpx/core/ftpx_session.py +0 -0
  25. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/ftpx/core/menu.py +0 -0
  26. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/ftpx/core/models/__init__.py +0 -0
  27. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/ftpx/core/models/list.py +0 -0
  28. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/igdb/__init__.py +0 -0
  29. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/igdb/client.py +0 -0
  30. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/igdb/core/__init__.py +0 -0
  31. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/igdb/core/api.py +0 -0
  32. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/igdb/core/models/__init__.py +0 -0
  33. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/igdb/core/models/search.py +0 -0
  34. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/igdb/core/platformid.py +0 -0
  35. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/igdb/core/tags.py +0 -0
  36. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/imageHost.py +0 -0
  37. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/mediaresult.py +0 -0
  38. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/sessions/__init__.py +0 -0
  39. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/sessions/agents.py +0 -0
  40. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/sessions/exceptions.py +0 -0
  41. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/sessions/session.py +0 -0
  42. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/theMovieDB/__init__.py +0 -0
  43. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/theMovieDB/core/__init__.py +0 -0
  44. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/theMovieDB/core/api.py +0 -0
  45. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/theMovieDB/core/keywords.py +0 -0
  46. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/theMovieDB/core/models/__init__.py +0 -0
  47. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/theMovieDB/core/models/movie/__init__.py +0 -0
  48. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/theMovieDB/core/models/movie/alternative_titles.py +0 -0
  49. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/theMovieDB/core/models/movie/details.py +0 -0
  50. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/theMovieDB/core/models/movie/movie.py +0 -0
  51. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/theMovieDB/core/models/movie/nowplaying.py +0 -0
  52. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/theMovieDB/core/models/movie/release_info.py +0 -0
  53. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/theMovieDB/core/models/tvshow/__init__.py +0 -0
  54. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/theMovieDB/core/models/tvshow/alternative.py +0 -0
  55. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/theMovieDB/core/models/tvshow/details.py +0 -0
  56. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/theMovieDB/core/models/tvshow/on_the_air.py +0 -0
  57. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/theMovieDB/core/models/tvshow/translations.py +0 -0
  58. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/theMovieDB/core/models/tvshow/tvshow.py +0 -0
  59. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/theMovieDB/core/videos.py +0 -0
  60. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/trailers/__init__.py +0 -0
  61. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/trailers/api.py +0 -0
  62. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/trailers/response.py +0 -0
  63. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/external_services/tvdb.py +0 -0
  64. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/extractor.py +0 -0
  65. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/frames.py +0 -0
  66. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/mediainfo.py +0 -0
  67. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/mediainfo_string.py +0 -0
  68. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/title.py +0 -0
  69. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/torrent_clients.py +0 -0
  70. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/trackers/__init__.py +0 -0
  71. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/trackers/data.py +0 -0
  72. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/trackers/itt.py +0 -0
  73. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/trackers/sis.py +0 -0
  74. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/trackers/trackers.py +0 -0
  75. {unit3dup-0.9.6 → unit3dup-0.9.9}/common/utility.py +0 -0
  76. {unit3dup-0.9.6 → unit3dup-0.9.9}/requirements.txt +0 -0
  77. {unit3dup-0.9.6 → unit3dup-0.9.9}/setup.cfg +0 -0
  78. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/__init__.py +0 -0
  79. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/__main__.py +0 -0
  80. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/automode.py +0 -0
  81. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/bot.py +0 -0
  82. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/duplicate.py +0 -0
  83. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/exceptions.py +0 -0
  84. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/media.py +0 -0
  85. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/media_manager/ContentManager.py +0 -0
  86. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/media_manager/DocuManager.py +0 -0
  87. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/media_manager/GameManager.py +0 -0
  88. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/media_manager/MediaInfoManager.py +0 -0
  89. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/media_manager/SeedManager.py +0 -0
  90. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/media_manager/TorrentManager.py +0 -0
  91. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/media_manager/VideoManager.py +0 -0
  92. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/media_manager/__init__.py +0 -0
  93. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/media_manager/common.py +0 -0
  94. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/pvtDocu.py +0 -0
  95. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/pvtTorrent.py +0 -0
  96. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/pvtTracker.py +0 -0
  97. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/pvtVideo.py +0 -0
  98. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/torrent.py +0 -0
  99. {unit3dup-0.9.6 → unit3dup-0.9.9}/unit3dup/upload.py +0 -0
  100. {unit3dup-0.9.6 → unit3dup-0.9.9}/view/__init__.py +0 -0
  101. {unit3dup-0.9.6 → unit3dup-0.9.9}/view/custom_console.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Unit3Dup
3
- Version: 0.9.6
3
+ Version: 0.9.9
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.6
3
+ Version: 0.9.9
4
4
  Summary: An uploader for the Unit3D torrent tracker
5
5
  Author: Parzival
6
6
  License-Expression: MIT
@@ -17,40 +17,41 @@ TAG_TYPES = {
17
17
  "VU": "source",
18
18
  "UHD": "source",
19
19
  "BLURAY": "source",
20
- "AMZN": "source",
21
- "AMC": "source",
22
- "CN": "source",
23
- "CR": "source",
24
- "DCU": "source",
25
- "DISC": "source",
26
- "DSCP": "source",
27
- "DSNY": "source",
28
- "DSNP": "source",
29
- "DPLY": "source",
30
- "ESPN": "source",
31
- "FOOD": "source",
32
- "FOX": "source",
33
- "PLAY": "source",
34
- "HBO": "source",
35
- "HMAX": "source",
36
- "HGTV": "source",
37
- "HIST": "source",
38
- "HULU": "source",
39
- "MTOD": "source",
40
- "NATG": "source",
41
- "NF": "source",
42
- "NICK": "source",
43
- "NOW": "source",
44
- "PMNT": "source",
45
- "PMTP": "source",
46
- "PCOK": "source",
47
- "RKTN": "source",
48
- "SHO": "source",
49
- "SKST": "source",
50
- "STAN": "source",
51
- "STRP": "source",
52
- "STZ": "source",
53
- "TIMV": "source",
20
+
21
+ "AMZN": "platform",
22
+ "AMC": "platform",
23
+ "CN": "platform",
24
+ "CR": "platform",
25
+ "DCU": "platform",
26
+ "DISC": "platform",
27
+ "DSCP": "platform",
28
+ "DSNY": "platform",
29
+ "DSNP": "platform",
30
+ "DPLY": "platform",
31
+ "ESPN": "platform",
32
+ "FOOD": "platform",
33
+ "FOX": "platform",
34
+ "PLAY": "platform",
35
+ "HBO": "platform",
36
+ "HMAX": "platform",
37
+ "HGTV": "platform",
38
+ "HIST": "platform",
39
+ "HULU": "platform",
40
+ "MTOD": "platform",
41
+ "NATG": "platform",
42
+ "NF": "platform",
43
+ "NICK": "platform",
44
+ "NOW": "platform",
45
+ "PMNT": "platform",
46
+ "PMTP": "platform",
47
+ "PCOK": "platform",
48
+ "RKTN": "platform",
49
+ "SHO": "platform",
50
+ "SKST": "platform",
51
+ "STAN": "platform",
52
+ "STRP": "platform",
53
+ "STZ": "platform",
54
+ "TIMV": "platform",
54
55
 
55
56
  "SUB": "subtitle",
56
57
  "SUBS": "subtitle",
@@ -59,6 +60,10 @@ TAG_TYPES = {
59
60
  "FRA": "flag",
60
61
  "GER": "flag",
61
62
  "ESP": "flag",
63
+ "JPN": "flag",
64
+ "JAP": "flag",
65
+ "POR": "flag",
66
+ "PRT": "flag",
62
67
 
63
68
  "ATMOS": "audio",
64
69
  "TRUEHD": "audio",
@@ -116,6 +121,14 @@ TAG_TYPES = {
116
121
  "HDR": "video",
117
122
  "HDR10+": "video",
118
123
  "FHDRIP": "video",
124
+ "UHDRIP": "video",
125
+ "FULL HD": "video",
126
+ "FULLHD": "video",
127
+ "HD": "video",
128
+ "UHD 4K": "video",
129
+
130
+ "REPACK": "version",
131
+ "EXTENDED": "version",
119
132
 
120
133
  "4320P": "resolution",
121
134
  "2160P": "resolution",
@@ -123,6 +136,7 @@ TAG_TYPES = {
123
136
  "720P": "resolution",
124
137
  "576P": "resolution",
125
138
  "480P": "resolution",
139
+
126
140
  }
127
141
 
128
142
 
@@ -150,7 +164,6 @@ class P2pTags:
150
164
 
151
165
  # Search for tags in the title
152
166
  tags_match = pattern.findall(filename.upper())
153
-
154
167
  # remove dope
155
168
  tags_match = list(dict.fromkeys(tags_match))
156
169
 
@@ -178,9 +191,12 @@ class P2pTags:
178
191
  audio_format = self.mediafile.audio_track[0].get('format', "") if self.mediafile.audio_track else ""
179
192
  tags_match.append(audio_format)
180
193
 
181
- # Add audio language if there is no audio categories
182
- if 'flag' not in categories:
183
- tags_match.extend(self._audio_lang())
194
+ # Add tag language if there is no tag
195
+ flags = self._audio_lang()
196
+ # are all the language tags from mediaInfo available in the title?
197
+ if len(flags) != tags_match.count('flag'):
198
+ missing_flags = [tag for tag in flags if tag not in tags_match]
199
+ tags_match.extend(missing_flags)
184
200
 
185
201
  # Add subtitle tag if subtitle_track exist and there is no 'sub' in the title
186
202
  if 'subtitle' not in categories:
@@ -254,15 +270,9 @@ class P2pTags:
254
270
  if not any(TAG_TYPES.get(tag.upper()) == "resolution" for tag in tags_match):
255
271
  tags_match.append(self.mediafile_resolution)
256
272
 
257
- # Assign an index to the 'precedence' keywords
258
- # precedence_index = {}
259
- # for i, v in enumerate(self.tags_position):
260
- # precedence_index[v] = i
261
-
262
273
  # /// Sort tags based on 2 rules:
263
274
  # 1) Order by tag_positions
264
275
  # 2) For audio and flag categories alternate them (audio/flag/audio/flag)
265
-
266
276
  # We can't sort each tags so we create dedicated list
267
277
  audio_q = deque()
268
278
  flag_q = deque()
@@ -306,6 +316,7 @@ class P2pTags:
306
316
 
307
317
  # Rebuild the title ordering each tag+ audio/flag by tag_position
308
318
  result = []
319
+
309
320
  for cat in self.tags_position:
310
321
  if cat in ("audio", "channels", "flag"):
311
322
  # Insert the audio/flag processed tags
@@ -329,8 +340,12 @@ class P2pTags:
329
340
  for t in l:
330
341
  c = ManageTitles.convert_iso(t)
331
342
  if c:
332
- lang.append(c)
333
- break
343
+ if isinstance(c, list):
344
+ lang.extend(c)
345
+ break
346
+ else:
347
+ lang.append(c)
348
+ break
334
349
  return lang
335
350
 
336
351
  def process(self) -> str:
@@ -15,7 +15,7 @@ from common.utility import ManageTitles
15
15
  from common import trackers
16
16
 
17
17
  config_file = "Unit3Dbot.json"
18
- version = "0.9.6"
18
+ version = "0.9.9"
19
19
 
20
20
  if os.name == "nt":
21
21
  WATCHER_DESTINATION_PATH: Path = Path(os.getenv("LOCALAPPDATA", ".")) / "Unit3Dup_config" / "watcher_destination_path"
@@ -250,12 +250,12 @@ class Validate:
250
250
  print(f"-> Invalid TAG position. The list is empty !")
251
251
  exit(1)
252
252
 
253
- if len(position_list) != 7:
253
+ if len(position_list) != 9:
254
254
  print(f"-> Invalid TAG position list. Wrong number of elements !")
255
255
  exit(1)
256
256
 
257
257
  for tag in position_list:
258
- if tag.lower() not in ["resolution", "source", "audio", "channels", "flag", "subtitle", "video"]:
258
+ if tag.lower() not in ["version","resolution", "platform","source", "audio", "channels", "flag", "subtitle", "video"]:
259
259
  print(f"-> Invalid TAG position '{tag}'. Please fix your configuration file")
260
260
  exit(1)
261
261
 
@@ -578,7 +578,7 @@ class Load:
578
578
  "PASSIMA_PRIORITY": 5,
579
579
  "IMARIDE_PRIORITY": 6,
580
580
  "NUMBER_OF_SCREENSHOTS": 4,
581
- "TAGS_POSITION": ["resolution", "source", "audio", "channels", "flag", "subtitle", "video"],
581
+ "TAGS_POSITION": ["version","resolution", "platform", "source", "audio", "channels", "flag", "subtitle", "video"],
582
582
  "YOUTUBE_FAV_CHANNEL_ID": "UCGCbxpnt25hWPFLSbvwfg_w",
583
583
  "YOUTUBE_CHANNEL_ENABLE": "False",
584
584
  "DUPLICATE_ON": "true",
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
  [project]
6
6
  dynamic = ["dependencies"]
7
7
  name = "Unit3Dup"
8
- version = "0.9.6"
8
+ version = "0.9.9"
9
9
  description = "An uploader for the Unit3D torrent tracker"
10
10
  readme = "README.rst"
11
11
  requires-python = ">=3.10"
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