From dabaae58e2f91b714ae94c5717b1d8d2592a78de Mon Sep 17 00:00:00 2001 From: Ömer Erdinç Yağmurlu Date: Sun, 25 Jul 2021 00:31:58 +0200 Subject: Add AUDIO_DOWNLOAD_DIR option --- Dockerfile | 3 ++- README.md | 1 + app/main.py | 1 + app/ytdl.py | 3 ++- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2405d1b..1f19971 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM node as builder WORKDIR /metube COPY ui ./ -RUN npm install && \ +RUN npm ci && \ node_modules/.bin/ng build --prod @@ -25,6 +25,7 @@ COPY app ./app COPY --from=builder /metube/dist/metube ./ui/dist/metube ENV DOWNLOAD_DIR /downloads +ENV AUDIO_DOWNLOAD_DIR /downloads VOLUME /downloads EXPOSE 8081 CMD ["python3", "app/main.py"] diff --git a/README.md b/README.md index 3997f46..4942bad 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ services: Certain values can be set via environment variables, using the `-e` parameter on the docker command line, or the `environment:` section in docker-compose. * __DOWNLOAD_DIR__: path to where the downloads will be saved. Defaults to `/downloads` in the docker image, and `.` otherwise. +* __AUDIO_DOWNLOAD_DIR__: path to where the audio downloads will be saved. Defaults to `/downloads` in the docker image, and `.` otherwise. * __URL_PREFIX__: base path for the web server (for use when hosting behind a reverse proxy). Defaults to `/`. * __OUTPUT_TEMPLATE__: the template for the filenames of the downloaded videos, formatted according to [this spec](https://github.com/ytdl-org/youtube-dl/blob/master/README.md#output-template). Defaults to `%(title)s.%(ext)s`. diff --git a/app/main.py b/app/main.py index b8b512d..194bba6 100644 --- a/app/main.py +++ b/app/main.py @@ -16,6 +16,7 @@ log = logging.getLogger('main') class Config: _DEFAULTS = { 'DOWNLOAD_DIR': '.', + 'AUDIO_DOWNLOAD_DIR': '.', 'URL_PREFIX': '', 'OUTPUT_TEMPLATE': '%(title)s.%(ext)s', } diff --git a/app/ytdl.py b/app/ytdl.py index c6b09ff..d29f108 100644 --- a/app/ytdl.py +++ b/app/ytdl.py @@ -148,7 +148,8 @@ class DownloadQueue: elif etype == 'video' or etype.startswith('url') and 'id' in entry: if entry['id'] not in self.queue: dl = DownloadInfo(entry['id'], entry['title'], entry.get('webpage_url') or entry['url']) - self.queue[entry['id']] = Download(self.config.DOWNLOAD_DIR, self.config.OUTPUT_TEMPLATE, quality, dl) + dldirectory = self.config.DOWNLOAD_DIR if quality != 'audio' else self.config.AUDIO_DOWNLOAD_DIR + self.queue[entry['id']] = Download(dldirectory, self.config.OUTPUT_TEMPLATE, quality, dl) self.event.set() await self.notifier.added(dl) return {'status': 'ok'} -- cgit From 3fe107b2991399a3ea0c446cf579e977b75817dd Mon Sep 17 00:00:00 2001 From: Alex Shnitman Date: Sun, 25 Jul 2021 20:56:56 +0300 Subject: set AUDIO_DOWNLOAD_DIR to the value if DOWNLOAD_DIR if it wasn't overriden in the environment --- Dockerfile | 1 - README.md | 2 +- app/main.py | 5 ++++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1f19971..7c8aa5e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,7 +25,6 @@ COPY app ./app COPY --from=builder /metube/dist/metube ./ui/dist/metube ENV DOWNLOAD_DIR /downloads -ENV AUDIO_DOWNLOAD_DIR /downloads VOLUME /downloads EXPOSE 8081 CMD ["python3", "app/main.py"] diff --git a/README.md b/README.md index 4942bad..57bbad6 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ services: Certain values can be set via environment variables, using the `-e` parameter on the docker command line, or the `environment:` section in docker-compose. * __DOWNLOAD_DIR__: path to where the downloads will be saved. Defaults to `/downloads` in the docker image, and `.` otherwise. -* __AUDIO_DOWNLOAD_DIR__: path to where the audio downloads will be saved. Defaults to `/downloads` in the docker image, and `.` otherwise. +* __AUDIO_DOWNLOAD_DIR__: path to where audio-only downloads will be saved, if you wish to separate them from the video downloads. Defaults to the value of `DOWNLOAD_DIR`. * __URL_PREFIX__: base path for the web server (for use when hosting behind a reverse proxy). Defaults to `/`. * __OUTPUT_TEMPLATE__: the template for the filenames of the downloaded videos, formatted according to [this spec](https://github.com/ytdl-org/youtube-dl/blob/master/README.md#output-template). Defaults to `%(title)s.%(ext)s`. diff --git a/app/main.py b/app/main.py index 194bba6..dad19e3 100644 --- a/app/main.py +++ b/app/main.py @@ -16,7 +16,7 @@ log = logging.getLogger('main') class Config: _DEFAULTS = { 'DOWNLOAD_DIR': '.', - 'AUDIO_DOWNLOAD_DIR': '.', + 'AUDIO_DOWNLOAD_DIR': '%%DOWNLOAD_DIR', 'URL_PREFIX': '', 'OUTPUT_TEMPLATE': '%(title)s.%(ext)s', } @@ -24,6 +24,9 @@ class Config: def __init__(self): for k, v in self._DEFAULTS.items(): setattr(self, k, os.environ[k] if k in os.environ else v) + for k, v in self.__dict__.items(): + if v.startswith('%%'): + setattr(self, k, getattr(self, v[2:])) if not self.URL_PREFIX.endswith('/'): self.URL_PREFIX += '/' -- cgit