Unit3Dup 0.11.0__tar.gz → 0.11.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.
- {unit3dup-0.11.0 → unit3dup-0.11.3}/PKG-INFO +2 -2
- {unit3dup-0.11.0 → unit3dup-0.11.3}/README.rst +1 -1
- {unit3dup-0.11.0 → unit3dup-0.11.3}/Unit3Dup.egg-info/PKG-INFO +2 -2
- unit3dup-0.11.3/common/command.py +162 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/settings.py +1 -1
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/tags.py +16 -3
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/trackers/signs_list.py +2 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/utility.py +3 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/pyproject.toml +1 -1
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/media.py +1 -2
- unit3dup-0.11.0/common/command.py +0 -120
- {unit3dup-0.11.0 → unit3dup-0.11.3}/LICENSE +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/Unit3Dup.egg-info/SOURCES.txt +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/Unit3Dup.egg-info/dependency_links.txt +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/Unit3Dup.egg-info/entry_points.txt +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/Unit3Dup.egg-info/requires.txt +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/Unit3Dup.egg-info/top_level.txt +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/__init__.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/bdinfo_string.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/bittorrent.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/constants.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/database.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/__init__.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/ftpx/__init__.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/ftpx/client.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/ftpx/core/__init__.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/ftpx/core/ftpx_service.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/ftpx/core/ftpx_session.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/ftpx/core/menu.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/ftpx/core/models/__init__.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/ftpx/core/models/list.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/igdb/__init__.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/igdb/client.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/igdb/core/__init__.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/igdb/core/api.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/igdb/core/models/__init__.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/igdb/core/models/search.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/igdb/core/platformid.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/igdb/core/tags.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/imageHost.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/mediaresult.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/sessions/__init__.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/sessions/agents.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/sessions/exceptions.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/sessions/session.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/__init__.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/core/__init__.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/core/api.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/core/keywords.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/core/models/__init__.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/core/models/movie/__init__.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/core/models/movie/alternative_titles.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/core/models/movie/details.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/core/models/movie/movie.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/core/models/movie/nowplaying.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/core/models/movie/release_info.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/core/models/tvshow/__init__.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/core/models/tvshow/alternative.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/core/models/tvshow/details.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/core/models/tvshow/on_the_air.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/core/models/tvshow/translations.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/core/models/tvshow/tvshow.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/core/videos.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/trailers/__init__.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/trailers/api.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/trailers/response.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/tvdb.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/extractor.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/frames.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/mediainfo.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/mediainfo_string.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/title.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/torrent_clients.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/trackers/__init__.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/trackers/ast.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/trackers/ban_list.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/trackers/data.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/trackers/itt.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/trackers/ptt.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/trackers/sis.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/trackers/tags_list.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/common/trackers/trackers.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/requirements.txt +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/setup.cfg +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/__init__.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/__main__.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/automode.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/bot.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/duplicate.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/exceptions.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/media_manager/ContentManager.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/media_manager/DocuManager.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/media_manager/GameManager.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/media_manager/MediaInfoManager.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/media_manager/SeedManager.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/media_manager/TorrentManager.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/media_manager/VideoManager.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/media_manager/__init__.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/media_manager/common.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/pvtDocu.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/pvtTorrent.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/pvtTracker.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/pvtVideo.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/torrent.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/unit3dup/upload.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/view/__init__.py +0 -0
- {unit3dup-0.11.0 → unit3dup-0.11.3}/view/custom_console.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: Unit3Dup
|
|
3
|
-
Version: 0.11.
|
|
3
|
+
Version: 0.11.3
|
|
4
4
|
Summary: An uploader for the Unit3D torrent tracker
|
|
5
5
|
Author: Parzival
|
|
6
6
|
License-Expression: MIT
|
|
@@ -109,7 +109,7 @@ RUN
|
|
|
109
109
|
DOC
|
|
110
110
|
===
|
|
111
111
|
|
|
112
|
-
|
|
112
|
+
Commands list `Unit3Dup <https://31december99.github.io/Unit3Dup/commands/>`_
|
|
113
113
|
|
|
114
114
|
|
|
115
115
|
ImageHost
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: Unit3Dup
|
|
3
|
-
Version: 0.11.
|
|
3
|
+
Version: 0.11.3
|
|
4
4
|
Summary: An uploader for the Unit3D torrent tracker
|
|
5
5
|
Author: Parzival
|
|
6
6
|
License-Expression: MIT
|
|
@@ -109,7 +109,7 @@ RUN
|
|
|
109
109
|
DOC
|
|
110
110
|
===
|
|
111
111
|
|
|
112
|
-
|
|
112
|
+
Commands list `Unit3Dup <https://31december99.github.io/Unit3Dup/commands/>`_
|
|
113
113
|
|
|
114
114
|
|
|
115
115
|
ImageHost
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
import os
|
|
3
|
+
import argparse
|
|
4
|
+
|
|
5
|
+
from common.utility import System
|
|
6
|
+
from common.settings import Load
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class CommandLine:
|
|
10
|
+
"""
|
|
11
|
+
Handle command line arguments
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
def __init__(self):
|
|
15
|
+
|
|
16
|
+
# Load config
|
|
17
|
+
config = Load().load_config()
|
|
18
|
+
|
|
19
|
+
# /////////////////////////
|
|
20
|
+
# Main parser
|
|
21
|
+
# /////////////////////////
|
|
22
|
+
parser = argparse.ArgumentParser(
|
|
23
|
+
description="Manage torrents, uploads, searches and config checks",
|
|
24
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
# /////////////////////////
|
|
28
|
+
# Groups
|
|
29
|
+
# /////////////////////////
|
|
30
|
+
cfg_group = parser.add_argument_group("Config Commands")
|
|
31
|
+
upload_group = parser.add_argument_group("Upload Commands")
|
|
32
|
+
search_group = parser.add_argument_group("Search Commands")
|
|
33
|
+
filter_group = parser.add_argument_group("Filter Options")
|
|
34
|
+
special_group = parser.add_argument_group("Special Flags")
|
|
35
|
+
|
|
36
|
+
# /////////////////////////
|
|
37
|
+
# Config Commands
|
|
38
|
+
# /////////////////////////
|
|
39
|
+
cfg_group.add_argument(
|
|
40
|
+
"-check", "--check",
|
|
41
|
+
action="store_true",
|
|
42
|
+
help="Check config files"
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
# /////////////////////////
|
|
46
|
+
# Upload Commands
|
|
47
|
+
# /////////////////////////
|
|
48
|
+
upload_group.add_argument("-u", "--upload", type=str, help="Upload path")
|
|
49
|
+
upload_group.add_argument("-f", "--folder", type=str, help="Upload folder")
|
|
50
|
+
upload_group.add_argument("-scan", "--scan", type=str, help="Scan folder")
|
|
51
|
+
upload_group.add_argument("-b", "--buildtags", action="store_true", help="Auto build title")
|
|
52
|
+
upload_group.add_argument("-reseed", "--reseed", action="store_true", help="Reseed folder")
|
|
53
|
+
upload_group.add_argument("-watcher", "--watcher", action="store_true", help="Start watcher")
|
|
54
|
+
upload_group.add_argument("-notitle", "--notitle", type=str, help="Manual title")
|
|
55
|
+
|
|
56
|
+
upload_group.add_argument(
|
|
57
|
+
"-tracker", "--tracker",
|
|
58
|
+
type=str,
|
|
59
|
+
default=config.tracker_config.MULTI_TRACKER[0],
|
|
60
|
+
help="Single tracker"
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
upload_group.add_argument("-mt", "--mt", action="store_true", help="Multi tracker")
|
|
64
|
+
|
|
65
|
+
upload_group.add_argument(
|
|
66
|
+
"-force",
|
|
67
|
+
nargs='?',
|
|
68
|
+
const="movie",
|
|
69
|
+
type=str,
|
|
70
|
+
default=None,
|
|
71
|
+
help="Force category"
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
upload_group.add_argument("-noseed", "--noseed", action="store_true", help="Disable seeding")
|
|
75
|
+
upload_group.add_argument("-noup", "--noup", action="store_true", help="Torrent only")
|
|
76
|
+
upload_group.add_argument("-dup", "--duplicate", action="store_true", help="Check duplicates")
|
|
77
|
+
upload_group.add_argument("-personal", "--personal", action="store_true", help="Personal release")
|
|
78
|
+
upload_group.add_argument("-ftp", "--ftp", action="store_true", help="Connect FTP")
|
|
79
|
+
|
|
80
|
+
# /////////////////////////
|
|
81
|
+
# Search Commands
|
|
82
|
+
# /////////////////////////
|
|
83
|
+
search_group.add_argument("-dmp", "--dump", action="store_true", help="Dump titles")
|
|
84
|
+
search_group.add_argument("-sch", "--search", type=str, help="Search torrent")
|
|
85
|
+
search_group.add_argument("-db", "--dbsave", action="store_true", help="Save results")
|
|
86
|
+
search_group.add_argument("-i", "--info", type=str, help="Torrent info")
|
|
87
|
+
search_group.add_argument("-up", "--uploader", type=str, help="By uploader")
|
|
88
|
+
search_group.add_argument("-d", "--description", type=str, help="By description")
|
|
89
|
+
search_group.add_argument("-bd", "--bdinfo", type=str, help="Show BDInfo")
|
|
90
|
+
search_group.add_argument("-m", "--mediainfo", type=str, help="Show MediaInfo")
|
|
91
|
+
|
|
92
|
+
# /////////////////////////
|
|
93
|
+
# Filter Options
|
|
94
|
+
# /////////////////////////
|
|
95
|
+
filter_group.add_argument("-st", "--startyear", type=str, help="Start year")
|
|
96
|
+
filter_group.add_argument("-en", "--endyear", type=str, help="End year")
|
|
97
|
+
filter_group.add_argument("-type", "--type", type=str, help="Type")
|
|
98
|
+
filter_group.add_argument("-res", "--resolution", type=str, help="Resolution")
|
|
99
|
+
filter_group.add_argument("-file", "--filename", type=str, help="Filename")
|
|
100
|
+
filter_group.add_argument("-se", "--season", type=str, help="Season")
|
|
101
|
+
filter_group.add_argument("-ep", "--episode", type=str, help="Episode")
|
|
102
|
+
|
|
103
|
+
# IDs
|
|
104
|
+
filter_group.add_argument("-tmdb", "--tmdb_id", type=str, help="TMDB ID")
|
|
105
|
+
filter_group.add_argument("-imdb", "--imdb_id", type=str, help="IMDB ID")
|
|
106
|
+
filter_group.add_argument("-tvdb", "--tvdb_id", type=int, help="TVDB ID")
|
|
107
|
+
filter_group.add_argument("-mal", "--mal_id", type=str, help="MAL ID")
|
|
108
|
+
filter_group.add_argument("-playid", "--playlist_id", type=str, help="Playlist ID")
|
|
109
|
+
filter_group.add_argument("-coll", "--collection_id", type=str, help="Collection ID")
|
|
110
|
+
|
|
111
|
+
# Status
|
|
112
|
+
filter_group.add_argument("-free", "--freelech", type=str, help="Freeleech")
|
|
113
|
+
filter_group.add_argument("-al", "--alive", action="store_true", help="Alive")
|
|
114
|
+
filter_group.add_argument("-dd", "--dead", action="store_true", help="Dead")
|
|
115
|
+
filter_group.add_argument("-dy", "--dying", action="store_true", help="Dying")
|
|
116
|
+
|
|
117
|
+
# /////////////////////////
|
|
118
|
+
# Special Flags
|
|
119
|
+
# /////////////////////////
|
|
120
|
+
special_group.add_argument("-du", "--doubleup", action="store_true", help="DoubleUp")
|
|
121
|
+
special_group.add_argument("-fe", "--featured", action="store_true", help="Featured")
|
|
122
|
+
special_group.add_argument("-re", "--refundable", action="store_true", help="Refundable")
|
|
123
|
+
special_group.add_argument("-str", "--stream", action="store_true", help="Stream")
|
|
124
|
+
special_group.add_argument("-sd", "--standard", action="store_true", help="SD")
|
|
125
|
+
special_group.add_argument("-hs", "--highspeed", action="store_true", help="Highspeed")
|
|
126
|
+
special_group.add_argument("-int", "--internal", action="store_true", help="Internal")
|
|
127
|
+
special_group.add_argument("-pr", "--prelease", action="store_true", help="Personal")
|
|
128
|
+
|
|
129
|
+
# /////////////////////////
|
|
130
|
+
# Parse args
|
|
131
|
+
# /////////////////////////
|
|
132
|
+
self.args = parser.parse_args()
|
|
133
|
+
|
|
134
|
+
# /////////////////////////
|
|
135
|
+
# Check scan path
|
|
136
|
+
# /////////////////////////
|
|
137
|
+
self.is_dir = os.path.isdir(self.args.scan) if self.args.scan else None
|
|
138
|
+
|
|
139
|
+
# /////////////////////////
|
|
140
|
+
# Expand upload path
|
|
141
|
+
# /////////////////////////
|
|
142
|
+
if self.args.upload:
|
|
143
|
+
self.args.upload = os.path.expanduser(self.args.upload)
|
|
144
|
+
|
|
145
|
+
# /////////////////////////
|
|
146
|
+
# Validate force category
|
|
147
|
+
# /////////////////////////
|
|
148
|
+
if self.args.force:
|
|
149
|
+
|
|
150
|
+
self.args.force = self.args.force[:10]
|
|
151
|
+
|
|
152
|
+
valid_categories = [
|
|
153
|
+
System.category_list[System.MOVIE],
|
|
154
|
+
System.category_list[System.GAME],
|
|
155
|
+
System.category_list[System.TV_SHOW],
|
|
156
|
+
System.category_list[System.DOCUMENTARY]
|
|
157
|
+
]
|
|
158
|
+
|
|
159
|
+
if self.args.force.lower() not in valid_categories:
|
|
160
|
+
self.args.force = None
|
|
161
|
+
print("Invalid -force category")
|
|
162
|
+
exit()
|
|
@@ -57,7 +57,11 @@ video_encoder_translate = {
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
TAG_NORMALIZE = {
|
|
60
|
+
"BLURAY": "BluRay",
|
|
60
61
|
"WEBDL": "WEB-DL",
|
|
62
|
+
"WEBMUX": "WEBMux",
|
|
63
|
+
"BDRIP": "BDRip",
|
|
64
|
+
"WEBRIP": "WEBRip",
|
|
61
65
|
"UHDRIP": "UHDRip",
|
|
62
66
|
}
|
|
63
67
|
|
|
@@ -159,7 +163,7 @@ class SearchTags(object):
|
|
|
159
163
|
matches = regex.findall(self.filename)
|
|
160
164
|
if matches:
|
|
161
165
|
# Normalize Tag_list
|
|
162
|
-
normalized_tag = TAG_NORMALIZE.get(matches[0], None)
|
|
166
|
+
normalized_tag = TAG_NORMALIZE.get(matches[0].upper(), None)
|
|
163
167
|
if normalized_tag:
|
|
164
168
|
matches[0] = normalized_tag
|
|
165
169
|
self.tags_dict.setdefault(category, []).append(matches[0])
|
|
@@ -357,8 +361,17 @@ class SearchTags(object):
|
|
|
357
361
|
"""
|
|
358
362
|
identify resolution based on Height and Width tolerance 5%
|
|
359
363
|
"""
|
|
360
|
-
|
|
361
|
-
|
|
364
|
+
mapping = {
|
|
365
|
+
'2160p': 'UHD',
|
|
366
|
+
'1080p': 'FullHD',
|
|
367
|
+
'720p': 'HD',
|
|
368
|
+
'576p': 'SD',
|
|
369
|
+
'480p': 'SD',
|
|
370
|
+
}
|
|
371
|
+
return {
|
|
372
|
+
'resolution': self.media.resolution,
|
|
373
|
+
'uhd': mapping.get(self.media.resolution, 'unknown')
|
|
374
|
+
}
|
|
362
375
|
|
|
363
376
|
@staticmethod
|
|
364
377
|
def detect_releaser(name: str, signs_list: dict) -> str:
|
|
@@ -317,6 +317,9 @@ class ManageTitles:
|
|
|
317
317
|
# Remove v version
|
|
318
318
|
filename_sanitized = re.sub(r"v\d+(?:[ .]\d+)*", "", filename_sanitized).strip()
|
|
319
319
|
|
|
320
|
+
# Remove '꞉:'
|
|
321
|
+
filename_sanitized = re.sub(r"[꞉:]", "", filename_sanitized).strip()
|
|
322
|
+
|
|
320
323
|
# remove spaces, tab, newline
|
|
321
324
|
filename_sanitized = re.sub(r"\s+", " ", filename_sanitized)
|
|
322
325
|
|
|
@@ -63,8 +63,7 @@ class Media:
|
|
|
63
63
|
|
|
64
64
|
@property
|
|
65
65
|
def title_sanitize_tags(self) -> str:
|
|
66
|
-
|
|
67
|
-
self._title_sanitized = ManageTitles.clean_tags(self.title)
|
|
66
|
+
self._title_sanitized = ManageTitles.clean_tags(self.title)
|
|
68
67
|
return self._title_sanitized
|
|
69
68
|
|
|
70
69
|
@property
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
import os
|
|
3
|
-
import argparse
|
|
4
|
-
from common.utility import System
|
|
5
|
-
from common.settings import Load
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class CommandLine:
|
|
9
|
-
"""
|
|
10
|
-
Class to handle user input from the command line
|
|
11
|
-
"""
|
|
12
|
-
|
|
13
|
-
def __init__(self):
|
|
14
|
-
|
|
15
|
-
config = Load().load_config()
|
|
16
|
-
|
|
17
|
-
parser = argparse.ArgumentParser(
|
|
18
|
-
description="Manage torrents, uploads, and config checks."
|
|
19
|
-
)
|
|
20
|
-
|
|
21
|
-
# Config files
|
|
22
|
-
parser.add_argument(
|
|
23
|
-
"-check", "--check", action="store_true", help="Check config"
|
|
24
|
-
)
|
|
25
|
-
|
|
26
|
-
# Main flags
|
|
27
|
-
parser.add_argument("-u", "--upload", type=str, help="Upload path")
|
|
28
|
-
parser.add_argument("-f", "--folder", type=str, help="Upload folder")
|
|
29
|
-
parser.add_argument("-scan", "--scan", type=str, help="Scan folder")
|
|
30
|
-
parser.add_argument("-b", "--buildtags", action="store_true", help="Auto build torrent name")
|
|
31
|
-
|
|
32
|
-
parser.add_argument("-reseed", "--reseed", action="store_true", help="reseed folder")
|
|
33
|
-
parser.add_argument("-watcher", "--watcher", action="store_true", help="Start watcher")
|
|
34
|
-
|
|
35
|
-
parser.add_argument("-notitle", "--notitle", type=str, help="")
|
|
36
|
-
parser.add_argument("-tracker", "--tracker", type=str, default=config.tracker_config.MULTI_TRACKER[0],
|
|
37
|
-
help="Upload to single tracker")
|
|
38
|
-
|
|
39
|
-
parser.add_argument("-mt", "--mt", action="store_true", help="")
|
|
40
|
-
parser.add_argument('-force', nargs='?', const="movie", type=str, default=None)
|
|
41
|
-
parser.add_argument("-noseed", "--noseed", action="store_true", help="No seeding after upload")
|
|
42
|
-
parser.add_argument("-noup", "--noup", action="store_true", help="Torrent only. No upload")
|
|
43
|
-
parser.add_argument("-dup", "--duplicate", action="store_true", help="Find duplicates")
|
|
44
|
-
parser.add_argument("-personal", "--personal", action="store_true", help="Set to personal release")
|
|
45
|
-
|
|
46
|
-
parser.add_argument("-ftp", "--ftp", action="store_true", help="Connect to FTP")
|
|
47
|
-
|
|
48
|
-
# optional
|
|
49
|
-
parser.add_argument("-dmp", "--dump", action="store_true", help="Download all torrent titles")
|
|
50
|
-
parser.add_argument("-sch", "--search", type=str, help="Search for torrent")
|
|
51
|
-
parser.add_argument("-db", "--dbsave", action="store_true", help="Save the search results")
|
|
52
|
-
parser.add_argument("-i", "--info", type=str, help="Get info on torrent")
|
|
53
|
-
parser.add_argument("-up", "--uploader", type=str, help="Search by uploader")
|
|
54
|
-
parser.add_argument("-d", "--description", type=str, help="Search by description")
|
|
55
|
-
parser.add_argument("-bd", "--bdinfo", type=str, help="Show BDInfo")
|
|
56
|
-
parser.add_argument("-m", "--mediainfo", type=str, help="Show MediaInfo")
|
|
57
|
-
parser.add_argument("-st", "--startyear", type=str, help="Start year")
|
|
58
|
-
parser.add_argument("-en", "--endyear", type=str, help="End year")
|
|
59
|
-
parser.add_argument("-type", "--type", type=str, help="Filter by type")
|
|
60
|
-
parser.add_argument("-res", "--resolution", type=str, help="Filter by resolution")
|
|
61
|
-
parser.add_argument("-file", "--filename", type=str, help="Search by filename")
|
|
62
|
-
parser.add_argument("-se", "--season", type=str, help="Season number")
|
|
63
|
-
parser.add_argument("-ep", "--episode", type=str, help="Episode number")
|
|
64
|
-
parser.add_argument("-tmdb", "--tmdb_id", type=str, help="TMDB ID")
|
|
65
|
-
parser.add_argument("-imdb", "--imdb_id", type=str, help="IMDB ID")
|
|
66
|
-
parser.add_argument("-tvdb", "--tvdb_id", type=int, help="TVDB ID")
|
|
67
|
-
parser.add_argument("-mal", "--mal_id", type=str, help="MAL ID")
|
|
68
|
-
parser.add_argument("-playid", "--playlist_id", type=str, help="Playlist ID")
|
|
69
|
-
parser.add_argument("-coll", "--collection_id", type=str, help="Collection ID")
|
|
70
|
-
parser.add_argument("-free", "--freelech", type=str, help="Freelech discount")
|
|
71
|
-
parser.add_argument("-al", "--alive", action="store_true", help="Alive torrent")
|
|
72
|
-
parser.add_argument("-dd", "--dead", action="store_true", help="Dead torrent")
|
|
73
|
-
parser.add_argument("-dy", "--dying", action="store_true", help="Dying torrent")
|
|
74
|
-
|
|
75
|
-
parser.add_argument(
|
|
76
|
-
"-du", "--doubleup", action="store_true", help="DoubleUp torrent"
|
|
77
|
-
)
|
|
78
|
-
parser.add_argument(
|
|
79
|
-
"-fe", "--featured", action="store_true", help="Featured torrent"
|
|
80
|
-
)
|
|
81
|
-
parser.add_argument(
|
|
82
|
-
"-re", "--refundable", action="store_true", help="Refundable torrent"
|
|
83
|
-
)
|
|
84
|
-
parser.add_argument(
|
|
85
|
-
"-str", "--stream", action="store_true", help="Stream torrent"
|
|
86
|
-
)
|
|
87
|
-
parser.add_argument(
|
|
88
|
-
"-sd", "--standard", action="store_true", help="Standard definition torrent"
|
|
89
|
-
)
|
|
90
|
-
parser.add_argument(
|
|
91
|
-
"-hs", "--highspeed", action="store_true", help="Highspeed torrent"
|
|
92
|
-
)
|
|
93
|
-
parser.add_argument(
|
|
94
|
-
"-int", "--internal", action="store_true", help="Internal torrent"
|
|
95
|
-
)
|
|
96
|
-
|
|
97
|
-
parser.add_argument(
|
|
98
|
-
"-pr", "--prelease", action="store_true", help="Personal release torrent"
|
|
99
|
-
)
|
|
100
|
-
|
|
101
|
-
# Parsing the User cli
|
|
102
|
-
self.args: parser = parser.parse_args()
|
|
103
|
-
|
|
104
|
-
# Test user scan path
|
|
105
|
-
self.is_dir = os.path.isdir(self.args.scan) if self.args.scan else None
|
|
106
|
-
|
|
107
|
-
# Test the upload path. Expand path home_path with tilde
|
|
108
|
-
if self.args.upload:
|
|
109
|
-
self.args.upload = os.path.expanduser(self.args.upload)
|
|
110
|
-
|
|
111
|
-
# Test -force flag
|
|
112
|
-
if self.args.force:
|
|
113
|
-
self.args.force = self.args.force[:10]
|
|
114
|
-
if self.args.force.lower() not in [System.category_list[System.MOVIE],
|
|
115
|
-
System.category_list[System.GAME],
|
|
116
|
-
System.category_list[System.TV_SHOW],
|
|
117
|
-
System.category_list[System.DOCUMENTARY]]:
|
|
118
|
-
self.args.force = None
|
|
119
|
-
print("Invalid -force category")
|
|
120
|
-
exit()
|
|
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
|
{unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/core/models/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/core/models/movie/details.py
RENAMED
|
File without changes
|
{unit3dup-0.11.0 → unit3dup-0.11.3}/common/external_services/theMovieDB/core/models/movie/movie.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
|
{unit3dup-0.11.0 → unit3dup-0.11.3}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|