VERSIJA='0.05.02 © Karlo no DAC 2021.02.10 10:20' LICENCE='GPLv3' APRAKSTS='Meklē video un attēlus, „uzasina”, pielāgo izmērus un pārkodē. Jaunājā vietā tiek saglabāta vecā direktoriju struktūra. Ja mērķa fails jau ir, tas netiks pārrakstīts, ja vien tas nav vecāks par izejas failu. Scenāriju failus(ODT) saglabā kā PDF.' # Kādus failus meklēt PAP_VIDEO='mp4 avi mkv ogv webm' # Ielāsmie video PAP_AUDIO='m4a mp3 flac wav aac' # Ielasāmie audio PAP_TEKSTS='ass srt ssa' # Ielasāmie titri # PAP_GALA= Gala video. Aizpilda zemāk. PAP_ATTELI='jpg png' # Ielasāmie attēli PAP_IZMET='stats mbtree' # Izmetami starpfaili PAP_LASAAMAIS='odt odg odp' PAP_LASAAMAIS_PUB='pdf' NOKURIENES='../saveidoti' UZKURIENI='../pamaaciibas' KOPDIREKTORIJA='../kopiigs' # Ja vajag samazināt, norādam platumu. # Ja nevajag samazināt, aizkomentējam gan mainīgo PLATUMS, gan SAMAZINAATS. # Mazāk izmēra video netiks palielināti. PLATUMS="1280" SAMAZINAATS=", scale=$PLATUMS:-1" # Jāatkomentē vajadzīgais faila vārda paplašinājums un formāts. # PAP_GALA var būt tikai viens paplašinājums. # Pārējie jāaizkomentē. #PAP_GALA="mp4" #FORMATS="-c:v libx264 -crf 23 -preset slow" #PAP_GALA="ogg" #FORMATS="-c:v libtheora -q:v 4" PAP_GALA="webm" FORMATS="" KR_VISIRSLIKTI='\033[1;31m' KR_ATSTATIIT='\033[0m' KR_DARBOJOS='\033[1;36m' KR_ZINASANAI='\033[1;32m' KR_VAARDS='\033[1;33m' # ---------------------------------------------------------------------- # Tālāk nav nekā maināma =============================================== # ---------------------------------------------------------------------- if [ $# -gt 0 ]; then for parametrs in $* do case $parametrs in -v | -V ) echo $APRAKSTS echo Versija: $VERSIJA echo Licence: $LICENCE exit 0 ;; * ) echo Šis skripts neizmanto komandrindas parametrus. echo Visas izmaiņas veicamas paša skripta sākumdaļā. exit 1 ;; esac done fi # Pārbauda, vai ir vajadzīgās programmas for PRG in {ffmpeg,ffprobe,convert,pngquant,jpegoptim,soffice,unoconv}; do type -P $PRG &>/dev/null || { echo -e "$KR_VISIRSLIKTI KĻŪDA: $PRG nav pieejama $KR_ATSTATIIT"; exit 10; } done if [ ! -f "$0.pl" ]; then echo -e "$KR_VISIRSLIKTI Nav atrodams $0.pl. Tiks apstrādāti tikai video un attēlu faili.$KR_ATSTATIIT" echo Vai turpināt? while true; do read yn case $yn in [YyJj]* ) break ;; [Nn]* ) exit ;; * ) echo '(J)ā vai (N)ē?' ;; esac done fi CompareTime () # Ja pirmais fails ir jaunāks par ikvienu pārējo, atgriež 0. # Citādi atgriež >0 (arī tad, kad pirmā faila vispār nav). { GalaFails="$1" Jaatjaunina=0 if [ ! -f "$1" ]; then echo 10 return else shift for Fails in "$@"; do if [ $GalaFails -ot $Fails ]; then echo 1 return fi done fi echo 0 } Vai_fails_ir () # Meklē failu izmantojot dažādus paplašinājumus. # Pirmais parametrs vārds bez paplašinājuma. # Pārējie - palašinājumi. { Vards=$1 shift for Kursh in $@; do if [ -f "$Vards.$Kursh" ]; then echo $Vards.$Kursh return fi done } # Izmet starpfailus for KURU_IZMET in $PAP_IZMET; do for IZMET in $(find $NOKURIENES -iname "*.$KURU_IZMET"); do rm $IZMET done done # Pārkonvertē videofailus for PAP_VIDEO_VIENS in $PAP_VIDEO; do for VIDEO in $(find $NOKURIENES -iname "*.$PAP_VIDEO_VIENS"); do TIKAI_VAARDS=${VIDEO%.*} TIKAI_VAARDS_GALA=$(echo $TIKAI_VAARDS | sed -e "s@$NOKURIENES@$UZKURIENI@") FAILS="$TIKAI_VAARDS_GALA.$PAP_GALA" KURLIKT="${FAILS%/*}" # Vai ir atsevišķs audio AUDIOFAILS=$(Vai_fails_ir $TIKAI_VAARDS $PAP_AUDIO) if [ -z "$AUDIOFAILS" ]; then AUDIO='' AUDIO_F='' else AUDIO="-i $AUDIOFAILS" AUDIO_F='-map 0:v -map 1:a' fi if [ $(CompareTime $FAILS $VIDEO $AUDIOFAILS) -gt 0 ]; then echo -e "$KR_DARBOJOS No: $VIDEO" if [ -n "$AUDIOFAILS" ]; then echo -e " + $AUDIOFAILS" fi echo -e " uz: $FAILS.$KR_ATSTATIIT" # Vai nav mazāks platums if [ $(ffprobe -v quiet -select_streams v:0 -of default=noprint_wrappers=1:nokey=1 -show_entries stream=width $VIDEO) -le $PLATUMS ]; then SAMAZINAATS2='' else SAMAZINAATS2=$SAMAZINAATS fi mkdir -p "$KURLIKT" ffmpeg -loglevel error -y -i $VIDEO $AUDIO \ $AUDIO_F -metadata:s:a:0 language=lav \ -filter:v "unsharp=5:5:1.0:5:5:0.0 \ $SAMAZINAATS2" \ $FORMATS \ "$FAILS" else echo -e "$KR_ZINASANAI Ir jau jaunāks $KR_VAARDS$FAILS $KR_ZINASANAI – izlaižu.$KR_ATSTATIIT" fi done done # Pārkonvertē attēlus for KURU_ATTELU in $PAP_ATTELI; do for ATTELS in $(find $NOKURIENES -iname "*.$KURU_ATTELU"); do TIKAI_VAARDS=${ATTELS%.*} TIKAI_VAARDS_GALA=$(echo $TIKAI_VAARDS | sed -e "s@$NOKURIENES@$UZKURIENI@") FAILS="$TIKAI_VAARDS_GALA.$KURU_ATTELU" KURLIKT="${FAILS%/*}" if [ $(CompareTime "$FAILS" "$ATTELS") -gt 0 ]; then echo -e "$KR_DARBOJOS$ATTELS$KR_ATSTATIIT" mkdir -p "$KURLIKT" case $KURU_ATTELU in jpg) convert -resize 1024x -quality 90 -sharpen 3x0.5 -type optimize \ $ATTELS $TIKAI_VAARDS_GALA.$KURU_ATTELU jpegoptim -s $TIKAI_VAARDS_GALA.$KURU_ATTELU convert -blur 1 -resize 800x +profile "*" -quality 75 -type optimize \ $ATTELS $TIKAI_VAARDS_GALA.p.$KURU_ATTELU jpegoptim -s $TIKAI_VAARDS_GALA.p.$KURU_ATTELU convert -resize 200x -sharpen 10 -quality 55 -type optimize \ $TIKAI_VAARDS_GALA.p.$KURU_ATTELU $TIKAI_VAARDS_GALA.m.$KURU_ATTELU jpegoptim -s $TIKAI_VAARDS_GALA.m.$KURU_ATTELU convert -resize 99x -sharpen 10 -quality 55 -type optimize \ $TIKAI_VAARDS_GALA.m.$KURU_ATTELU $TIKAI_VAARDS_GALA.s.$KURU_ATTELU jpegoptim -s $TIKAI_VAARDS_GALA.s.$KURU_ATTELU ;; png) pngquant -f -o $TIKAI_VAARDS_GALA.$KURU_ATTELU --strip --skip-if-larger $ATTELS if [ ! -f $TIKAI_VAARDS_GALA.$KURU_ATTELU ]; then cp $ATTELS $TIKAI_VAARDS_GALA.$KURU_ATTELU fi convert -resize 800x -sharpen 10 -quality 100 -type optimize \ $ATTELS png:- | \ convert +dither -colors 128 -depth 7 -quality 100 -type optimize \ png:- $TIKAI_VAARDS_GALA.p.$KURU_ATTELU pngquant -f --ext .$KURU_ATTELU --strip --skip-if-larger $TIKAI_VAARDS_GALA.p.$KURU_ATTELU convert -resize 200x -sharpen 20 +dither -colors 64 -depth 6 -quality 100 -type optimize \ $TIKAI_VAARDS_GALA.p.$KURU_ATTELU $TIKAI_VAARDS_GALA.m.$KURU_ATTELU pngquant -f --ext .$KURU_ATTELU --strip --skip-if-larger $TIKAI_VAARDS_GALA.m.$KURU_ATTELU convert -resize 99x -sharpen 20 +dither -colors 16 -depth 4 -quality 100 -type optimize \ $TIKAI_VAARDS_GALA.m.$KURU_ATTELU $TIKAI_VAARDS_GALA.s.$KURU_ATTELU pngquant -f --ext .$KURU_ATTELU --strip --skip-if-larger $TIKAI_VAARDS_GALA.s.$KURU_ATTELU ;; esac else echo -e "$KR_ZINASANAI Ir jau jaunāks $KR_VAARDS$FAILS$KR_ZINASANAI – izlaižu. $KR_ATSTATIIT" fi done done # Pārkopē scenāriju failus FILTRI="" for PAP_LASAAMAIS_VIENS in $PAP_LASAAMAIS; do if [[ "$PAP_LASAAMAIS_VIENS" == "odt" ]]; then FILTRI=" -e MaxImageResolution=150 " elif [[ "$PAP_LASAAMAIS_VIENS" == "odg" ]]; then FILTRI=" -e MaxImageResolution=600 " elif [[ "$PAP_LASAAMAIS_VIENS" == "odp" ]]; then FILTRI=" -e ExportNotesPages=True -e ExportOnlyNotesPages=True -e MaxImageResolution=200 " else FILTRI="" fi for LASAAMAIS in $(find $NOKURIENES -iname "*.$PAP_LASAAMAIS_VIENS"); do TIKAI_VAARDS=${LASAAMAIS%.*} TIKAI_VAARDS_GALA=$(echo $TIKAI_VAARDS | sed -e "s@$NOKURIENES@$UZKURIENI@") TIKAI_CELS_GALA=${TIKAI_VAARDS_GALA%/*} FAILS=$TIKAI_VAARDS_GALA.$PAP_LASAAMAIS_PUB if [ $(CompareTime "$FAILS" "$LASAAMAIS") -gt 0 ]; then echo -e "$KR_DARBOJOS$LASAAMAIS$KR_ATSTATIIT" echo -e " -> $FAILS" mkdir -p $TIKAI_CELS_GALA unoconv -f pdf -o $FAILS \ -e SelectPdfVersion=2 -e UseTaggedPDF=True -e PDFUACompliance=True \ -e ReduceImageResolution=True -e Quality=92 \ -e InitialView=1 \ -e EnableCopyingOfContent=True \ $FILTRI \ $LASAAMAIS else echo -e "$KR_ZINASANAI Ir jau jaunāks $KR_VAARDS$FAILS$KR_ZINASANAI – izlaižu. $KR_ATSTATIIT" fi done done if [ -f "$0.pl" ]; then perl "$0.pl" no=$NOKURIENES uz=$UZKURIENI kp=$KOPDIREKTORIJA fi