>
> If you are the person doing the coding, I have no problem with you
> choosing either tinytag or mutagen. The person doing the actual work
> gets a say. If we hit a wall when testing one, we'll just switch to the
> other.


OK.  Expect to see emms-info-tinytag.el within a couple of weeks then...

---Fran

On Sun, 3 May 2020 at 04:20, Yoni Rabkin <[email protected]> wrote:

> "Fran Burstall (Gmail)" <[email protected]> writes:
>
> > Another python possibility is tinytag:
> >
> > pip install tinytag
> >
> > python -m tinytag filename.mp3 (or whatever)
> >
> > It supports the following attributes:
> >
> >
> >     tag.album         # album as string
> >     tag.albumartist   # album artist as string
> >     tag.artist        # artist name as string
> >     tag.audio_offset  # number of bytes before audio data begins
> >     tag.bitrate       # bitrate in kBits/s
> >     tag.comment       # file comment as string
> >     tag.composer      # composer as string
> >     tag.disc          # disc number
> >     tag.disc_total    # the total number of discs
> >     tag.duration      # duration of the song in seconds
> >     tag.filesize      # file size in bytes
> >     tag.genre         # genre as string
> >     tag.samplerate    # samples per second
> >     tag.title         # title of the song
> >     tag.track         # track number as string
> >     tag.track_total   # total number of tracks as string
> >     tag.year          # year or data as string
> >
> >
> > Missing from the list of things that emms-print-metadata supplies are
> > performer and the various *sort like artistsort.
> >
> > Positive things:
> >
> > * like mutagen it is pure python and depends on no other libraries
> > * gives answers in the same format for mp3, flac and ogg...
> >
> > ---Fran
>
> Tinytag can also be installed on my completely free system, so that's a
> plus. Here is it's output on my machine (csv option, ignoring
> non-standard fields):
>
> mp3:
>
> album,Verdi: La Traviata
> audio_offset,214874
> title,Prelude - Prelude
> track,1
> disc_total,2
> artist,Wiener Philharmoniker
> track_total,22
> channels,2
> genre,Classical
> albumartist,Anna Netrebko
> filesize,7156596
> composer,Giuseppe Verdi
> year,2005
> duration,216.955533743
> samplerate,44100
> bitrate,256
> disc,1
>
> ogg:
>
> comment,None
> album,CD1
> audio_offset,0
> title,Messiah: Part I, no. 1: Sinfonia
> track,1
> disc_total,None
> artist,George Frideric Handel
> track_total,None
> channels,None
> genre,None
> albumartist,George Frideric Handel; Academy of Ancient Music, Choir of New
> College Oxford, Edward Higginbottom
> filesize,2493516
> composer,George Frideric Handel
> year,2006-10-02
> duration,184.4
> samplerate,44100
> bitrate,109.375
> disc,1
>
> flac:
>
> comment,None
> album,In tempus praesens - Bach, J.S.: Violin Concertos BWV1041 & BWV1042;
> Gubaidulina: Violin Concerto In tempus praesens
> audio_offset,None
> title,1. (Allegro moderato)
> track,1
> disc_total,None
> artist,Anne-Sophie Mutter [Violin] & Trondheim Soloists [Ensemble] &
> Anne-Sophie Mutter [Director]
> track_total,None
> channels,2
> genre,None
> albumartist,None
> filesize,19622498
> composer,None
> year,None
> duration,216.48
> samplerate,44100
> bitrate,708.152095459
> disc,None
>
> If you are the person doing the coding, I have no problem with you
> choosing either tinytag or mutagen. The person doing the actual work
> gets a say. If we hit a wall when testing one, we'll just switch to the
> other.
>
> >
> >
> >
> > On Sat, 2 May 2020 at 13:05, Fran Burstall (Gmail) <
> > [email protected]> wrote:
> >
> >     python-mutagen looks like a possibility but it gives different
> >     output for different filetypes.  This is what it looks like on a
> >     .ogg file
> >
> >     -- /home/timeshift/snapshots/2018-08-31_16-56-03/localhost/usr/
> >     share/cinnamon/sounds/bell.ogg
> >     - Ogg Vorbis, 0.23 seconds, 96000 bps (audio/vorbis)
> >     TITLE=bell
> >     COMMENTS=
> >
> >     I do not have any other filetypes to experiment on (flac?...) but
> >     we would have to at least internally manage ID3 frame names vs
> >     vobis comments etc
> >
> >     ---Fran
> >
> >     On Sat, 2 May 2020 at 04:41, Yoni Rabkin <[email protected]>
> >     wrote:
> >
> >         "Fran Burstall (Gmail)" <[email protected]> writes:
> >
> >         > pyprinttags fails to provide playing-time which
> >         emms-print-metadata
> >         > does get by querying TagLib::AudioProperties.
> >         >
> >         > Is this a show-stopper?
> >
> >         I've just had a look at python-mutagen, which installs
> >         mutagen-inspect. It's output on my machine looks like this
> >         (ignoring the
> >         non-standard PRIV tag):
> >
> >         -- /home/yrk/audio/classical/Verdi__La_Traviata__Netrebko/01
> >         - Prelude - Prelude.mp3
> >         - MPEG 1 layer 3, 256000 bps (CBR?), 44100 Hz, 2 chn, 216.93
> >         seconds (audio/mp3)
> >         APIC= (image/jpeg, 205990 bytes)
> >         COMM==eng=Amazon.com Song ID: 204947184
> >         TALB=Verdi: La Traviata
> >         TCOM=Giuseppe Verdi
> >         TCON=Classical
> >         TCOP=(C) 2005 Deutsche Grammophon GmbH, Hamburg
> >         TDRC=2005
> >         TIT2=Prelude - Prelude
> >         TPE1=Wiener Philharmoniker
> >         TPE2=Anna Netrebko
> >         TPE3=Carlo Rizzi
> >         TPOS=1/2
> >         TRCK=1/22
> >
> >         Do you see mutagen-inspect from python-mutagen as a
> >         candidate?
> >
> >         >     >
> >         >
> >
>    *************************************************************************
> >         >     >     TAGS OF '02. Peter Gunn (live) _ Where's Your
> >         Head At
> >         >     >     (Head-a-Pella).mp3'
> >         >     >
> >         >
> >
>    *************************************************************************
> >         >     >     ALBUM                             = As Heard on
> >         Radio
> >         >     Soulwax,
> >         >     >     Part 2
> >         >     >     ALBUM ARTIST CREDIT               = 2 Many DJ’s
> >         >     >     ALBUMARTIST                       = 2 Many DJ’s
> >         >     >     ALBUMARTISTSORT                   = 2 Many DJ’s
> >         >     >     ARTIST                            = Emerson, Lake
> >         & Palmer
> >         >     /
> >         >     >     Basement Jaxx
> >         >     >     ARTIST CREDIT                     = Emerson, Lake
> >         & Palmer
> >         >     /
> >         >
> >         >     [snip]
> >         >
> >         >     I got something like this:
> >         >
> >         >     ************************************
> >         >     TAGS OF '01 - Prelude - Prelude.mp3'
> >         >     ************************************
> >         >     ALBUM       = Verdi: La Traviata
> >         >     COMMENT     = Amazon.com Song ID: 204947184
> >         >     COPYRIGHT   = (C) 2005 Deutsche Grammophon GmbH,
> >         Hamburg
> >         >     CONDUCTOR   = Carlo Rizzi
> >         >     ARTIST      = Wiener Philharmoniker
> >         >     TITLE       = Prelude - Prelude
> >         >     GENRE       = Classical
> >         >     ALBUMARTIST = Anna Netrebko
> >         >     COMPOSER    = Giuseppe Verdi
> >         >     DATE        = 2005
> >         >     TRACKNUMBER = 1/22
> >         >     DISCNUMBER  = 1/2
> >         >     Unsupported tag elements: PRIV; APIC
> >         >
> >         >     ...which looks easy enough to parse.
> >         >
> >         >     Unfortunately, installing pytaglib on my Trisquel
> >         machine was as
> >         >     much
> >         >     work as emms-print-metadata. It involved manually
> >         downloading
> >         >     pytaglib-0.3.4, then installing cython, then:
> >         >
> >         >     $ python setup.py build
> >         >     $ python setup.py install --user
> >         >
> >         >     But I assume that it is easier on systems with pip, so
> >         this isn't
> >         >     a
> >         >     show-stopper. Moreover, it shows that this can run on a
> >         >     completely free
> >         >     system. If it couldn't then that would be another
> >         show-stopper.
> >         >
> >         >     As an aside: looking at the command line of pyprinttags
> >         I note
> >         >     that
> >         >     we'll have to add the "-b" (batch) option so that
> >         pyprinttags
> >         >     doesn't
> >         >     try to ask the user questions and hang the elisp
> >         process call.
> >         >
> >         >     > Clearly a little parsing would be necessary to get
> >         this into a
> >         >     shape
> >         >     > that emms could work with.
> >         >     >
> >         >     > I see two ways to go with this:
> >         >     >
> >         >     > 1.  write emms-info-pytaglib.el which does the
> >         parsing.
> >         >     >
> >         >     > 2.  write a python version of emms-print-metadata
> >         that is a
> >         >     drop-in
> >         >     > replacement for the C version.
> >         >     >
> >         >     > Both are easy though option 2 is probably easier.
> >         The downside
> >         >     of
> >         >     > option 2 is that we still have a piece of non-elisp
> >         to install
> >         >     in the
> >         >     > user's path.
> >         >     >
> >         >     > Preferences?
> >         >
> >         >     Absolutely option 1, since otherwise we would be
> >         shipping C, C++,
> >         >     Perl,
> >         >     and Python; no thank you. The idea is to let the OS
> >         provide the
> >         >     packages, and let elisp do the rest. This is as opposed
> >         to what
> >         >     we do
> >         >     now, which is: let the OS provide a package, provide
> >         some glue
> >         >     code, and
> >         >     then let elisp do the rest. We are trying to get rid of
> >         the glue.
> >         >
> >         >     I can write an implementation of emms-info-pytaglib and
> >         ping you
> >         >     to test
> >         >     it once I'm done, or you can do that. It really depends
> >         on
> >         >     whether you
> >         >     feel like writing that would be fun for you; your
> >         choice. Thank
> >         >     you
> >         >     nevertheless.
> >         >
> >         >     --
> >         >        "Cut your own wood and it will warm you twice"
> >         >
> >         >
> >         >
> >
> >         --
> >            "Cut your own wood and it will warm you twice"
> >
> >
> >
>
> --
>    "Cut your own wood and it will warm you twice"
>

Reply via email to