def __setitem__(self, key, values): """Set a key's value or values. Setting a value overwrites all old ones. The value may be a list of Unicode or UTF-8 strings, or a single Unicode or UTF-8 string. """ if not isinstance(values, list): values = [values] try: del (self[key]) except KeyError: pass for value in values: if key in _standard_attribute_names: value = text_type(value) elif not isinstance(value, ASFBaseAttribute): if isinstance(value, string_types): if PY2 or isinstance(value, text_type): value = ASFUnicodeAttribute(value) elif isinstance(value, bool): value = ASFBoolAttribute(value) elif isinstance(value, int): value = ASFDWordAttribute(value) elif isinstance(value, long): value = ASFQWordAttribute(value) self.append((key, value))
def __setitem__(self, key, values): """Set a key's value or values. Setting a value overwrites all old ones. The value may be a list of Unicode or UTF-8 strings, or a single Unicode or UTF-8 string. """ if not isinstance(values, list): values = [values] try: del(self[key]) except KeyError: pass for value in values: if key in _standard_attribute_names: value = text_type(value) elif not isinstance(value, ASFBaseAttribute): if isinstance(value, string_types): if PY2 or isinstance(value, text_type): value = ASFUnicodeAttribute(value) elif isinstance(value, bool): value = ASFBoolAttribute(value) elif isinstance(value, int): value = ASFDWordAttribute(value) elif isinstance(value, long): value = ASFQWordAttribute(value) self.append((key, value))
def __get_genres(self): genres = [] import re genre_re = re.compile(r"((?:\((?P<id>[0-9]+|RX|CR)\))*)(?P<str>.+)?") for value in self.text: # 255 possible entries in id3v1 if value.isdigit() and int(value) < 256: try: genres.append(self.GENRES[int(value)]) except IndexError: genres.append(u"Unknown") elif value == "CR": genres.append(u"Cover") elif value == "RX": genres.append(u"Remix") elif value: newgenres = [] genreid, dummy, genrename = genre_re.match(value).groups() if genreid: for gid in genreid[1:-1].split(")("): if gid.isdigit() and int(gid) < len(self.GENRES): gid = text_type(self.GENRES[int(gid)]) newgenres.append(gid) elif gid == "CR": newgenres.append(u"Cover") elif gid == "RX": newgenres.append(u"Remix") else: newgenres.append(u"Unknown") if genrename: # "Unescaping" the first parenthesis if genrename.startswith("(("): genrename = genrename[1:] if genrename not in newgenres: newgenres.append(genrename) genres.extend(newgenres) return genres
def __lt__(self, other): return text_type(self) < other
def __eq__(self, other): return text_type(self) == other
def __bytes__(self): return text_type(self).encode('utf-8')
def __eq__(self, other): if isinstance(other, bytes): return bytes(self) == other elif isinstance(other, text_type): return text_type(self) == other return self.text == other
def _pprint(self): return text_type(self.count)