diff --git a/lib/tags/getInfos::ffmpeg b/lib/tags/getInfos::ffmpeg new file mode 100644 index 0000000..d855139 --- /dev/null +++ b/lib/tags/getInfos::ffmpeg @@ -0,0 +1,51 @@ +#!/bin/bash +getInfosffmpeg_version='ffmpeg-1' +tagreaders+=( "$getInfosffmpeg_version" ) +getInfos::ffmpeg() { + tagreader="$getInfosffmpeg_version" + local allinfos=$( + ffprobe -show_streams \ + -i "$sourcepath/$filename" 2>&1 \ + |sed ' + /^Input/,/.* Audio: /{s/ *: */=/} + s/^[[:space:]]*//' + ) + local metadata=$( + echo -e "$allinfos" \ + |sed -n '/Metadata=/,/\[STREAM\]/p' + ) + local fmt_infos=$( + echo -e "$allinfos" \ + |sed -n \ + '/codec_type=audio/,/\[STREAM\]/{ + /^\(sample_rate\|bit_rate\|channels\)=/{ + p + } + }' + ) + local infos="$metadata" + albumartist=$(gettag album_artist) + album=$(gettag album) + artist=$(gettag artist) + composer=$(gettag composer) + genre=$(gettag genre) + performer=$(gettag TOPE) + title=$(gettag title) + tracknum=$(gettag tracknumber) + year=$(gettag year) + expr='^[0-9]*$' + if [ -n "$genre" ] && [[ $genre =~ $expr ]] + then + genre="${id3genres[$genre]}" + fi + infos="$fmt_infos" + channels=$(gettag channels) + rate=$(gettag 'sample_rate') + bitrate=$(gettag 'bit_rate') + if [[ $bitrate == N/A ]] + then + unset bitrate + else + bitrate=$((bitrate / 1000)) + fi +} diff --git a/lib/tags/getTags b/lib/tags/getTags index 6a735df..0774d68 100644 --- a/lib/tags/getTags +++ b/lib/tags/getTags @@ -1,5 +1,5 @@ #!/bin/bash -getTags_version='unknown-2' +getTags_version='unknown-3' tagreaders+=( "$getTags_version" ) getTags() { unset type @@ -16,6 +16,9 @@ getTags() { audio/x-flac) type=FLAC ;; + video/*) + type=ffmpeg + ;; *) extendedtype=$(file -b "$sourcepath/$filename") case "$extendedtype" in