我正在尝试使用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'
我的代码有问题吗?
答案 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数据库。所以,以防万一遇到同样的问题,这解决了我的问题,因为我现在不需要上传歌曲,然后为我的数据库运行更新。