mirror of
https://github.com/darkzoul5/YoutubePlaylistSync.git
synced 2026-07-03 12:34:00 +03:00
Refactor Dockerfile to install dependencies with no-install-recommends and update ffmpeg checks in ConfigLoader for improved audio mode handling
This commit is contained in:
+13
-1
@@ -1,5 +1,17 @@
|
|||||||
FROM python:3.12-slim
|
FROM python:3.12-slim
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
RUN apt-get update && apt-get install -y aria2 ffmpeg yt-dlp
|
|
||||||
|
# Install runtime dependencies: aria2, ffmpeg, yt-dlp
|
||||||
|
# Use --no-install-recommends to keep image small and clean up apt lists
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends \
|
||||||
|
ca-certificates \
|
||||||
|
aria2 \
|
||||||
|
ffmpeg \
|
||||||
|
yt-dlp \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
COPY yt-playlist-main.py /app/
|
COPY yt-playlist-main.py /app/
|
||||||
|
|
||||||
CMD ["python", "yt-playlist-main.py"]
|
CMD ["python", "yt-playlist-main.py"]
|
||||||
|
|||||||
+17
-7
@@ -78,9 +78,6 @@ class ConfigLoader:
|
|||||||
# Only require ffmpeg if download_mode is audio
|
# Only require ffmpeg if download_mode is audio
|
||||||
if self.download_mode == "audio":
|
if self.download_mode == "audio":
|
||||||
self._check_binary(self.ffmpeg_path, "ffmpeg")
|
self._check_binary(self.ffmpeg_path, "ffmpeg")
|
||||||
if not shutil.which(self.ffmpeg_path) and not Path(self.ffmpeg_path).is_file():
|
|
||||||
print(f"{FAIL} ffmpeg is required for audio mode but was not found.\nPlease install ffmpeg or set the correct path in yt-playlist-config.json.")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
def _create_default_config(self):
|
def _create_default_config(self):
|
||||||
with self.config_path.open("w", encoding="utf-8") as f:
|
with self.config_path.open("w", encoding="utf-8") as f:
|
||||||
@@ -244,7 +241,11 @@ class PlaylistDownloader:
|
|||||||
"--extract-audio",
|
"--extract-audio",
|
||||||
"--audio-format", "mp3",
|
"--audio-format", "mp3",
|
||||||
"--audio-quality", "0",
|
"--audio-quality", "0",
|
||||||
"--ffmpeg-location", str(self.ffmpeg),
|
]
|
||||||
|
# Only pass --ffmpeg-location if ffmpeg is NOT available on PATH
|
||||||
|
if not shutil.which(str(self.ffmpeg)):
|
||||||
|
args += ["--ffmpeg-location", str(self.ffmpeg)]
|
||||||
|
args += [
|
||||||
"--download-archive", str(self.archive),
|
"--download-archive", str(self.archive),
|
||||||
"-o", str(output_path),
|
"-o", str(output_path),
|
||||||
"--external-downloader", str(self.aria2c),
|
"--external-downloader", str(self.aria2c),
|
||||||
@@ -262,7 +263,10 @@ class PlaylistDownloader:
|
|||||||
str(self.yt_dlp),
|
str(self.yt_dlp),
|
||||||
"-f", fmt,
|
"-f", fmt,
|
||||||
"--merge-output-format", "mp4",
|
"--merge-output-format", "mp4",
|
||||||
"--ffmpeg-location", str(self.ffmpeg),
|
]
|
||||||
|
if not shutil.which(str(self.ffmpeg)):
|
||||||
|
args += ["--ffmpeg-location", str(self.ffmpeg)]
|
||||||
|
args += [
|
||||||
"--download-archive", str(self.archive),
|
"--download-archive", str(self.archive),
|
||||||
"-o", str(output_path),
|
"-o", str(output_path),
|
||||||
"--external-downloader", str(self.aria2c),
|
"--external-downloader", str(self.aria2c),
|
||||||
@@ -283,7 +287,10 @@ class PlaylistDownloader:
|
|||||||
"--extract-audio",
|
"--extract-audio",
|
||||||
"--audio-format", "mp3",
|
"--audio-format", "mp3",
|
||||||
"--audio-quality", "0",
|
"--audio-quality", "0",
|
||||||
"--ffmpeg-location", str(self.ffmpeg),
|
]
|
||||||
|
if not shutil.which(str(self.ffmpeg)):
|
||||||
|
audio_args += ["--ffmpeg-location", str(self.ffmpeg)]
|
||||||
|
audio_args += [
|
||||||
"--download-archive", str(self.archive),
|
"--download-archive", str(self.archive),
|
||||||
"-o", str(audio_output),
|
"-o", str(audio_output),
|
||||||
"--external-downloader", str(self.aria2c),
|
"--external-downloader", str(self.aria2c),
|
||||||
@@ -302,7 +309,10 @@ class PlaylistDownloader:
|
|||||||
str(self.yt_dlp),
|
str(self.yt_dlp),
|
||||||
"-f", fmt,
|
"-f", fmt,
|
||||||
"--merge-output-format", "mp4",
|
"--merge-output-format", "mp4",
|
||||||
"--ffmpeg-location", str(self.ffmpeg),
|
]
|
||||||
|
if not shutil.which(str(self.ffmpeg)):
|
||||||
|
video_args += ["--ffmpeg-location", str(self.ffmpeg)]
|
||||||
|
video_args += [
|
||||||
"--download-archive", str(self.archive),
|
"--download-archive", str(self.archive),
|
||||||
"-o", str(video_output),
|
"-o", str(video_output),
|
||||||
"--external-downloader", str(self.aria2c),
|
"--external-downloader", str(self.aria2c),
|
||||||
|
|||||||
Reference in New Issue
Block a user