d4rktg 1.1.7__py3-none-any.whl → 1.1.9__py3-none-any.whl
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.
- d4rk/Utils/_decorators.py +1 -1
- d4rk/Utils/_movie_parser.py +53 -22
- {d4rktg-1.1.7.dist-info → d4rktg-1.1.9.dist-info}/METADATA +1 -1
- {d4rktg-1.1.7.dist-info → d4rktg-1.1.9.dist-info}/RECORD +6 -6
- {d4rktg-1.1.7.dist-info → d4rktg-1.1.9.dist-info}/WHEEL +0 -0
- {d4rktg-1.1.7.dist-info → d4rktg-1.1.9.dist-info}/top_level.txt +0 -0
d4rk/Utils/_decorators.py
CHANGED
d4rk/Utils/_movie_parser.py
CHANGED
@@ -17,13 +17,27 @@ class Movie:
|
|
17
17
|
split: bool = False
|
18
18
|
part: Optional[int] = None
|
19
19
|
|
20
|
+
@dataclass
|
21
|
+
class TV:
|
22
|
+
title: str
|
23
|
+
normalized_title: str
|
24
|
+
season: Optional[int]
|
25
|
+
episode: Optional[int]
|
26
|
+
resolution: Optional[str]
|
27
|
+
quality: Optional[str]
|
28
|
+
codec: Optional[str]
|
29
|
+
extra: List[str] = field(default_factory=list)
|
30
|
+
split: bool = False
|
31
|
+
part: Optional[int] = None
|
32
|
+
|
20
33
|
class MovieParser:
|
21
34
|
def __parse_file_name(self, file_name: str):
|
22
35
|
file_name = re.sub(r'@[\w_]+', '', file_name.lower()).strip()
|
23
36
|
file_name = file_name.replace('_', ' ')
|
24
37
|
self.file_name = file_name
|
25
38
|
self.extension = self.file_name.split('.')[-1]
|
26
|
-
self.
|
39
|
+
self.data = PTN.parse(self.file_name)
|
40
|
+
self.tv, self.movie = (self.data, None) if "season" in self.data else (None, self.data)
|
27
41
|
self.tags = []
|
28
42
|
|
29
43
|
def fallback_title(self, file_name):
|
@@ -45,18 +59,23 @@ class MovieParser:
|
|
45
59
|
roman_pattern = r'\b(i{1,3}|iv|v|vi{0,3}|ix|x{1,3}|xl|l|li{0,3}|lx|xc|c|ci{0,3}|cd|d|dc|cm|m|m{1,3})\b'
|
46
60
|
return re.sub(roman_pattern, lambda m: m.group(0).upper(), text, flags=re.IGNORECASE)
|
47
61
|
|
48
|
-
|
62
|
+
|
63
|
+
def _handle_movie(self):
|
64
|
+
pass
|
65
|
+
|
66
|
+
def extract(self, file_name: str) -> Union[Movie, TV]:
|
49
67
|
self.__parse_file_name(file_name)
|
50
|
-
|
68
|
+
|
69
|
+
title = str(self.data.get('title', '')).replace('.', ' ').strip()
|
51
70
|
if not title:title = self.fallback_title(self.file_name)
|
52
71
|
else:title = title.replace('.', ' ').strip()
|
53
72
|
|
54
|
-
year = self.
|
73
|
+
year = self.data.get('year',None) or self.fallback_year(self.file_name)
|
55
74
|
if year and str(year) in title:title = title.replace(str(year), '').strip()
|
56
75
|
|
57
|
-
resolution = self.
|
58
|
-
quality = self.
|
59
|
-
codec = self.
|
76
|
+
resolution = self.data.get('resolution')
|
77
|
+
quality = self.data.get('quality')
|
78
|
+
codec = self.data.get('codec')
|
60
79
|
if codec:codec = codec.replace('H', 'x').replace('.', '')
|
61
80
|
|
62
81
|
extra = []
|
@@ -167,18 +186,30 @@ class MovieParser:
|
|
167
186
|
match = re.search(r'\.(\d{3})$', file_name)
|
168
187
|
split = match is not None
|
169
188
|
part = int(match.group(1)) if split else None
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
189
|
+
if self.movie:
|
190
|
+
return Movie(
|
191
|
+
title=self._fix_roman_numerals(title.title()),
|
192
|
+
normalized_title=re.sub(r'[^a-z0-9&\+]+', ' ', title.lower()).strip(),
|
193
|
+
year=year,
|
194
|
+
resolution=resolution,
|
195
|
+
quality=quality,
|
196
|
+
codec=codec,
|
197
|
+
extra=extra,
|
198
|
+
split=split,
|
199
|
+
part=part
|
200
|
+
)
|
201
|
+
else:
|
202
|
+
return TV(
|
203
|
+
title=self._fix_roman_numerals(title.title()),
|
204
|
+
normalized_title=re.sub(r'[^a-z0-9&\+]+', ' ', title.lower()).strip(),
|
205
|
+
season=self.data.get('season'),
|
206
|
+
episode=self.data.get('episode'),
|
207
|
+
resolution=resolution,
|
208
|
+
quality=quality,
|
209
|
+
codec=codec,
|
210
|
+
extra=extra,
|
211
|
+
split=split,
|
212
|
+
part=part
|
213
|
+
)
|
214
|
+
|
215
|
+
parser = MovieParser()
|
@@ -9,15 +9,15 @@ d4rk/Logs/__init__.py,sha256=mXWD5jXnyH3_AvS7K_ki3iw5BpoEAvrDFbmr-iEFNnY,22
|
|
9
9
|
d4rk/Logs/_logger.py,sha256=lqfVvCO0vZ_IaGOdIE4HA2KAUQZh7yW2iAHZcBz7F4o,4120
|
10
10
|
d4rk/Utils/__init__.py,sha256=TAXye6RfUj5I0lwpKvR00-O9gn0opkPOTXAM2RqV4Zo,405
|
11
11
|
d4rk/Utils/_buttons.py,sha256=gehLWh0NOQSkSNAIuUBEJ8jN2uzNDail2tJboV4656w,3311
|
12
|
-
d4rk/Utils/_decorators.py,sha256=
|
12
|
+
d4rk/Utils/_decorators.py,sha256=8XC-oJN0flsLakNMUjRDTeUNBg3Kvan0GpCgyCre_NI,4617
|
13
13
|
d4rk/Utils/_filters.py,sha256=r_Dait6tcAg4drqDgBsIYKg7BA4Pd8S1yEbdGHj3A0g,2781
|
14
14
|
d4rk/Utils/_fonts.py,sha256=4zpjAmhAhRGzkSaD1b80p_bpwF72mOe7ykcpJFc688w,3690
|
15
15
|
d4rk/Utils/_ip.py,sha256=KJJW2QSngshIVWCO5YPXF1wj4IPQzVN5oFofpfzlU5w,559
|
16
|
-
d4rk/Utils/_movie_parser.py,sha256=
|
16
|
+
d4rk/Utils/_movie_parser.py,sha256=c9nJpG7tLQShyzn4C9QJ15jIlWZfxhpqNPwrE8LOW7I,7250
|
17
17
|
d4rk/Utils/_ractions.py,sha256=wOVPyoFnbDuMgoP6NF_gLO1DYcfhERC0trdAK1jWSE8,2170
|
18
18
|
d4rk/Utils/_terminal.py,sha256=Anu4OcffY3v6LMOrCskP1cHrJIliomo1Hjownbhh2sQ,125
|
19
19
|
d4rk/Utils/_utils.py,sha256=z1fhMFMDKEBRYr6l6TbdqK3pEuPEuQ-CtKUiO7R-R_A,332
|
20
|
-
d4rktg-1.1.
|
21
|
-
d4rktg-1.1.
|
22
|
-
d4rktg-1.1.
|
23
|
-
d4rktg-1.1.
|
20
|
+
d4rktg-1.1.9.dist-info/METADATA,sha256=ekneY-Qe_ckezAIR4gFFAPg6tOJIfsXi-QAwFFqMGbo,652
|
21
|
+
d4rktg-1.1.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
22
|
+
d4rktg-1.1.9.dist-info/top_level.txt,sha256=qs1qTnKWImmGi7E0FoJS0OAEOHoVZA9vHRS3Pm6ncAo,5
|
23
|
+
d4rktg-1.1.9.dist-info/RECORD,,
|
File without changes
|
File without changes
|