Help trying to extract some data
from sabreW4K3@lemmy.tf to python@programming.dev on 12 Jan 2024 14:31
https://lemmy.tf/post/3288922
from sabreW4K3@lemmy.tf to python@programming.dev on 12 Jan 2024 14:31
https://lemmy.tf/post/3288922
In my file, I have
from mutagen.id3 import ID3 tags = ID3(mp3_file)
Now if I do print(tags.keys())
It informs me that there’s a TXXX:FMPS_Rating_Amarok_Score
But when I attempt to print(tags[“TXXX:FMPS_Rating_Amarok_Score”])
It says there’s a KeyError. What am I doing wrong?
#python
threaded - newest
I suspect your ‘tags’ is not a dict object, but some extension of it. Lookup its type, or the documentation of the library you are using for how to retrieve values from an ID3 object.
Looking at the docs, it looks like it’s an instance of
ID3Tags
, which appears to be based on couple of helper classesmutagen._util.DictProxy
andmutagen._tags.Tags
, whereDictProxy
(and its baseDictMixin
) provides the dict-like interface. Underneath that, it looks like it’s storing the actual values in a simpledict
(DictProxy.__dict
) and proxying to that.I’m not seeing anything obvious that would muck with the incoming lookup key anywhere in
ID3Tags
orDictProxy.__getitem__
or any of the other base classes.I have to jump off to pack for a trip, but might try this out later in a live shell session to see if there’s something odd going on with the API.
In the meantime, OP, are you positive you were looking at the same file each time? Was this in a script or in a live Python shell session?
For testing purposes, same file every time, this one: file.coffee/u/IxKmfKfUwgPybq_vv8YJc.mp3
So I tried all the different methods you mentioned but everyone fails and so when I took a deep breath, I figured that I’m probably not understanding properly how it works.
I can say this without a doubt though, the needless complexity regarding these rating tags is stupid. I don’t understand why people thought this made sense. It’s illogical!
This is strange. I tried your snippet with your file and it works for me:
I’m getting 0.66 when I do get a rating. But I’m definitely not getting that to print. Here’s the full file
Dict keys are case sensitive in python. In your code I can see the key you’ve used has a capital M in Amarok. Maybe that’s the issue here
Thanks that was really helpful