scripts: Fix vidl temporary directory
Lets vidl download to a temporary directory first (by default ~/downloads can be changed through "$TEMP_FOLDER") before moving downloaded files to target directory as last step. Massively increases download speed if final directory is on a slow HDD or a network drive (since otherwise ffmpeg is computing on these slow devices themselves).
This commit is contained in:
parent
3b7c24c676
commit
4c540496dd
1 changed files with 22 additions and 9 deletions
|
@ -92,24 +92,36 @@ _alreadyexists() { # 1=video_regex
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_should_archive() {
|
||||||
|
if [ -n "$ARCHIVE_FOLDER" ]; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
_download_cmd() {
|
_download_cmd() {
|
||||||
"$YT_DL_CMD" \
|
"$YT_DL_CMD" \
|
||||||
-o "$DL_FOLDER/$YT_DL_TITLE.%(ext)s" \
|
-o "$TEMP_FOLDER/$YT_DL_TITLE.%(ext)s" \
|
||||||
"${YT_DL_OPTS[@]}" \
|
"${YT_DL_OPTS[@]}" \
|
||||||
"$*"
|
"$*"
|
||||||
}
|
}
|
||||||
|
|
||||||
download() { # 1=url
|
download() { # 1=url
|
||||||
# # download the video to download folder
|
# # download the video to download folder
|
||||||
if ! _alreadyexists "$yt_dl_fname"; then
|
if ! _alreadyexists "$yt_dl_fname" || ! _should_archive; then
|
||||||
_download_cmd "$*"
|
_download_cmd "$*"
|
||||||
|
file=$(_findfile "$TEMP_FOLDER" "$yt_dl_fname")
|
||||||
|
mv "$file" "$DL_FOLDER"
|
||||||
|
|
||||||
# yt-dl never knows the exact filename in advance
|
if _should_archive; then
|
||||||
file=$(_findfile "$DL_FOLDER" "$yt_dl_fname")
|
# yt-dl never knows the exact filename in advance
|
||||||
if [ -z "$file" ]; then exit 1; fi
|
file=$(_findfile "$DL_FOLDER" "$yt_dl_fname")
|
||||||
_call_archive "$file" "$ARCHIVE_FOLDER"
|
if [ -z "$file" ]; then exit 1; fi
|
||||||
|
_call_archive "$file" "$ARCHIVE_FOLDER"
|
||||||
|
fi
|
||||||
# only link old file if one exists
|
# only link old file if one exists
|
||||||
else
|
elif _should_archive; then
|
||||||
archive_file=$(_findfile "$ARCHIVE_FOLDER" "$yt_dl_fname")
|
archive_file=$(_findfile "$ARCHIVE_FOLDER" "$yt_dl_fname")
|
||||||
echo "$archive_file" | while read -r file; do
|
echo "$archive_file" | while read -r file; do
|
||||||
echo "file $file exists, not downloading duplicate"
|
echo "file $file exists, not downloading duplicate"
|
||||||
|
@ -119,8 +131,9 @@ download() { # 1=url
|
||||||
}
|
}
|
||||||
|
|
||||||
setup() {
|
setup() {
|
||||||
DL_FOLDER="${DL_FOLDER:-${XDG_VIDEOS_DIR:-$HOME/videos}}/inbox"
|
TEMP_FOLDER="${TEMP_FOLDER:-${HOME}/downloads}"
|
||||||
ARCHIVE_FOLDER="${ARCHIVE_FOLDER:-${XDG_VIDEOS_DIR:-$HOME/videos}}/archive"
|
DL_FOLDER="${DL_FOLDER:-${XDG_VIDEOS_DIR:-$HOME/videos}/inbox}"
|
||||||
|
ARCHIVE_FOLDER="${ARCHIVE_FOLDER:-${XDG_VIDEOS_DIR:-$HOME/videos}/archive}"
|
||||||
YT_DL_CMD="${YT_DL_CMD:-yt-dlp}"
|
YT_DL_CMD="${YT_DL_CMD:-yt-dlp}"
|
||||||
yt_default_opts=(-f "best[height\<=1080]" --retries 15 --embed-subs --sub-lang "en,de,es,fr")
|
yt_default_opts=(-f "best[height\<=1080]" --retries 15 --embed-subs --sub-lang "en,de,es,fr")
|
||||||
declare -a YT_DL_OPTS=${YT_DL_OPTS:-( "${yt_default_opts[@]}" )}
|
declare -a YT_DL_OPTS=${YT_DL_OPTS:-( "${yt_default_opts[@]}" )}
|
||||||
|
|
Loading…
Reference in a new issue