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



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

我的代码有问题吗?

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

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

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

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

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

最新更新