Introduction
Introduction Statistics Contact Development Disclaimer Help
Allow images and videos in new deface filter. - annna - Annna the nice friendly…
git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws6…
Log
Files
Refs
Tags
README
---
commit a7b6271d25d1e871de322f700ab5fc352b87b4ed
parent 8178121cf184328ccf2dbd37f7ff2b97d1cfd08c
Author: Annna Robert-Houdin <[email protected]>
Date: Sun, 7 Aug 2022 01:00:32 +0200
Allow images and videos in new deface filter.
Diffstat:
M annna-message-common | 44 ++++++++++++++++++++++-------…
M ffmpeg-effect | 207 ++++++++++++++++++-----------…
2 files changed, 149 insertions(+), 102 deletions(-)
---
diff --git a/annna-message-common b/annna-message-common
@@ -889,6 +889,28 @@ case "${text}" in
[ ! -f "${inpath}" ] && exit 0
+ # outfile and outpath filtering for the cache.
+ case "${filter}" in
+ antidepressant)
+ outfile="${outfile%.*}.jpg"
+ outpath="${outpath%.*}.jpg"
+ ;;
+ putin)
+ outfile="${outfile%.*}.jpg"
+ outpath="${outpath%.*}.jpg"
+ ;;
+ wat|smith|zucc)
+ mimetype="$(file --mime-type "$inpath" | cut -d':' -f …
+ # Only allow images to be free.
+ case "$mimetype" in
+ image/*)
+ outfile="${outfile%.*}.${origext}"
+ outpath="${outpath%.*}.${origext}"
+ ;;
+ esac
+ esac
+
+ # Cleanup if outpath file is empty.
[ -f "${outpath}" -a ! -s "${outpath}" ] && rm "${outpath}"
if [ -s "${outpath}" ];
@@ -898,19 +920,15 @@ case "${text}" in
fi
case "${filter}" in
- antidepressant)
- outfile="${outfile%.*}.jpg"
- outpath="${outpath%.*}.jpg"
- antidepressant "${inpath}" "${outpath}" 2>&1 >…
- ;;
- putin)
- outfile="${outfile%.*}.jpg"
- outpath="${outpath%.*}.jpg"
- putin-os "${inpath}" "${outpath}" 2>&1 >/dev/n…
- ;;
- *)
- ffmpeg-effect "${filter}" "${inpath}" "${outpa…
- ;;
+ antidepressant)
+ antidepressant "${inpath}" "${outpath}" 2>&1 >/dev/null
+ ;;
+ putin)
+ putin-os "${inpath}" "${outpath}" 2>&1 >/dev/null
+ ;;
+ *)
+ ffmpeg-effect "${filter}" "${inpath}" "${outpath}" 2>&…
+ ;;
esac
if [ "${recipient}" != "${text}" ];
diff --git a/ffmpeg-effect b/ffmpeg-effect
@@ -12,6 +12,17 @@ usage() {
exit 1
}
+is_image() {
+ mimetype="$(file --mime-type "$1" | cut -d':' -f 2 | cut -c 2-)"
+ case "${mimetype}" in
+ image/*)
+ return 0
+ ;;
+ esac
+
+ return 1
+}
+
has_audio() {
ffprobe "$1" 2>&1 | grep -qE 'Stream .* Audio: '
}
@@ -63,13 +74,19 @@ mix_audio_video() {
}
replace_face() {
+ set -x
+
face_replacement="$1"
input="$2"
output="$3"
- #ext="$(printf '%s' "$input" | awk -F. '{print $NF}')"
- #tmp=/tmp/replace_face_$$.$ext
- tmp="/tmp/replace_face_$$.mkv"
+ if is_image $input;
+ then
+ ext="$(printf '%s' "$input" | awk -F. '{print $NF}')"
+ tmp=/tmp/replace_face_$$.$ext
+ else
+ tmp="/tmp/replace_face_$$.mkv"
+ fi
$HOME/.local/bin/deface "$input" --replacewith img \
--replaceimg "$face_replacement" -o "$tmp" >/dev/null 2>&1
@@ -80,9 +97,27 @@ replace_face() {
else
mv "$tmp" "$output"
fi
+
+ set +x
}
process_filter() {
+ # Filters which do not require image2mkv.
+ case "$1" in
+ wat)
+ replace_face "${mediadir}/wat.png" "$2" "$3"
+ return 0
+ ;;
+ smith)
+ replace_face "${mediadir}/smith.png" "$2" "$3"
+ return 0
+ ;;
+ zucc)
+ replace_face "${mediadir}/zucc.png" "$2" "$3"
+ return 0
+ ;;
+ esac
+
# extend duration if less than a second or image
dur="$($ffprobe_common -show_entries format=duration "$2")"
if test "$dur" = "N/A" || test "${dur%.*}" -lt 1; then
@@ -93,92 +128,86 @@ process_filter() {
fi
case "$1" in
- amplify)
- $ffmpeg_common -i "$2" -filter:a "volume=10" "$3";;
- banjo)
- replace_audio "${mediadir}/banjo.mp3" "$2" "$3";;
- bounce)
- $ffmpeg_common -i "$2" \
- -filter_complex "[0]reverse[r];[0][r]concat,lo…
- "$3" </dev/null;;
- celtify)
- mix_audio "${mediadir}/broceliande.ogg" "$2" "$3";;
- concatenate)
- mix_audio "${mediadir}/concatenate.mp3" "$2" "$3";;
- daybowbow)
- replace_audio "${mediadir}/day-bow-bow.ogg" "$2" "$3";;
- dontdoit)
- mix_audio "${mediadir}/dontdoit.mp3" "$2" "$3";;
- doomify)
- mix_audio "${mediadir}/doom.mp3" "$2" "$3";;
- dutchapprove)
- mix_audio_video "${mediadir}/krul.mkv" "$2" "$3" 524 4…
- imam)
- mix_audio "${mediadir}/imam.mp3" "$2" "$3";;
- loop)
- i=0
- input=""
- while test $i -lt $repeats; do
- input="$input -i $2"
- i=$((i + 1))
- done
- $ffmpeg_common $input \
- -filter_complex "concat=n=${repeats}:v=1:a=1 […
- "$3" </dev/null;;
- mow)
- mix_audio "${mediadir}/lawn-mower.mp3" "$2" "$3";;
- reverse)
- $ffmpeg_common -i "$2" \
- -vf reverse -af areverse \
- "$3" </dev/null;;
- science)
- replace_audio "${mediadir}/accelerating-science.mp3" "…
- scrollify)
- mix_audio "${mediadir}/elder_scrolls.mp3" "$2" "$3";;
- sendtohell|amsterdamify)
- mix_audio_video "${mediadir}/hell.mkv" "$2" "$3" 1920 …
- sexify)
- mix_audio "${mediadir}/careless_whisper.mp3" "$2" "$3"…
- slavify)
- replace_audio "${mediadir}/remove-kebab.opus" "$2" "$3…
- slowdown)
- $ffmpeg_common -i "$2" \
- -filter_complex "[0:v]setpts=2.0*PTS[v];[0:a]a…
- "$3" </dev/null;;
- smith)
- replace_face "${mediadir}/smith.png" "$2" "$3";;
- speedup)
- $ffmpeg_common -i "$2" \
- -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]a…
- "$3" </dev/null;;
- techno)
- replace_audio "${mediadir}/techno.mp3" "$2" "$3";;
- technodrugs)
- $ffmpeg_common -i "${mediadir}/techno.mp3" -i "$2" \
- -filter:v "tmix=frames=9:weights='0.2 0.4 0.6 …
- -map 1:v:0 -map 0:a:0 -shortest \
- "$3" </dev/null;;
- thin)
- $ffmpeg_common -i "$2" \
- -vf "scale=iw/4:ih,setsar=1" \
- "$3" </dev/null;;
- torture)
- side_by_side "${mediadir}/clockworkorange.mkv" "$2" "$…
- trumpapprove)
- mix_audio "${mediadir}/trump-approves.opus" "$2" "$3";;
- wat)
- replace_face "${mediadir}/wat.png" "$2" "$3";;
- wide|widen)
- $ffmpeg_common -i "$2" \
- -vf "scale=iw*4:ih,crop=iw/4:ih:iw/4:ih,setsar…
- "$3" </dev/null;;
- ww1)
- mix_audio "${mediadir}/ww1.mp3" "$2" "$3";;
- yellow)
- mix_audio "${mediadir}/yellow.opus" "$2" "$3";;
- zucc)
- replace_face "${mediadir}/zucc.png" "$2" "$3";;
- *) usage;;
+ amplify)
+ $ffmpeg_common -i "$2" -filter:a "volume=10" "$3";;
+ banjo)
+ replace_audio "${mediadir}/banjo.mp3" "$2" "$3";;
+ bounce)
+ $ffmpeg_common -i "$2" \
+ -filter_complex "[0]reverse[r];[0][r]concat,loop=${rep…
+ "$3" </dev/null;;
+ celtify)
+ mix_audio "${mediadir}/broceliande.ogg" "$2" "$3";;
+ concatenate)
+ mix_audio "${mediadir}/concatenate.mp3" "$2" "$3";;
+ daybowbow)
+ replace_audio "${mediadir}/day-bow-bow.ogg" "$2" "$3";;
+ dontdoit)
+ mix_audio "${mediadir}/dontdoit.mp3" "$2" "$3";;
+ doomify)
+ mix_audio "${mediadir}/doom.mp3" "$2" "$3";;
+ dutchapprove)
+ mix_audio_video "${mediadir}/krul.mkv" "$2" "$3" 524 480;;
+ imam)
+ mix_audio "${mediadir}/imam.mp3" "$2" "$3";;
+ loop)
+ i=0
+ input=""
+ while test $i -lt $repeats; do
+ input="$input -i $2"
+ i=$((i + 1))
+ done
+ $ffmpeg_common $input \
+ -filter_complex "concat=n=${repeats}:v=1:a=1 [v] [a]" …
+ "$3" </dev/null;;
+ mow)
+ mix_audio "${mediadir}/lawn-mower.mp3" "$2" "$3";;
+ reverse)
+ $ffmpeg_common -i "$2" \
+ -vf reverse -af areverse \
+ "$3" </dev/null;;
+ science)
+ replace_audio "${mediadir}/accelerating-science.mp3" "$2" "$3"…
+ scrollify)
+ mix_audio "${mediadir}/elder_scrolls.mp3" "$2" "$3";;
+ sendtohell|amsterdamify)
+ mix_audio_video "${mediadir}/hell.mkv" "$2" "$3" 1920 1080;;
+ sexify)
+ mix_audio "${mediadir}/careless_whisper.mp3" "$2" "$3";;
+ slavify)
+ replace_audio "${mediadir}/remove-kebab.opus" "$2" "$3";;
+ slowdown)
+ $ffmpeg_common -i "$2" \
+ -filter_complex "[0:v]setpts=2.0*PTS[v];[0:a]atempo=0.…
+ "$3" </dev/null;;
+ speedup)
+ $ffmpeg_common -i "$2" \
+ -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.…
+ "$3" </dev/null;;
+ techno)
+ replace_audio "${mediadir}/techno.mp3" "$2" "$3";;
+ technodrugs)
+ $ffmpeg_common -i "${mediadir}/techno.mp3" -i "$2" \
+ -filter:v "tmix=frames=9:weights='0.2 0.4 0.6 0.8 1 0.…
+ -map 1:v:0 -map 0:a:0 -shortest \
+ "$3" </dev/null;;
+ thin)
+ $ffmpeg_common -i "$2" \
+ -vf "scale=iw/4:ih,setsar=1" \
+ "$3" </dev/null;;
+ torture)
+ side_by_side "${mediadir}/clockworkorange.mkv" "$2" "$3";;
+ trumpapprove)
+ mix_audio "${mediadir}/trump-approves.opus" "$2" "$3";;
+ wide|widen)
+ $ffmpeg_common -i "$2" \
+ -vf "scale=iw*4:ih,crop=iw/4:ih:iw/4:ih,setsar=1" \
+ "$3" </dev/null;;
+ ww1)
+ mix_audio "${mediadir}/ww1.mp3" "$2" "$3";;
+ yellow)
+ mix_audio "${mediadir}/yellow.opus" "$2" "$3";;
+ *) usage;;
esac
}
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.