def website(self): """Look for a URL in the audio metadata, or a Google search if no URL can be found.""" if "website" in self: return self.list("website")[0] for cont in self.list("contact") + self.list("comment"): c = cont.lower() if (c.startswith("http://") or c.startswith("https://") or c.startswith("www.")): return cont elif c.startswith("//www."): return "http:" + cont else: text = "http://www.google.com/search?q=" esc = lambda c: ord(c) > 127 and '%%%x'%ord(c) or c if "labelid" in self: text += ''.join(map(esc, self["labelid"])) else: artist = util.escape("+".join(self("artist").split())) album = util.escape("+".join(self("album").split())) artist = util.encode(artist) album = util.encode(album) artist = "%22" + ''.join(map(esc, artist)) + "%22" album = "%22" + ''.join(map(esc, album)) + "%22" text += artist + "+" + album text += "&ie=UTF8" return text
def to_dump(self): """A string of 'key=value' lines, similar to vorbiscomment output.""" s = [] for k in self.keys(): if isinstance(self[k], int) or isinstance(self[k], long): s.append("%s=%d" % (k, self[k])) elif isinstance(self[k], float): s.append("%s=%f" % (k, self[k])) else: for v2 in self.list(k): if isinstance(v2, str): s.append("%s=%s" % (k, v2)) else: s.append("%s=%s" % (k, util.encode(v2))) s.append("~format=%s" % self.format) s.append("") return "\n".join(s)