Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #use by running it in the desired directory. 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"
- videoname=$(basename "${1%.*}")
- video="${videoname}.${videotype}"
- echo -e "video:\t$video"
- 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 =======================================
- 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
- wget $catbox
- if [[ $videotype == "webm" ]]; then
- compatibletypes=("opus" "ogg")
- if [[ ${compatibletypes[@]} =~ $audiotype ]]; then
- ffmpeg -i "$1" -i "$audio" -c:v copy -c:a copy "$video"
- else
- ffmpeg -i "$1" -i "$audio" -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 -r 1 -loop 1 -i "$1" -i "$audio" -c:a copy -r 1 -shortest "${videoname}.webm"
- else
- ffmpeg -r 1 -loop 1 -i "$1" -i "$audio" -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 "$audio"
- }
- soundposts=(**/*\[sound=*)
- soundpostslen="${#soundposts[@]}"
- i=1
- originalworkingdir="$(pwd)"
- cd "$targetdir"
- for p in "${soundposts[@]}" ; do
- echo
- echo "[$i out of $soundpostslen]"
- merge "${originalworkingdir}/$p"
- ((i++))
- done
- echo -e "$gifskip"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement