无法从Amazon S3中的文件中获取mp3标签

时间:2012-04-30 11:49:51

标签: amazon-s3 boto

我正在尝试使用Boto从存储在Amazon S3中的文件中获取mp3标签。 这是我的剧本:

import boto
from boto.s3.connection import S3Connection
import eyeD3

def main():
conn = S3Connection('______', '_________')
myBucket = conn.get_bucket('bucketName')

for key in skempi.list():
    if eyeD3.isMp3File(key.name):
        audio = eyeD3.Mp3AudioFile(key.name)

if __name__ == '__main__':
    main()

但是,我可以列出我的存储桶中的所有文件,依此类推。我得到的错误是

IOError: [Errno 2] No such file or directory: u'ulver/01 Track 1.mp3'

我的代码有问题吗?

3 个答案:

答案 0 :(得分:1)

您正在将key.name传递给eyeD3函数,但我认为您需要一个类似文件的对象来调用eyeD3.Mp3AudioFile。我没有使用eyeD3,它似乎不想通过pip安装所以我不能尝试这个,但这样的东西应该工作:

for key in skempi.list():
    if eyeD3.isMp3File(key.name):
        audio = eyeD3.Mp3AudioFile(key)

答案 1 :(得分:1)

无法从文件中获取标签,而从S3下载文件。

您可以考虑使用EC2处理文件或Amazons Elastic MapReduce,但您仍然会下载文件以阅读标记。

答案 2 :(得分:1)

我必须从我的本地驱动器编写一个mp3文件元数据的脚本,将歌曲上传到Amazon S3(使用Boto API)并将权限设置为“public”,生成URL,然后存储URL和将金属数据导入MySQL数据库。所以,以防万一遇到同样的问题,这解决了我的问题,因为我现在不需要上传歌曲,然后为我的数据库运行更新。