1
0
mirror of https://github.com/darkzoul5/YoutubePlaylistSync.git synced 2026-07-03 12:34:00 +03:00

Refactor output path handling in PlaylistDownloader to create separate folders for audio and video downloads

This commit is contained in:
2025-10-14 11:26:57 +03:00
parent d35cfbb156
commit badb1482d2
+14 -8
View File
@@ -201,7 +201,6 @@ class PlaylistDownloader:
safe_title = self.sanitize_title(title, video["id"]) safe_title = self.sanitize_title(title, video["id"])
video_url = f"https://www.youtube.com/watch?v={video['id']}" video_url = f"https://www.youtube.com/watch?v={video['id']}"
# --- video quality mapping helper ---
def build_video_format(max_quality): def build_video_format(max_quality):
mapping = { mapping = {
"720p": "bestvideo[height<=720]+bestaudio/best[height<=720]", "720p": "bestvideo[height<=720]+bestaudio/best[height<=720]",
@@ -212,10 +211,11 @@ class PlaylistDownloader:
} }
return mapping.get(max_quality.lower(), mapping["1080p"]) return mapping.get(max_quality.lower(), mapping["1080p"])
# --- decide command based on download mode ---
cmds = [] cmds = []
if self.download_mode == "audio": if self.download_mode == "audio":
output_path = self.get_file_path(track_index, safe_title) output_path = self.save_path / "audio" / f"{track_index:03d} - {safe_title}.mp3"
output_path.parent.mkdir(parents=True, exist_ok=True)
args = [ args = [
str(self.yt_dlp), str(self.yt_dlp),
"-f", "bestaudio", "-f", "bestaudio",
@@ -233,8 +233,9 @@ class PlaylistDownloader:
cmds.append((args, f"{track_index:03d} - {title} (audio)")) cmds.append((args, f"{track_index:03d} - {title} (audio)"))
elif self.download_mode == "video": elif self.download_mode == "video":
output_path = self.save_path / "video" / f"{track_index:03d} - {safe_title}.mp4"
output_path.parent.mkdir(parents=True, exist_ok=True)
fmt = build_video_format(self.max_video_quality) fmt = build_video_format(self.max_video_quality)
output_path = self.save_path / f"{track_index:03d} - {safe_title}.mp4"
args = [ args = [
str(self.yt_dlp), str(self.yt_dlp),
"-f", fmt, "-f", fmt,
@@ -250,8 +251,10 @@ class PlaylistDownloader:
cmds.append((args, f"{track_index:03d} - {title} (video)")) cmds.append((args, f"{track_index:03d} - {title} (video)"))
elif self.download_mode == "both": elif self.download_mode == "both":
# audio # audio folder
audio_output = self.get_file_path(track_index, safe_title) audio_folder = self.save_path / "audio"
audio_folder.mkdir(parents=True, exist_ok=True)
audio_output = audio_folder / f"{track_index:03d} - {safe_title}.mp3"
audio_args = [ audio_args = [
str(self.yt_dlp), str(self.yt_dlp),
"-f", "bestaudio", "-f", "bestaudio",
@@ -268,9 +271,11 @@ class PlaylistDownloader:
] ]
cmds.append((audio_args, f"{track_index:03d} - {title} (audio)")) cmds.append((audio_args, f"{track_index:03d} - {title} (audio)"))
# video # video folder
video_folder = self.save_path / "video"
video_folder.mkdir(parents=True, exist_ok=True)
video_output = video_folder / f"{track_index:03d} - {safe_title}.mp4"
fmt = build_video_format(self.max_video_quality) fmt = build_video_format(self.max_video_quality)
video_output = self.save_path / f"{track_index:03d} - {safe_title}.mp4"
video_args = [ video_args = [
str(self.yt_dlp), str(self.yt_dlp),
"-f", fmt, "-f", fmt,
@@ -302,6 +307,7 @@ class PlaylistDownloader:
return success return success
def renumber_all_tracks(self, playlist_entries): def renumber_all_tracks(self, playlist_entries):
print(f"\n{STEP} Renumbering files according to playlist order") print(f"\n{STEP} Renumbering files according to playlist order")
temp_suffix = ".renametemp" temp_suffix = ".renametemp"