0

我正在尝试使用 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'

我的代码有问题吗?

4

3 回答 3

1

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

for key in skempi.list():
    if eyeD3.isMp3File(key.name):
        audio = eyeD3.Mp3AudioFile(key)
于 2012-04-30T12:08:25.477 回答
1

如果不从 S3 下载它们,就无法从文件中获取标签。

您可能会考虑使用 EC2 来处理文件或Amazons Elastic MapReduce,但您仍将下载文件以读取标签。

于 2012-04-30T15:20:16.803 回答
1

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

于 2012-05-03T17:18:48.517 回答