def _save(self): try: audio = _Asf(self.uri) tags = audio.tags except (IOError, AsfError): return False try: for tag in self._deleted_tags: try: del audio[tag] except KeyError: pass self._deleted_tags.clear() except AttributeError: pass for identifier in self.keys_tags(): try: values = self.get(identifier) if not values: raise KeyError except KeyError: continue try: tag = self.__literal_to_tag[identifier] except KeyError: tag = identifier tags[tag] = values audio.save() return True
def _read_tags(self): try: audio = _Asf(self.uri) except AsfError: raise TagParseError for key, values in (audio.tags or {}).iteritems(): try: values = map(unicode, values) self[self.__tag_to_literal[key]] = values except UnicodeDecodeError: pass except KeyError: self[key] = values self._parse_info(audio.info) self[FORMAT] = "WMA" self[ENCODING] = "lossy"