Unit3Dup 0.8.6__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.
Files changed (110) hide show
  1. {unit3dup-0.8.6 → unit3dup-0.8.8}/PKG-INFO +47 -28
  2. {unit3dup-0.8.6 → unit3dup-0.8.8}/README.rst +47 -28
  3. {unit3dup-0.8.6 → unit3dup-0.8.8}/Unit3Dup.egg-info/PKG-INFO +47 -28
  4. {unit3dup-0.8.6 → unit3dup-0.8.8}/Unit3Dup.egg-info/SOURCES.txt +2 -0
  5. {unit3dup-0.8.6 → unit3dup-0.8.8}/Unit3Dup.egg-info/top_level.txt +2 -0
  6. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/imageHost.py +20 -1
  7. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/settings.py +52 -7
  8. {unit3dup-0.8.6 → unit3dup-0.8.8}/pyproject.toml +1 -1
  9. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/media_manager/TorrentManager.py +12 -3
  10. unit3dup-0.8.8/unit3dup/web/__init__.py +0 -0
  11. unit3dup-0.8.8/unit3dup/web/main.py +46 -0
  12. {unit3dup-0.8.6 → unit3dup-0.8.8}/LICENSE +0 -0
  13. {unit3dup-0.8.6 → unit3dup-0.8.8}/Unit3Dup.egg-info/dependency_links.txt +0 -0
  14. {unit3dup-0.8.6 → unit3dup-0.8.8}/Unit3Dup.egg-info/entry_points.txt +0 -0
  15. {unit3dup-0.8.6 → unit3dup-0.8.8}/Unit3Dup.egg-info/requires.txt +0 -0
  16. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/__init__.py +0 -0
  17. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/bdinfo_string.py +0 -0
  18. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/bittorrent.py +0 -0
  19. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/command.py +0 -0
  20. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/constants.py +0 -0
  21. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/Pw/__init__.py +0 -0
  22. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/Pw/core/__init__.py +0 -0
  23. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/Pw/core/models/__init__.py +0 -0
  24. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/Pw/core/models/indexers.py +0 -0
  25. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/Pw/core/models/search.py +0 -0
  26. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/Pw/core/models/torrent_client_config.py +0 -0
  27. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/Pw/core/pw_api.py +0 -0
  28. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/Pw/pw_manager.py +0 -0
  29. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/Pw/pw_service.py +0 -0
  30. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/__init__.py +0 -0
  31. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/ftpx/__init__.py +0 -0
  32. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/ftpx/client.py +0 -0
  33. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/ftpx/core/__init__.py +0 -0
  34. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/ftpx/core/ftpx_service.py +0 -0
  35. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/ftpx/core/ftpx_session.py +0 -0
  36. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/ftpx/core/menu.py +0 -0
  37. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/ftpx/core/models/__init__.py +0 -0
  38. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/ftpx/core/models/list.py +0 -0
  39. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/igdb/__init__.py +0 -0
  40. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/igdb/client.py +0 -0
  41. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/igdb/core/__init__.py +0 -0
  42. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/igdb/core/api.py +0 -0
  43. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/igdb/core/models/__init__.py +0 -0
  44. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/igdb/core/models/search.py +0 -0
  45. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/igdb/core/platformid.py +0 -0
  46. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/igdb/core/tags.py +0 -0
  47. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/imdb.py +0 -0
  48. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/mediaresult.py +0 -0
  49. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/sessions/__init__.py +0 -0
  50. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/sessions/agents.py +0 -0
  51. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/sessions/exceptions.py +0 -0
  52. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/sessions/session.py +0 -0
  53. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/theMovieDB/__init__.py +0 -0
  54. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/__init__.py +0 -0
  55. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/api.py +0 -0
  56. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/keywords.py +0 -0
  57. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/__init__.py +0 -0
  58. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/movie/__init__.py +0 -0
  59. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/movie/alternative_titles.py +0 -0
  60. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/movie/details.py +0 -0
  61. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/movie/movie.py +0 -0
  62. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/movie/nowplaying.py +0 -0
  63. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/movie/release_info.py +0 -0
  64. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/tvshow/__init__.py +0 -0
  65. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/tvshow/alternative.py +0 -0
  66. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/tvshow/details.py +0 -0
  67. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/tvshow/on_the_air.py +0 -0
  68. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/tvshow/translations.py +0 -0
  69. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/models/tvshow/tvshow.py +0 -0
  70. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/theMovieDB/core/videos.py +0 -0
  71. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/trailers/__init__.py +0 -0
  72. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/trailers/api.py +0 -0
  73. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/external_services/trailers/response.py +0 -0
  74. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/extractor.py +0 -0
  75. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/frames.py +0 -0
  76. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/mediainfo.py +0 -0
  77. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/mediainfo_string.py +0 -0
  78. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/title.py +0 -0
  79. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/torrent_clients.py +0 -0
  80. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/trackers/__init__.py +0 -0
  81. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/trackers/data.py +0 -0
  82. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/trackers/itt.py +0 -0
  83. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/trackers/sis.py +0 -0
  84. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/trackers/trackers.py +0 -0
  85. {unit3dup-0.8.6 → unit3dup-0.8.8}/common/utility.py +0 -0
  86. {unit3dup-0.8.6 → unit3dup-0.8.8}/requirements.txt +0 -0
  87. {unit3dup-0.8.6 → unit3dup-0.8.8}/setup.cfg +0 -0
  88. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/__init__.py +0 -0
  89. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/__main__.py +0 -0
  90. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/automode.py +0 -0
  91. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/bot.py +0 -0
  92. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/duplicate.py +0 -0
  93. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/exceptions.py +0 -0
  94. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/media.py +0 -0
  95. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/media_manager/ContentManager.py +0 -0
  96. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/media_manager/DocuManager.py +0 -0
  97. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/media_manager/GameManager.py +0 -0
  98. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/media_manager/MediaInfoManager.py +0 -0
  99. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/media_manager/SeedManager.py +0 -0
  100. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/media_manager/VideoManager.py +0 -0
  101. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/media_manager/__init__.py +0 -0
  102. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/media_manager/common.py +0 -0
  103. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/pvtDocu.py +0 -0
  104. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/pvtTorrent.py +0 -0
  105. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/pvtTracker.py +0 -0
  106. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/pvtVideo.py +0 -0
  107. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/torrent.py +0 -0
  108. {unit3dup-0.8.6 → unit3dup-0.8.8}/unit3dup/upload.py +0 -0
  109. {unit3dup-0.8.6 → unit3dup-0.8.8}/view/__init__.py +0 -0
  110. {unit3dup-0.8.6 → 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.6
3
+ Version: 0.8.8
4
4
  Summary: An uploader for the Unit3D torrent tracker
5
5
  Author: Parzival
6
6
  License-Expression: MIT
@@ -63,22 +63,22 @@ It performs the following tasks:
63
63
  - Add a custom title to your seasons
64
64
  - Generate info for a title using MediaInfo
65
65
 
66
- .. image:: https://img.shields.io/badge/Upload_PDF-gr
67
- :alt: Install Upload PDF
68
-
69
66
  unit3dup can grab the first page, convert it to an image (using xpdf),
70
67
  and then the bot can upload it to an image host, then add the link to the torrent page description.
71
68
 
72
- Ubuntu/Debian Installation
73
- --------------------------
69
+ .. image:: https://img.shields.io/badge/INSTALL-gr
70
+ :alt: install
71
+
72
+ Ubuntu/Debian
73
+ -------------
74
74
  pip install unit3dup
75
75
 
76
76
  Upgrade
77
77
  -------
78
- pip install --upgrade unit3dup
78
+ pip install unit3dup --upgrade
79
79
 
80
- Dependencies
81
- ------------
80
+ Ubuntu/Debian Dependencies
81
+ --------------------------
82
82
  sudo apt install ffmpeg
83
83
 
84
84
  Only for pdf
@@ -86,6 +86,18 @@ Only for pdf
86
86
  sudo apt install poppler-utils
87
87
 
88
88
 
89
+ Windows Dependencies
90
+ --------------------
91
+ 1. Download and unzip https://www.ffmpeg.org/download.html and add its folder to
92
+ PATH environment user variable
93
+
94
+
95
+ 1. Download and unzip poppler for Windows from https://github.com/oschwartz10612/poppler-windows/releases
96
+ 2. Put the folder 'bin' in the system path (e.g. ``C:\poppler-24.08.0\Library\bin``)
97
+ 3. *Close and reopen a new console window*
98
+ 4. Test it: Run ``pdftocairo`` in the terminal
99
+
100
+
89
101
  Alternative method
90
102
  ------------------
91
103
 
@@ -93,37 +105,34 @@ Alternative method
93
105
 
94
106
  2. unzip it
95
107
 
96
- 3. pip install -r requirements.txt
108
+ 3. pip install .
109
+
110
+ 4. unit3dup
111
+
97
112
 
98
- 4. python start.py
113
+ .. image:: https://img.shields.io/badge/Bot_UPDATE-gr
114
+ :alt: Bot Update
99
115
 
100
- .. image:: https://img.shields.io/badge/LINUX-gr
116
+ 1. pip install unit3dup --upgrade
101
117
 
102
- 1. Run: ``sudo apt install poppler-utils``
103
- 2. sudo apt install ffmpeg
104
118
 
105
119
 
106
- .. image:: https://img.shields.io/badge/WINDOWS-gr
120
+ RUN
121
+ ======
107
122
 
108
- 1. Download and unzip https://www.ffmpeg.org/download.html and add its folder to
109
- PATH environment user variable
123
+ .. code-block:: python
110
124
 
125
+ unit3dup -u <filepath>
126
+ unit3dup -f <folderpath>
127
+ unit3dup -scan <folderpath>
111
128
 
112
- 1. Download and unzip poppler for Windows from https://github.com/oschwartz10612/poppler-windows/releases
113
- 2. Put the folder 'bin' in the system path (e.g. ``C:\poppler-24.08.0\Library\bin``)
114
- 3. *Close and reopen a new console window*
115
- 4. Test it: Run ``pdftocairo`` in the terminal
116
129
 
117
130
 
131
+ DOC
132
+ ===
118
133
 
119
- .. image:: https://img.shields.io/badge/Bot_UPDATE-gr
120
- :alt: Bot Update
134
+ Link `Unit3DUP <https://unit3dup.readthedocs.io/en/latest/index.html#>`_
121
135
 
122
- 1. Delete only the bot folder
123
- 2. Download the release zip
124
- 3. Unzip it
125
- 4. No config needed
126
- 5. Done!
127
136
 
128
137
 
129
138
  Trackers
@@ -148,6 +157,7 @@ united by a shared passion for torrents and more
148
157
  :alt: Discord Server
149
158
 
150
159
 
160
+
151
161
  🎯 Streaming Community
152
162
  ======================
153
163
 
@@ -155,3 +165,12 @@ united by a shared passion for torrents and more
155
165
 
156
166
  An open-source script for downloading movies, TV shows, and anime from various websites,
157
167
  built by a community of people with a shared interest in programming.
168
+
169
+ .. image:: https://img.shields.io/badge/Telegram-Join-blue?logo=telegram
170
+ :target: https://t.me/+hj294GabGWJlMDI8
171
+ :alt: Unisciti su Telegram
172
+
173
+ .. image:: https://img.shields.io/badge/StreamingCommunity-blue.svg
174
+ :target: https://github.com/Arrowar/StreamingCommunity
175
+ :alt: StreamingCommunity Badge
176
+
@@ -32,22 +32,22 @@ It performs the following tasks:
32
32
  - Add a custom title to your seasons
33
33
  - Generate info for a title using MediaInfo
34
34
 
35
- .. image:: https://img.shields.io/badge/Upload_PDF-gr
36
- :alt: Install Upload PDF
37
-
38
35
  unit3dup can grab the first page, convert it to an image (using xpdf),
39
36
  and then the bot can upload it to an image host, then add the link to the torrent page description.
40
37
 
41
- Ubuntu/Debian Installation
42
- --------------------------
38
+ .. image:: https://img.shields.io/badge/INSTALL-gr
39
+ :alt: install
40
+
41
+ Ubuntu/Debian
42
+ -------------
43
43
  pip install unit3dup
44
44
 
45
45
  Upgrade
46
46
  -------
47
- pip install --upgrade unit3dup
47
+ pip install unit3dup --upgrade
48
48
 
49
- Dependencies
50
- ------------
49
+ Ubuntu/Debian Dependencies
50
+ --------------------------
51
51
  sudo apt install ffmpeg
52
52
 
53
53
  Only for pdf
@@ -55,6 +55,18 @@ Only for pdf
55
55
  sudo apt install poppler-utils
56
56
 
57
57
 
58
+ Windows Dependencies
59
+ --------------------
60
+ 1. Download and unzip https://www.ffmpeg.org/download.html and add its folder to
61
+ PATH environment user variable
62
+
63
+
64
+ 1. Download and unzip poppler for Windows from https://github.com/oschwartz10612/poppler-windows/releases
65
+ 2. Put the folder 'bin' in the system path (e.g. ``C:\poppler-24.08.0\Library\bin``)
66
+ 3. *Close and reopen a new console window*
67
+ 4. Test it: Run ``pdftocairo`` in the terminal
68
+
69
+
58
70
  Alternative method
59
71
  ------------------
60
72
 
@@ -62,37 +74,34 @@ Alternative method
62
74
 
63
75
  2. unzip it
64
76
 
65
- 3. pip install -r requirements.txt
77
+ 3. pip install .
78
+
79
+ 4. unit3dup
80
+
66
81
 
67
- 4. python start.py
82
+ .. image:: https://img.shields.io/badge/Bot_UPDATE-gr
83
+ :alt: Bot Update
68
84
 
69
- .. image:: https://img.shields.io/badge/LINUX-gr
85
+ 1. pip install unit3dup --upgrade
70
86
 
71
- 1. Run: ``sudo apt install poppler-utils``
72
- 2. sudo apt install ffmpeg
73
87
 
74
88
 
75
- .. image:: https://img.shields.io/badge/WINDOWS-gr
89
+ RUN
90
+ ======
76
91
 
77
- 1. Download and unzip https://www.ffmpeg.org/download.html and add its folder to
78
- PATH environment user variable
92
+ .. code-block:: python
79
93
 
94
+ unit3dup -u <filepath>
95
+ unit3dup -f <folderpath>
96
+ unit3dup -scan <folderpath>
80
97
 
81
- 1. Download and unzip poppler for Windows from https://github.com/oschwartz10612/poppler-windows/releases
82
- 2. Put the folder 'bin' in the system path (e.g. ``C:\poppler-24.08.0\Library\bin``)
83
- 3. *Close and reopen a new console window*
84
- 4. Test it: Run ``pdftocairo`` in the terminal
85
98
 
86
99
 
100
+ DOC
101
+ ===
87
102
 
88
- .. image:: https://img.shields.io/badge/Bot_UPDATE-gr
89
- :alt: Bot Update
103
+ Link `Unit3DUP <https://unit3dup.readthedocs.io/en/latest/index.html#>`_
90
104
 
91
- 1. Delete only the bot folder
92
- 2. Download the release zip
93
- 3. Unzip it
94
- 4. No config needed
95
- 5. Done!
96
105
 
97
106
 
98
107
  Trackers
@@ -117,10 +126,20 @@ united by a shared passion for torrents and more
117
126
  :alt: Discord Server
118
127
 
119
128
 
129
+
120
130
  🎯 Streaming Community
121
131
  ======================
122
132
 
123
133
  `goto GitHub Project <https://github.com/Arrowar/StreamingCommunity>`_
124
134
 
125
135
  An open-source script for downloading movies, TV shows, and anime from various websites,
126
- built by a community of people with a shared interest in programming.
136
+ built by a community of people with a shared interest in programming.
137
+
138
+ .. image:: https://img.shields.io/badge/Telegram-Join-blue?logo=telegram
139
+ :target: https://t.me/+hj294GabGWJlMDI8
140
+ :alt: Unisciti su Telegram
141
+
142
+ .. image:: https://img.shields.io/badge/StreamingCommunity-blue.svg
143
+ :target: https://github.com/Arrowar/StreamingCommunity
144
+ :alt: StreamingCommunity Badge
145
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Unit3Dup
3
- Version: 0.8.6
3
+ Version: 0.8.8
4
4
  Summary: An uploader for the Unit3D torrent tracker
5
5
  Author: Parzival
6
6
  License-Expression: MIT
@@ -63,22 +63,22 @@ It performs the following tasks:
63
63
  - Add a custom title to your seasons
64
64
  - Generate info for a title using MediaInfo
65
65
 
66
- .. image:: https://img.shields.io/badge/Upload_PDF-gr
67
- :alt: Install Upload PDF
68
-
69
66
  unit3dup can grab the first page, convert it to an image (using xpdf),
70
67
  and then the bot can upload it to an image host, then add the link to the torrent page description.
71
68
 
72
- Ubuntu/Debian Installation
73
- --------------------------
69
+ .. image:: https://img.shields.io/badge/INSTALL-gr
70
+ :alt: install
71
+
72
+ Ubuntu/Debian
73
+ -------------
74
74
  pip install unit3dup
75
75
 
76
76
  Upgrade
77
77
  -------
78
- pip install --upgrade unit3dup
78
+ pip install unit3dup --upgrade
79
79
 
80
- Dependencies
81
- ------------
80
+ Ubuntu/Debian Dependencies
81
+ --------------------------
82
82
  sudo apt install ffmpeg
83
83
 
84
84
  Only for pdf
@@ -86,6 +86,18 @@ Only for pdf
86
86
  sudo apt install poppler-utils
87
87
 
88
88
 
89
+ Windows Dependencies
90
+ --------------------
91
+ 1. Download and unzip https://www.ffmpeg.org/download.html and add its folder to
92
+ PATH environment user variable
93
+
94
+
95
+ 1. Download and unzip poppler for Windows from https://github.com/oschwartz10612/poppler-windows/releases
96
+ 2. Put the folder 'bin' in the system path (e.g. ``C:\poppler-24.08.0\Library\bin``)
97
+ 3. *Close and reopen a new console window*
98
+ 4. Test it: Run ``pdftocairo`` in the terminal
99
+
100
+
89
101
  Alternative method
90
102
  ------------------
91
103
 
@@ -93,37 +105,34 @@ Alternative method
93
105
 
94
106
  2. unzip it
95
107
 
96
- 3. pip install -r requirements.txt
108
+ 3. pip install .
109
+
110
+ 4. unit3dup
111
+
97
112
 
98
- 4. python start.py
113
+ .. image:: https://img.shields.io/badge/Bot_UPDATE-gr
114
+ :alt: Bot Update
99
115
 
100
- .. image:: https://img.shields.io/badge/LINUX-gr
116
+ 1. pip install unit3dup --upgrade
101
117
 
102
- 1. Run: ``sudo apt install poppler-utils``
103
- 2. sudo apt install ffmpeg
104
118
 
105
119
 
106
- .. image:: https://img.shields.io/badge/WINDOWS-gr
120
+ RUN
121
+ ======
107
122
 
108
- 1. Download and unzip https://www.ffmpeg.org/download.html and add its folder to
109
- PATH environment user variable
123
+ .. code-block:: python
110
124
 
125
+ unit3dup -u <filepath>
126
+ unit3dup -f <folderpath>
127
+ unit3dup -scan <folderpath>
111
128
 
112
- 1. Download and unzip poppler for Windows from https://github.com/oschwartz10612/poppler-windows/releases
113
- 2. Put the folder 'bin' in the system path (e.g. ``C:\poppler-24.08.0\Library\bin``)
114
- 3. *Close and reopen a new console window*
115
- 4. Test it: Run ``pdftocairo`` in the terminal
116
129
 
117
130
 
131
+ DOC
132
+ ===
118
133
 
119
- .. image:: https://img.shields.io/badge/Bot_UPDATE-gr
120
- :alt: Bot Update
134
+ Link `Unit3DUP <https://unit3dup.readthedocs.io/en/latest/index.html#>`_
121
135
 
122
- 1. Delete only the bot folder
123
- 2. Download the release zip
124
- 3. Unzip it
125
- 4. No config needed
126
- 5. Done!
127
136
 
128
137
 
129
138
  Trackers
@@ -148,6 +157,7 @@ united by a shared passion for torrents and more
148
157
  :alt: Discord Server
149
158
 
150
159
 
160
+
151
161
  🎯 Streaming Community
152
162
  ======================
153
163
 
@@ -155,3 +165,12 @@ united by a shared passion for torrents and more
155
165
 
156
166
  An open-source script for downloading movies, TV shows, and anime from various websites,
157
167
  built by a community of people with a shared interest in programming.
168
+
169
+ .. image:: https://img.shields.io/badge/Telegram-Join-blue?logo=telegram
170
+ :target: https://t.me/+hj294GabGWJlMDI8
171
+ :alt: Unisciti su Telegram
172
+
173
+ .. image:: https://img.shields.io/badge/StreamingCommunity-blue.svg
174
+ :target: https://github.com/Arrowar/StreamingCommunity
175
+ :alt: StreamingCommunity Badge
176
+
@@ -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
@@ -2,5 +2,7 @@ Docker
2
2
  common
3
3
  dist
4
4
  docs
5
+ tests
6
+ tracker_cache
5
7
  unit3dup
6
8
  view
@@ -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.6"
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
@@ -113,7 +123,7 @@ class UserPreferences(BaseModel):
113
123
  CACHE_SCR: bool = False
114
124
  CACHE_DBONLINE: bool = False
115
125
  PERSONAL_RELEASE: bool = False
116
-
126
+ FAST_LOAD: int = 0
117
127
 
118
128
 
119
129
  class Options(BaseModel):
@@ -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']:
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",
@@ -524,6 +535,7 @@ class Load:
524
535
  "SHARED_RTORR_PATH": "no_path",
525
536
  "TORRENT_CLIENT": "qbittorrent",
526
537
  "TAG": "ADDED TORRENTS",
538
+ "FAST_LOAD": "0",
527
539
  },
528
540
  "user_preferences": {
529
541
  "PTSCREENS_PRIORITY": 0,
@@ -531,6 +543,7 @@ class Load:
531
543
  "FREE_IMAGE_PRIORITY": 2,
532
544
  "IMGBB_PRIORITY": 3,
533
545
  "IMGFI_PRIORITY": 4,
546
+ "PASSIMA_PRIORITY": 5,
534
547
  "NUMBER_OF_SCREENSHOTS": 4,
535
548
  "YOUTUBE_FAV_CHANNEL_ID": "UCGCbxpnt25hWPFLSbvwfg_w",
536
549
  "YOUTUBE_CHANNEL_ENABLE": "False",
@@ -740,10 +753,11 @@ class JsonConfig:
740
753
  return json.loads(json_data)
741
754
 
742
755
  except json.JSONDecodeError as e:
743
- print(f"Config Loading error.. {e}")
744
- print(r"Try to Check '\\ characters. Example: ")
745
- print(r"C:\myfolder -> not correct ")
746
- print(r"C:/myfolder -> CORRECT ")
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)
747
761
  exit(1)
748
762
  except FileNotFoundError:
749
763
  print(f"Configuration '{self.default_json_path}' not found")
@@ -796,3 +810,34 @@ class JsonConfig:
796
810
 
797
811
  print(message)
798
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 !")
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
  [project]
6
6
  dynamic = ["dependencies"]
7
7
  name = "Unit3Dup"
8
- version = "0.8.6"
8
+ version = "0.8.8"
9
9
  description = "An uploader for the Unit3D torrent tracker"
10
10
  readme = "README.rst"
11
11
  requires-python = ">=3.10"
@@ -29,6 +29,11 @@ class TorrentManager:
29
29
  self.games: list[Media] = []
30
30
  self.doc: list[Media] = []
31
31
  self.cli = cli
32
+ self.fast_load = config_settings.user_preferences.FAST_LOAD
33
+ if self.fast_load < 1 or self.fast_load > 150:
34
+ # full list
35
+ self.fast_load = None
36
+
32
37
 
33
38
  def process(self, contents: list) -> None:
34
39
  """
@@ -57,6 +62,7 @@ class TorrentManager:
57
62
  if content.category in {System.category_list.get(System.MOVIE), System.category_list.get(System.TV_SHOW)}
58
63
  ]
59
64
 
65
+
60
66
  # // Build a Doc list
61
67
  self.doc = [
62
68
  content for content in contents if content.category == System.category_list.get(System.DOCUMENTARY)
@@ -78,21 +84,24 @@ class TorrentManager:
78
84
  for selected_tracker in trackers_name_list:
79
85
  # Build the torrent file and upload each GAME to the tracker
80
86
  if self.games:
81
- game_manager = GameManager(contents=self.games, cli=self.cli)
87
+ game_manager = GameManager(contents=self.games[:self.fast_load],
88
+ cli=self.cli)
82
89
  game_process_results = game_manager.process(selected_tracker=selected_tracker,
83
90
  tracker_name_list=trackers_name_list,
84
91
  tracker_archive=self.tracker_archive)
85
92
 
86
93
  # Build the torrent file and upload each VIDEO to the trackers
87
94
  if self.videos:
88
- video_manager = VideoManager(contents=self.videos, cli=self.cli)
95
+ video_manager = VideoManager(contents=self.videos[:self.fast_load],
96
+ cli=self.cli)
89
97
  video_process_results = video_manager.process(selected_tracker=selected_tracker,
90
98
  tracker_name_list=trackers_name_list,
91
99
  tracker_archive=self.tracker_archive)
92
100
 
93
101
  # Build the torrent file and upload each DOC to the tracker
94
102
  if self.doc and not self.cli.reseed:
95
- docu_manager = DocuManager(contents=self.doc, cli=self.cli)
103
+ docu_manager = DocuManager(contents=self.doc[:self.fast_load],
104
+ cli=self.cli)
96
105
  docu_process_results = docu_manager.process(selected_tracker=selected_tracker,
97
106
  tracker_name_list=trackers_name_list,
98
107
  tracker_archive=self.tracker_archive)
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
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