Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #use by running it. no options
- shopt -s globstar
- shopt -s nullglob
- targetdir="./soundpostsmerged/"
- mkdir -p "$targetdir"
- function merge {
- catbox=$(printf '%b' "${1//%/\\x}" | sed 's/.*\[sound=\(.*\)\].*/\1/')
- audio=$(basename $catbox)
- audiotype=${audio##*.}
- video=$(basename "$1" | sed 's/\(.*\)\[sound=.*\]\(.*\)/\1\2/')
- videoname=${video%.*}
- videotype=${video##*.}
- if [[ $videoname == "" ]]; then
- echo "no video name, assigning soundpost link as name"
- noname=1
- videoname=$(basename "${1%.*}")
- video="${videoname}.${videotype}"
- fi
- if [ -f "${videoname}.webm" ]; then
- echo "file $video already exists. Skipping..."
- return
- fi
- if [[ $videotype == "gif" ]]; then
- echo "skipped: $1"
- gifskip="$gifskip\nskipped: $1"
- return
- fi
- if [[ $videotype == "mp4" ]]; then
- echo "skipped: $1"
- gifskip="$gifskip\nskipped: $1"
- return
- fi
- echo
- echo ===[$2 out of $3]====================
- if [[ $noname -eq 1 ]]; then echo "no video name, assigning soundpost link as name"; fi
- echo -e "input:\t$1"
- echo -e "catbox:\t$catbox"
- echo -e "audio:\t$audio"
- echo -e "audiotype:\t$audiotype"
- echo -e "video:\t$video"
- echo -e "videotype:\t$videotype"
- echo =======================================
- echo
- audiotemp="$(mktemp --suffix=".$audiotype")"
- wget -q $catbox -O "$audiotemp" &> /dev/null
- if [[ $videotype == "webm" ]]; then
- compatibletypes=("opus" "ogg")
- if [[ ${compatibletypes[@]} =~ $audiotype ]]; then
- ffmpeg -loglevel error -i "$1" -i "$audiotemp" -c:v copy -c:a copy "$video"
- else
- ffmpeg -loglevel error -i "$1" -i "$audiotemp" -c:v copy -c:a libvorbis "$video"
- fi
- fi
- imagetypes=("jpeg" "jpg" "png")
- if [[ ${imagetypes[@]} =~ $videotype ]]; then
- compatibletypes=("opus" "ogg")
- if [[ ${compatibletypes[@]} =~ $audiotype ]]; then
- ffmpeg -loglevel error -r 1 -loop 1 -i "$1" -i "$audiotemp" -c:a copy -r 1 -shortest "${videoname}.webm"
- else
- ffmpeg -loglevel error -r 1 -loop 1 -i "$1" -i "$audiotemp" -c:a libvorbis -r 1 -shortest "${videoname}.webm"
- fi
- fi
- #if [[ $videotype == "gif" ]]; then
- #compatibletypes=("opus" "ogg")
- #if [[ ${compatibletypes[@]} =~ $audiotype ]]; then
- # ffmpeg -ignore_loop 0 -i "$1" -i "$audio" -c:a copy "${video%.*}.webm"
- #else
- # ffmpeg -ignore_loop 0 -i "$1" -i "$audio" -c:a libvorbis "${video%.*}.webm"
- #fi
- #fi
- rm "$audiotemp"
- }
- soundposts=(**/*\[sound=*)
- soundpostslen="${#soundposts[@]}"
- i=1
- originalworkingdir="$(pwd)"
- cd "$targetdir"
- for p in "${soundposts[@]}" ; do
- #echo "[$i out of $soundpostslen]"
- merge "${originalworkingdir}/$p" $i $soundpostslen &
- ((i++))
- done
- wait
- echo -e "$gifskip"
Advertisement
Add Comment
Please, Sign In to add comment