From 2b87c4159a016af5a9f384c50cfeac9723bdbf4e Mon Sep 17 00:00:00 2001 From: Vincent Riquer Date: Tue, 30 Apr 2013 00:38:57 +0200 Subject: [PATCH] use ffmpeg for MP3, MPC, and unknown file-type tags --- lib/tags/getInfos::APE | 55 ------------------------------------- lib/tags/getInfos::MP3 | 27 ------------------ lib/tags/getRateChannelMPC | 16 ----------- lib/tags/getRateChannelSoxi | 5 ---- lib/tags/getTags | 19 ++----------- 5 files changed, 3 insertions(+), 119 deletions(-) delete mode 100644 lib/tags/getInfos::APE delete mode 100644 lib/tags/getInfos::MP3 delete mode 100644 lib/tags/getRateChannelMPC delete mode 100644 lib/tags/getRateChannelSoxi diff --git a/lib/tags/getInfos::APE b/lib/tags/getInfos::APE deleted file mode 100644 index 66f2a29..0000000 --- a/lib/tags/getInfos::APE +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/bash -getInfosAPE_version='APE-1' -tagreaders+=( "$getInfosAPE_version" ) -getInfos::APE() { - # I was not able to find a decent cli tool to read APE tags. - # This is raw but works for the very few MusePack files I got. - # - # Please tell me if you know of any good tool. - tagreader="$getInfosAPE_version" - IFS='=' - while read tag value - do - IFS="$oldIFS" - case $tag in - [Aa][Ll][Bb][Uu][Mm]' '[Aa][Rr][Tt][Ii][Ss][Tt]) - albumartist="$value" - ;; - [Aa][Rr][Tt][Ii][Ss][Tt]) - artist="$value" - ;; - [Yy][Ee][Aa][Rr]) - year="$value" - ;; - [Aa][Ll][Bb][Uu][Mm]) - album="$value" - ;; - [Tt][Ii][Tt][Ll][Ee]) - title="$value" - ;; - [Tt][Rr][Aa][Cc][Kk]) - tracknum="$value" - ;; - [Gg][Ee][Nn][Rr][Ee]) - genre="$value" - ;; - [Cc][Oo][Mm][Pp][Oo][Ss][Ee][Rr]) - composer="$value" - ;; - [Pp][Ee][Rr][Ff][Oo][Rr][Mm][Ee][Rr]) - performer="$value" - ;; - *) - ;; - esac - IFS='=' - done < <( - IFS="$oldIFS" - sed \ - 's/APETAGEX/\n/;s/[\x00\-\x1F]\x00\+/\n/g;s/\x00/=/g' \ - "$sourcepath/$filename" \ - | egrep -i \ - '^(Album Artist|Artist|Year|Album|Title|Track|Genre|Composer|Performer)=' - ) - IFS="$oldIFS" -} diff --git a/lib/tags/getInfos::MP3 b/lib/tags/getInfos::MP3 deleted file mode 100644 index 87c4d4f..0000000 --- a/lib/tags/getInfos::MP3 +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -getInfosMP3_version='ID3-3' -tagreaders+=( "$getInfosMP3_version" ) -getInfos::MP3() { - tagreader="$getInfosMP3_version" - infos=$( - soxi "$sourcepath/$filename" 2>/dev/null \ - | sed 's/ *: /=/' - ) - album=$(gettag album) - artist=$(gettag artist) - genre=$(gettag genre) - title=$(gettag title) - tracknum=$(gettag tracknumber) - year=$(gettag year) - expr='^[0-9]*$' - if [[ $genre =~ $expr ]] - then - genre="${id3genres[$genre]}" - fi - infos="${infos/: /=}" - channels=$(gettag channels) - rate=$(gettag 'sample rate') - bitrate=$(gettag 'bit rate') - bitrate=${bitrate%%.*} - bitrate=${bitrate%k} -} diff --git a/lib/tags/getRateChannelMPC b/lib/tags/getRateChannelMPC deleted file mode 100644 index 14b28ba..0000000 --- a/lib/tags/getRateChannelMPC +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -getRateChannelMPC() { - while read key value garbage - do - case $key in - 'samplerate:') - rate=$value - ;; - 'channels:') - channels=$value - ;; - esac - done < <( - mpcdec "$sourcepath/$filename" -i 2>&1 - ) -} diff --git a/lib/tags/getRateChannelSoxi b/lib/tags/getRateChannelSoxi deleted file mode 100644 index 91db5fe..0000000 --- a/lib/tags/getRateChannelSoxi +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -getRateChannelSoxi() { - rate=$(soxi -r "$sourcepath/$filename" 2>/dev/null) - channels=$(soxi -c "$sourcepath/$filename" 2>/dev/null) -} diff --git a/lib/tags/getTags b/lib/tags/getTags index 0774d68..3f6d9e1 100644 --- a/lib/tags/getTags +++ b/lib/tags/getTags @@ -1,11 +1,11 @@ #!/bin/bash -getTags_version='unknown-3' +getTags_version='unknown-4' tagreaders+=( "$getTags_version" ) getTags() { unset type case "$mimetype" in audio/mpeg) - type=MP3 + type=ffmpeg ;; 'application/ogg opus') type=Opus @@ -20,20 +20,7 @@ getTags() { type=ffmpeg ;; *) - extendedtype=$(file -b "$sourcepath/$filename") - case "$extendedtype" in - *' ID3 '*) - type=MP3 - ;; - *'Musepack '*) - getRateChannelMPC - tryAPE - ;; - *) - getRateChannelSoxi - tryAPE - ;; - esac + type=ffmpeg ;; esac if [ -n "$type" ]