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