Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
    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)
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
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)
Пример #7
0
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)
Пример #8
0
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)
Пример #9
0
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"
Пример #10
0
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"