UPGRADE v1.0 : CopierYoutube & MP3 tag detection make video link copied & converted to mp3

This commit is contained in:
fred 2024-04-20 22:27:36 +02:00
parent 70c209682e
commit 6fb0996f89
1 changed files with 68 additions and 44 deletions

View File

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
######################################################################## ########################################################################
# Version: 0.4 # Version: 1.0
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) # License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
######################################################################## ########################################################################
MY_PATH="`dirname \"$0\"`" # relative MY_PATH="`dirname \"$0\"`" # relative
@ -47,10 +47,17 @@ tiddlywiki --load ${INDEX} \
--render '.' 'CopierYoutube.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[CopierYoutube]]' --render '.' 'CopierYoutube.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[CopierYoutube]]'
echo "DEBUG : cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/CopierYoutube.json | jq -r" echo "DEBUG : cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/CopierYoutube.json | jq -r"
## CHEK FOR MP3 TAG
TAGS=()
TAGS=($(cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/CopierYoutube.json | jq -r .[].tags))
echo "TAGS :${#TAGS[@]}: ${TAGS[@]}"
isMP3=$(echo ${TAGS[@] | grep -w "MP3")
## GET USER BROWSER for YOUTUBE COOKIES
BZER=$(xdg-settings get default-web-browser | cut -d '.' -f 1 | cut -d '-' -f 1) ## GET cookies-from-browser
[[ $BZER ]] && BROWSER="--cookies-from-browser $BZER " || BROWSER=""
[[ ! $isLAN ]] && BROWSER=""
BZER=$(xdg-settings get default-web-browser | cut -d '.' -f 1 | cut -d '-' -f 1) ## GET cookies-from-browser
[[ $BZER ]] && BROWSER="--cookies-from-browser $BZER " || BROWSER=""
[[ ! $isLAN ]] && BROWSER=""
################################################################### ###################################################################
## URL EXTRACTION & yt-dlp.cache.${PLAYER} upgrade ## URL EXTRACTION & yt-dlp.cache.${PLAYER} upgrade
for YURL in $(cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/CopierYoutube.json | jq -r '.[].text' | grep 'http'); do for YURL in $(cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/CopierYoutube.json | jq -r '.[].text' | grep 'http'); do
@ -136,41 +143,50 @@ if [[ ! ${TIDDLER} ]]; then
## EXTRA PARAM TO TRY ## EXTRA PARAM TO TRY
# --write-subs --write-auto-subs --sub-langs "fr, en, en-orig" --embed-subs # --write-subs --write-auto-subs --sub-langs "fr, en, en-orig" --embed-subs
/usr/local/bin/yt-dlp -q -f "(bv*[ext=mp4][height<=720]+ba/b[height<=720])" \ if [[ ${isMP3} == "" ]]; then
$BROWSER \ # copying video
--download-archive ${HOME}/.zen/.yt-dlp.list \ /usr/local/bin/yt-dlp -q -f "(bv*[ext=mp4][height<=720]+ba/b[height<=720])" \
-S res,ext:mp4:m4a --recode mp4 --no-mtime --embed-thumbnail --add-metadata \ $BROWSER \
-o "${HOME}/.zen/tmp/yt-dlp/$TITLE.%(ext)s" ${ZYURL} --download-archive ${HOME}/.zen/.yt-dlp.list \
-S res,ext:mp4:m4a --recode mp4 --no-mtime --embed-thumbnail --add-metadata \
-o "${HOME}/.zen/tmp/yt-dlp/$TITLE.%(ext)s" "${ZYURL}"
ZFILE="$TITLE.mp4"
################################################################################ ############################################################################
### ADAPT TO TW RYTHM (DELAY COPY?) ### CHECK RESULT CONVERT MKV TO MP4
echo [[ -s "${HOME}/.zen/tmp/yt-dlp/$TITLE.mkv" ]] \
ZFILE="$TITLE.mp4" && ffmpeg -loglevel quiet -i "${HOME}/.zen/tmp/yt-dlp/$TITLE.mkv" -c:v libx264 -c:a aac "${HOME}/.zen/tmp/yt-dlp/$TITLE.mp4" \
&& rm "${HOME}/.zen/tmp/yt-dlp/$TITLE.mkv"
############################################################################ if [[ ! -s "${HOME}/.zen/tmp/yt-dlp/${ZFILE}" ]]; then
### CHECK RESULT CONVERT MKV TO MP4 echo "No FILE -- TRYING TO RESTORE CACHE FROM TW -- ${ZFILE}"
[[ -s "${HOME}/.zen/tmp/yt-dlp/$TITLE.mkv" ]] \ tiddlywiki --load ${INDEX} \
&& ffmpeg -loglevel quiet -i "${HOME}/.zen/tmp/yt-dlp/$TITLE.mkv" -c:v libx264 -c:a aac "${HOME}/.zen/tmp/yt-dlp/$TITLE.mp4" \ --output ~/.zen/game/players/${PLAYER}/G1CopierYoutube \
&& rm "${HOME}/.zen/tmp/yt-dlp/$TITLE.mkv" --render '.' "$YID.TW.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${ZFILE}"
if [[ ! -s "${HOME}/.zen/tmp/yt-dlp/${ZFILE}" ]]; then if [[ -s ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${YID}.TW.json ]]; then
echo "No FILE -- TRYING TO RESTORE CACHE FROM TW -- ${ZFILE}" rm "${HOME}/.zen/game/players/${PLAYER}/G1CopierYoutube/${ZFILE}.json" 2>/dev/null
tiddlywiki --load ${INDEX} \ cd ${HOME}/.zen/game/players/${PLAYER}/G1CopierYoutube/
--output ~/.zen/game/players/${PLAYER}/G1CopierYoutube \ ln -s "./${YID}.TW.json" "${ZFILE}.json"
--render '.' "$YID.TW.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${ZFILE}" cd -
else
## REMOVE FILE FROM .yt-dlp.list - RETRY NEXT TIME
grep -v -- "$YID" ${HOME}/.zen/.yt-dlp.list > /tmp/.yt-dlp.list
mv /tmp/.yt-dlp.list ${HOME}/.zen/.yt-dlp.list
fi
if [[ -s ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${YID}.TW.json ]]; then continue
rm "${HOME}/.zen/game/players/${PLAYER}/G1CopierYoutube/${ZFILE}.json" 2>/dev/null
cd ${HOME}/.zen/game/players/${PLAYER}/G1CopierYoutube/
ln -s "./${YID}.TW.json" "${ZFILE}.json"
cd -
else
## REMOVE FILE FROM .yt-dlp.list - RETRY NEXT TIME
grep -v -- "$YID" ${HOME}/.zen/.yt-dlp.list > /tmp/.yt-dlp.list
mv /tmp/.yt-dlp.list ${HOME}/.zen/.yt-dlp.list
fi fi
continue else
# copying mp3
echo "TODO..."
/usr/local/bin/yt-dlp -q -x --no-mtime --audio-format mp3 --embed-thumbnail --add-metadata \
$BROWSER \
--download-archive ${HOME}/.zen/.yt-dlp.list \
-o "$HOME/Astroport/${PLAYER}/mp3/%(autonumber)s_%(title)s.%(ext)s" "${ZYURL}"
ZFILE="$TITLE.mp3"
fi fi
echo echo
@ -181,12 +197,12 @@ if [[ ! ${TIDDLER} ]]; then
[[ ! $FILE_BSIZE ]] && echo "SIZE ERROR" && continue [[ ! $FILE_BSIZE ]] && echo "SIZE ERROR" && continue
FILE_SIZE=$(echo "${FILE_BSIZE}" | awk '{ split( "B KB MB GB TB PB" , v ); s=1; while( $1>1024 ){ $1/=1024; s++ } printf "%.2f %s", $1, v[s] }') FILE_SIZE=$(echo "${FILE_BSIZE}" | awk '{ split( "B KB MB GB TB PB" , v ); s=1; while( $1>1024 ){ $1/=1024; s++ } printf "%.2f %s", $1, v[s] }')
echo "$boucle - ${ZFILE} - FILE SIZE = $FILE_SIZE ($FILE_BSIZE octets)" echo "$boucle - ${ZFILE} - FILE SIZE = $FILE_SIZE ($FILE_BSIZE octets)"
echo
espeak "GOOD! Video Number $boucle = $FILE_SIZE" > /dev/null 2>&1
### CREATE GIF ANIM : make_video_gifanim_ipfs.sh ### CREATE GIF ANIM : make_video_gifanim_ipfs.sh
$(${MY_PATH}/../tools/make_video_gifanim_ipfs.sh "${HOME}/.zen/tmp/yt-dlp" "${ZFILE}" | tail -n 1) ## export ANIMH [[ ${isMP3} == "" ]] \
&& $(${MY_PATH}/../tools/make_video_gifanim_ipfs.sh "${HOME}/.zen/tmp/yt-dlp" "${ZFILE}" | tail -n 1) ## export ANIMH
echo "HOP=$HOP echo "HOP=$HOP
ANIMH=$ANIMH ANIMH=$ANIMH
PROBETIME=$PROBETIME PROBETIME=$PROBETIME
@ -211,14 +227,22 @@ if [[ ! ${TIDDLER} ]]; then
CHANNEL=$(/usr/local/bin/yt-dlp $BROWSER --print "%(channel)s" "${ZYURL}" | sed -r 's/\<./\U&/g' | sed 's/ //g') # CapitalGluedWords CHANNEL=$(/usr/local/bin/yt-dlp $BROWSER --print "%(channel)s" "${ZYURL}" | sed -r 's/\<./\U&/g' | sed 's/ //g') # CapitalGluedWords
PLAYLIST=$(/usr/local/bin/yt-dlp $BROWSER --print "%(playlist)s" "${ZYURL}" | sed -r 's/\<./\U&/g' | sed 's/ //g') PLAYLIST=$(/usr/local/bin/yt-dlp $BROWSER --print "%(playlist)s" "${ZYURL}" | sed -r 's/\<./\U&/g' | sed 's/ //g')
EXTRATAG="$CHANNEL $PLAYLIST" EXTRATAG="$CHANNEL $PLAYLIST"
if [[ ${isMP3} == "" ]]; then
## PREPARE VIDEO HTML5 CODE ## PREPARE VIDEO HTML5 CODE
TEXT="<video controls width=100% poster='/ipfs/"${ANIMH}"'> TEXT="<video controls width=100% poster='/ipfs/"${ANIMH}"'>
<source src='/ipfs/"${ILINK}"' type='"${MIME}"'> <source src='/ipfs/"${ILINK}"' type='"${MIME}"'>
</video> </video>
<br> <br>
{{!!filesize}} - {{!!duration}} sec. - vtratio(dur) = {{!!vtratio}} ({{!!dur}}) {{!!filesize}} - {{!!duration}} sec. - vtratio(dur) = {{!!vtratio}} ({{!!dur}})
<br> <br>
<h1><a href='"${ZYURL}"'>"${TITLE}"</a></h1>" <h1><a href='"${ZYURL}"'>"${TITLE}"</a></h1>"
else
TEXT="<audio controls>
<source src='/ipfs/"${ILINK}"' type='"${MIME}"'>
Your browser does not support the audio element.
</audio>"
fi
end=`date +%s` end=`date +%s`
dur=`expr $end - $start` dur=`expr $end - $start`