d4rktg 1.1.8__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.
@@ -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.movie = PTN.parse(self.file_name)
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
- def extract(self, file_name: str) -> Movie:
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
- title = self.movie.get('title', '').replace('.', ' ').strip()
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.movie.get('year') or self.fallback_year(self.file_name)
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.movie.get('resolution')
58
- quality = self.movie.get('quality')
59
- codec = self.movie.get('codec')
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
- return Movie(
172
- title=self._fix_roman_numerals(title.title()),
173
- normalized_title=re.sub(r'[^a-z0-9&\+]+', ' ', title.lower()).strip(),
174
- year=year,
175
- resolution=resolution,
176
- quality=quality,
177
- codec=codec,
178
- extra=extra,
179
- split=split,
180
- part=part
181
- )
182
-
183
- parser = MovieParser()
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()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: d4rktg
3
- Version: 1.1.8
3
+ Version: 1.1.9
4
4
  Summary: A module for create with easy and fast
5
5
  Author: D4rkShell
6
6
  Author-email: premiumqtrst@gmail.com
@@ -13,11 +13,11 @@ d4rk/Utils/_decorators.py,sha256=8XC-oJN0flsLakNMUjRDTeUNBg3Kvan0GpCgyCre_NI,461
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=Pyd_eSyzp0bBMfil0YY0zypsDWBk7LoDQBfMOQJh16Y,6204
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.8.dist-info/METADATA,sha256=8bvJPi_DpuXDoClBsAWeJ3V0OhH9jDkvGXvFt7Hot-U,652
21
- d4rktg-1.1.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
22
- d4rktg-1.1.8.dist-info/top_level.txt,sha256=qs1qTnKWImmGi7E0FoJS0OAEOHoVZA9vHRS3Pm6ncAo,5
23
- d4rktg-1.1.8.dist-info/RECORD,,
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