예제 #1
0
    def setUp(self):
        self.dff_1 = DSDIFF(self.silence_1)
        self.dff_2 = DSDIFF(self.silence_2)
        self.dff_dst = DSDIFF(self.silence_dst)

        self.dff_id3 = DSDIFF(get_temp_copy(self.silence_dst))
        self.dff_no_id3 = DSDIFF(get_temp_copy(self.silence_2))
예제 #2
0
    def setUp(self):
        self.filename_1 = get_temp_copy(self.has_tags)
        self.filename_2 = get_temp_copy(self.no_tags)

        self.dsf_tmp_id3 = DSF(self.filename_1)
        self.dsf_tmp_no_id3 = DSF(self.filename_2)

        self.dsf_1 = DSF(self.silence_1)
        self.dsf_2 = DSF(self.silence_2)
예제 #3
0
    def setUp(self):
        self.filename_1 = get_temp_copy(self.has_tags)
        self.filename_2 = get_temp_copy(self.no_tags)

        self.dsf_tmp_id3 = DSF(self.filename_1)
        self.dsf_tmp_no_id3 = DSF(self.filename_2)

        self.dsf_1 = DSF(self.silence_1)
        self.dsf_2 = DSF(self.silence_2)
예제 #4
0
    def setUp(self):
        self.filename_1 = get_temp_copy(self.has_tags)
        self.filename_2 = get_temp_copy(self.no_tags)

        self.aiff_tmp_id3 = AIFF(self.filename_1)
        self.aiff_tmp_no_id3 = AIFF(self.filename_2)

        self.aiff_1 = AIFF(self.silence_1)
        self.aiff_2 = AIFF(self.silence_2)
        self.aiff_3 = AIFF(self.silence_3)
        self.aiff_4 = AIFF(self.silence_4)
        self.aiff_5 = AIFF(self.silence_5)
예제 #5
0
    def setUp(self):
        self.filename_1 = get_temp_copy(self.has_tags)
        self.filename_2 = get_temp_copy(self.no_tags)

        self.aiff_tmp_id3 = AIFF(self.filename_1)
        self.aiff_tmp_no_id3 = AIFF(self.filename_2)

        self.aiff_1 = AIFF(self.silence_1)
        self.aiff_2 = AIFF(self.silence_2)
        self.aiff_3 = AIFF(self.silence_3)
        self.aiff_4 = AIFF(self.silence_4)
        self.aiff_5 = AIFF(self.silence_5)
예제 #6
0
    def setUp(self):
        self.file_1 = open(self.has_tags, 'rb')
        self.iff_1 = IFFFile(self.file_1)
        self.file_2 = open(self.no_tags, 'rb')
        self.iff_2 = IFFFile(self.file_2)

        self.tmp_1_name = get_temp_copy(self.has_tags)
        self.file_1_tmp = open(self.tmp_1_name, 'rb+')
        self.iff_1_tmp = IFFFile(self.file_1_tmp)

        self.tmp_2_name = get_temp_copy(self.no_tags)
        self.file_2_tmp = open(self.tmp_2_name, 'rb+')
        self.iff_2_tmp = IFFFile(self.file_2_tmp)
예제 #7
0
    def setUp(self):
        self.file_1 = open(self.has_tags, 'rb')
        self.iff_1 = IFFFile(self.file_1)
        self.file_2 = open(self.no_tags, 'rb')
        self.iff_2 = IFFFile(self.file_2)

        self.tmp_1_name = get_temp_copy(self.has_tags)
        self.file_1_tmp = open(self.tmp_1_name, 'rb+')
        self.iff_1_tmp = IFFFile(self.file_1_tmp)

        self.tmp_2_name = get_temp_copy(self.no_tags)
        self.file_2_tmp = open(self.tmp_2_name, 'rb+')
        self.iff_2_tmp = IFFFile(self.file_2_tmp)
예제 #8
0
 def test_picard_lifecycle(self):
     path_tmp_wav_file = \
         get_temp_copy(self.fn_wav_pcm_2s_16000_08_notags)
     from mutagen.id3 import ID3
     wav = WAVE(path_tmp_wav_file)
     id3 = wav.tags
     """" Picard WaveFile._get_tags: """
     self.assertIsNone(id3, "Ensure ID3-tag-header does not exist")
     """" Picard WaveFile._get_tags: initialize tags """
     wav.add_tags()
     id3 = wav.tags
     self.assertIsInstance(id3, ID3)
     """ ID3v2.3 separator """
     separator = '/'
     """ Initialize Picard like metadata tags """
     self.__init_id3_tags(id3, major=3)
     """ Write the Picard like metadata to the empty WAVE-file """
     id3.save(path_tmp_wav_file, v23_sep=separator)
     """ Tags (metadata) have been added; now load the file again """
     wav = WAVE(path_tmp_wav_file)
     id3 = wav.tags
     self.assertIsInstance(id3, ID3)
     self.assertEquals(id3["TRCK"], "1/10")
     self.assertEquals(id3["TPOS"], "1/1")
     self.assertEquals(id3["TXXX:MusicBrainz Release Group Id"],
                       "e00305af-1c72-469b-9a7c-6dc665ca9adc")
     self.assertEquals(id3["TXXX:MusicBrainz Album Artist Id"], [
         "3fe817fc-966e-4ece-b00a-76be43e7e73c",
         "984f8239-8fe1-4683-9c54-10ffb14439e9"
     ])
     self.assertEquals(id3["TXXX:CATALOGNUMBER"], ["PRAR931391"])
     self.assertEquals(id3["TSRC"], ["NLB931100460", "USMH51100098"])
예제 #9
0
    def test_write_back_bad_atoms(self):
        # write a broken atom and try to load it
        data = Atom.render(b"datA", b"\x00\x00\x00\x01\x00\x00\x00\x00wheeee")
        data = Atom.render(b"aART", data)
        tags = self.wrap_ilst(data)
        self.assertFalse(tags)

        # save it into an existing mp4
        original = os.path.join(DATA_DIR, "has-tags.m4a")
        filename = get_temp_copy(original)
        try:
            delete(filename)

            # it should still end up in the file
            tags.save(filename)
            with open(filename, "rb") as h:
                self.assertTrue(b"wheeee" in h.read())

            # if we define our own aART throw away the broken one
            tags["aART"] = ["new"]
            tags.save(filename)
            with open(filename, "rb") as h:
                self.assertFalse(b"wheeee" in h.read())

            # add the broken one back and delete all tags including
            # the broken one
            del tags["aART"]
            tags.save(filename)
            with open(filename, "rb") as h:
                self.assertTrue(b"wheeee" in h.read())
            delete(filename)
            with open(filename, "rb") as h:
                self.assertFalse(b"wheeee" in h.read())
        finally:
            os.unlink(filename)
예제 #10
0
    def test_write_back_bad_atoms(self):
        # write a broken atom and try to load it
        data = Atom.render(b"datA", b"\x00\x00\x00\x01\x00\x00\x00\x00wheeee")
        data = Atom.render(b"aART", data)
        tags = self.wrap_ilst(data)
        self.assertFalse(tags)

        # save it into an existing mp4
        original = os.path.join(DATA_DIR, "has-tags.m4a")
        filename = get_temp_copy(original)
        try:
            delete(filename)

            # it should still end up in the file
            tags.save(filename)
            with open(filename, "rb") as h:
                self.assertTrue(b"wheeee" in h.read())

            # if we define our own aART throw away the broken one
            tags["aART"] = ["new"]
            tags.save(filename)
            with open(filename, "rb") as h:
                self.assertFalse(b"wheeee" in h.read())

            # add the broken one back and delete all tags including
            # the broken one
            del tags["aART"]
            tags.save(filename)
            with open(filename, "rb") as h:
                self.assertTrue(b"wheeee" in h.read())
            delete(filename)
            with open(filename, "rb") as h:
                self.assertFalse(b"wheeee" in h.read())
        finally:
            os.unlink(filename)
예제 #11
0
    def setUp(self):
        self.silence = os.path.join(DATA_DIR, 'silence-44-s.mp3')
        self.newsilence = get_temp_copy(self.silence)

        # remove ID3v1 tag
        with open(self.newsilence, "rb+") as f:
            f.seek(-128, 2)
            f.truncate()
예제 #12
0
    def setUp(self):
        self.silence = os.path.join(DATA_DIR, 'silence-44-s.mp3')
        self.newsilence = get_temp_copy(self.silence)

        # remove ID3v1 tag
        with open(self.newsilence, "rb+") as f:
            f.seek(-128, 2)
            f.truncate()
예제 #13
0
    def setUp(self):
        self.filename = get_temp_copy(
            os.path.join(DATA_DIR, "sample.oggtheora"))

        self.audio = OggTheora(self.filename)
        self.audio2 = OggTheora(
            os.path.join(DATA_DIR, "sample_length.oggtheora"))
        self.audio3 = OggTheora(
            os.path.join(DATA_DIR, "sample_bitrate.oggtheora"))
예제 #14
0
    def setUp(self):
        self.filename = get_temp_copy(
            os.path.join(DATA_DIR, "sample.oggtheora"))

        self.audio = OggTheora(self.filename)
        self.audio2 = OggTheora(
            os.path.join(DATA_DIR, "sample_length.oggtheora"))
        self.audio3 = OggTheora(
            os.path.join(DATA_DIR, "sample_bitrate.oggtheora"))
예제 #15
0
    def setUp(self):
        original = os.path.join(DATA_DIR, "adif.aac")
        self.filename = get_temp_copy(original)

        tag = ID3()
        tag.add(TIT1(text=[u"a" * 5000], encoding=3))
        tag.save(self.filename)

        self.aac = AAC(original)
        self.aac_id3 = AAC(self.filename)
예제 #16
0
 def test_renumber_reread(self):
     try:
         filename = get_temp_copy(
             os.path.join(DATA_DIR, "multipagecomment.ogg"))
         with open(filename, "rb+") as fileobj:
             OggPage.renumber(fileobj, 1002429366, 20)
         with open(filename, "rb+") as fileobj:
             OggPage.renumber(fileobj, 1002429366, 0)
     finally:
         os.unlink(filename)
예제 #17
0
    def setUp(self):
        self.filename = get_temp_copy(
            os.path.join(DATA_DIR, "silence-44-s.mp3"))

        self.mp3 = MP3(self.filename)
        self.mp3_2 = MP3(self.silence_nov2)
        self.mp3_3 = MP3(self.silence_mpeg2)
        self.mp3_4 = MP3(self.silence_mpeg25)
        self.mp3_lame = MP3(self.lame)
        self.mp3_lame_peak = MP3(self.lame_peak)
예제 #18
0
    def setUp(self):
        super(TMOggSPlit, self).setUp()
        self.filename = get_temp_copy(
            os.path.join(DATA_DIR, 'multipagecomment.ogg'))

        # append the second file
        with open(self.filename, "ab") as first:
            to_append = os.path.join(DATA_DIR, 'multipage-setup.ogg')
            with open(to_append, "rb") as second:
                first.write(second.read())
예제 #19
0
 def test_renumber_reread(self):
     try:
         filename = get_temp_copy(
             os.path.join(DATA_DIR, "multipagecomment.ogg"))
         with open(filename, "rb+") as fileobj:
             OggPage.renumber(fileobj, 1002429366, 20)
         with open(filename, "rb+") as fileobj:
             OggPage.renumber(fileobj, 1002429366, 0)
     finally:
         os.unlink(filename)
예제 #20
0
    def setUp(self):
        original = os.path.join(DATA_DIR, "adif.aac")
        self.filename = get_temp_copy(original)

        tag = ID3()
        tag.add(TIT1(text=[u"a" * 5000], encoding=3))
        tag.save(self.filename)

        self.aac = AAC(original)
        self.aac_id3 = AAC(self.filename)
예제 #21
0
    def setUp(self):
        self.filename = get_temp_copy(
            os.path.join(DATA_DIR, "silence-44-s.mp3"))

        self.mp3 = MP3(self.filename)
        self.mp3_2 = MP3(self.silence_nov2)
        self.mp3_3 = MP3(self.silence_mpeg2)
        self.mp3_4 = MP3(self.silence_mpeg25)
        self.mp3_lame = MP3(self.lame)
        self.mp3_lame_peak = MP3(self.lame_peak)
예제 #22
0
 def test_save_reload(self):
     filename = get_temp_copy(self.audio.filename)
     try:
         audio = TrueAudio(filename)
         audio.add_tags()
         audio.tags.add(TIT1(encoding=0, text="A Title"))
         audio.save()
         audio = TrueAudio(filename)
         self.failUnlessEqual(audio["TIT1"], "A Title")
     finally:
         os.unlink(filename)
예제 #23
0
    def setUp(self):
        self.filename = get_temp_copy(
            os.path.join(DATA_DIR, "silence-44-s.flac"))

        # add a second vorbis comment block to the file right after the first
        some_tags = VCFLACDict()
        some_tags["DUPLICATE"] = ["SECOND"]
        f = FLAC(self.filename)
        f.tags["DUPLICATE"] = ["FIRST"]
        assert f.tags is f.metadata_blocks[2]
        f.metadata_blocks.insert(3, some_tags)
        f.save()
예제 #24
0
    def setUp(self):
        super(TMOggSPlit, self).setUp()
        self.filename = get_temp_copy(
            os.path.join(DATA_DIR, fsn(u'multipagecomment.ogg')))

        # append the second file
        first = open(self.filename, "ab")
        to_append = os.path.join(DATA_DIR, fsn(u'multipage-setup.ogg'))
        second = open(to_append, "rb")
        first.write(second.read())
        second.close()
        first.close()
예제 #25
0
    def setUp(self):
        self.sample_new = get_temp_copy(SAMPLE)
        self.broken_new = get_temp_copy(BROKEN)

        tag = mutagen.apev2.APEv2()
        self.values = {
            "artist": "Joe Wreschnig\0unittest",
            "album": "Mutagen tests",
            "title": "Not really a song"
        }
        for k, v in self.values.items():
            tag[k] = v
        tag.save(self.sample_new)
        self.just_tag = get_temp_empty()
        tag.save(self.just_tag)
        self.tag_at_start = get_temp_empty()
        tag.save(self.tag_at_start)
        with open(self.tag_at_start, "ab") as fileobj:
            fileobj.write(b"tag garbage" * 1000)

        self.tag = mutagen.apev2.APEv2(self.sample_new)
예제 #26
0
    def setUp(self):
        self.filename = get_temp_copy(
            os.path.join(DATA_DIR, "silence-44-s.flac"))

        # add a second vorbis comment block to the file right after the first
        some_tags = VCFLACDict()
        some_tags["DUPLICATE"] = ["SECOND"]
        f = FLAC(self.filename)
        f.tags["DUPLICATE"] = ["FIRST"]
        assert f.tags is f.metadata_blocks[2]
        f.metadata_blocks.insert(3, some_tags)
        f.save()
예제 #27
0
    def setUp(self):
        super(TMOggSPlit, self).setUp()
        self.filename = get_temp_copy(
            os.path.join(DATA_DIR, fsn(u'multipagecomment.ogg')))

        # append the second file
        first = open(self.filename, "ab")
        to_append = os.path.join(
            DATA_DIR, fsn(u'multipage-setup.ogg'))
        second = open(to_append, "rb")
        first.write(second.read())
        second.close()
        first.close()
예제 #28
0
    def setUp(self):
        fn_wav_pcm_2s_16000_08_id3v23 = \
            os.path.join(DATA_DIR, "silence-2s-PCM-16000-08-ID3v23.wav")
        self.wav_pcm_2s_16000_08_ID3v23 = \
            WAVE(fn_wav_pcm_2s_16000_08_id3v23)

        self.tmp_fn_pcm_2s_16000_08_ID3v23 = \
            get_temp_copy(fn_wav_pcm_2s_16000_08_id3v23)
        self.tmp_wav_pcm_2s_16000_08_ID3v23 = \
            WAVE(self.tmp_fn_pcm_2s_16000_08_ID3v23)

        self.fn_wav_pcm_2s_16000_08_notags = \
            os.path.join(DATA_DIR, "silence-2s-PCM-16000-08-notags.wav")
        self.wav_pcm_2s_16000_08_notags = \
            WAVE(self.fn_wav_pcm_2s_16000_08_notags)

        self.tmp_fn_pcm_2s_16000_08_notag = \
            get_temp_copy(self.fn_wav_pcm_2s_16000_08_notags)
        self.tmp_wav_pcm_2s_16000_08_notag = \
            WAVE(self.tmp_fn_pcm_2s_16000_08_notag)

        fn_wav_pcm_2s_44100_16_id3v23 = \
            os.path.join(DATA_DIR, "silence-2s-PCM-44100-16-ID3v23.wav")
        self.wav_pcm_2s_44100_16_ID3v23 = WAVE(fn_wav_pcm_2s_44100_16_id3v23)
예제 #29
0
    def test_load_v1_v2_tcon_translate(self):
        tags = ID3()
        tags.add(TCON(text=["12"]))
        v1_data = MakeID3v1(tags)

        filename = get_temp_copy(self.empty)
        try:
            tags = ID3()
            tags.save(filename=filename, v1=0)
            with open(filename, "ab") as h:
                h.write(v1_data)
            tags = ID3(filename, load_v1=True)
            assert tags["TCON"][0] == "Other"
            tags = ID3(filename, load_v1=False)
            assert "TCON" not in tags
        finally:
            os.unlink(filename)
예제 #30
0
    def test_load_v1_v2_tcon_translate(self):
        tags = ID3()
        tags.add(TCON(text=["12"]))
        v1_data = MakeID3v1(tags)

        filename = get_temp_copy(self.empty)
        try:
            tags = ID3()
            tags.save(filename=filename, v1=0)
            with open(filename, "ab") as h:
                h.write(v1_data)
            tags = ID3(filename, load_v1=True)
            assert tags["TCON"][0] == "Other"
            tags = ID3(filename, load_v1=False)
            assert "TCON" not in tags
        finally:
            os.unlink(filename)
예제 #31
0
 def setUp(self):
     self.NEW = get_temp_copy(self.TOO_SHORT)
예제 #32
0
 def setUp(self):
     self.NEW = get_temp_copy(self.SAMPLE)
     self.flac = FLAC(self.NEW)
예제 #33
0
 def setUp(self):
     self.filename = get_temp_copy(self.original)
예제 #34
0
 def setUp(self):
     self.filename = get_temp_copy(os.path.join(DATA_DIR, "empty.spx"))
     self.audio = self.Kind(self.filename)
예제 #35
0
 def setUp(self):
     self.silence = os.path.join(DATA_DIR, 'silence-44-s.mp3')
     self.newsilence = get_temp_copy(self.silence)
예제 #36
0
 def setUp(self):
     self.filename = get_temp_copy(self.original)
     self.audio = ASF(self.filename)
예제 #37
0
 def setUp(self):
     self.filename = get_temp_copy(OLD)
     self.audio = APEv2(self.filename)
예제 #38
0
 def setUp(self):
     self.filename = get_temp_copy(os.path.join(DATA_DIR, 'emptyfile.mp3'))
     self.id3 = EasyID3()
     self.realid3 = self.id3._EasyID3__id3
예제 #39
0
    def setUp(self):
        self.vorbis = File(os.path.join(DATA_DIR, "empty.ogg"))

        filename = get_temp_copy(os.path.join(DATA_DIR, "xing.mp3"))
        self.mp3_notags = File(filename)
        self.mp3_filename = filename
예제 #40
0
 def setUp(self):
     self.filename = get_temp_copy(
         os.path.join(DATA_DIR, 'silence-44-s.mp3'))
예제 #41
0
 def setUp(self):
     self.filename = get_temp_copy(
         os.path.join(DATA_DIR, "97-unknown-23-update.mp3"))
예제 #42
0
 def setUp(self):
     self.filename = get_temp_copy(self.PATH)
     self.audio = self.KIND(self.filename)
예제 #43
0
 def setUp(self):
     self.filename = get_temp_copy(
         os.path.join(DATA_DIR, "silence-44-s.flac"))
예제 #44
0
 def setUp(self):
     self.NEW = get_temp_copy(self.SAMPLE)
     self.flac = FLAC(self.NEW)
예제 #45
0
 def setUp(self):
     self.filename = get_temp_copy(self.original)
     audio = ASF(self.filename)
     audio.clear()
     audio.save()
예제 #46
0
 def setUp(self):
     self.filename = get_temp_copy(os.path.join(DATA_DIR, "example.opus"))
     self.audio = self.Kind(self.filename)
예제 #47
0
 def setUp(self):
     self.filename = get_temp_copy(
         os.path.join(DATA_DIR, "silence-44-s.mp3"))
     self.mp3 = EasyMP3(self.filename)
예제 #48
0
 def setUp(self):
     self.filename = get_temp_copy(os.path.join(DATA_DIR, 'emptyfile.mp3'))
     self.id3 = EasyID3()
     self.realid3 = self.id3._EasyID3__id3
예제 #49
0
 def setUp(self):
     self.filename = get_temp_copy(
         os.path.join(DATA_DIR, 'bad-POPM-frame.mp3'))
예제 #50
0
 def setUp(self):
     self.NEW = get_temp_copy(self.TOO_SHORT)
예제 #51
0
 def setUp(self):
     self.filename = get_temp_copy(os.path.join(DATA_DIR, "click.mpc"))
예제 #52
0
 def setUp(self):
     self.filename = get_temp_copy(
         os.path.join(DATA_DIR, "silence-44-s.flac"))
예제 #53
0
 def setUp(self):
     self.filename = get_temp_copy(self.original)
     self.audio = MP4(self.filename)
예제 #54
0
    def setUp(self):
        self.vorbis = File(os.path.join(DATA_DIR, "empty.ogg"))

        filename = get_temp_copy(os.path.join(DATA_DIR, "xing.mp3"))
        self.mp3_notags = File(filename)
        self.mp3_filename = filename
예제 #55
0
 def setUp(self):
     self.filename = get_temp_copy(self.original)
예제 #56
0
 def setUp(self):
     self.filename = get_temp_copy(os.path.join(DATA_DIR, "click.mpc"))
예제 #57
0
 def setUp(self):
     self.filename = get_temp_copy(self.PATH)
     self.audio = self.KIND(self.filename)
예제 #58
0
 def setUp(self):
     self.filename = get_temp_copy(
         os.path.join(DATA_DIR, "silence-44-s.mp3"))
     self.audio = ID3(self.filename)
예제 #59
0
 def setUp(self):
     super(TMid3Iconv, self).setUp()
     self.filename = get_temp_copy(
         os.path.join(DATA_DIR, fsn(u'silence-44-s.mp3')))