beetbox / beets

music library manager and MusicBrainz tagger
http://beets.io/
MIT License
12.77k stars 1.82k forks source link

Automatic fingerprinting fails with chroma plugin #3705

Closed gschmidl closed 3 years ago

gschmidl commented 4 years ago

Problem

When having automatic fingerprinting via chroma enabled, it hard fails on the first file. After import to a network drive (the file name and metadata now usually contains unicode), running beet fingerprint on the same files suddenly works.

Running this command in verbose (-vv) mode:

~ ❯ beet -vv import -t D:\Medien\Musik\aphrodelics\enormis

Led to this problem:

user configuration: C:\Users\gschm\AppData\Roaming\beets\config.yaml
data directory: C:\Users\gschm\AppData\Roaming\beets
plugin paths: c:\Tools\src\wlg\beetsplug
Sending event: pluginload
lyrics: Disabling google source: no API key configured.
library database: M:\lib.db
library directory: M:\
Sending event: library_opened
Sending event: import_begin
Sending event: import_task_created
Sending event: import_task_start
Traceback (most recent call last):
  File "C:\Python38\Scripts\beet-script.py", line 11, in <module>
    load_entry_point('beets', 'console_scripts', 'beet')()
  File "c:\tools\src\beets\beets\ui\__init__.py", line 1267, in main
    _raw_main(args)
  File "c:\tools\src\beets\beets\ui\__init__.py", line 1254, in _raw_main
    subcommand.func(lib, suboptions, subargs)
  File "c:\tools\src\beets\beets\ui\commands.py", line 956, in import_func
    import_files(lib, paths, query)
  File "c:\tools\src\beets\beets\ui\commands.py", line 926, in import_files
    session.run()
  File "c:\tools\src\beets\beets\importer.py", line 329, in run
    pl.run_parallel(QUEUE_SIZE)
  File "c:\tools\src\beets\beets\util\pipeline.py", line 445, in run_parallel
    six.reraise(exc_info[0], exc_info[1], exc_info[2])
  File "c:\python38\lib\site-packages\six.py", line 703, in reraise
    raise value
  File "c:\tools\src\beets\beets\util\pipeline.py", line 312, in run
    out = self.coro.send(msg)
  File "c:\tools\src\beets\beets\util\pipeline.py", line 194, in coro
    func(*(args + (task,)))
  File "c:\tools\src\beets\beets\importer.py", line 1346, in lookup_candidates
    plugins.send('import_task_start', session=session, task=task)
  File "c:\tools\src\beets\beets\plugins.py", line 492, in send
    result = handler(**arguments)
  File "c:\tools\src\beets\beets\plugins.py", line 145, in wrapper
    return func(*args, **kwargs)
  File "c:\tools\src\beets\beetsplug\chroma.py", line 182, in fingerprint_task
    return fingerprint_task(self._log, task, session)
  File "c:\tools\src\beets\beetsplug\chroma.py", line 251, in fingerprint_task
    acoustid_match(log, item.path)
  File "c:\tools\src\beets\beetsplug\chroma.py", line 99, in acoustid_match
    res = acoustid.lookup(API_KEY, fp, duration,
  File "c:\python38\lib\site-packages\acoustid.py", line 238, in lookup
    return _api_request(_get_lookup_url(), params, timeout)
  File "c:\python38\lib\site-packages\acoustid.py", line 167, in __call__
    return self.fun(*args, **kwargs)
  File "c:\python38\lib\site-packages\acoustid.py", line 185, in _api_request
    response = session.post(url, data=params, headers=headers,
  File "c:\python38\lib\site-packages\requests\sessions.py", line 581, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "c:\python38\lib\site-packages\requests_cache\core.py", line 141, in request
    main_key = self.cache.create_key(response.request)
  File "c:\python38\lib\site-packages\requests_cache\backends\base.py", line 220, in create_key
    url, body = self._remove_ignored_parameters(request)
  File "c:\python38\lib\site-packages\requests_cache\backends\base.py", line 206, in _remove_ignored_parameters
    body = parse_qsl(body)
  File "c:\python38\lib\urllib\parse.py", line 715, in parse_qsl
    qs, _coerce_result = _coerce_args(qs)
  File "c:\python38\lib\urllib\parse.py", line 124, in _coerce_args
    return _decode_args(args) + (_encode_result,)
  File "c:\python38\lib\urllib\parse.py", line 108, in _decode_args
    return tuple(x.decode(encoding, errors) if x else '' for x in args)
  File "c:\python38\lib\urllib\parse.py", line 108, in <genexpr>
    return tuple(x.decode(encoding, errors) if x else '' for x in args)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x8b in position 1: ordinal not in range(128)

Here's a link to the music files that trigger the bug (if relevant): every file I've tried does this.

Setup

My configuration (output of beet config) is:

lyrics:
    bing_lang_from: []
    auto: yes
    bing_client_secret: REDACTED
    bing_lang_to:
    google_API_key: REDACTED
    google_engine_ID: REDACTED
    genius_api_key: REDACTED
    fallback:
    force: no
    local: no
    sources:
    - google
    - lyricwiki
    - musixmatch
    - genius
directory: M:/
library: M:/lib.db

paths:
    default: '%the{$albumartist}/[$year] $album%aunique{}/%if{$disc, ${disc}-}$track - $title'
    singleton: Non-Album/$artist/$title
    comp: Compilations/[$year] $album%aunique{}/$disc-$track - $title

replace:
    \\: "\uFF3C"
    /: "\uFF0F"
    \.{3}: "\u2026"
    \.: "\u2024"
    '[\x00-\x1f]': ''
    <: "\uFE64"
    '>': "\uFE65"
    ':': "\uA789"
    '"': "\uFF02"
    \?: "\uFF1F"
    \*: "\u204E"
    \|: "\u2502"
    \s+$: ''
    ^\s+: ''
    ^-: "\u2012"
path_sep_replace: "\uFF0F"
drive_sep_replace: "\uA789"
pluginpath: ['c:/Tools/src/wlg/beetsplug']

plugins:
- alternatives
- convert
- chroma
- discogs
- duplicates
- embedart
- fetchart
- lyrics
- mbsync
- missing
- play
- the
- types
- web
- wlg
alternatives:
    m2s:
        directory: i:/
        formats: mp3
        query: m2s:true
        removable: yes
convert:
    album_art_maxwidth: 300
    never_convert_lossy_files: yes
    dest:
    pretend: no
    link: no
    hardlink: no
    threads: 16
    format: mp3
    id3v23: inherit
    formats:
        aac:
            command: ffmpeg -i $source -y -vn -acodec aac -aq 1 $dest
            extension: m4a
        alac:
            command: ffmpeg -i $source -y -vn -acodec alac $dest
            extension: m4a
        flac: ffmpeg -i $source -y -vn -acodec flac $dest
        mp3: ffmpeg -i $source -y -vn -aq 2 $dest
        opus: ffmpeg -i $source -y -vn -acodec libopus -ab 96k $dest
        ogg: ffmpeg -i $source -y -vn -acodec libvorbis -aq 3 $dest
        wma: ffmpeg -i $source -y -vn -acodec wmav2 -vn $dest
    max_bitrate: 500
    auto: no
    tmpdir:
    quiet: no
    embed: yes

    paths: {}
    no_convert: ''
    copy_album_art: no
embedart:
    auto: no
    ifempty: yes
    remove_art_file: yes
    maxwidth: 0
    compare_threshold: 0
    quality: 0
fetchart:
    auto: no
    minwidth: 0
    maxwidth: 0
    quality: 0
    enforce_ratio: no
    cautious: no
    cover_names:
    - cover
    - front
    - art
    - album
    - folder
    sources:
    - filesystem
    - coverart
    - itunes
    - amazon
    - albumart
    google_key: REDACTED
    google_engine: 001442825323518660753:hrh5ch1gjzm
    fanarttv_key: REDACTED
    lastfm_key: REDACTED
    store_source: no
    high_resolution: no
play:
    command: D:/Programme/foobar2000/foobar2000.exe
    use_folders: no
    relative_to:
    raw: no
    warning_threshold: 100
    bom: no
the:
    the: yes
    a: no
    strip: yes
    format: '{0}, {1}'
    patterns: []
types:
    m2s: bool
    maxcompressed: bool
wlg:
    auto: no
    separator: '; '
    count: 4
    force: no
    whitelist: wlg
discogs:
    apikey: REDACTED
    apisecret: REDACTED
    tokenfile: discogs_token.json
    source_weight: 0.5
    user_token: REDACTED
    separator: ', '
    index_tracks: no
web:
    host: 127.0.0.1
    port: 8337
    cors: ''
    cors_supports_credentials: no
    reverse_proxy: no
    include_paths: no
duplicates:
    album: no
    checksum: ''
    copy: ''
    count: no
    delete: no
    format: ''
    full: no
    keys: []
    merge: no
    move: ''
    path: no
    tiebreak: {}
    strict: no
    tag: ''
chroma:
    auto: yes
missing:
    count: no
    total: no
    album: no
gschmidl commented 4 years ago

Here's what printing 'params' in acoustid.py yields:

{'format': 'json', 'client': '1vOwZtEn', 'duration': 125, 'fingerprint': 'AQADtIm1SAwTRNSFa7-whbTwNcdx1vhuTNtCNNwbxK0k4aegyDr8oBLZY9fxJxR-CU21gyGDkA-aV8HR9fh4XDqewmfhLj9-OItzlGslXDmS_8hyNE9wIWui4ZrSCY16aDpy40fIHDryUTCj488Na5JitHyCZz4q52jOcHgUvEsIJkuFUNyMpyF-XMuDR_Bx5fgSo7wILVl0PMvx1sK0KUcTt8DMHOeDH43DdKhvnIF6o6k64kqSK2CiQ8-OJlSDcrWM51fQ60JzqEyWEMedC9sT6MxIPJcIfUSkPItR_HKOXwz-C9dxHldyB-lFIvFGHEzS47wCL0qioMen6gjlQsuX5nh5HKXEFKaOSpJW6Lh09Dkoqoeq7gFzhMoUqUJznJ2GnWGDkDyqF0pPIpTIo2GVCrGU5HhDQe6R5VlKOPIFM_xRLsR3I8wH7TKysg6eotIRrcrxP9CD8MOpHU-KJtKDPsuDfJIMpWuOSlM8C56ME1p5_AidHGG5QLcQfjOY_DjTjHiSJNmGSwp8Ik8n6Ece5bi0BPsR9oeYNMyCSJJ0PLPw4zsmarSRR_qR5P3wJypOUsIXLXBT9McfBZY2D1dw38jiSUeyvAbYV0G7rMEvwmdxHY6Yo9-O1vBxkXCcHCmj7PhyQ0upIDtxR4fVHleWE-yHR0irydBzRMeNm8aTp0iaSUf640k2vHiO8i22ps1xZQl8Fq5a9IlTPEd8yNkiBpIjIZRzlBKzIbrmodQOZeeP6GOKfvjxaJKIU0yD50iO6Mc7JsWpFBknwnuaBHozCd8iHjnS79Bx5UasPkN3RMpzqD5y5SSOS2o9-DoeD2nSRB90PcgXND5KbcEd-Ij44_nRfGWgcTruOPhV_HB1_NDzhPClCryOCzvjoC_SbHzQ5UHFC3YSlugT4kmDB65a4Uqe4MT9oUk-1FuPG7eJ3R5SjnnReSKc47IE3jC3QHuWrniPPMuFPvCb4MIu3ohm8dAlHbF-WI-NJs6M57hjnBbCLB-kkHtw51ivoLqhyEcOnsdFjNth-UGsHvqFkBKDG5OqJA4-7giT5-hPSL-IXA-aI3ySQN-RHY8-PCkb_PiDtFR2PD0UZxd-hugHPzwqKxHULBMuZywaPkmQjhdRvniUHw9HotI5NP1wXcgdJLvQJOVRPUXzD2dwCm6UB-PSDM-XIelF5Beu4zoe7ccX9EGzJbuEMy9-RKJ1VBEf3HhUCR8PjWwXnMi7LESp5METHj98nMczNcWXo4n4BpVy_Am-hGhOhI8C7UJ4E1_0MfgzbDzxJcd1cEeXyUGYPIfeHLs-vJhf_GBZFVqSZTI098gx5fCLbvlxTsaPLxTyQ0csXUWTLHzg52gZkfCDZ8cfDRdR5Q2cPUXJMsgzGpqV5UhPNM8vjEke4zoTYX_gRz8e5M6JUrkO8ULZZQgTH-GO68ibMUVFfmjw4hmNi2GK_ThiB4mSG78CP_rgaycm8senXLDyY3SO8zDVIJcP_fiDLBmJdjouaT8mRxyD5q2BHPqPsJGuoNn04z3e4cRf3N1gLfWEiJSJ5LnBG2XgSSJRRzTOFX-E-MSW5DGeUNBbNO-x5zJ0NQbvoj_05bg-xB_2Z0FH7XgF6_hexIc-5KKC74N94vzxR8ZzRNThhYdC63Apo2eOBx8vtBB_Bf2CTj-8hvgj-MfXQWR2PBS-fPjwHjF1nOXgbOFxSUfN4_iKPthyxOEHH_xMmNGIXxmcD2PSB6ch9giJ_UMuEteR7T2eH80zTD7y_MIPcfkRfUkNH6fxJeGIW0mPPEuH5NIDfj9KHJWkFE9pCc0jEcz14EFkpTluHvkuhHm2LEEfXMkxOWGR-IOvY7r0GL-IB99h0TJx5TjyHHqqaDNCazmRpsmPrXygH17yoz_4o9lRRjn05ciP5klRnuCS4FRyNJaN8BYFnYyL_Dj6HOdi9McTRwo4vsKTC8kvZMl1oQ-PZwnxK2h2o-GHJ3CXIcmH-IcvfPrxJU-Cz0Kjo8eZ4OKRQ_vl4FyGMOtyfMeTI-cGLc9yI5QuY2oOa9FS4deJK_B3UA8ikT707chzHs2JkimeSXjCC1fwJUfsREWy8WjC40tx7JFjuJKRJzkS_MeH-7hPYl32FE2W9givI3nxD6dwSRJcHXmsI-ktPOtRFs115IT2ISTzDN9xqcGHJkeXSM9xUWzQP2KxPRKaCt9QfSEahT9-5NC6Voi1N0Hn6JjULCma41pu_Dhe_MWVuKgeCc0jLUjcFrGkKMeP5NIRvmie4jv6w-Nx3QjzHsnRXDsqyRsunEdzKSP67Jh3ojkD5j1-NDl6RNeJy4S25MdWJYfjC89BTcuQZ8PeSPjQPMtUXFSH72lRLjmFJpeKxBNzIRZzHDmS_3DH4zuuSyivHv6R90h-9FmE-fgCMhSa5-izCSfxNsQpVJSUrvgHZs_xFs0YhB25QZFkJT5SZdmD6gseohcuBj7eoKlI4rSMyvqQnoPc6Tg39D_0I69hh4nxF79Q_vCLIxeh2chL_MeT7ERvOIxW4ceVojJxPMlkHdfRR9GQOjxUJTu6L4j1Fb9QPoOv46i3FDfejMN3wvuC-MMzdJPxHjmP9njRL_CP8ijDNqi1I5lthDkedvjxoBlJBn0oCUdxYv2LS-iRT8GhiQr8HG9yIf8PW0K1jLiOu9gX_OiHJr50JP-F8AmDC_EHjUUeH_3R9DjzoP5xfIePZDxyHCdaHo6WCx_xJxT6Hm-P3TfyI5mUHGcb9Dl-PFmLikqOMEsVFu8a_EHjPIhkhcev4S8aZt1RPVlT5NohD_FV5CdOaDl6fQAlCCAIEQAAIQYYAw2ggAjEgDEOKECAUAAhBYRBFDCJIGFAOAAEEAICTaigxBCPCBOKCWAIA0g4IgmBSBAAhBACAAsMAQAAIBAgREliAAMMESEQIEAAChVByhHAAAEUEWKQEoQIpAAzCggCQAOSMSGI4Qo5AwRBDAAklTSSOAOApBIwQoQgwgDijAKGA4MEIBIxYYAgiRCiCAAIAIeQUkAgIRCRkDBDEATWYEIgEABIRwBgkhVkgDBCQMI0YIQgpIxQABBJCNGIUsAAMEAaAohwCgkmDIDGCmEUccYQBIwRRQiKhFCACIXAIIAwAAhCiDEBCDDMCUaIUYpQgQwQxBBjEDGAGwOAkMYgZ4hRABEliDECAMOElcAASbAQRBinIKBAAEMBA0oDgZhRDhgimCBAKWQER8ohAAwRShFmINQGGCaAWAZABiQDgFCjGABAEmQsJcoYJYAQAABhgBCAGUCERBA5BBwBmjCEEAAAEAIEIYYY4TABRgABiAIECICQI4Y4gAxj0BiBCADGEKGMAAxIA5glCAArHCFAESGokIQIxwgAiAAAgCLESCfMcUYQRAw1ghKBoICEGeCEZAAAICgwghAHAKJAAKMQAIQYgARhDBGiAAOMCiMAEQQhRBiAQAjDgAOEGMGoIpBZI4BRwAm4FBFIAaGAIkI4gIxQyAiBhALECKMAIdAAAxBFSAFhEBDAEWUBEQgASiQADShgoDGWEGAcAAIIYxAASChADCFAQGOMIc4JAoAATCAApBEAEMGMagQhaAgYCDCNEEAIGaEUMEIJIIwBAAgqlhAAIWKUE8YBYgARSJGQDAEKISMAME4QABwASAHFkCEAAAKMQ1QZgQRABCCEnGJGAMoQIwABAZGyJAjCiIAQOCKIMkwhIQQDTihOCBJUKQAkEQoYATRiCAhiAAAQUIQQEEAAAARASgFADBFSKUCkIoAIIARgQgCEHBEEGmQIUkBJQJQhSBhlHCYA', 'meta': 'recordings releases'}

Here's what printing out 'args' gives me in parse.py:

(b'\x1f\x8b\x08\x00SI$_\x02\xff\x1d\x97I\xd3\xb2<\xb7\x85\xff\xcd39E\x15*(\x0c\xdeA:  ]\x00\x15\'\x16"\xbd\x80\x8a\xd2\xfd\xfa/\xf7\x19R\x90\xec\xac\xb5\xae$\x9b\xf4Ye\xdd\xf7\xbf\xcd\xe8N\xd7/\xe9\xfe=~\x9f\xe4[\xf5\xdd\x7f\x9b\xad\xfc/\xaf\xba"\xfb\xbc>\x15\xff\x02\xf8\x00\x7fi\xbb\t\xc0\x142\'\xd0\x92\x830\x95\xf7pr\xd2\xc7\xbc\x19\xcb_\xe8|\x91\xe3L\xf7\xd9\x12\x1b)\xc9\x8a\x05\x7f\x94\x1e\x1e\xaf\xb1\x9a\xcf\xe6\xcc\x04\x14m7\xc5\xa2\xe3\x06\x08\xc9I1\x98\x9a\x97\xd2\x05\xbf\xb3\xa9\xcd\xcbc\xad\n.\xfd\xaeO}x^p\x1b\xdc\x94rq\x88:\xd1\xf3\xaf\x92\xae\x9f\x00\xc5\x9b}\x82_\x8b$\xe6\xd4\xc0\x9f%\nQ-)\x8a\x93\xc8f\xf55\x16t]\xa5\xb7\xbc\xad\xdd\xd4(\xa2\x91\x0c\xd4l~Z\xe4,\xf6k\xd1\x84\x8b\xfd\xc3\xec\x06g9/\x82\xfe0\xd1\xe3\xe9)z\xf68o\x06K\xb4\xa24\xfc*\xd86\xdc\x0c\x1b\xd2\x0e?\xacr\xec\xa8\xb6\xef\xf7\xcd^j\xde\x81\xb5E\x95\xaf\x08\xae\xf9\x0cp\xfa9\xdb\xf2&\xf7\xf7\xa2\xb9\xbe\xc9r&v\xf6@\xea\x10\xee\xed\x99zfJ\xf3(h<\xfae7\xc3r/\xd3* \xf51\x1b\xcf\xc7\x02\x85\xa7FGM7\xc8\x1aH\x87\t\x1d\xc5w\xd5\xdbY\xb7/\xea\xa7?\xfc.rW\xca\x86u!\x9a\x95\xb8\xc1\xcb<\xef\x8f\xa5\xa8\xe2\xa6\x7f\xf7\xd9\xfbPhki\xf7\xd1;2\xd7\xce\xdc\xea\xdd\x99\xfb\x87\x97\xb7&\xbe<\xfa\ni\xbf\xd5O\xe8\xa3G\xb2Qb?\xdb3\xf9\xf4\xb4\\\x8fj\xf6mf\xc7\x81\xed\xa82\x19\x87\xd0Z\x86b\x9f\xf5_\xca>\xe9g\xf6T\x84\x15\xdb}\x19\x91`\x99_\x0b{\xc3\x0f\xe7&\xb5_\xe7\x9f\x1b<m\x05\xc9{\x9bl^\xf2\rT\x0fC\xd7e\xff\x98\xfay\xed\xc67\\\x87\xb5Q\x05\xa6\xd3\xea\xc1\xf4Rh\xa3t{\x92f\xf2\xbd\x12\xa170\xb5\xcfb\xc7^P`\x9a\xa2w\xf4&i\x1d\xda\xe4\x130v{3\xd9\xdbM\xe6\xf2r\xa3\x81^\x8e\x17\x18\xaav\x9a\xc3k\xbc\xc5\x9b\xc7\xb4S\xea*\x88\xb2e\x04\xf7\xf8$\xea\x87\x8fM\xc6\xa9\xe5\xde\xc5\xfb\xb8\xe7XlF87\x17\x94\x1a\xa8\xad\x0f^\xb9\xf8\xe2\xefE\xf1wfR~2\x9e\xd9\x99\x08\x8b\xc1\xc4\xea\xb3<\xe0\xca\xec\xcci\x95$|\x89U\x12D\xf9^\x12\x9b\xedhT\xaeRm\xb7\xafa3_\xfd\xa7\xa2\xbd\xe5D\xa5\xcf\xd0#\x0feq\x9a\n\xbehM\xafl}Bk\xa5\xf7O\xdb?|\xf7\x9ae\xde^w\xad|\xac\xe7\xc4\xb4h$.X\x16+wo\xa7\x07s8\xbf4\xd8tS\xf7K\xa0\xd1\xaf\xe8\xa1TF\xdd\x05\x07\x953\x16%\x83\xd78;f\xbf\xd67\x96\x179\x08\xdc`\xcbU\xe0>\xc3\xdb.`P\x15\xbd\xb4\xb88X\xb6\xee)y\x08\xb4\x96\xa4[\xc7r\xfd\\\xa4\xe1\xe7\xe7z\xe5\xe9f\xc0\xcd\xcd\xc1k\xe9\xa1\'\xfa,.Z\xc7\xbaG\xb7\xe0n\xac\xbe\x1c\x19\x1a\xda\xc5\xc1\xf3W\x84R\xd3b\xb8\x97\x13)zg\x92\x1d\xaa}\xd4\x08\x1b\xed\xe7\xe9\x87\xcc\xdc19\xa8\xbb\x8ee\x81\x95J\x07Jv5\xda\xf9\xc6\xef\xfc\xe9*\xcf\xb3\x7f\x9a7\xa2\xbbd\xd3\xdf\xae/[\xe5\x01\x9e\xc6]\x13\xceTp\xccao\xcb\x87\xb2\xee\xe0\x1d\x1d\xa1\xd04\xc6w\x927\xd5\xd8\x1f\xdf\xe5BR\xb7\x1b\x1eZ\xed|K!\xd2\x07c|k\r\xb4\xb0.\xbbo\x13H\xc2\xa1\xa8BY(\xbd\xe0(\xd0\x0b\xdf\xe3t\xb7\x04\xbe#0#V\x04\x0f5\xf7\x9bW\xe1\xaf\xc6\xb6\x1e\x16\xa3\xeb\xfc\x10\xca_ax\xeb\xf4\xb6f#:B\xfbw]\xa6\xc4kZ\xbf.\x1fl\xec\xaa\xc8\x98T\x833+;\xdef\xba\xa4\xc5\xc3<\x8e\xbe\xe9\x9e\x98\x17]V\xbc}L\xa8\xddGP\xf0\x02l\x0b\x17\x9a=5\x19f?i\xed\xb3C\x9a^T\xa2\xaf\xe6\xfdG\xecE\x15\x98enN\x90\xe4;\xa3\x8c\x10S\xbc\xfa<]:\xbb:\x1cI\xf0\x92m\x12\x1a\xb5\xaatv\xba:\xe9\xf9\xd2K\x9d\x04_\xa7\xe5\x06Z\xa1\xd4K\xb7\xa4\n:D\xa6D67\xd1\xce\x8b\xf5\x8e\xd7\xd9L\x1f\x9b\x94d\x97%\xd2c\x8f\xe6\x99q\x1c\x84\xd1,\xf3\x9b\x0e\xaf\xda\xe9\x1d\\C*\xaaJ\xc1\xcf\x1bt\xbc\x8f\xcf9\x1c\x12\xef8\x87\x9c\xdbt\xb8D\xe7\xf0h\xac\x85\xbc-\xaeM\x8e\xf0UIs\xcc\x1eL\xf6\xb7)\xd7e\xdaC\xb1\xea\xaf\xf7I\x8eJ\xcf\xb1\x95\xb1&M\xc65\x85\xf1\xe5V\xb0U\xc9d{oF\x9f\xc6U\xa2\xe3\xf5\xea\x17\xa1!\xe8\xee^\xa9\xeevt\xd2\xf2\xb6\x9e\xa4\xb2u\xaa\xadn\xdd\xc2\xb2\x82R\x1b\xe8\x07\x05y\xb7O\x91,i\xab\x0cYw9\xe2%\xde\x05\xae\xb2\xe2\x135S\xef\x96W\xf8\x08[\xf3Q\xf7\xbf$TZ6s\xce\xdf[hxoo0\xf5_\xeft\xa2\xb4\xee2)e\xf9\xce\xd9\x14\xc7\xfcL*30\xe5c\x07\xf5\xed\xa5\x08\x02\x93\xb15t\xb5\x8b@\x04;8\xcbX\xcf"\x07\xde\x1dW\x98\xe5\xd5\x14\x1d\xff>\xf6\xf5M\x94\xef\x850\xc3\xdb\xf6*j\xc6\xe1Rh\xfb[\x99\xcd4\x15d\xcbB\x07\xc9Q\xa5q\x9d\x99r]\x99\x13\x96e\xfc@\xfb\x1dx\xf5\xdb\xcc\x85\xb32~!\xbc\xc1|\x8b\xc2ZP\xca\xb1\xa8\x05;\xbf\xf8g\xce\x11\x0c\x84\xdc\xab\'\xa3\xd66\x9d{)\xee\xae6\xf3=\xefH\xb7\xca\xf2\xbe\xe52\xbb\xc40n\xb3\xdd::\xbd\xccm\x8a\xb7^\x00\xf7i\xa9\x16\x95y\x8b\xec\x1f\xf9f\xec\x10n3C\x11\xd7\x10\x1f\x96\x9bM\xbd4oX\x1e5\x8e\xb1\xe7wV\xa6\xd3\xb3\xd8z\x1e\xf9\x19\xb2Cq^\xab\x96a\x9e\x1b\x8d\xa8/\x94\x8a5I\xd7\x8dD\xb4\xe6\x15>\x7f\xc6\xd8\xfcJ\xa3\xdd\x1e\t\xc9/v3\xbbg\x9d\t\xd4\x1d\xe3\xc3G\xd4\xf9~\x80\xaaZ\x8a\xa19\xcba\xbd\x18\xc6\xfb\x9d`\x07%k\xcb^C\xeb}.Kal\x0eK\xbf\xde\xa4^}2Vw\xa2\x9cV\x9e\xdc<Y\xf7C\x81\xa4\xb1\xc51\x13G\x81\xb1\xd6\xc5\xcb\x91\x9f\xc3{\xc3}T\xfc\x0c\r\xd9\xd4K\xe3`\x85Hi\xc6\xab\xfd\xdc\xf4\xbe\xe0]\xa7n\xb6\xb6\xe5\xb6\x17t\xc3\xdc\xa1\x0bM[C\xa0\xe9\x98{\x9f\xd9\x8c\x04\xb4\x8aV\xdd+\xd9Ur-\xe6\xdf\xc6\xa7\xa4-\xba\xed~\x97\xdc\xceB*\xa4\xfa1U\x17*\xfb\xbfx\xdb\xbb\x89\xaa\x05\xd2#3\xad\x1b\xdcE@\xa9\x9a\xf0 \x1e\xd2r5\x86\xad\xd9Tm\x16\\j\x846\xf9dF\xf9\xc0\xc8yQ\xce5\x92\xc4\xef|0\xb5\xfagZ\xcc\\\x9b\xe0fg\x86p(\xbd\xf8\xb9\xdbjd{\xe6\xfe\x8ft\xd7\xcdx\xff\x98\x02f\xa6\xc6\xa5\x1d\xa8\xd0|=\xf7\xcb\xb4a\xb3\x91i\xb8\xa5A\xb8bG\x9d\xdf)\xd7\xd0d\x97\xc0V\xe7\xe8\xbc\xfa\xde\xd6\x9a=f%\xe8\xab\xfay@\x922T\x05\xd9A\xfbS_m\x1c\xd1\xe8\xf6f\x1d\x1dQ\x9bH\x9b\xd7\xef\x86\xcb\xecf\x9fO?\xab\xc8\xfe\xf2:Fu\xaa}\xf4\xc6\xb23\x8f\xe7\xc9\xc6\xb6\xca\xa4z\xdcO\x823\xef\xfc\x9ak\xea\xd8\x05\x0f\xef\x85\r\xbf\x8e<V+\xf0\xf6\x07\xb3\xdc\xf5u\x83\xe5z#8\xf8\xb9gNf.R\xb0\x95\xed\xc7\xd9\x8c\xf3\x1a)*\x0c\xd3\x9f\x7fU\xbc,\xf0j\xdf\xb3\xbf\xd1E\x0b\x8c\xc3\xf6\xc9\x8eu\xab\x99\xaf\xcc\x9a\xa1\xb3Rv]\x8d\xbf\xbef\xc7\xdb\x8c\xf5\xf7\x0b\x96j4\xc6=S\xc5RP\xb5\x96\x08y\x81\xec2Hd\xa1ZQ\x90\xcf\xce\xe0\xbfNf\x10}\xc6\xc2\xb8\x0e\xb7Y\x1b\xc4\xb8\x84[\xd9\xbfj\x8d\x19\xca\xc1\xf5\xd1\xe2}1d}\x99\xfe`}\xc8z\xebI\xa5O`/\xe3\xdb\xefz/\xdd\x87\xc5N\xc57\x91\xee\xd5\xb2\x94\xbaY;\xa8<jt\xa4sVn\xd3\xf2\xc83\t\x0f\x84\x8d.\x9d\xcfR\x9a\x9d\xfa\xda\x9c=\xfb\xd9\x18\x8f\x9c1U\xf7\xddz\x8e\xcc\xf0\xb7?J\xf5F\xbb\xab\xbe\xd7\xbb\xa3\xb4\xafv\x1a\xce\xb3\xdavv\xd3\xf8C\x82m\xaf\x0f\xd3\x9b\x8d\xba\xf5\xd4\xaef\xc7\x1b\xf2\x94\xaa\xc6\xce\xbb\xdaP\xf9\xf9-q\x93=\xf8\xfd\xd9\xc3\xa7\t;\xb1G\xd1c\x8e\xc7\xed1\x10*\x16*zY\xf9\x1f\xc5\xd09k\xb9\xe2\x9dEkS\x1f+\xf7\xa7\x16\x97\x9b[\x19\xe6G\x16MO\xd0\x14\xd0bt#F\x1dE\x99q\xdb1\x15\xd7k\xef\xc9sN3\xef\x8a\xe7\xc5@\x8f\xc4\xe8\xf7g4\xdfx\x8f\x19\xee\x8dV\xf0va\xce\xf9m#CO\xef*~\n\x9e\xd6\x1e\xab\xe6\xed\xdad8i?%\xf9\x9b\xce\xa3eS\xa6\xd9(\x05Jr\xfdn\x98wz\x86\xb2\xd3\x97\xf8\xa6\x9dd\xf4p\x13\x9eu\xee\x83\'B\x80\x12\x1f\x00\xea\xc71\x98\xb6E\x01jR`\xe2Z\x04\x81\x08\x80\x12\xc6\x0cj\x18\x99T\xd7\x80\x0b\x00!\x80\xa20\xa9\x8a\x19"\x0fA\xd7Bg@\x81XH\xb4ha\x00\xff\x06\x00\x04\xc0`\x83\xbf9!(\x18yV\x00\xd86\t\x88O\t\x00\xa8<\xc1\xa54\x00\x9f*"g\xcb\'\xbdO_\x00\xac\xa8(\x90\x0f\xdc\xc0\x0et*\xf9\xbd\x0c&\x061\x00\xcd3\xe4\r\x06\xaf\xfc\x82t\xf2{\xbf\x98\n\\\xd5\xc0\xd2\x81d\x13\n\xe9\xccW]T\x0cU\xbc(\x054\xf3\xa3\x06\x14\x94!\xd6`\x88\t\x08\xcf1\xa1\x05\x01\x90\xb2\t\x16Myj\n\x0c\x91oS1\xa6~\xf1\xa2\xb3\x0f 4\x11??\xa3\x81\xaf\x92\x80\x04\xf4\xe5\x84\n\xdexP\xac\xa3\x96Di\x1a\xfb\xbc4c~e\x95\x1a\x02\x88\xdf\xfc\x94\x82\x89+E\x15&\x10al\xa3(\xa1Q\xfc\xf2\x0b\x7f\xf2g\x08k\x82u\xa0O.h\xec\xb8\xb8J%\x03\x90\x9b\x80\xb9\xa1\xb6K\x9e)\x00\xc1\x1d\xf8\x0cV\x1d\xb5\xb8a\xc4\x86@\xecqq-\x19.\x8b\xaaE\x10Xg\x9f0\xa5/\x017!(\xb5\x96:\xbe\xae\xa3\x04\x9c\xc1\x15\xc0\xca\xc7\x85\x86j\x1d@@Z\x7f0\xd3>6\xe3?\xb7aY@\x04\xf4\x08\x11\x06\x81\x0c\xe1\x04\xdb\x1a\xf1\xbcx\t\x1e1\x8d\xe3X\n\x01d\x05\x9f\x82?#\x8a|*\xc5R\x01\xe6Z\x84\x15\x1f\x89ub\xe96\x003\x05r\xf1\xe4~~\x0c\xa4\x01\x12\xe8}C}:O\x05\xe0A\x82\x02\xf1\xae\x02\xe5v\x1a\xc5>\x03\xd3\xa6(-\xd8SD\xf4\x0c\x91+\x7fO\x11\x8f\xa8\x04\x06\xb0L\x00,\xdb\xff\x03\xab\x00\xac\xc4P\xe7\xc3]\x1bU6 \xbe_r\xfd|\xd15.\x80Kt[\xef\xe9\x0b^\xa9\x04\xd9\x04ZI\x83\x1a\x05\x89\x0ehC\xa5\x82g\xb4\x80\n\x96\xe0H\x90e\x03\xfa\xe0Ef\xa8\x05@+\t\'\x84\x9c#H\xfc\x02\x04\x15\xffy\x0b\xca\xa2\xc7\xfa\x99\xe8\x80\xbbLi<s\xafQ\t0\xd7\xe1\xeb\xaeMS\xc9\x04=\x00!\x17\xf7\x82\x84[\xaf\xdbI\xe1\x97\t(b\x84\x91\xf3\x07\xb7\x9e\x90\x88\x93eR:\xf1p\x8a\xf7\x93\xa7@\xcfVD\x94\x18\xfe\t\tL\xdd\xe7U-\x1a\xd8\x9c\x17\x89\xf33\x81\x00\x18Z\x83\xfe\x9c\xe6\x827\xfe\xb5\xe0\xce@\x84H\xa7\x9b:\xb09\xe0\x13\x0f\xeb\xaa/&\xa8QE\x81\xef"\x8b\xda\xcdTR\xdf\xc7aU\xba\x08\x9a\x91\xe5\x83\x86\xf8}\x0cB\xc6Y.\xff\xac\xf6#\xfe\xc1\xff\x07\x08\x18\x08\n\r`.\xdb\x8aPC\xfb?\x04Y\xe1\x17\x88\x18\x90\x10\xbd\xf5i\xd4@\xd37\xfd2\x80\xe5\xd3@1\xf8\x97\xf7\x9f6\xf9\xfeW\x0f}\xf7\xaf\xcd\xbe\xc9\x7f\x9f,\xed?\x0f\xfe\xbb;\xfc\xdf\'{f\xc9\x90\r\xff\x03\x15R\xa7\xca\x1a\x0f\x00\x00',)

My best assumption now is that it's a gzipped response, and decoding as latin1 works, but then why is it working as either ASCII or UTF-8 later?

sampsyo commented 4 years ago

Wow, this is pretty weird. It's especially mysterious that it's happening on every file, not just for specific ones… and needless to say, this doesn't come up in testing. Those params look perfectly innocuous… any chance this is coming from a weird or old version of requests that needs to be updated?

gschmidl commented 4 years ago

requests 2.22.0

Also, the weird thing is that it works after I do a beets import, followed by a manual beets fingerprint (auto set to no). It also doesn't happen on WSL2 Ubuntu, so it's a Windows-specific bug.

gschmidl commented 4 years ago

Ok, doing it after import doesn't seem to trigger a web request? That would explain why the web request doesn't fail.

stale[bot] commented 3 years ago

Is this still relevant? If so, what is blocking it? Is there anything you can do to help move it forward?

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.