2015-03-13 39 views
-5

我正在尝试编写一个程序来读取mp3或mp4音乐文件,然后在那里打印标签到屏幕,但我写的代码看起来似乎没有工作,现在我完全迷失了修复python music tagger and organizer

# import mutagen 

    from mutagen.easyid3 import EasyID3 

    from mutagen.mp4 import MP4 

    from mutagen.mp3 import MP3 

    # Define a function to read ID3 tags 

    MP4 == (audio = MP4(ip)) 

    MP3 == (Audio = MP3(ip)) 

    def readid3 (ip): 

     if music_file == MP4: 

      print(audio['\xa9alb']) 
      print(audio['\xa9nam']) 
      print(audio['\xa9ART']) 
      print(audio['\xa9gen']) 


     else: 

       if music_file == MP3: 

        print(audio['TALB']) 
        print(audio['TIT2']) 
        print(audio['TPE1']) 
        print(audio['TCON']) 


       else: 

        print('Is not a MP3 or MP4 file') 



####### main body ######## 

# prompt user to enter a MP4 

    music_file = open('mp4file.txt','a+') 
    music_file.write("/Users/martins-mac/Music/iTunes/iTunes Media/Music/Frightened Rabbit/Pedestrian Verse/01 Acts of Man.m4a") 
    music_file.close() 

# call function to print ID3 tags 

    readid3(music_file) 
+1

请格式化我们的代码。 – ForceBru 2015-03-13 09:12:11

+1

请更多关于“似乎无法工作”部分的说明。 – 2015-03-13 09:13:27

+0

什么是错误 – Backtrack 2015-03-13 09:13:30

回答

0

所以这两条线

MP4 == (audio = MP4(ip)) 

MP3 == (Audio = MP3(ip)) 

只是比较的东西。他们只会返回TrueFalse,并且不起作用。就目前而言,他们只是将你导入的模块与一个任务进行比较,这对我来说很困惑。你想用这些线做什么?

if music_file == MP4: 

就是用==正确的方法,但music_file没有在这一点上定义。稍后再打电话时,它是全球定义的,但它看起来像

if ip == MP4: 

会为您提供更好的服务。

当你到达readid3(music_file)时,你已经关闭了文件。尝试在该行之前放置music_file = open("mp4file.txt", "r")

你也可以很好地检查https://mutagen.readthedocs.org/en/latest/api/base.html,因为那里肯定会有一些可用的例子。

+0

谢谢,这已经帮了很多。 – 2015-03-20 10:55:00