Fix twitch vid compression failing because of extra spaces in filename

This commit is contained in:
Michael Campagnaro 2024-07-26 11:15:04 -04:00
parent c773b46cbd
commit 2184b8bf40

View File

@ -63,6 +63,7 @@ expand_path() {
ret=$(readlink -m "$ret")
echo $ret
}
is_absolute_unix_path() {
if [[ $1 =~ ^/ ]]; then echo 1; else echo 0; fi
}
@ -119,6 +120,16 @@ open_explorer_here() {
fi
}
remove_extra_spaces() {
# Replace consecutive spaces with a single space.
#
# We're using this in the various vid/audio download functions because
# Windows seems to strip extra spaces when creating a file, so we need
# to match this behaviour in order to do post-processing after downloading.
ret=$(echo "$1" | tr -s ' ')
echo "$ret"
}
##################
# Building code
##################
@ -352,6 +363,8 @@ make_vid_dir_and_cd_into() {
fi
fi
dir_name=$(remove_extra_spaces "$dir_name")
printf "${BOLD}Creating directory ${YELLOW}'$dir_name'${NORMAL}\n"
mkdir "$dir_name" 2>/dev/null
cd "$dir_name"
@ -466,9 +479,10 @@ download_youtube_vid() {
# Get the video filename.
local filename=$(yt-dlp.exe --get-filename -f $format -o "$name_format.%(ext)s" $opts $url)
filename=$(remove_extra_spaces "$filename")
printf "filename: $filename\n"
# Download
# Download the video.
local cmd="yt-dlp.exe -f $format -o \"$filename\" $opts $url"
eval $cmd # Need to eval in order to preserve the quotes wrapping the filename format string.
error=$?
@ -604,8 +618,10 @@ function download_youtube_audio() {
# Get the audio filename.
local filename=$(yt-dlp.exe --get-filename -f $format -o "$name_format.%(ext)s" $opts $url)
filename=$(remove_extra_spaces "$filename")
printf "filename: $filename\n"
# Download the audio.
local cmd="yt-dlp.exe -f $format -o \"$filename\" $opts $url"
eval $cmd # Need to eval in order to preserve the quotes wrapping the filename format string.
error=$?
@ -625,6 +641,7 @@ function download_youtube_audio() {
actually_download_twitch_chat() {
local url="$1"
local filename="$2"
filename=$(remove_extra_spaces "$filename")
rechat.exe -d $url "$filename.json"
if [[ -f "$filename.json" ]]; then
@ -738,16 +755,18 @@ download_twitch_vid() {
# Get the video filename.
local filename=$(yt-dlp.exe --get-filename -f $yt_dlp_format -o "$name_format.%(ext)s" $opts $url)
filename=$(remove_extra_spaces "$filename")
printf "filename: $filename\n"
# Download
# Download the video.
if [[ $subscriber_vod == "0" ]]; then
local cmd="streamlink.exe --twitch-low-latency --twitch-disable-ads --twitch-disable-hosting --force --force-progress $opts $url $streamlink_format -O | ffmpeg -i pipe:0 -c copy \"$filename\""
printf "${YELLOW}${BOLD}\nUsing streamlink to download...${NORMAL}\n"
local cmd="streamlink.exe --twitch-low-latency --twitch-disable-ads --twitch-disable-hosting --force --progress=force $opts $url $streamlink_format -O | ffmpeg -i pipe:0 -c copy \"$filename\""
else
printf "${YELLOW}${BOLD}\nUsing yt-dlp to download...${NORMAL}\n"
local cmd="yt-dlp.exe -f $yt_dlp_format -o \"$filename\" $opts $url"
fi
printf "${YELLOW}${BOLD}Downloading video\n${NORMAL}"
eval $cmd # Need to eval in order to preserve the quotes wrapping the filename format string.
error=$?
@ -759,9 +778,9 @@ download_twitch_vid() {
if [[ $compress == "1" ]]; then
local temp_name="temp_${RANDOM}"
extension="${filename##*.}"
# 0=cpu, 1=gpu
compress-video "$filename" "$temp_name" 0
extension="${filename##*.}"
mv "$filename" "orig_$filename"
mv $temp_name.$extension "$filename"
printf "${BOLD}Make sure to delete the original video file\n${NORMAL}"
@ -818,9 +837,12 @@ download_vimeo_vid() {
local name_format="%(upload_date>%Y-%m-%d)s-shortname-vimeo-%(id)s"
fi
# Download the video.
# Get the video filename.
local filename=$(yt-dlp.exe --get-filename -f $format -o "$name_format.%(ext)s" $opts $url)
filename=$(remove_extra_spaces "$filename")
printf "filename: $filename\n"
# Download the video.
local cmd="yt-dlp.exe -f $format -o \"$filename\" $opts $url"
eval $cmd # Need to eval in order to preserve the quotes wrapping the filename format string.
@ -885,9 +907,12 @@ download_twitter_vid() {
format="b"
fi
# Download the video.
# Get the video filename.
local filename=$(yt-dlp.exe --get-filename -f $format -o "$name_format.%(ext)s" $opts $url)
filename=$(remove_extra_spaces "$filename")
printf "filename: $filename\n"
# Download the video.
local cmd="yt-dlp.exe -f $format -o \"$filename\" $opts $url"
eval $cmd # Need to eval in order to preserve the quotes wrapping the filename format string.
@ -934,9 +959,12 @@ download_instagram_vid() {
format="b" # best available
# Download the video.
# Get the video filename.
local filename=$(yt-dlp.exe --get-filename -f $format -o "$name_format.%(ext)s" $opts $url)
filename=$(remove_extra_spaces "$filename")
printf "filename: $filename\n"
# Download the video.
local cmd="yt-dlp.exe -f $format -o \"$filename\" $opts $url"
eval $cmd # Need to eval in order to preserve the quotes wrapping the filename format string.