def test_XDOR_TDOR_Conversions(): test_file = "/tmp/xdortdrc.id3" tag = Tag() # 2.3 frames to 2.4 frame = frames.DateFrame(b"XDOR", "1990-06-24") tag.frame_set[b"XDOR"] = frame try: tag.save(test_file) # v2.4 is the default tag = eyed3.load(test_file).tag assert tag.version == ID3_V2_4 assert len(tag.frame_set) == 1 del tag.frame_set[b"TDOR"] assert len(tag.frame_set) == 0 finally: os.remove(test_file) tag = Tag() # 2.4 frames to 2.3 frame = frames.DateFrame(b"TDRC", "2012-10-21") tag.frame_set[frame.id] = frame try: tag.save(test_file, version=eyed3.id3.ID3_V2_3) tag = eyed3.load(test_file).tag assert tag.version == ID3_V2_3 assert len(tag.frame_set) == 2 del tag.frame_set[b"TYER"] del tag.frame_set[b"TDAT"] assert len(tag.frame_set) == 0 finally: os.remove(test_file)
def test_XDOR_TDOR_Conversions(): test_file = "/tmp/xdortdrc.id3" tag = Tag() # 2.3 frames to 2.4 frame = frames.DateFrame(b"XDOR", "1990-06-24") tag.frame_set[b"XDOR"] = frame try: tag.save(test_file) # v2.4 is the default tag = eyed3.load(test_file).tag assert tag.version == ID3_V2_4 assert len(tag.frame_set) == 1 del tag.frame_set[b"TDOR"] assert len(tag.frame_set) == 0 finally: os.remove(test_file) tag = Tag() # 2.4 frames to 2.3 frame = frames.DateFrame(b"TDRC", "2012-10-21") tag.frame_set[frame.id] = frame try: tag.save(test_file, version=eyed3.id3.ID3_V2_3) tag = eyed3.load(test_file).tag assert tag.version == ID3_V2_3 assert len(tag.frame_set) == 2 del tag.frame_set[b"TYER"] del tag.frame_set[b"TDAT"] assert len(tag.frame_set) == 0 finally: os.remove(test_file)
def _save_audio_tag(cls, audio_file, title, artist, album, track, disc): tag = audio_file.tag if (tag is None): audio_file.initTag() tag = audio_file.tag tag.title = title tag.artist = artist tag.album = album tag.album_artist = artist tag.track_num = (0, track) tag.disc_num = (0, disc) tag.save() # 打印对象 # @staticmethod # def print_object(obj): # print "----------------------------------------------------" # print '\n'.join(['%s:%s' % item for item in obj.__dict__.items()]) # 打印声音文件信息 # @staticmethod # def print_audio_tag(audio_file): # tag = audio_file.tag # print "----------------------------------------------------" # print 'version:' + str(tag.version) + ', cmp:' + str(cmp(ID3_V2_3, tag.version) == 0) # print 'title=' + str(tag.title) # print 'artist=' + str(tag.artist) # print 'album=' + str(tag.album) # print 'album_artist=' + str(tag.album_artist) # print 'track_num=' + str(tag.track_num) # print 'disc_num=' + str(tag.disc_num)
def testSortOrderConversions(): test_file = "/tmp/soconvert.id3" tag = Tag() # 2.3 frames to 2.4 for fid in [b"XSOA", b"XSOP", b"XSOT"]: frame = frames.TextFrame(fid) frame.text = fid.decode("ascii") tag.frame_set[fid] = frame try: tag.save(test_file) # v2.4 is the default tag = eyed3.load(test_file).tag assert (tag.version == ID3_V2_4) assert (len(tag.frame_set) == 3) del tag.frame_set[b"TSOA"] del tag.frame_set[b"TSOP"] del tag.frame_set[b"TSOT"] assert (len(tag.frame_set) == 0) finally: os.remove(test_file) tag = Tag() # 2.4 frames to 2.3 for fid in [b"TSOA", b"TSOP", b"TSOT"]: frame = frames.TextFrame(fid) frame.text = unicode(fid) tag.frame_set[fid] = frame try: tag.save(test_file, version=eyed3.id3.ID3_V2_3) tag = eyed3.load(test_file).tag assert (tag.version == ID3_V2_3) assert (len(tag.frame_set) == 3) del tag.frame_set[b"XSOA"] del tag.frame_set[b"XSOP"] del tag.frame_set[b"XSOT"] assert (len(tag.frame_set) == 0) finally: os.remove(test_file)
def testSortOrderConversions(): test_file = "/tmp/soconvert.id3" tag = Tag() # 2.3 frames to 2.4 for fid in [b"XSOA", b"XSOP", b"XSOT"]: frame = frames.TextFrame(fid) frame.text = fid.decode("ascii") tag.frame_set[fid] = frame try: tag.save(test_file) # v2.4 is the default tag = eyed3.load(test_file).tag assert (tag.version == ID3_V2_4) assert (len(tag.frame_set) == 3) del tag.frame_set[b"TSOA"] del tag.frame_set[b"TSOP"] del tag.frame_set[b"TSOT"] assert (len(tag.frame_set) == 0) finally: os.remove(test_file) tag = Tag() # 2.4 frames to 2.3 for fid in [b"TSOA", b"TSOP", b"TSOT"]: frame = frames.TextFrame(fid) frame.text = str(fid) tag.frame_set[fid] = frame try: tag.save(test_file, version=eyed3.id3.ID3_V2_3) tag = eyed3.load(test_file).tag assert (tag.version == ID3_V2_3) assert (len(tag.frame_set) == 3) del tag.frame_set[b"XSOA"] del tag.frame_set[b"XSOP"] del tag.frame_set[b"XSOT"] assert (len(tag.frame_set) == 0) finally: os.remove(test_file)
def test_TSST_Conversions(): test_file = "/tmp/tsst.id3" tag = Tag() # 2.4 TSST to 2.3 TIT3 tag.frame_set.setTextFrame(b"TSST", u"Subtitle") try: tag.save(test_file) # v2.4 is the default tag = eyed3.load(test_file).tag assert tag.version == ID3_V2_4 assert len(tag.frame_set) == 1 del tag.frame_set[b"TSST"] assert len(tag.frame_set) == 0 tag.frame_set.setTextFrame(b"TSST", u"Subtitle") tag.save(test_file, version=eyed3.id3.ID3_V2_3) tag = eyed3.load(test_file).tag assert b"TXXX" in tag.frame_set txxx = tag.frame_set[b"TXXX"][0] assert txxx.text == u"Subtitle" assert txxx.description == u"Subtitle (converted)" finally: os.remove(test_file)
def test_TSST_Conversions(): test_file = "/tmp/tsst.id3" tag = Tag() # 2.4 TSST to 2.3 TIT3 tag.frame_set.setTextFrame(b"TSST", u"Subtitle") try: tag.save(test_file) # v2.4 is the default tag = eyed3.load(test_file).tag assert_equal(tag.version, ID3_V2_4) assert_equal(len(tag.frame_set), 1) del tag.frame_set[b"TSST"] assert_equal(len(tag.frame_set), 0) tag.frame_set.setTextFrame(b"TSST", u"Subtitle") tag.save(test_file, version=eyed3.id3.ID3_V2_3) tag = eyed3.load(test_file).tag assert_true(b"TXXX" in tag.frame_set) txxx = tag.frame_set[b"TXXX"][0] assert_equal(txxx.text, u"Subtitle") assert_equal(txxx.description, u"Subtitle (converted)") finally: os.remove(test_file)
def test_TSST_Conversions(): test_file = "/tmp/tsst.id3" tag = Tag() # 2.4 TSST to 2.3 TIT3 tag.frame_set.setTextFrame(b"TSST", "Subtitle") try: tag.save(test_file) # v2.4 is the default tag = eyed3.load(test_file).tag assert tag.version == ID3_V2_4 assert len(tag.frame_set) == 1 del tag.frame_set[b"TSST"] assert len(tag.frame_set) == 0 tag.frame_set.setTextFrame(b"TSST", "Subtitle") tag.save(test_file, version=eyed3.id3.ID3_V2_3) tag = eyed3.load(test_file).tag assert b"TXXX" in tag.frame_set txxx = tag.frame_set[b"TXXX"][0] assert txxx.text == "Subtitle" assert txxx.description == "Subtitle (converted)" finally: os.remove(test_file)
def testIssue76(audiofile): """ https://github.com/nicfit/eyeD3/issues/76 """ tag = audiofile.initTag(ID3_V2_4) tag.setTextFrame("TPE1", "Confederacy of Ruined Lives") tag.setTextFrame("TPE2", "Take as needed for pain") tag.setTextFrame("TSOP", "In the name of suffering") tag.setTextFrame("TSO2", "Dope sick") tag.save() audiofile = eyed3.load(audiofile.path) tag = audiofile.tag assert (set(tag.frame_set.keys()) == set( [b"TPE1", b"TPE2", b"TSOP", b"TSO2"])) assert tag.getTextFrame("TSO2") == "Dope sick" assert tag.getTextFrame("TSOP") == "In the name of suffering" assert tag.getTextFrame("TPE2") == "Take as needed for pain" assert tag.getTextFrame("TPE1") == "Confederacy of Ruined Lives" audiofile.tag.lyrics.set("some lyrics") audiofile = eyed3.load(audiofile.path) tag = audiofile.tag assert (set(tag.frame_set.keys()) == set( [b"TPE1", b"TPE2", b"TSOP", b"TSO2"])) assert tag.getTextFrame("TSO2") == "Dope sick" assert tag.getTextFrame("TSOP") == "In the name of suffering" assert tag.getTextFrame("TPE2") == "Take as needed for pain" assert tag.getTextFrame("TPE1") == "Confederacy of Ruined Lives" # Convert to v2.3 and verify conversions tag.save(version=ID3_V2_3) audiofile = eyed3.load(audiofile.path) tag = audiofile.tag assert (set(tag.frame_set.keys()) == set( [b"TPE1", b"TPE2", b"XSOP", b"TSO2"])) assert tag.getTextFrame("TSO2") == "Dope sick" assert tag.getTextFrame("TPE2") == "Take as needed for pain" assert tag.getTextFrame("TPE1") == "Confederacy of Ruined Lives" assert tag.frame_set[b"XSOP"][0].text == "In the name of suffering" # Convert to v2.4 and verify conversions tag.save(version=ID3_V2_4) audiofile = eyed3.load(audiofile.path) tag = audiofile.tag assert (set(tag.frame_set.keys()) == set( [b"TPE1", b"TPE2", b"TSOP", b"TSO2"])) assert tag.getTextFrame("TSO2") == "Dope sick" assert tag.getTextFrame("TPE2") == "Take as needed for pain" assert tag.getTextFrame("TPE1") == "Confederacy of Ruined Lives" assert tag.getTextFrame("TSOP") == "In the name of suffering"
def testIssue76(audiofile): """ https://github.com/nicfit/eyeD3/issues/76 """ tag = audiofile.initTag(ID3_V2_4) tag.setTextFrame("TPE1", "Confederacy of Ruined Lives") tag.setTextFrame("TPE2", "Take as needed for pain") tag.setTextFrame("TSOP", "In the name of suffering") tag.setTextFrame("TSO2", "Dope sick") tag.save() audiofile = eyed3.load(audiofile.path) tag = audiofile.tag assert (set(tag.frame_set.keys()) == set([b"TPE1", b"TPE2", b"TSOP", b"TSO2"])) assert tag.getTextFrame("TSO2") == "Dope sick" assert tag.getTextFrame("TSOP") == "In the name of suffering" assert tag.getTextFrame("TPE2") == "Take as needed for pain" assert tag.getTextFrame("TPE1") == "Confederacy of Ruined Lives" audiofile.tag.lyrics.set("some lyrics") audiofile = eyed3.load(audiofile.path) tag = audiofile.tag assert (set(tag.frame_set.keys()) == set([b"TPE1", b"TPE2", b"TSOP", b"TSO2"])) assert tag.getTextFrame("TSO2") == "Dope sick" assert tag.getTextFrame("TSOP") == "In the name of suffering" assert tag.getTextFrame("TPE2") == "Take as needed for pain" assert tag.getTextFrame("TPE1") == "Confederacy of Ruined Lives" # Convert to v2.3 and verify conversions tag.save(version=ID3_V2_3) audiofile = eyed3.load(audiofile.path) tag = audiofile.tag assert (set(tag.frame_set.keys()) == set([b"TPE1", b"TPE2", b"XSOP", b"TSO2"])) assert tag.getTextFrame("TSO2") == "Dope sick" assert tag.getTextFrame("TPE2") == "Take as needed for pain" assert tag.getTextFrame("TPE1") == "Confederacy of Ruined Lives" assert tag.frame_set[b"XSOP"][0].text == "In the name of suffering" # Convert to v2.4 and verify conversions tag.save(version=ID3_V2_4) audiofile = eyed3.load(audiofile.path) tag = audiofile.tag assert (set(tag.frame_set.keys()) == set([b"TPE1", b"TPE2", b"TSOP", b"TSO2"])) assert tag.getTextFrame("TSO2") == "Dope sick" assert tag.getTextFrame("TPE2") == "Take as needed for pain" assert tag.getTextFrame("TPE1") == "Confederacy of Ruined Lives" assert tag.getTextFrame("TSOP") == "In the name of suffering"