mirror of
https://github.com/glomatico/gamdl.git
synced 2026-06-13 12:15:18 +03:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9d67e8f0f0 | |||
| fcbe596a80 | |||
| acd5fefb76 | |||
| ed584cc9b9 | |||
| bac8eb9254 | |||
| 71ac17cce2 | |||
| a35a3835aa | |||
| 091ca3bf53 | |||
| e4498e11c0 | |||
| 5a8c5d2c25 |
+1
-1
@@ -1 +1 @@
|
||||
__version__ = "2.3"
|
||||
__version__ = "2.3.3"
|
||||
|
||||
+7
-15
@@ -503,6 +503,7 @@ def main(
|
||||
logger.warning(
|
||||
f"({queue_progress}) Track is not downloadable with current configuration, skipping"
|
||||
)
|
||||
continue
|
||||
elif track_metadata["type"] == "songs":
|
||||
logger.debug("Getting lyrics")
|
||||
lyrics = downloader_song.get_lyrics(track_metadata)
|
||||
@@ -608,9 +609,9 @@ def main(
|
||||
itunes_page = itunes_api.get_itunes_page(
|
||||
"music-video", music_video_id_alt
|
||||
)
|
||||
stream_url_master = downloader_music_video.get_stream_url_master(
|
||||
itunes_page
|
||||
)
|
||||
logger.debug("Getting webplayback")
|
||||
webplayback = apple_music_api.get_webplayback(track_metadata["id"])
|
||||
stream_url_master = webplayback["hls-playlist-url"]
|
||||
logger.debug("Getting M3U8 data")
|
||||
m3u8_master_data = downloader_music_video.get_m3u8_master_data(
|
||||
stream_url_master
|
||||
@@ -706,21 +707,9 @@ def main(
|
||||
stream_info_video.codec,
|
||||
stream_info_audio.codec,
|
||||
)
|
||||
if not save_cover:
|
||||
pass
|
||||
elif cover_path.exists() and not overwrite:
|
||||
logger.debug(
|
||||
f'Cover already exists at "{cover_path}", skipping'
|
||||
)
|
||||
else:
|
||||
logger.debug(f'Saving cover to "{cover_path}"')
|
||||
downloader.save_cover(cover_path, cover_url)
|
||||
elif track_metadata["type"] == "uploaded-videos":
|
||||
stream_url = downloader_post.get_stream_url(track_metadata)
|
||||
tags = downloader_post.get_tags(track_metadata)
|
||||
remuxed_path = downloader_post.get_post_temp_path(
|
||||
track_metadata["id"]
|
||||
)
|
||||
final_path = downloader.get_final_path(tags, ".m4v")
|
||||
cover_url = downloader.get_cover_url(track_metadata)
|
||||
cover_file_extesion = downloader.get_cover_file_extension(cover_url)
|
||||
@@ -733,6 +722,9 @@ def main(
|
||||
f'({queue_progress}) Post video already exists at "{final_path}", skipping'
|
||||
)
|
||||
else:
|
||||
remuxed_path = downloader_post.get_post_temp_path(
|
||||
track_metadata["id"]
|
||||
)
|
||||
logger.debug(f'Downloading to "{remuxed_path}"')
|
||||
downloader.download_ytdlp(remuxed_path, stream_url)
|
||||
if not save_cover:
|
||||
|
||||
+16
-10
@@ -266,15 +266,19 @@ class Downloader:
|
||||
self,
|
||||
tags: dict,
|
||||
):
|
||||
template_folder = self.template_file_playlist.split("/")[0:-1]
|
||||
template_file = self.template_file_playlist.split("/")[-1]
|
||||
template_folder = self.template_file_playlist.split("/")
|
||||
template_file = self.template_file_playlist.split("/")
|
||||
template_final = template_folder + template_file
|
||||
return self.output_path.joinpath(
|
||||
*[
|
||||
self.get_sanitized_string(i.format(**tags), True)
|
||||
for i in template_folder
|
||||
for i in template_final[0:-1]
|
||||
]
|
||||
).joinpath(
|
||||
*[self.get_sanitized_string(template_file.format(**tags), False) + ".m3u8"]
|
||||
*[
|
||||
self.get_sanitized_string(template_final[-1].format(**tags), False)
|
||||
+ ".m3u8"
|
||||
]
|
||||
)
|
||||
|
||||
def update_playlist_file(
|
||||
@@ -384,22 +388,23 @@ class Downloader:
|
||||
self.template_folder_compilation.split("/")
|
||||
if tags.get("compilation")
|
||||
else self.template_folder_album.split("/")
|
||||
)[0:-1]
|
||||
)
|
||||
template_file = (
|
||||
self.template_file_multi_disc.split("/")
|
||||
if tags["disc_total"] > 1
|
||||
else self.template_file_single_disc.split("/")
|
||||
)[-1]
|
||||
)
|
||||
else:
|
||||
template_folder = self.template_folder_no_album.split("/")[0:-1]
|
||||
template_file = self.template_file_no_album.split("/")[-1]
|
||||
template_folder = self.template_folder_no_album.split("/")
|
||||
template_file = self.template_file_no_album.split("/")
|
||||
template_final = template_folder + template_file
|
||||
return self.output_path.joinpath(
|
||||
*[
|
||||
self.get_sanitized_string(i.format(**tags), True)
|
||||
for i in template_folder
|
||||
for i in template_final[0:-1]
|
||||
]
|
||||
).joinpath(
|
||||
self.get_sanitized_string(template_file.format(**tags), False)
|
||||
self.get_sanitized_string(template_final[-1].format(**tags), False)
|
||||
+ file_extension
|
||||
)
|
||||
|
||||
@@ -507,6 +512,7 @@ class Downloader:
|
||||
|
||||
@functools.lru_cache()
|
||||
def save_cover(self, cover_path: Path, cover_url: str):
|
||||
cover_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
cover_path.write_bytes(self.get_url_response_bytes(cover_url))
|
||||
|
||||
def cleanup_temp_path(self):
|
||||
|
||||
@@ -25,17 +25,11 @@ class DownloaderMusicVideo:
|
||||
self.downloader = downloader
|
||||
self.codec = codec
|
||||
|
||||
def get_stream_url_master(self, itunes_page: dict) -> str:
|
||||
return itunes_page["offers"][0]["assets"][0]["hlsUrl"]
|
||||
def get_stream_url_master(self, webplayback: dict) -> str:
|
||||
return webplayback["hls-playlist-url"]
|
||||
|
||||
def get_m3u8_master_data(self, stream_url_master: str) -> dict:
|
||||
url_parts = urllib.parse.urlparse(stream_url_master)
|
||||
query = urllib.parse.parse_qs(url_parts.query, keep_blank_values=True)
|
||||
query.update({"aec": "HD", "dsid": "1"})
|
||||
stream_url_master_new = url_parts._replace(
|
||||
query=urllib.parse.urlencode(query, doseq=True)
|
||||
).geturl()
|
||||
return m3u8.load(stream_url_master_new).data
|
||||
return m3u8.load(stream_url_master).data
|
||||
|
||||
def get_playlist_video(
|
||||
self,
|
||||
|
||||
Reference in New Issue
Block a user