From 251fc37831d3aa07c0e80c07d98f658b9feb56fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Couchet?= Date: Sat, 25 May 2019 10:11:09 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20de=20la=20g=C3=A9n=C3=A9ration=20des=20?= =?UTF-8?q?fichiers=20MP3=20et=20du=20texte=20=C3=A0=20mettre=20dans=20la?= =?UTF-8?q?=20page=20web=20consacr=C3=A9e=20=C3=A0=20l'=C3=A9mission.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- podcasts/scripts/make-all-podcasts.pl | 172 +++++++++++------- .../scripts/make-metadata-image-podcast.sh | 44 ++++- 2 files changed, 146 insertions(+), 70 deletions(-) diff --git a/podcasts/scripts/make-all-podcasts.pl b/podcasts/scripts/make-all-podcasts.pl index 1858a1a..7402473 100755 --- a/podcasts/scripts/make-all-podcasts.pl +++ b/podcasts/scripts/make-all-podcasts.pl @@ -29,6 +29,8 @@ my ($help,$config,$verbose,$dryrun); my $meta_data_script = "lav-outils/podcasts/scripts/make-metadata-image-podcast.sh"; my $verbose; +my $textwebpage="\n\n"; + +binmode(STDOUT, ":utf8"); +print "Pour la page web consacrée à l'émission :\n\n$textwebpage\n\n"; - # hashing - my $command = "sha1sum $source_name.ogg > $source_name.ogg.sha1"; - if($dryrun) { - print "$command\n"; - } else { - my @ret = `$command`; - if($?) { - print "Error while hashing $source_name.ogg\n"; - if($verbose) { - print Dumper @ret; - print Dumper $data; - } - return 0; - } - } } process($config,$verbose,$dryrun); diff --git a/podcasts/scripts/make-metadata-image-podcast.sh b/podcasts/scripts/make-metadata-image-podcast.sh index 22c7e96..e920d88 100755 --- a/podcasts/scripts/make-metadata-image-podcast.sh +++ b/podcasts/scripts/make-metadata-image-podcast.sh @@ -1,6 +1,6 @@ #!/bin/bash - # Copyright (C) 2019 Quentin GIBEAUX +# Copyright (C) 2019 Frédéric Couchet # # This file is part of lav-outils from "April/Libre à vous !" # @@ -19,7 +19,7 @@ usage() { echo "$0 -s source_file -d destination_file -u http://... -t \"title\" -p path/to/ffmpeg/binary"; exit 0; } [ $# -eq 0 ] && usage -while getopts "s:d:u:t:p:h" arg; do +while getopts "s:d:u:t:p:y:h" arg; do case $arg in s) source=${OPTARG} @@ -36,6 +36,10 @@ while getopts "s:d:u:t:p:h" arg; do p) FFmpegBin=${OPTARG} ;; + y) + year=${OPTARG} + ;; + h | *) # Display help. usage exit 0 @@ -55,13 +59,41 @@ if [ ! -f "$FFmpegBin" ]; then fi image="lav-outils/podcasts/images/image-pour-etiqueter-podcast.jpg" -fichiertemp="$(command mktemp -t "tmp.XXXXXXXXXX.ogg")" + +fichiertempogg="$(command mktemp -t "tmp.XXXXXXXXXX.ogg")" +fichiertempmp3="$(command mktemp -t "tmp.XXXXXXXXXX.mp3")" + +text=$(printf "Émission « Libre à vous ! » de l'April diffusée sur radio la « Cause Commune ».\n\nPour en savoir plus https://www.april.org/libre-a-vous et https://cause-commune.fm\n\nAdresse d'origine du fichier audio ${url}\n\nFichier diffusé selon les termes d’au moins une des licences suivantes : licence Art libre version 1.3 ou ultérieure http://artlibre.org/licence/lal/, licence Creative Commons By Sa version 2.0 ou ultérieure http://creativecommons.org/licenses/by-sa/2.0/fr/ et licence GNU FDL version 1.3 ou ultérieure http://www.gnu.org/licenses/fdl-1.3.html.") (echo -en ";FFMETADATA1\nMETADATA_BLOCK_PICTURE=";(i=${image};t=3;m="image/jpeg";eval "w=`identify-im6 "$i"|awk '{g=$3;sub("x"," h=",g);print g;d=$5;gsub(/-.*/,"",d);print " d=" d}'`"; echo -en "\x00\x00\x00\x$(printf '%02x' $t)\x00\x00\x00\x$(printf '%02x' `echo -n "$m"|wc -c`)$m\x00\x00\x00\x00$(printf '%08x' $w|sed 's/../\\x&/g')$(printf '%08x' $h|sed 's/../\\x&/g')$(printf '%08x' $d|sed 's/../\\x&/g')\x00\x00\x00\xff$(printf '%08x' `stat -c '%s' "$i"`|sed 's/../\\x&/g')";cat "$i")|base64 --wrap=0) > i.meta -${FFmpegBin} -y -i ${source} -acodec copy -map 0:0 -map_metadata -1 -metadata title="${title}" -metadata copyright="Diffusée selon les termes d’au moins une des licences suivantes : licence Art libre version 1.3 ou ultérieure http://artlibre.org/licence/lal/, licence Creative Commons By Sa version 2.0 ou ultérieure http://creativecommons.org/licenses/by-sa/2.0/fr/ et licence GNU FDL version 1.3 ou ultérieure http://www.gnu.org/licenses/fdl-1.3.html" -metadata artist="April - Cause Commune" -metadata contact="${url}" ${fichiertemp} +# Generation du fichier OGG avec l'image de pochette (cover) et les métadonnées +${FFmpegBin} -y -i ${source} -acodec copy -map 0:0 -map_metadata -1 -metadata title="${title}" -metadata license="Diffusée selon les termes d’au moins une des licences suivantes : licence Art libre version 1.3 ou ultérieure http://artlibre.org/licence/lal/, licence Creative Commons By Sa version 2.0 ou ultérieure http://creativecommons.org/licenses/by-sa/2.0/fr/ et licence GNU FDL version 1.3 ou ultérieure http://www.gnu.org/licenses/fdl-1.3.html Pour vérifier voir https://www.april.org/libre-a-vous" -metadata artist="April - Cause Commune" -metadata copyright="April - Cause Commune" -metadata genre="Podcast" -metadata contact="https://april.org/libre-a-vous" -metadata description="${text}" ${fichiertempogg} -${FFmpegBin} -y -i ${fichiertemp} -i i.meta -acodec copy -map 0:0 -map_metadata 1 ${destination} +${FFmpegBin} -y -i ${fichiertempogg} -i i.meta -acodec copy -map 0:0 -map_metadata 1 ${destination}.ogg -rm ${fichiertemp} +# Generation du fichier MP3 avec conservation de l'image de pochette (cover), des métadonnées en deux passes + +# Conservation de l'image de pochette (cover) et des métadonnées + +${FFmpegBin} -y -i ${destination}.ogg -map_metadata 0:s:0 ${fichiertempmp3} + +# Passe pour avoir le champ Duration dans le fichier (qui n'est pas présent suite à la conversion de OGG en MP3) + +${FFmpegBin} -y -i ${fichiertempmp3} -acodec copy ${destination}.mp3 + +# Mise à jour des métadonnées pour tenir compte des métadonnées MP3 + +eyeD3 --user-text-frame="LICENSE:" ${destination}.mp3 + +eyeD3 --user-text-frame="comment:" ${destination}.mp3 + +eyeD3 -c "`echo "${text}"|sed '1,$s/.ogg/.mp3/'`" ${destination}.mp3 + +eyeD3 --user-text-frame="WOAF:`echo ${url%.ogg}.mp3`" ${destination}.mp3 + +eyeD3 --text-frame="TCOP:${year} April - Cause Commune Fichier diffusé selon les termes d’au moins une des licences suivantes : licence Art libre version 1.3 ou ultérieure http://artlibre.org/licence/lal/, licence Creative Commons By Sa version 2.0 ou ultérieure http://creativecommons.org/licenses/by-sa/2.0/fr/ et licence GNU FDL version 1.3 ou ultérieure http://www.gnu.org/licenses/fdl-1.3.html. Pour vérifier voir https://www.april.org/libre-a-vous" ${destination}.mp3 + +rm ${fichiertempogg} +rm ${fichiertempmp3} rm i.meta