DDownloader 0.3.7__py3-none-any.whl → 0.3.8__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.
@@ -1 +1 @@
1
- __version__ = "0.3.7"
1
+ __version__ = "0.3.8"
@@ -23,7 +23,7 @@ def banners():
23
23
  stdout.write(""+Fore.YELLOW +"╔════════════════════════════════════════════════════════════════════════════╝\n")
24
24
  stdout.write(""+Fore.YELLOW +"║ \x1b[38;2;255;20;147m• "+Fore.GREEN+"GITHUB "+Fore.RED+" |"+Fore.LIGHTWHITE_EX+" GITHUB.COM/THATNOTEASY "+Fore.YELLOW+"║\n")
25
25
  stdout.write(""+Fore.YELLOW +"╚════════════════════════════════════════════════════════════════════════════╝\n")
26
- print(f"{Fore.YELLOW}[DDownloader] - {Fore.GREEN}A DRM-Protected & Non-Protected Content Downloader - {Fore.RED}[V0.3.7] \n{Fore.RESET}")
26
+ print(f"{Fore.YELLOW}[DDownloader] - {Fore.GREEN}A DRM-Protected & Non-Protected Content Downloader - {Fore.RED}[V0.3.8] \n{Fore.RESET}")
27
27
 
28
28
  # =========================================================================================================== #
29
29
 
@@ -61,15 +61,16 @@ class DOWNLOADER:
61
61
  # =========================================================================================================== #
62
62
 
63
63
  def _build_command(self):
64
- self.binary_path = self._get_binary_path("N_m3u8DL-RE")
65
64
  command = [
66
- self.binary_path,
65
+ self._get_binary_path("N_m3u8DL-RE"),
67
66
  f'"{self.manifest_url}"',
68
67
  '-mt',
69
68
  '-M', 'format=mp4',
70
69
  '--save-dir', '"downloads"',
71
70
  '--tmp-dir', '"downloads"',
72
71
  '--del-after-done',
72
+ '--decryption-engine', '"FFMPEG"',
73
+ '--decryption-binary-path', f'"{self._get_binary_path("ffmpeg")}"',
73
74
  '--save-name', f'"{self.output_name}"'
74
75
  ]
75
76
 
@@ -92,52 +92,89 @@ def detect_platform():
92
92
 
93
93
  def get_media_info(file_path):
94
94
  try:
95
- logger.info(f"Parsing media file: {file_path}")
95
+ logger.info(f"📂 Parsing media file: {file_path}")
96
96
  media_info = MediaInfo.parse(file_path)
97
- result = {"file_path": file_path, "tracks": []}
97
+
98
+ result = {
99
+ "file_path": file_path,
100
+ "tracks": [],
101
+ "container": None,
102
+ "file_size": None,
103
+ "duration": None,
104
+ "bit_rate": None,
105
+ }
98
106
 
99
107
  for track in media_info.tracks:
100
108
  track_info = {"track_type": track.track_type}
101
109
 
102
- if track.track_type == "Video":
110
+ if track.track_type == "General":
111
+ result.update({
112
+ "container": getattr(track, "format", None),
113
+ "file_size": getattr(track, "file_size", None),
114
+ "duration": getattr(track, "duration", None),
115
+ "bit_rate": getattr(track, "overall_bit_rate", None),
116
+ "title": getattr(track, "title", None),
117
+ "encoded_application": getattr(track, "encoded_application", None),
118
+ "encoded_library": getattr(track, "encoded_library", None),
119
+ "writing_library": getattr(track, "writing_library", None),
120
+ "file_creation_date": getattr(track, "file_created_date", None),
121
+ })
122
+
123
+ elif track.track_type == "Video":
103
124
  track_info.update({
104
- "codec": track.codec,
105
- "width": track.width,
106
- "height": track.height,
107
- "frame_rate": track.frame_rate,
108
- "bit_rate": track.bit_rate,
109
- "duration": track.duration,
110
- "aspect_ratio": track.display_aspect_ratio,
125
+ "codec": getattr(track, "codec_id", getattr(track, "format", None)),
126
+ "codec_profile": getattr(track, "format_profile", None),
127
+ "width": getattr(track, "width", None),
128
+ "height": getattr(track, "height", None),
129
+ "frame_rate": getattr(track, "frame_rate", None),
130
+ "bit_rate": getattr(track, "bit_rate", None),
131
+ "duration": getattr(track, "duration", None),
132
+ "aspect_ratio": getattr(track, "display_aspect_ratio", None),
133
+ "hdr_format": getattr(track, "hdr_format", None),
134
+ "bit_depth": getattr(track, "bit_depth", None),
135
+ "color_space": getattr(track, "colour_primaries", None),
136
+ "color_range": getattr(track, "colour_range", None),
137
+ "color_transfer": getattr(track, "transfer_characteristics", None),
138
+ "chroma_subsampling": getattr(track, "chroma_subsampling", None),
111
139
  })
140
+
112
141
  elif track.track_type == "Audio":
113
142
  track_info.update({
114
- "codec": track.codec,
115
- "channels": track.channel_s,
116
- "sample_rate": track.sampling_rate,
117
- "bit_rate": track.bit_rate,
118
- "duration": track.duration,
119
- "language": track.language,
143
+ "codec": getattr(track, "codec_id", getattr(track, "format", None)),
144
+ "codec_profile": getattr(track, "format_profile", None),
145
+ "channels": getattr(track, "channel_s", None),
146
+ "sample_rate": getattr(track, "sampling_rate", None),
147
+ "bit_rate": getattr(track, "bit_rate", None),
148
+ "duration": getattr(track, "duration", None),
149
+ "language": getattr(track, "language", "Unknown"),
150
+ "compression_mode": getattr(track, "compression_mode", None),
151
+ "bit_depth": getattr(track, "bit_depth", None),
120
152
  })
153
+
121
154
  elif track.track_type == "Text":
122
155
  track_info.update({
123
- "language": track.language,
124
- "format": track.format,
156
+ "format": getattr(track, "format", None),
157
+ "language": getattr(track, "language", "Unknown"),
158
+ "default": getattr(track, "default", None),
159
+ "forced": getattr(track, "forced", None),
160
+ "format_profile": getattr(track, "format_profile", None),
125
161
  })
126
- elif track.track_type == "General":
162
+
163
+ elif track.track_type == "Chapters":
127
164
  track_info.update({
128
- "file_size": track.file_size,
129
- "format": track.format,
130
- "duration": track.duration,
131
- "overall_bit_rate": track.overall_bit_rate,
165
+ "title": getattr(track, "title", None),
166
+ "chapter_count": getattr(track, "part_count", None),
132
167
  })
133
168
 
134
- result["tracks"].append(track_info)
169
+ if any(value is not None for value in track_info.values()): # Avoid empty entries
170
+ result["tracks"].append(track_info)
135
171
 
136
- logger.info(f"Successfully extracted media information for: {file_path}")
172
+ logger.info(f"Successfully extracted media info for: {file_path}")
137
173
  return result
138
174
 
139
175
  except Exception as e:
140
- logger.error(f"Error occurred while parsing media file '{file_path}': {e}")
176
+ logger.error(f"Error parsing media file '{file_path}': {e}")
141
177
  return None
178
+
142
179
 
143
180
  # =========================================================================================================== #
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: DDownloader
3
- Version: 0.3.7
3
+ Version: 0.3.8
4
4
  Summary: A downloader for DRM-protected & Non DRM-protected content.
5
5
  License: MIT License
6
6
 
@@ -0,0 +1,20 @@
1
+ DDownloader/__init__.py,sha256=lVZwmZNId0Dai7XBQpxglmJtIxAtZplRHDsvobL2UNo,33
2
+ DDownloader/bin/aria2c.exe,sha256=7NovO7hmaCdsPJK3Hue8N5mefFlAcJMjU_LnUnE9f6g,4840960
3
+ DDownloader/bin/ffmpeg.exe,sha256=NqWbY4tJ-ObGIvTefEyKr4RC8wE4pYiC7irz9BDl_Vw,148103168
4
+ DDownloader/bin/mkvmerge.exe,sha256=s2WkBPBuhpWPNHKXwDBfQ4vOMXLYTfxu62PbnRqK55A,19144712
5
+ DDownloader/bin/mp4decrypt.exe,sha256=JnI7mk4UduPVnUDg1aZBr4y_SWRFy8s-u_H6gG5xeOg,452096
6
+ DDownloader/bin/N_m3u8DL-RE.exe,sha256=5ck6jeDFjFCSLBeoo7q9fSGT-0Oxp_rNCxjeknTvgGE,17197568
7
+ DDownloader/bin/shaka-packager.exe,sha256=oQmfiToKeryylxsR9BiKuhXR_fS-PqPEu9W9rEsbrt8,5369344
8
+ DDownloader/bin/yt-dlp.exe,sha256=TYiozhv_gpxxZ90h6LSo7rDbFEG8JzQPCJa754HJw8A,19557107
9
+ DDownloader/main.py,sha256=7XJrLtMaw_5taymEoPfDgfQCw9K3JJmW8gScR6gVOPw,5792
10
+ DDownloader/modules/__init__.py,sha256=kd0YV9qLZ1Lpx7vbSzAMrAwjgdZJD_tInTnDqY6-nTY,21
11
+ DDownloader/modules/args_parser.py,sha256=Xc9ZzBu-QPFrBURIcq7rl8IJbrdPMy7EMWc-odVM2QU,1105
12
+ DDownloader/modules/banners.py,sha256=yiMLSbH92XXf_92g4No5i7wLF50bPyp2wuBh4rfV5Yk,5656
13
+ DDownloader/modules/downloader.py,sha256=Ul0zCB5t9DR8sx1YisP_RFzCWVWm7J8mor4rhOKudNA,7867
14
+ DDownloader/modules/helper.py,sha256=-PMfT0pd3AsXY1K_WP1mER3dpw9gJ99Y-Erque_62nQ,8242
15
+ DDownloader/modules/streamlink.py,sha256=t7aaHCnINzSFybTmAd-dvfGFQkepFHJwrOBcNxyJviY,504
16
+ ddownloader-0.3.8.dist-info/entry_points.txt,sha256=36xFMHKWyVvFKBCCMd3ctyd6tyujf685-qilrMpsA1E,53
17
+ ddownloader-0.3.8.dist-info/LICENSE,sha256=cnjTim3BMjb9cVC_b3oS41FESKLuvuDsufVHa_ymZRw,1090
18
+ ddownloader-0.3.8.dist-info/METADATA,sha256=hM7TxtkmJc31-ftcjhhTcmNhyjm7Xz-a7ILCZq9fGUI,4906
19
+ ddownloader-0.3.8.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
20
+ ddownloader-0.3.8.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.0.1
2
+ Generator: poetry-core 2.1.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,26 +0,0 @@
1
- DDownloader/__init__.py,sha256=lVZwmZNId0Dai7XBQpxglmJtIxAtZplRHDsvobL2UNo,33
2
- DDownloader/bin/aria2c.exe,sha256=7NovO7hmaCdsPJK3Hue8N5mefFlAcJMjU_LnUnE9f6g,4840960
3
- DDownloader/bin/ffmpeg.exe,sha256=NqWbY4tJ-ObGIvTefEyKr4RC8wE4pYiC7irz9BDl_Vw,148103168
4
- DDownloader/bin/mkvmerge.exe,sha256=s2WkBPBuhpWPNHKXwDBfQ4vOMXLYTfxu62PbnRqK55A,19144712
5
- DDownloader/bin/mp4decrypt.exe,sha256=JnI7mk4UduPVnUDg1aZBr4y_SWRFy8s-u_H6gG5xeOg,452096
6
- DDownloader/bin/N_m3u8DL-RE.exe,sha256=5ck6jeDFjFCSLBeoo7q9fSGT-0Oxp_rNCxjeknTvgGE,17197568
7
- DDownloader/bin/shaka-packager.exe,sha256=oQmfiToKeryylxsR9BiKuhXR_fS-PqPEu9W9rEsbrt8,5369344
8
- DDownloader/bin/yt-dlp.exe,sha256=TYiozhv_gpxxZ90h6LSo7rDbFEG8JzQPCJa754HJw8A,19557107
9
- DDownloader/main.py,sha256=7XJrLtMaw_5taymEoPfDgfQCw9K3JJmW8gScR6gVOPw,5792
10
- DDownloader/modules/__init__.py,sha256=Jl3PXrkK7-Eox4dKIMxhOA7uVtSB0CC7qOf4NAQqa_s,21
11
- DDownloader/modules/__pycache__/__init__.cpython-310.pyc,sha256=XTOXC62dWICZNMKQGsrzT2Q_plhIs0EDYWbbzPnP4cI,192
12
- DDownloader/modules/__pycache__/args_parser.cpython-310.pyc,sha256=wRZBVDvaj3u6kMxUgDeegIgCDbpI5Xc8-FcnePt8O-Y,845
13
- DDownloader/modules/__pycache__/banners.cpython-310.pyc,sha256=OPyrjSYpT2vf2uKiVJJ3QeMbiLUECT1fVo7B51Dc7LM,5618
14
- DDownloader/modules/__pycache__/dash_downloader.cpython-310.pyc,sha256=dGuwXBw_MuwE9i7sC_Ze_wK3iz_9KA85w-0aJjwJyDs,4644
15
- DDownloader/modules/__pycache__/helper.cpython-310.pyc,sha256=wOX6-I0QgXxXQXfzV7TUBahhb30Xid6MWx6rxZkIv0g,4200
16
- DDownloader/modules/__pycache__/hls_downloader.cpython-310.pyc,sha256=Hg5C_O0M4WtnP6fN9OTwRDr1s8F67feBVkQONLNIT-E,4633
17
- DDownloader/modules/args_parser.py,sha256=Xc9ZzBu-QPFrBURIcq7rl8IJbrdPMy7EMWc-odVM2QU,1105
18
- DDownloader/modules/banners.py,sha256=s63Rd9cwGLvDbNUvCpWMK0I2rIBAYGl5dmQO9eP9Wvs,5656
19
- DDownloader/modules/downloader.py,sha256=xzuWBzXSoz0yU-BtkAPuqRNaPsxgcnTYvunWOtroQKU,7783
20
- DDownloader/modules/helper.py,sha256=b8h-h4_JqE02D26qBzSRW11LWhYUTnBkNIeYlWRO-ZY,5951
21
- DDownloader/modules/streamlink.py,sha256=t7aaHCnINzSFybTmAd-dvfGFQkepFHJwrOBcNxyJviY,504
22
- ddownloader-0.3.7.dist-info/entry_points.txt,sha256=36xFMHKWyVvFKBCCMd3ctyd6tyujf685-qilrMpsA1E,53
23
- ddownloader-0.3.7.dist-info/LICENSE,sha256=cnjTim3BMjb9cVC_b3oS41FESKLuvuDsufVHa_ymZRw,1090
24
- ddownloader-0.3.7.dist-info/METADATA,sha256=8Utz-Ii1130UMi1wnkM0qQu6sgD6eDUSFlG_ge4KrMA,4906
25
- ddownloader-0.3.7.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
26
- ddownloader-0.3.7.dist-info/RECORD,,