From 256cbf9fd558e478e4da11e38ed0c99efd02dc02 Mon Sep 17 00:00:00 2001 From: Adrian Sampson Date: Wed, 23 Nov 2011 17:57:00 -0800 Subject: [PATCH] sync with latest python-musicbrainz-ngs, fixing Unicode queries (#257) --- beets/autotag/musicbrainz3/__init__.py | 18 +++++++++++++----- beets/autotag/musicbrainz3/mbxml.py | 10 +++------- test/rsrc/test.blb | Bin 7168 -> 7168 bytes 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/beets/autotag/musicbrainz3/__init__.py b/beets/autotag/musicbrainz3/__init__.py index c33243301..077bf49af 100644 --- a/beets/autotag/musicbrainz3/__init__.py +++ b/beets/autotag/musicbrainz3/__init__.py @@ -1,8 +1,3 @@ -# This is a copy of changeset e60b5af77 from the python-musicbrainz-ngs -# project: -# https://github.com/alastair/python-musicbrainz-ngs/ -# MIT license; by Alastair Porter and Adrian Sampson - import urlparse import urllib2 import urllib @@ -12,6 +7,7 @@ import time import logging import httplib import xml.etree.ElementTree as etree +from xml.parsers import expat from . import mbxml @@ -378,6 +374,13 @@ def _safe_open(opener, req, body=None, max_retries=8, retry_delay_delta=2.0): # Out of retries! raise NetworkError("retried %i times" % max_retries, last_exc) +# Get the XML parsing exceptions to catch. The behavior chnaged with Python 2.7 +# and ElementTree 1.3. +if hasattr(etree, 'ParseError'): + ETREE_EXCEPTIONS = (etree.ParseError, expat.ExpatError) +else: + ETREE_EXCEPTIONS = (expat.ExpatError) + @_rate_limit def _mb_request(path, method='GET', auth_required=False, client_required=False, args=None, data=None, body=None): @@ -396,6 +399,11 @@ def _mb_request(path, method='GET', auth_required=False, client_required=False, elif client_required: args["client"] = _client + # Encode Unicode arguments using UTF-8. + for key, value in args.items(): + if isinstance(value, unicode): + args[key] = value.encode('utf8') + # Construct the full URL for the request, including hostname and # query string. url = urlparse.urlunparse(( diff --git a/beets/autotag/musicbrainz3/mbxml.py b/beets/autotag/musicbrainz3/mbxml.py index 23999e98c..17e69ad42 100644 --- a/beets/autotag/musicbrainz3/mbxml.py +++ b/beets/autotag/musicbrainz3/mbxml.py @@ -2,9 +2,6 @@ import xml.etree.ElementTree as ET import string import StringIO import logging - -_log = logging.getLogger('python-musicbrainz-ngs') - try: from ET import fixtag except: @@ -28,6 +25,7 @@ except: return "%s:%s" % (prefix, tag), xmlns NS_MAP = {"http://musicbrainz.org/ns/mmd-2.0#": "ws2"} +_log = logging.getLogger("python-musicbrainz-ngs") def make_artist_credit(artists): names = [] @@ -158,10 +156,8 @@ def parse_collection_release_list(rl): def parse_artist_lifespan(lifespan): parts = parse_elements(["begin", "end"], lifespan) - beginval = parts.get("begin", "") - endval = parts.get("end", "") - - return (beginval, endval) + + return parts def parse_artist_list(al): return [parse_artist(a) for a in al] diff --git a/test/rsrc/test.blb b/test/rsrc/test.blb index ff6f9f5926d745f3259ec18ec1ab3ea18dcc491f..cd53d014ef1a5c5d27b62e559adad597e4376e94 100644 GIT binary patch delta 85 zcmZp$Xt0FObK?sLH@($f!D5kYnrSFHAg)T+Kd= W?Be3$jBVwcRTz&jZvM~AC;