pyacoustid
pyacoustid copied to clipboard
Check that argument to `decode_fingerprint` is bytes
hello,
I'm trying to play with pyacoustid but I'm encountering a mistake I can't get past.
I have the same audio recording in mp3 and ogg format on which I run the program fpcalc with the -plain option :
# pacman -S chromaprint
...
Packages (1) chromaprint-1.4.3-1
...
$ pip install --user pyacoustid
...
Successfully installed pyacoustid-1.1.5
$ fpcalc -plain neil.*
AQAAH5ukTWESCRcDJqFToetxRQlKCe7hX8JfpNORrEftTPAfUJRmVJJT9EiYI2SFuwq-HVvMB98adBpzeDzSPMoFzXbwZNagJ8R95CPSaZwAiAAARjkgETAUKQEQU4AoRwAB
AQAAIJukTckUCRcLJqFToWOOKwtKCe7hX8JfpNORrEftTPAfUJRmVJJT9EiYI2SFuwo-5dj-4NwadBpzeDzSPMoFzXbwzBp0JsR95CPSaZyg0wGIAABGOSARMBQpARBgChBmCCAI
in python3, I'm trying this piece of code inspired by https://gist.github.com/lalinsky/1132166 :
import chromaprint
a = 'AQAAH5ukTWESCRcDJqFToetxRQlKCe7hX8JfpNORrEftTPAfUJRmVJJT9EiYI2SFuwq-HVvMB98adBpzeDzSPMoFzXbwZNagJ8R95CPSaZwAiAAARjkgETAUKQEQU4AoRwAB'
A = chromaprint.decode_fingerprint(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/pascal/.local/lib/python3.6/site-packages/chromaprint.py", line 149, in decode_fingerprint
ctypes.byref(algorithm), 1 if base64 else 0
ctypes.ArgumentError: argument 1: <class 'TypeError'>: wrong type
a
does not appear to be base64 encoded :
import base64
base64.b64decode(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.6/base64.py", line 87, in b64decode
return binascii.a2b_base64(s)
binascii.Error: Incorrect padding
what's the mistake I'm making ?
regards, lacsaP.
I guess this is a Python 3 issue and if you pass the fingerprint to decode_fingerprint
as bytes
instead of str
, it will work.
But do you know that you can get the decoded fingerprint from fpcalc
? Just add the -raw
option and then you don't need to use the chromaprint library at all.
yes, it works better with this :
a = b'AQAAH5ukTWESCRcDJqFToetxRQlKCe7hX8JfpNORrEftTPAfUJRmVJJT9EiYI2SFuwq-HVvMB98adBpzeDzSPMoFzXbwZNagJ8R95CPSaZwAiAAARjkgETAUKQEQU4AoRwAB'
thanks and sorry for the inconvenience !
Thanks, @lalinsky!
I'm going to reopen this issue as a reminder that we should add an earlier type check to make it clear what's gone wrong when this happens.