def write(self,data): failed = [] data = dictools.make_keys_upper(data) try: mutagen_tag = mutagen_modules[self.file_type](self.filename) new_tag = False except: new_tag = True mutagen_tag = mutagen_modules[self.file_type](self.filename) for item in data.keys(): try: frame = self.frames[item] mutagen_tag[frame] = unicode(data[item]) if not new_tag: mutagen_tag.save() else: mutagen_tag.save(self.filename) except KeyError: failed.append(item) return failed
def write(self, data): failed = [] data = dictools.make_keys_upper(data) try: mutagen_tag = mutagen.id3.ID3(self.filename) new_tag = False except: new_tag = True mutagen_tag = mutagen.id3.ID3() for item in data.keys(): try: frame = frames[item] encoding = frame[3] args = [] for argument in frame[2]: if argument == "text": args.append("text='{0}'".format(unicode(str(data[item])), encodings[encoding])) if argument == "desc": user_frame = frames[item][4].replace("$LIBRARYID$", str(self.user_id)) args.append("desc='{0}'".format(unicode(user_frame))) if argument == "lang": args.append("lang='{0}'".format(unicode("eng"))) code = "mutagen_tag.add(mutagen.id3." + frame[0] + "(encoding=" + str(encoding) for argument in args: code += ", " + argument code += "))" exec(code) if not new_tag: mutagen_tag.save() else: mutagen_tag.save(self.filename) except KeyError: failed.append(item) return failed