2012-04-30 25 views
0

Botoを使用してAmazon S3に保存されているファイルからmp3タグを取得しようとしています。ここで は私のスクリプトです: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' 

私のコードに問題はありますか?

答えて

1

ローカルドライブからmp3ファイルのメタデータを取得し、Amazon S3(Boto APIを使用)にアップロードして特権を「public」に設定し、URLを生成して保存するスクリプトを作成する必要がありましたおよびメタルデータをMySQLデータベースに格納します。そのため、同じ問題が発生した場合には、曲をアップロードしてデータベースの更新を実行する必要がなくなり、問題が解決しました。

1

key.nameをeyeD3関数に渡していますが、eyeD3.Mp3AudioFileを呼び出すためのファイル形式のオブジェクトが必要だと思います。私はeyeD3を使用していない、それは私がこれを試すことはできませんが、このようなものが動作するはずですので、ピップ経由でインストールしたいとは思われない:

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

いいえ、パラメーターに文字列が必要なため、機能しません。私の問題は、バケツ内の各ファイルのパスを取得できなかったことです。 –

+1

文字列が必要な場合は、その文字列をローカルファイルへのパスにする必要があります。その場合、唯一のオプションは、S3から(key.get_contents_to_filenameを使用して)ローカルファイルシステムにファイルをコピーしてから、ローカルファイルへのパスをMp3AudioFileクラスに渡すことです。 – garnaat

+1

さて、これらのファイルのパス+ mp3メタデータを取得して、Djangoアプリケーション用のMySQLデータベースに保存する必要があります。後で私のウェブサイトでそれらを再生することができます。非ローカルファイルからタグを読み取ることができる他のライブラリ(eyeD3以外)がありますか? –

1

ファイルからタグを取得する方法はありませんをS3からダウンロードしないでください。

EC2を使用してファイルを処理するか、Amazons Elastic MapReduceを検討することがありますが、まだファイルをダウンロードしてタグを読み取ることになります。

+0

Djangoの管理パネルからアップデート(AS3のmp3ファイルからのメタデータ抽出とMySQLデータベースへのデータのアップロード)を実行します。だから私は一時的に私のサーバーにファイルをダウンロードし、それらからメタデータを取得する必要がありますか? –

+0

@MohamedTurki - これは一回限りの仕事ですか?はいの場合は、インデックス作成を行う言語を問わず、完全に別のスクリプトを作成します。一時的であっても、Webサーバーにファイルをダウンロードしたくないです。 –

+0

emm、私はこれをやっている頻度がよく分からない。たぶん3ヶ月で1回だ。問題は、異なるmp3ファイルのURLを取得するAS3と、同じmp3ファイルのメタタグを取得するためのローカルドライブから、別のソースからデータベースを埋める必要があることです。たぶん、私はそれが複雑ではないだろうと思ったので、私はこの仕事に値するほどの注意を払っていないでしょう。多分ファイルをアップロードして金属データを抽出するスクリプトを書くべきでしょうか?それは実現可能ですか? –

関連する問題