Advertisement
Guest User

soundpostmerge.sh

a guest
Apr 8th, 2025
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.45 KB | None | 0 0
  1. #!/bin/bash
  2. #use by running it in the desired directory. no options
  3.  
  4. shopt -s globstar
  5. shopt -s nullglob
  6.  
  7. targetdir="./soundpostsmerged/"
  8. mkdir -p "$targetdir"
  9.  
  10. function merge {
  11.     catbox=$(printf '%b' "${1//%/\\x}" | sed 's/.*\[sound=\(.*\)\].*/\1/')
  12.     audio=$(basename $catbox)
  13.     audiotype=${audio##*.}
  14.     video=$(basename "$1" | sed 's/\(.*\)\[sound=.*\]\(.*\)/\1\2/')
  15.     videoname=${video%.*}
  16.     videotype=${video##*.}
  17.  
  18.     if [[ $videoname == "" ]]; then
  19.         echo "no video name, assigning soundpost link as name"
  20.         videoname=$(basename "${1%.*}")
  21.         video="${videoname}.${videotype}"
  22.         echo -e "video:\t$video"
  23.     fi
  24.  
  25.     if [ -f "${videoname}.webm" ]; then
  26.         echo "file $video already exists. Skipping..."
  27.         return
  28.     fi
  29.  
  30.     if [[ $videotype == "gif" ]]; then
  31.         echo "skipped: $1"
  32.         gifskip="$gifskip\nskipped: $1"
  33.         return
  34.     fi
  35.  
  36.     if [[ $videotype == "mp4" ]]; then
  37.         echo "skipped: $1"
  38.         gifskip="$gifskip\nskipped: $1"
  39.         return
  40.     fi
  41.  
  42.     echo
  43.     echo =======================================
  44.     echo -e "input:\t$1"
  45.     echo -e "catbox:\t$catbox"
  46.     echo -e "audio:\t$audio"
  47.     echo -e "audiotype:\t$audiotype"
  48.     echo -e "video:\t$video"
  49.     echo -e "videotype:\t$videotype"
  50.     echo =======================================
  51.     echo
  52.  
  53.  
  54.     wget $catbox
  55.  
  56.     if [[ $videotype == "webm" ]]; then
  57.         compatibletypes=("opus" "ogg")
  58.         if [[ ${compatibletypes[@]} =~ $audiotype ]]; then
  59.             ffmpeg -i "$1" -i "$audio" -c:v copy -c:a copy "$video"
  60.         else
  61.             ffmpeg -i "$1" -i "$audio" -c:v copy -c:a libvorbis "$video"
  62.         fi
  63.     fi
  64.  
  65.     imagetypes=("jpeg" "jpg" "png")
  66.     if [[ ${imagetypes[@]} =~ $videotype ]]; then
  67.         compatibletypes=("opus" "ogg")
  68.         if [[ ${compatibletypes[@]} =~ $audiotype ]]; then
  69.             ffmpeg -r 1 -loop 1 -i "$1" -i "$audio" -c:a copy -r 1 -shortest "${videoname}.webm"
  70.         else
  71.             ffmpeg -r 1 -loop 1 -i "$1" -i "$audio" -c:a libvorbis -r 1 -shortest "${videoname}.webm"
  72.         fi
  73.     fi
  74.  
  75.     #if [[ $videotype == "gif" ]]; then
  76.         #compatibletypes=("opus" "ogg")
  77.         #if [[ ${compatibletypes[@]} =~ $audiotype ]]; then
  78.         #   ffmpeg -ignore_loop 0 -i "$1" -i "$audio" -c:a copy "${video%.*}.webm"
  79.         #else
  80.         #   ffmpeg -ignore_loop 0 -i "$1" -i "$audio" -c:a libvorbis "${video%.*}.webm"
  81.         #fi
  82.     #fi
  83.  
  84.     rm "$audio"
  85. }
  86.  
  87. soundposts=(**/*\[sound=*)
  88. soundpostslen="${#soundposts[@]}"
  89. i=1
  90.  
  91. originalworkingdir="$(pwd)"
  92.  
  93. cd "$targetdir"
  94.  
  95. for p in "${soundposts[@]}" ; do
  96.     echo
  97.     echo "[$i out of $soundpostslen]"
  98.     merge "${originalworkingdir}/$p"
  99.     ((i++))
  100. done
  101.  
  102. echo -e "$gifskip"
  103.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement