emms-help
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: looking forward to Emms 6.0


From: Yoni Rabkin
Subject: Re: looking forward to Emms 6.0
Date: Sat, 02 May 2020 23:20:49 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.91 (gnu/linux)

"Fran Burstall (Gmail)" <address@hidden> 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) <
> address@hidden> 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 <address@hidden>
>     wrote:
>    
>         "Fran Burstall (Gmail)" <address@hidden> 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

[Prev in Thread] Current Thread [Next in Thread]