ittup 1.2.2__tar.gz → 1.2.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 (108) hide show
  1. {ittup-1.2.2 → ittup-1.2.3}/PKG-INFO +1 -1
  2. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/bot.py +10 -4
  3. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/media_manager/DocuManager.py +4 -4
  4. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/media_manager/GameManager.py +4 -5
  5. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/media_manager/VideoManager.py +4 -3
  6. {ittup-1.2.2 → ittup-1.2.3}/ittup.egg-info/PKG-INFO +1 -1
  7. {ittup-1.2.2 → ittup-1.2.3}/pyproject.toml +1 -1
  8. {ittup-1.2.2 → ittup-1.2.3}/LICENSE +0 -0
  9. {ittup-1.2.2 → ittup-1.2.3}/README.rst +0 -0
  10. {ittup-1.2.2 → ittup-1.2.3}/ittup/__init__.py +0 -0
  11. {ittup-1.2.2 → ittup-1.2.3}/ittup/__main__.py +0 -0
  12. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/__init__.py +0 -0
  13. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/about.py +0 -0
  14. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/bdinfo_string.py +0 -0
  15. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/bittorrent.py +0 -0
  16. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/command.py +0 -0
  17. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/constants.py +0 -0
  18. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/database.py +0 -0
  19. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/__init__.py +0 -0
  20. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/ftpx/__init__.py +0 -0
  21. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/ftpx/client.py +0 -0
  22. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/ftpx/core/__init__.py +0 -0
  23. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/ftpx/core/ftpx_service.py +0 -0
  24. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/ftpx/core/ftpx_session.py +0 -0
  25. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/ftpx/core/menu.py +0 -0
  26. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/ftpx/core/models/__init__.py +0 -0
  27. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/ftpx/core/models/list.py +0 -0
  28. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/igdb/__init__.py +0 -0
  29. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/igdb/client.py +0 -0
  30. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/igdb/core/__init__.py +0 -0
  31. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/igdb/core/api.py +0 -0
  32. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/igdb/core/models/__init__.py +0 -0
  33. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/igdb/core/models/search.py +0 -0
  34. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/igdb/core/platformid.py +0 -0
  35. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/igdb/core/tags.py +0 -0
  36. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/imageHost.py +0 -0
  37. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/mediaresult.py +0 -0
  38. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/sessions/__init__.py +0 -0
  39. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/sessions/agents.py +0 -0
  40. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/sessions/exceptions.py +0 -0
  41. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/sessions/session.py +0 -0
  42. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/theMovieDB/__init__.py +0 -0
  43. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/theMovieDB/core/__init__.py +0 -0
  44. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/theMovieDB/core/api.py +0 -0
  45. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/theMovieDB/core/keywords.py +0 -0
  46. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/theMovieDB/core/models/__init__.py +0 -0
  47. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/theMovieDB/core/models/movie/__init__.py +0 -0
  48. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/theMovieDB/core/models/movie/alternative.py +0 -0
  49. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/theMovieDB/core/models/movie/details.py +0 -0
  50. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/theMovieDB/core/models/movie/movie.py +0 -0
  51. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/theMovieDB/core/models/movie/nowplaying.py +0 -0
  52. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/theMovieDB/core/models/movie/release_info.py +0 -0
  53. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/theMovieDB/core/models/movie/translations.py +0 -0
  54. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/theMovieDB/core/models/tvshow/__init__.py +0 -0
  55. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/theMovieDB/core/models/tvshow/alternative.py +0 -0
  56. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/theMovieDB/core/models/tvshow/details.py +0 -0
  57. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/theMovieDB/core/models/tvshow/on_the_air.py +0 -0
  58. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/theMovieDB/core/models/tvshow/translations.py +0 -0
  59. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/theMovieDB/core/models/tvshow/tvshow.py +0 -0
  60. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/theMovieDB/core/videos.py +0 -0
  61. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/trailers/__init__.py +0 -0
  62. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/trailers/api.py +0 -0
  63. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/trailers/response.py +0 -0
  64. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/external_services/tvdb.py +0 -0
  65. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/extractor.py +0 -0
  66. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/frames.py +0 -0
  67. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/mediainfo.py +0 -0
  68. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/mediainfo_string.py +0 -0
  69. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/settings.py +0 -0
  70. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/tags.py +0 -0
  71. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/title.py +0 -0
  72. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/torrent_clients.py +0 -0
  73. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/trackers/__init__.py +0 -0
  74. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/trackers/ban_list.py +0 -0
  75. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/trackers/data.py +0 -0
  76. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/trackers/itt.py +0 -0
  77. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/trackers/signs_list.py +0 -0
  78. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/trackers/tags_list.py +0 -0
  79. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/trackers/trackers.py +0 -0
  80. {ittup-1.2.2 → ittup-1.2.3}/ittup/common/utility.py +0 -0
  81. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/__init__.py +0 -0
  82. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/__main__.py +0 -0
  83. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/automode.py +0 -0
  84. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/duplicate.py +0 -0
  85. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/exceptions.py +0 -0
  86. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/media.py +0 -0
  87. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/media_manager/ContentManager.py +0 -0
  88. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/media_manager/MediaInfoManager.py +0 -0
  89. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/media_manager/SeedManager.py +0 -0
  90. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/media_manager/TorrentManager.py +0 -0
  91. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/media_manager/__init__.py +0 -0
  92. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/media_manager/common.py +0 -0
  93. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/pvtDocu.py +0 -0
  94. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/pvtTorrent.py +0 -0
  95. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/pvtTracker.py +0 -0
  96. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/pvtVideo.py +0 -0
  97. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/torrent.py +0 -0
  98. {ittup-1.2.2 → ittup-1.2.3}/ittup/core/upload.py +0 -0
  99. {ittup-1.2.2 → ittup-1.2.3}/ittup/view/__init__.py +0 -0
  100. {ittup-1.2.2 → ittup-1.2.3}/ittup/view/custom_console.py +0 -0
  101. {ittup-1.2.2 → ittup-1.2.3}/ittup.egg-info/SOURCES.txt +0 -0
  102. {ittup-1.2.2 → ittup-1.2.3}/ittup.egg-info/dependency_links.txt +0 -0
  103. {ittup-1.2.2 → ittup-1.2.3}/ittup.egg-info/entry_points.txt +0 -0
  104. {ittup-1.2.2 → ittup-1.2.3}/ittup.egg-info/requires.txt +0 -0
  105. {ittup-1.2.2 → ittup-1.2.3}/ittup.egg-info/top_level.txt +0 -0
  106. {ittup-1.2.2 → ittup-1.2.3}/requirements.txt +0 -0
  107. {ittup-1.2.2 → ittup-1.2.3}/setup.cfg +0 -0
  108. {ittup-1.2.2 → ittup-1.2.3}/tests/test_vcodec.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ittup
3
- Version: 1.2.2
3
+ Version: 1.2.3
4
4
  Summary: ItaTorrents uploader
5
5
  Author: Parzival, TehMaat
6
6
  License-Expression: MIT
@@ -198,11 +198,10 @@ class Bot:
198
198
 
199
199
  # Start uploading only the new files, one at a time
200
200
  print()
201
- self.run(include_paths=moved_paths)
202
- print()
203
- announce_idle = True
204
201
  for moved_path in moved_paths:
205
202
  self._run_isolated(include_path=moved_path, timeout=timeout)
203
+ print()
204
+ announce_idle = True
206
205
 
207
206
  except KeyboardInterrupt:
208
207
  custom_console.bot_log("Exiting...")
@@ -216,8 +215,15 @@ class Bot:
216
215
  Returns:
217
216
  True if the child process ended without errors
218
217
  """
218
+ # The child must be a fork of the watcher: it shares the loaded config and the console (the questions
219
+ # are answered on stdin), and the Bot can't be pickled for 'spawn' or 'forkserver' (the default
220
+ # since Python 3.14). Where fork isn't available or safe (Windows, macOS) the entry runs in the watcher
221
+ if "fork" not in multiprocessing.get_all_start_methods() or sys.platform == "darwin":
222
+ return self.run(include_paths=[include_path])
223
+
219
224
  name = os.path.basename(include_path)
220
- process = multiprocessing.Process(target=_run_worker, args=(self, include_path), daemon=True)
225
+ process = multiprocessing.get_context("fork").Process(target=_run_worker, args=(self, include_path),
226
+ daemon=True)
221
227
  process.start()
222
228
  try:
223
229
  process.join(timeout if timeout > 0 else None)
@@ -38,14 +38,14 @@ class DocuManager:
38
38
  custom_console.bot_log(f"Watcher Active.. skip the old upload '{content.file_name}'")
39
39
  continue
40
40
 
41
- torrent_response = UserContent.torrent(content=content, tracker_name_list=tracker_name_list,
42
- selected_tracker=selected_tracker, this_path=torrent_filepath)
43
-
44
- # Skip if it is a duplicate
41
+ # Skip if it is a duplicate, before hashing the files
45
42
  if ((self.cli.duplicate or config_settings.user_preferences.DUPLICATE_ON)
46
43
  and UserContent.is_duplicate(content=content, tracker_name=selected_tracker, cli=self.cli)):
47
44
  continue
48
45
 
46
+ torrent_response = UserContent.torrent(content=content, tracker_name_list=tracker_name_list,
47
+ selected_tracker=selected_tracker, this_path=torrent_filepath)
48
+
49
49
  # print the title will be shown on the torrent page
50
50
  custom_console.bot_log(f"'DISPLAYNAME'...{{{content.display_name}}}\n")
51
51
 
@@ -61,15 +61,14 @@ class GameManager:
61
61
  custom_console.bot_log(f"Watcher Active.. skip the old upload '{content.file_name}'")
62
62
  continue
63
63
 
64
- torrent_response = UserContent.torrent(content=content, tracker_name_list=tracker_name_list,
65
- selected_tracker=selected_tracker, this_path=torrent_filepath)
66
-
67
-
68
- # Skip if it is a duplicate
64
+ # Skip if it is a duplicate, before hashing the files
69
65
  if ((self.cli.duplicate or config_settings.user_preferences.DUPLICATE_ON)
70
66
  and UserContent.is_duplicate(content=content, tracker_name=selected_tracker, cli=self.cli)):
71
67
  continue
72
68
 
69
+ torrent_response = UserContent.torrent(content=content, tracker_name_list=tracker_name_list,
70
+ selected_tracker=selected_tracker, this_path=torrent_filepath)
71
+
73
72
  # Login to IGDB only when the first game needs it
74
73
  if not self.igdb_logged:
75
74
  if not self.igdb.connect():
@@ -83,15 +83,16 @@ class VideoManager:
83
83
  # Filter contents based on the preferred language or duplicates
84
84
  if UserContent.is_preferred_language(content=content):
85
85
 
86
- torrent_response = UserContent.torrent(content=content, tracker_name_list=tracker_name_list,
87
- selected_tracker=selected_tracker, this_path=torrent_filepath)
88
-
89
86
  # Skip(S) if it is a duplicate or let the user choose to continue (C)
87
+ # Checked before hashing so a skipped duplicate doesn't cost a torrent file
90
88
  if ((self.cli.duplicate or config_settings.user_preferences.DUPLICATE_ON)
91
89
  and UserContent.is_duplicate(content=content, tracker_name=selected_tracker,
92
90
  cli=self.cli)):
93
91
  continue
94
92
 
93
+ torrent_response = UserContent.torrent(content=content, tracker_name_list=tracker_name_list,
94
+ selected_tracker=selected_tracker, this_path=torrent_filepath)
95
+
95
96
  # Search for VIDEO ID
96
97
  db_online = DbOnline(media=content, category=content.category, no_title=self.cli.notitle)
97
98
  db = db_online.media_result
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ittup
3
- Version: 1.2.2
3
+ Version: 1.2.3
4
4
  Summary: ItaTorrents uploader
5
5
  Author: Parzival, TehMaat
6
6
  License-Expression: MIT
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
  [project]
6
6
  dynamic = ["dependencies"]
7
7
  name = "ittup"
8
- version = "1.2.2"
8
+ version = "1.2.3"
9
9
  description = "ItaTorrents uploader"
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
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