本文整理汇总了Python中quodlibet.util.string.decode函数的典型用法代码示例。如果您正苦于以下问题:Python decode函数的具体用法?Python decode怎么用?Python decode使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了decode函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: from_dump
def from_dump(self, text):
"""Parses the text created with to_dump and adds the found tags.
Args:
text (bytes)
"""
for line in text.split(b"\n"):
if not line:
continue
parts = line.split(b"=")
key = decode(parts[0])
val = b"=".join(parts[1:])
if key == "~format":
pass
elif key in FILESYSTEM_TAGS:
self.add(key, bytes2fsn(val, "utf-8"))
elif key.startswith("~#"):
try:
self.add(key, int(val))
except ValueError:
try:
self.add(key, float(val))
except ValueError:
pass
else:
self.add(key, decode(val))
示例2: decode_key
def decode_key(key):
"""str if ascii, otherwise decode using utf-8"""
if PY3:
return decode(key)
try:
key.decode("ascii")
except ValueError:
return decode(key)
return key
示例3: parse_taglist
def parse_taglist(data):
"""Parses a dump file like list of tags and returns a list of IRFiles
uri=http://...
tag=value1
tag2=value
tag=value2
uri=http://...
...
"""
stations = []
station = None
for l in data.split(b"\n"):
if not l:
continue
key = l.split(b"=")[0]
value = l.split(b"=", 1)[1]
key = decode(key)
value = decode(value)
if key == "uri":
if station:
stations.append(station)
station = IRFile(value)
continue
san = list(sanitize_tags({key: value}, stream=True).items())
if not san:
continue
key, value = san[0]
if key == "~listenerpeak":
key = "~#listenerpeak"
value = int(value)
if not station:
continue
if isinstance(value, text_type):
if value not in station.list(key):
station.add(key, value)
else:
station[key] = value
if station:
stations.append(station)
return stations
示例4: from_dump
def from_dump(self, text):
"""Parses the text created with to_dump and adds the found tags."""
def decode_key(key):
"""str if ascii, otherwise decode using utf-8"""
try:
key.decode("ascii")
except ValueError:
return decode(key)
return key
for line in text.split("\n"):
if not line:
continue
parts = line.split("=")
key = parts[0]
val = "=".join(parts[1:])
if key == "~format":
pass
elif key.startswith("~#"):
try:
self.add(key, int(val))
except ValueError:
try:
self.add(key, float(val))
except ValueError:
pass
else:
self.add(decode_key(key), decode(val))
示例5: __init__
def __init__(self, filename):
audio = MP4(filename)
self["~format"] = "%s %s" % (
self.format, getattr(audio.info, "codec_description", "AAC"))
self["~#length"] = audio.info.length
self["~#bitrate"] = int(audio.info.bitrate / 1000)
for key, values in audio.items():
if key in self.__tupletranslate:
name = self.__tupletranslate[key]
cur, total = values[0]
if total:
self[name] = u"%d/%d" % (cur, total)
else:
self[name] = unicode(cur)
elif key in self.__translate:
name = self.__translate[key]
if key == "tmpo":
self[name] = "\n".join(map(unicode, values))
elif key.startswith("----"):
self[name] = "\n".join(
map(lambda v: decode(v).strip("\x00"), values))
else:
self[name] = "\n".join(values)
elif key == "covr":
self.has_images = True
self.sanitize(filename)
示例6: __init__
def __init__(self, filename):
with translate_errors():
audio = MP4(filename)
self["~codec"] = audio.info.codec_description
self["~#length"] = audio.info.length
self["~#bitrate"] = int(audio.info.bitrate / 1000)
if audio.info.channels:
self["~#channels"] = audio.info.channels
self["~#samplerate"] = audio.info.sample_rate
self["~#bitdepth"] = audio.info.bits_per_sample
for key, values in audio.items():
if key in self.__tupletranslate:
if values:
name = self.__tupletranslate[key]
cur, total = values[0]
if total:
self[name] = u"%d/%d" % (cur, total)
else:
self[name] = text_type(cur)
elif key in self.__translate:
name = self.__translate[key]
if key == "tmpo":
self[name] = u"\n".join(map(text_type, values))
elif key.startswith("----"):
self[name] = "\n".join(
map(lambda v: decode(v).strip("\x00"), values))
else:
self[name] = "\n".join(values)
elif key == "covr":
self.has_images = True
self.sanitize(filename)
示例7: parse_gstreamer_taglist
def parse_gstreamer_taglist(tags):
"""Takes a GStreamer taglist and returns a dict containing only
numeric and unicode values and str keys."""
merged = {}
for key in tags.keys():
value = tags[key]
# extended-comment sometimes containes a single vorbiscomment or
# a list of them ["key=value", "key=value"]
if key == "extended-comment":
if not isinstance(value, list):
value = [value]
for val in value:
if not isinstance(val, unicode):
continue
split = val.split("=", 1)
sub_key = decode(split[0])
val = split[-1]
if sub_key in merged:
sub_val = merged[sub_key]
if not isinstance(sub_val, unicode):
continue
if val not in sub_val.split("\n"):
merged[sub_key] += "\n" + val
else:
merged[sub_key] = val
elif isinstance(value, Gst.DateTime):
value = value.to_iso8601_string()
merged[key] = value
else:
if isinstance(value, (int, long, float)):
merged[key] = value
continue
if isinstance(value, str):
value = decode(value)
if not isinstance(value, unicode):
value = unicode(value)
if key in merged:
merged[key] += "\n" + value
else:
merged[key] = value
return merged
示例8: __init__
def __init__(self, track):
super(IPodSong, self).__init__()
self.sanitize(gpod.itdb_filename_on_ipod(track))
# String keys
for key in ['artist', 'album', 'title', 'genre', 'grouping',
'composer', 'albumartist']:
# albumartist since libgpod-0.4.2
value = getattr(track, key, None)
if value:
self[key] = decode(value)
# Sort keys (since libgpod-0.5.0)
for key in ['artist', 'album', 'albumartist']:
value = getattr(track, 'sort_' + key, None)
if value:
self[key + 'sort'] = decode(value)
# Numeric keys
for key in ['bitrate', 'playcount']:
value = getattr(track, key)
if value:
self['~#' + key] = value
try:
self["date"] = unicode(track.year)
except AttributeError:
pass
if track.cds:
self["discnumber"] = u"%d/%d" % (track.cd_nr, track.cds)
elif track.cd_nr:
self["discnumber"] = u"%d" % track.cd_nr
if track.tracks:
self['tracknumber'] = u"%d/%d" % (track.track_nr, track.tracks)
elif track.track_nr:
self['tracknumber'] = u"%d" % track.track_nr
for key, value in {
'~#rating': min(1.0, track.rating / 100.0),
'~#length': track.tracklen / 1000.0,
}.items():
if value != 0:
self[key] = value
self['~format'] = u"iPod: %s" % track.filetype
示例9: list_input_plugins
def list_input_plugins(self):
"""
Returns:
List[str]
"""
plugins = []
for plugin in xine_list_input_plugins(self._xine):
if not plugin:
break
plugins.append(decode(plugin))
return plugins
示例10: fsdecode
def fsdecode(s, note=True):
"""Takes a native path and returns unicode for displaying it.
Can not fail and can't be reversed.
"""
if isinstance(s, unicode):
return s
elif note:
return decode(s, _FSCODING)
else:
return s.decode(_FSCODING, 'replace')
示例11: __init__
def __init__(self, track):
super(IPodSong, self).__init__()
self.sanitize(gpod.itdb_filename_on_ipod(track))
# String keys
for key in ["artist", "album", "title", "genre", "grouping", "composer", "albumartist"]:
# albumartist since libgpod-0.4.2
value = getattr(track, key, None)
if value:
self[key] = decode(value)
# Sort keys (since libgpod-0.5.0)
for key in ["artist", "album", "albumartist"]:
value = getattr(track, "sort_" + key, None)
if value:
self[key + "sort"] = decode(value)
# Numeric keys
for key in ["bitrate", "playcount"]:
value = getattr(track, key)
if value:
self["~#" + key] = value
try:
self["date"] = unicode(track.year)
except AttributeError:
pass
if track.cds:
self["discnumber"] = u"%d/%d" % (track.cd_nr, track.cds)
elif track.cd_nr:
self["discnumber"] = u"%d" % track.cd_nr
if track.tracks:
self["tracknumber"] = u"%d/%d" % (track.track_nr, track.tracks)
elif track.track_nr:
self["tracknumber"] = u"%d" % track.track_nr
for key, value in {"~#rating": min(1.0, track.rating / 100.0), "~#length": track.tracklen / 1000.0}.items():
if value != 0:
self[key] = value
self["~format"] = u"iPod: %s" % track.filetype
示例12: __init__
def __init__(self, driver, librarian):
"""May raise PlayerError"""
super(XinePlaylistPlayer, self).__init__()
self.name = "xine"
self.version_info = "xine-lib: " + decode(xine_get_version_string())
self._volume = 1.0
self._handle = XineHandle()
self._supports_gapless = xine_check_version(1, 1, 1) == 1
self._event_queue = None
self._new_stream(driver)
self._librarian = librarian
self._destroyed = False
示例13: _config
def _config(section, option, label, tooltip, getter):
def on_changed(entry, *args):
config.set(section, option, entry.get_text())
entry = UndoEntry()
entry.set_tooltip_text(tooltip)
entry.set_text(decode(config.get(section, option)))
entry.connect("changed", on_changed)
def on_reverted(*args):
config.reset(section, option)
entry.set_text(decode(config.get(section, option)))
revert = Gtk.Button()
revert.add(Gtk.Image.new_from_icon_name(Icons.DOCUMENT_REVERT, Gtk.IconSize.BUTTON))
revert.connect("clicked", on_reverted)
return (Gtk.Label(label=label), entry, revert)
示例14: from_dump
def from_dump(self, text):
"""Parses the text created with to_dump and adds the found tags.
Args:
text (bytes)
"""
def decode_key(key):
"""str if ascii, otherwise decode using utf-8"""
if PY3:
return decode(key)
try:
key.decode("ascii")
except ValueError:
return decode(key)
return key
for line in text.split(b"\n"):
if not line:
continue
parts = line.split(b"=")
key = decode_key(parts[0])
val = b"=".join(parts[1:])
if key == "~format":
pass
elif key in FILESYSTEM_TAGS:
self.add(key, bytes2fsn(val, "utf-8"))
elif key.startswith("~#"):
try:
self.add(key, int(val))
except ValueError:
try:
self.add(key, float(val))
except ValueError:
pass
else:
self.add(key, decode(val))
示例15: test_empty
def test_empty(self):
self.failUnlessEqual(decode(""), "")