Compare commits
3 commits
Author | SHA1 | Date | |
---|---|---|---|
|
e991578ab6 | ||
|
181376e25a | ||
|
5f38323e7d |
|
@ -1243,9 +1243,8 @@ class _BaseObject(object):
|
|||
# Convert any ints (or whatever) into strings
|
||||
values = map(six.text_type, self._get_params().values())
|
||||
|
||||
return hash(self.network) + hash(six.text_type(type(self)) + "".join(
|
||||
list(self._get_params().keys()) + list(values)
|
||||
).lower())
|
||||
return hash(self.network) + hash(six.text_type(type(self)) + _casefold(
|
||||
"".join(list(self._get_params().keys()) + list(values))))
|
||||
|
||||
def _extract_cdata_from_request(self, method_name, tag_name, params):
|
||||
doc = self._request(method_name, True, params)
|
||||
|
@ -1444,7 +1443,7 @@ class _Chartable(object):
|
|||
self.ws_prefix + method, True, params)
|
||||
|
||||
seq = []
|
||||
for node in doc.getElementsByTagName(chart_kind.lower()):
|
||||
for node in doc.getElementsByTagName(_casefold(chart_kind)):
|
||||
item = chart_type(
|
||||
_extract(node, "artist"), _extract(node, "name"), self.network)
|
||||
weight = _number(_extract(node, "playcount"))
|
||||
|
@ -1534,11 +1533,11 @@ class _Taggable(object):
|
|||
tags_on_server = self.get_tags()
|
||||
|
||||
for tag in tags_on_server:
|
||||
c_old_tags.append(tag.get_name().lower())
|
||||
c_old_tags.append(_casefold(tag.get_name()))
|
||||
old_tags.append(tag.get_name())
|
||||
|
||||
for tag in tags:
|
||||
c_new_tags.append(tag.lower())
|
||||
c_new_tags.append(_casefold(tag))
|
||||
new_tags.append(tag)
|
||||
|
||||
for i in range(0, len(old_tags)):
|
||||
|
@ -1669,11 +1668,10 @@ class _Opus(_BaseObject, _Taggable):
|
|||
def __eq__(self, other):
|
||||
if type(self) != type(other):
|
||||
return False
|
||||
a = self.get_title().lower()
|
||||
b = other.get_title().lower()
|
||||
c = self.get_artist().get_name().lower()
|
||||
d = other.get_artist().get_name().lower()
|
||||
return (a == b) and (c == d)
|
||||
return (_casefold_equal(self.get_title(),
|
||||
other.get_title()) and
|
||||
_casefold_equal(self.get_artist().get_name(),
|
||||
other.get_artist().get_name()))
|
||||
|
||||
def __ne__(self, other):
|
||||
return not self.__eq__(other)
|
||||
|
@ -1847,7 +1845,7 @@ class Artist(_BaseObject, _Taggable):
|
|||
|
||||
def __eq__(self, other):
|
||||
if type(self) is type(other):
|
||||
return self.get_name().lower() == other.get_name().lower()
|
||||
return _casefold_equal(self.get_name(), other.get_name())
|
||||
else:
|
||||
return False
|
||||
|
||||
|
@ -2237,9 +2235,10 @@ class Country(_BaseObject):
|
|||
return self.get_name()
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.get_name().lower() == other.get_name().lower()
|
||||
return _casefold_equal(self.get_name(), other.get_name())
|
||||
|
||||
def __ne__(self, other):
|
||||
# TODO _casefold name?
|
||||
return self.get_name() != other.get_name()
|
||||
|
||||
def _get_params(self): # TODO can move to _BaseObject
|
||||
|
@ -2321,12 +2320,13 @@ class Metro(_BaseObject):
|
|||
return self.get_name() + ", " + self.get_country()
|
||||
|
||||
def __eq__(self, other):
|
||||
return (self.get_name().lower() == other.get_name().lower() and
|
||||
self.get_country().lower() == other.get_country().lower())
|
||||
return (_casefold_equal(self.get_name(), other.get_name()) and
|
||||
_casefold_equal(self.get_country(), other.get_country()))
|
||||
|
||||
def __ne__(self, other):
|
||||
# TODO _casefold name?
|
||||
return (self.get_name() != other.get_name() or
|
||||
self.get_country().lower() != other.get_country().lower())
|
||||
_casefold_not_equal(self.get_country(), other.get_country()))
|
||||
|
||||
def _get_params(self):
|
||||
return {'metro': self.get_name(), 'country': self.get_country()}
|
||||
|
@ -2802,10 +2802,10 @@ class Tag(_BaseObject, _Chartable):
|
|||
return self.get_name()
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.get_name().lower() == other.get_name().lower()
|
||||
return _casefold_equal(self.get_name(), other.get_name())
|
||||
|
||||
def __ne__(self, other):
|
||||
return self.get_name().lower() != other.get_name().lower()
|
||||
return _casefold_not_equal(self.get_name(), other.get_name())
|
||||
|
||||
def _get_params(self):
|
||||
return {self.ws_prefix: self.get_name()}
|
||||
|
@ -3026,9 +3026,10 @@ class Group(_BaseObject, _Chartable):
|
|||
return self.get_name()
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.get_name().lower() == other.get_name().lower()
|
||||
return _casefold_equal(self.get_name(), other.get_name())
|
||||
|
||||
def __ne__(self, other):
|
||||
# TODO _casefold name?
|
||||
return self.get_name() != other.get_name()
|
||||
|
||||
def _get_params(self):
|
||||
|
@ -4123,7 +4124,7 @@ def _extract_events_from_doc(doc, network):
|
|||
def _url_safe(text):
|
||||
"""Does all kinds of tricks on a text to make it safe to use in a url."""
|
||||
|
||||
return url_quote_plus(url_quote_plus(_string(text))).lower()
|
||||
return _casefold(url_quote_plus(url_quote_plus(_string(text))))
|
||||
|
||||
|
||||
def _number(string):
|
||||
|
@ -4154,6 +4155,25 @@ def _unescape_htmlentity(string):
|
|||
return string
|
||||
|
||||
|
||||
def _casefold(s):
|
||||
"""Casefold or lower text for caseless comparison"""
|
||||
try:
|
||||
# casefold new in Python 3.3
|
||||
return s._casefold()
|
||||
except AttributeError:
|
||||
return s.lower()
|
||||
|
||||
|
||||
def _casefold_equal(a, b):
|
||||
"""Casefolded comparison"""
|
||||
return _casefold(a) == _casefold(b)
|
||||
|
||||
|
||||
def _casefold_not_equal(a, b):
|
||||
"""Casefolded comparison"""
|
||||
return _casefold(a) != _casefold(b)
|
||||
|
||||
|
||||
def extract_items(top_items_or_library_items):
|
||||
"""
|
||||
Extracts a sequence of items from a sequence of TopItem or
|
||||
|
|
Loading…
Reference in a new issue