示例#1
0
文件: copytag.py 项目: abddul/pyid3
def listid3v2(filename):
    id3v2 = id3.ID3v2()

    if not os.path.isfile(filename):
        print "%s: %s is not a file." % (sys.argv[0], filename)
        return

    id3v2 = id3.ID3v2(filename)
    for frame in id3v2.frames:
        print "%r" % frame

    id3v2.filename = "test.tag"
    id3v2.save()
示例#2
0
文件: listid3.py 项目: abddul/pyid3
def listid3v2(filename):
    id3v2 = id3.ID3v2()

    if not os.path.isfile(filename):
        print "%s: %s is not a file." % (sys.argv[0], filename)
        return

    track = None
    artist = ''
    album = ''
    title = ''

    id3v1 = id3.ID3v1(filename)
    id3v2 = id3.ID3v2(filename)

    if id3v1.title:
        title = id3v1.title
    if id3v1.artist:
        artist = id3v1.artist
    if id3v1.album:
        album = id3v1.album
    if id3v1.track:
        track = int(id3v1.track)

    for frame in id3v2.frames:
        # print "%s" % frame
        if frame.id == 'TPE1':
            artist = frame.value
        elif frame.id == 'TIT2':
            title = frame.value
        elif frame.id == 'TALB':
            album = frame.value
        elif frame.id == 'TRCK':
            if frame.value.find('/') != -1:
                track = int(frame.value.split('/')[0])
            else:
                track = int(str(frame.value).strip())

    if not track:
        numbers = re.findall(r'[^0-9]([0-9][0-9])[^0-9]', filename)
        if not numbers:
            numbers = re.findall(r'([0-9][0-9])[^0-9]', filename)
        if numbers:
            track = int(numbers[0])

    print "File  : %s" % filename
    print "\tArtist: %s" % artist
    print "\tAlbum : %s" % album
    print "\tTrack : %s" % track
    print "\tTitle : %s" % title
示例#3
0
文件: viewapic.py 项目: abddul/pyid3
    def __init__(self):
        image = None
        wxInitAllImageHandlers()
        wxFrame.__init__(self, NULL, -1, "Test")
        panel = wxPanel(self, -1)

        filename = sys.argv[1]

        if not os.path.isfile(filename):
            print "%s: %s is not a file." % (sys.argv[0], filename)
            return

        tag = id3.ID3v2(filename)

        for frame in tag.frames:
            if isinstance(frame, id3.ID3v2Frames.AttachedPicture):
                print len(frame.image)
                source = Image.open(StringIO.StringIO(frame.image))
                image = apply(wxEmptyImage, source.size)
                image.SetData(source.convert("RGB").tostring())
                image.ConvertToBitmap()

        if image:
            bm = wxStaticBitmap(panel, -1, image.ConvertToBitmap())
        else:
            raise SystemExit, "id3v2 tag has no image"

        self.SetSize(bm.GetSize())
        self.Layout()
示例#4
0
 def disable_testRead(self):
     tag_list = os.listdir('sample-tags')
     tag_list.sort()
     for tag_file in tag_list:
         tag_file = os.path.join('sample-tags', tag_file)
         try:
             tag = id3.ID3v2(tag_file)
         except id3.Error, err:
             print "file was: %s, %s" % (
                 tag_file,
                 err.__str__(),
             )
         except:
示例#5
0
    def test_apic(self):
        FILESIZE = 1024
        DATA = 'monkey monkey, monkey'
        tfn = tempfile.mktemp('id3v2.tag')
        fh = file(tfn, 'wb+')

        fh.write('\xff' * FILESIZE)

        fh.close()

        id3v2 = id3.ID3v2(tfn)
        frame = id3v2.get_text_frame('XSOP')
        frame.value = DATA
        id3v2.save()

        del id3v2

        id3v2 = id3.ID3v2(tfn)
        frame = id3v2.get_text_frame('XSOP', create=False)
        assert frame.value == DATA

        os.unlink(tfn)
示例#6
0
    def testRead(self):
        """
        Try reading tags with broken frames, and see if we survive
        """
        mydir = os.path.join('sample-tags', 'broken-frames')
        if not os.path.isdir(mydir):
            raise RuntimeError, "No samples to look over"
        tag_list = os.listdir(mydir)
        tag_list.sort()

        for tag_file in tag_list:
            tag_file = os.path.join(mydir, tag_file)

            tag = id3.ID3v2(tag_file, broken_frames='drop')
示例#7
0
def extractapic(filename):
    print "Extracting pictures from %r" % filename
    imagenum = 1
    if not os.path.isfile(filename):
        print "%s: %s is not a file." % (sys.argv[0], filename)
        return

    id3v2 = id3.ID3v2( filename )

    for frame in id3v2.frames:
        if frame.id == 'APIC':
            imgf = file("image-%0i.jpg" % imagenum, 'w')
            imgf.write(frame.image)
            imgf.close()
示例#8
0
    def helper_tagcmp(self, tagfile1, tagfile2):
        """
        Compare the two files
        """
        tag = id3.ID3v2(tagfile1)
        size = tag.tag_size - tag.padding_size

        fdata1 = file(tagfile1).read(size)
        fdata2 = file(tagfile2).read(size)

        if fdata1 != fdata2:
            print "%r" % fdata1
            print "%r" % fdata2

        return fdata1 == fdata2
示例#9
0
文件: listid3v2.py 项目: abddul/pyid3
def listid3v2(filename):
    if not os.path.isfile(filename):
        print "%s: %s is not a file." % (sys.argv[0], filename)
        return

    id3v2 = id3.ID3v2( filename )
    
    print "Tag size: ", id3v2.tag_size
    
    maxsize = 0
    for frame in id3v2.frames:
        if len(frame.name) > maxsize:
            maxsize = len(frame.name)

    for frame in id3v2.frames:
        out = u"%s (%s): %s" % (frame.name.rjust(maxsize), frame.id, unicode(frame),)
        print out.encode('utf-8')
示例#10
0
 def disable_testRead(self):
     """
     Not needed as the other covers this as well
     """
     mydir = os.path.join('sample-tags', '2.3.0')
     tag_list = os.listdir(mydir)
     tag_list.sort()
     for tag_file in tag_list:
         tag_file = os.path.join(mydir, tag_file)
         try:
             tag = id3.ID3v2(tag_file)
         except id3.Error, err:
             print "file was: %s, %s" % (
                 tag_file,
                 err.__str__(),
             )
         except:
示例#11
0
    def testReadNWrite(self):
        """
        Open the tag, read, then save and see if we have the same thing
        """
        mydir = os.path.join('sample-tags', '2.3.0')
        brokendir = os.path.join('sample-tags', 'broken-frames')
        if not os.path.isdir(mydir):
            raise RuntimeError, "No samples to look over"
        tag_list = os.listdir(mydir)
        tag_list.sort()
        for fn in tag_list:
            tag_file = os.path.join(mydir, fn)
            tfn = tempfile.mktemp('id3v2.tag')
            shutil.copyfile(tag_file, tfn)

            try:
                tag = id3.ID3v2(tfn)
            except:
                print "%r" % (tag_file, )
                raise

            try:
                tag.save()
            except:
                print "%r" % (tag_file, )
                raise

            # EVIL HACK
            # don't check files that have a TXXX 'CT_GAPLESS_DATA' frame
            # these were written by some buggy software that didn't put the
            # unicode BOM on the COMM comment
            if tag.get_usertext_frame('CT_GAPLESS_DATA', create=False):
                print "Skipping known broken file... %r" % tag_file
                os.rename(tag_file, os.path.join(brokendir, fn))
                os.unlink(tfn)
                continue

            self.failUnless(
                self.helper_tagcmp(tag_file, tfn),
                "rewriting  %r failed. output at %r " % (
                    tag_file,
                    tfn,
                ))
            os.unlink(tfn)
示例#12
0
    def testReadNWrite(self):
        """
        Open the tag, read, then save and see if we have the same thing
        """
        mydir = os.path.join('sample-tags', '2.4.0')
        tag_list = os.listdir(mydir)
        tag_list.sort()
        for tag_file in tag_list:
            print tag_file
            tag_file = os.path.join(mydir, tag_file)
            tfn = tempfile.mktemp('id3v2.tag')
            shutil.copyfile(tag_file, tfn)

            try:
                tag = id3.ID3v2(tfn)
            except id3.Error, err:
                print "read failure. file was: %s, %s" % (
                    tag_file,
                    err.__str__(),
                )
                raise
            except:
示例#13
0
#!/usr/bin/env python

import os
import sys
import id3

#
# Main program starts here
#
if __name__ == "__main__":
    if not os.path.isfile(sys.argv[3]):
        print "not such file \"%s\"" % sys.argv[3]
    if not os.path.isfile(sys.argv[2]):
        print "not such file \"%s\"" % sys.argv[2]

    id3v2 = id3.ID3v2(sys.argv[3])

    image = file(sys.argv[2], 'r').read()
    newframe = id3v2.new_frame('APIC')
    newframe.image = image
    if sys.argv[1] == '0':
        newframe.picturetype = '\x00'
    else:
        newframe.picturetype = '\x03'
    newframe.mimetype = "image/jpeg"
    id3v2.unsync = 0
    id3v2.save()