diff --git a/tubesync/sync/youtube.py b/tubesync/sync/youtube.py index 78b130c5..d51c7b45 100644 --- a/tubesync/sync/youtube.py +++ b/tubesync/sync/youtube.py @@ -5,17 +5,27 @@ import os +from pathlib import Path from django.conf import settings from copy import copy from common.logger import log import yt_dlp -_youtubedl_cachedir = getattr(settings, 'YOUTUBE_DL_CACHEDIR', None) _defaults = getattr(settings, 'YOUTUBE_DEFAULTS', {}) +_youtubedl_cachedir = getattr(settings, 'YOUTUBE_DL_CACHEDIR', None) if _youtubedl_cachedir: _youtubedl_cachedir = str(_youtubedl_cachedir) _defaults['cachedir'] = _youtubedl_cachedir +_youtubedl_tempdir = getattr(settings, 'YOUTUBE_DL_TEMPDIR', None) +if _youtubedl_tempdir: + _youtubedl_tempdir = str(_youtubedl_tempdir) + _youtubedl_tempdir_path = Path(_youtubedl_tempdir) + _youtubedl_tempdir_path.mkdir(parents=True, exist_ok=True) + (_youtubedl_tempdir_path / '.ignore').touch(exist_ok=True) + _paths = _defaults.get('paths', {}) + _paths.update({ 'temp': _youtubedl_tempdir, }) + _defaults['paths'] = _paths @@ -140,8 +150,9 @@ def download_media(url, media_format, extension, output_file, info_json, ytopts = { 'format': media_format, 'merge_output_format': extension, - 'outtmpl': output_file, - 'quiet': True, + 'outtmpl': os.path.basename(output_file), + 'quiet': False if settings.DEBUG else True, + 'verbose': True if settings.DEBUG else False, 'progress_hooks': [hook], 'writeinfojson': info_json, 'postprocessors': [], @@ -161,6 +172,10 @@ def download_media(url, media_format, extension, output_file, info_json, 'add_metadata': embed_metadata } opts = get_yt_opts() + ytopts['paths'] = opts.get('paths', {}) + ytopts['paths'].update({ + 'home': os.path.dirname(output_file), + }) if embed_thumbnail: ytopts['postprocessors'].append({'key': 'EmbedThumbnail'}) if skip_sponsors: diff --git a/tubesync/tubesync/local_settings.py.container b/tubesync/tubesync/local_settings.py.container index a149ca71..876d57bc 100644 --- a/tubesync/tubesync/local_settings.py.container +++ b/tubesync/tubesync/local_settings.py.container @@ -61,6 +61,7 @@ if BACKGROUND_TASK_ASYNC_THREADS > MAX_BACKGROUND_TASK_ASYNC_THREADS: MEDIA_ROOT = CONFIG_BASE_DIR / 'media' DOWNLOAD_ROOT = DOWNLOADS_BASE_DIR YOUTUBE_DL_CACHEDIR = CONFIG_BASE_DIR / 'cache' +YOUTUBE_DL_TEMPDIR = DOWNLOAD_ROOT / 'cache' COOKIES_FILE = CONFIG_BASE_DIR / 'cookies.txt' diff --git a/tubesync/tubesync/settings.py b/tubesync/tubesync/settings.py index cce452d9..bbb93422 100644 --- a/tubesync/tubesync/settings.py +++ b/tubesync/tubesync/settings.py @@ -155,6 +155,7 @@ VIDEO_HEIGHT_IS_HD = 500 # Height in pixels to count as 'HD' YOUTUBE_DL_CACHEDIR = None +YOUTUBE_DL_TEMPDIR = None YOUTUBE_DEFAULTS = { 'no_color': True, # Do not use colours in output 'age_limit': 99, # 'Age in years' to spoof