2011-01-24 2 views

答えて

4

私はあなたがすでにIcy-Metadataを追加したと推測しています。

"icy-metaint"レスポンスヘッダーを読む必要があります。これは、ストリーム内の各メタデータの更新の間に読み込むバイト数を示します。

次の擬似コードです:

byteinterval = int(response.getHeader("icy-metaint")) 
stream = response.getBodyStream() 
stream.read(byteinterval) 
metadata_len = byte(stream.read(1)) * 16 
metadata = stream.read(metadata_len) 

メタデータは、次のようなものになります。

StreamTitle='Some Song Name Stream Client Sent';StreamUrl='http://someurl.com/'; 

を残念ながら完全なメタデータバッファのエンコーディング、または内容のどちらかには絶対的な基準はありませんStreamTitle。

曲名には、アルバム名、アーティスト名、曲名などのフィールドが含まれる場合もあります。

メタデータバッファ自体は、UTF-8であってもなくてもよい。何を注入するかはストリーミングクライアントが決定します。まともなクライアントは、ASCII以外のデータを送信するように強制された場合はUTF-8を使用しますが、Windows-1521やUTF-16などのネイティブエンコーディングを送信する場合もあります。

メタデータの更新を継続したい場合は、「byteinterval」バイトの長さのブロックを単純に消費して、メタデータの更新を増やしたり、後でストリームを切断してポーリングしたりできます。

+0

[Pythonで曲名を取得する方法](http://stackoverflow.com/a/35104372/4279) – jfs

関連する問題