Skip to content

Instantly share code, notes, and snippets.

@dardo82
Last active January 19, 2021 10:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dardo82/f495a650c18fd9e03dbf0d7cac6b6ca1 to your computer and use it in GitHub Desktop.
Save dardo82/f495a650c18fd9e03dbf0d7cac6b6ca1 to your computer and use it in GitHub Desktop.
RTV38 Comparini
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.zerowidth.launched.icdc</string>
<key>ProgramArguments</key>
<array>
<string>sh</string>
<string>-c</string>
<string>~/Library/Application\ Support/com.zerowidth.launched.icdc/icdc.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>19</integer>
<key>Weekday</key>
<integer>1</integer>
</dict>
</dict>
</plist>
#!/bin/sh
PLURL="https://open.http.mp.streamamg.com/p/3001301/sp/300130100/playManifest\
/entryId/0_seco7tg8/format/applehttp/protocol/https/uiConfId/30026353/a.m3u8"
WEEKSAGO="${1:-0}"; WEEKDAY="${2:-monday}"; SHOWNAME="${3:-tadà}"
LANGUAGE="${LANG%_*}"; LANGCODE="${4:-$LANGUAGE}"
HOTWORD="${5:-grazie}"; REGION="${6:-europe-west6}"
USRDIR="/usr/local"; UBINDIR="$USRDIR/bin"
OPTDIR="/opt/local"; OBINDIR="$OPTDIR/bin"
TRANSITION="$USRDIR/share/ffmpeg/transitions/${7:-crosswarp}.glsl"
DURATION="${8:-10}"; SHOWDIR="${9:-$HOME/Movies}/$SHOWNAME"
AIRINGDATE=$(date -v -$WEEKDAY -v -${WEEKSAGO}w +%F)
BASENAME="${SHOW}_$AIRINGDATE"; EPISODE="$BASENAME.mp4"
VIDEOEDIT="$AIRINGDATE.mp4"; FADEDAUDIO="$BASENAME.m4a"
VIDEOJOIN="${VIDEOEDIT/./_v.}"
ANIMATION="${VIDEOEDIT/./_t.}"
GSUTIL="$OBINDIR/gsutil"; GCLOUD="$OBINDIR/gcloud"; GSURL="gs://$USER-$SHOWNAME"
GAWK="$OBINDIR/gawk"; YOUTUBEDL="$OBINDIR/youtube-dl"; FFMPEG="$UBINDIR/ffmpeg"
YTSEARCH="ytsearch:${SHOW}_$(date -v -$WEEKDAY -v -${WEEKSAGO}w +%d/%m/%Y)"
if [ $1 ]; then SOURCE="yt"; OPTIONS="-f 135+140 $YTSEARCH"
else SOURCE="ws"; OPTIONS="--hls-prefer-native $PLURL"; fi
[ -d $SHOWDIR ] || mkdir -p $SHOWDIR; cd $SHOWDIR; echo $PWD
COVERIMAGE="${0/.sh/-$SOURCE.jpg}"; $YOUTUBEDL $OPTIONS -o $EPISODE
TIMECODE=($($FFMPEG -i $EPISODE -i $COVERIMAGE -filter_complex \
"blend=difference,blackdetect=d=0.1:pix_th=0.1" \
-f null - -nostats 2>&1 \
| $GAWK -v FS='[: ]' '/ black_/{print $5}'))
echo TIMECODE="${TIMECODE[@]}"
for ss in ${TIMECODE[@]}; do
SS=$[${ss%.*}-10]; n=$[$n+1]
echo SS="$SS"; echo n="$n"
CLIP[$n]="${BASENAME}_$n"; TEXT="$CLIP[$n].json"
AUDIO[$n]="$CLIP[$n].m4a"; SPEECH="$CLIP[$n].flac"
VIDEO[$n]="$CLIP[$n].mp4"; SUBTITLES="$CLIP[$n].srt"
VIDEOPART[1$n]="$CLIP[$n]-1.mp4"
VIDEOPART[2$n]="$CLIP[$n]-2.mp4"
VIDEOPART[3$n]="$CLIP[$n]-3.mp4"
$FFMPEG -ss $SS -i $EPISODE -t 450 -ac 1 -ar 8000 $SPEECH
$GSUTIL mb -l $REGION $GSURL; $GSUTIL cp -v $SPEECH $GSURL
$GCLOUD ml speech recognize-long-running --include-word-time-offsets \
--language-code=$LANGCODE $GSURL/$SPEECH > $TEXT; $GSUTIL rm -r $GSURL
$GAWK -v FS='s?"' -v RS='[{}]' \
'{if($12){i++; TXT=TXT" "$12; \
if(i%12==1){STM=$8/60; STS=$8%60}; \
if(i%12==0){ETM=$4/60; ETS=$4%60}; \
if(i%12==0){printf "%d\n00:%02d:%02d,000 " \
"--> 00:%02d:%02d,000\n%s\n\n", \
NR/24,STM,STS,ETM,ETS,TXT; \
i=0; TXT=""}}}' $TEXT > $SUBTITLES
t=$($GAWK -v FS='s?"' -v RS='[{}]' -v regex="$HOTWORD" \
'{if($0~regex)t=$8} END{print t+2}' $TEXT); T=$[${t%.*}+20]
$FFMPEG -ss $SS -i $EPISODE -t $T -vn -c:a copy ${AUDIO[$n]}
# $FFMPEG -ss $SS -i $EPISODE -t $T -vf \
# "subtitles=$SUBTITLES:force_style=MarginV=60" ${VIDEO[$n]}
$FFMPEG -ss $SS -i $EPISODE -i $SUBTITLES -t $T -an -c:v copy \
-c:s mov_text ${VIDEO[$n]}
# $FFMPEG -i ${VIDEO[$n]} -map 0:s:0 $SUBTITLES
$FFMPEG -ss 0 -i ${VIDEO[$n]} -t 10 -c copy ${VIDEOPART[1$n]}
$FFMPEG -ss 10 -i ${VIDEO[$n]} -t $[$T-10] -c copy ${VIDEOPART[2$n]}
$FFMPEG -ss $[$T-10] -i ${VIDEO[$n]} -t $T -c copy ${VIDEOPART[3$n]}
# rm -v $SPEECH $TEXT $SUBTITLES ${VIDEO[$n]}
done #; rm -v $EPISODE
$FFMPEG -i ${AUDIO[1]} -i ${AUDIO[2]} -filter_complex \
"acrossfade=d=10:c1=tri:c2=tri" $FADEDAUDIO
$FFMPEG -i ${VIDEOPART[31]} -i ${VIDEOPART[12]} -filter_complex \
"[0:v][1:v]gltransition=duration=$DURATION:source=$TRANSITION" $ANIMATION
$FFMPEG -f concat -safe 0 -i <(eval "printf \"file '$PWD/%s'\n\"\
${VIDEOPART[31]} $ANIMATION ${VIDEOPART[12]}") -c copy $VIDEOJOIN
$FFMPEG -i $FADEDAUDIO -i $VIDEOJOIN -c copy $VIDEOEDIT
# rm -v $FADEDAUDIO $VIDEOJOIN ${VIDEOPART[@]} $ANIMATION
# for PART in ${DATE}_?.mp4; do FFMD=${PART/.mp4/.ffmd};
# D=$(ffprobe -i $PART -show_format 2>&1 | gawk -F= '/duration/{print $2}')
#
# ffmpeg -y -i $PART -af 'silencedetect=noise=-24dB:d=0.5' -f null - 2>&1 \
# | gawk -v D=$D 'BEGIN{print";FFMETADATA1\n"; T=0} \
# /end/{print "[CHAPTER]\nTIMEBASE=1/"10^6"\nSTART="T*10^6"\nEND="$5*10^6"\n"; T=$5} \
# END{print "[CHAPTER]\nTIMEBASE=1/"10^6"\nSTART="T*10^6"\nEND="D*10^6"\n"}' > $FFMD
#
# CMD="socat - /tmp/mpvsocket | grep -m 1 chapter && socat - /tmp/mpvsocket <<< \
# '{\"command\": [\"set_property\", \"pause\", true]}' && eval \$CMD"
# mpv --fs --pause --keep-open --input-ipc-server=/tmp/mpvsocket --osd-level=2 \
# --osd-fractions --chapters-file=$FFMD $PART & sleep 2 && eval "$CMD"
#
# ffmpeg -f concat -safe 0 -i <(eval "printf \"file '$PWD/%s'\n\" ${PART/./_[0-9].}") \
# -c copy ${PART/./S.}; eval "rm -v ${PART/./_[0-9].} $FFMD"
# done
# for n in {0..52}; do
# QUERY="tadà $(date -v -monday -v -${n}w '+%d/%m/%Y')"
# VIDEO=($(youtube-dl -g --get-id --get-title "ytsearch:$QUERY")); [ "$VIDEO[1,2]" = "$QUERY" ] && \
# {echo "\nTitle: $VIDEO[1,2]\nURL: youtu.be/$VIDEO[3]"
# D=$(ffprobe "$VIDEO[3].mp4" -show_format |& gawk -v FS='=' '/duration/{ printf( "%.2f", $2)}')
# ffmpeg -i "$VIDEO[3].mp4" -map a:0 -af 'silencedetect=noise=-30dB:d=1.5' -f null - \
# |& gawk -v D=$D 'BEGIN{ sub(/\r/, "\n", $0); printf( "%s\n\n", ";FFMETADATA1"); T=0} \
# /duration/{ printf( "%s\n%s%d\n%s%.0f\n%s%.0f\n\n", "[CHAPTER]", "TIMEBASE=1/", 10^6, \
# "START=", T*10^6, "END=", $5*10^6); T=$5} END{ printf( "%s\n%s%d\n%s%.0f\n%s%.0f\n\n", \
# "[CHAPTER]", "TIMEBASE=1/", 10^6, "START=", T*10^6, "END=", D*10^6)}' > $VIDEO[3].ffmd
# mpv --chapters-file="$VIDEO[3].ffmd" "$VIDEO[3].mp4"}
# done
@dardo82
Copy link
Author

dardo82 commented Jul 23, 2020

icdc-ws
icdc-yt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment