Web拍手:
自作の音楽ファイル再生ツールに,聴いている曲データの情報を Last.fm に Scrobble する機能をつけてみました.
「いまさらながら,」という感じ.以前は,どうしてくじけたんだったかなぁ.割とすんなりとできました.
Scrobble するのに使ったライブラリは,
Net::LastFM (と HTTP::Request(HTTP::Request::Common)と LWP::UserAgent)
です.
ちょっとだけハマったのは,
o 試行錯誤しているときにたまたま Last.fm サイトがダウンしてしまって,それに私はなかなか気づけなくて,自分のコードが悪いのかと余計な試行錯誤をしてしまった.
o api_sig に与える API signature の作り方.結局のところ,API signature を作るときは URIエンコードをせずに BOM なし UTF8 のままで作って,HTTP POST するときには,API signature を作るときに使った引数を URI エンコードして 送ればいいみたい.
です.
API sigunature の作り方は,この記事↓がたいへん参考になりました.
「Last.fmに30秒未満の曲の再生情報を送信 | tempxla blog」
http://tempxla.wordpress.com/2012/08/26/last-fm%E3%81%AB30%E7%A7%92%E6%9C%AA%E6%BA%80%E3%81%AE%E6%9B%B2%E3%81%AE%E5%86%8D%E7%94%9F%E6%83%85%E5%A0%B1%E3%82%92%E9%80%81%E4%BF%A1/ 今回,いろいろと試していて理解した仕様は,
o request token はアプリごとにひとつあればいいらしい.
そのかわり,ブラウザで認証用の URL(API 用の URL とは異なる)に引数つきでアクセスして,ボタンをクリックして認証しなければならない.
一旦,ブラウザ認証を済ませてしまえば,Last.fm サイトで認証を取り消すまで,ずっと使えるっぽい.
o session key は,API を使わないまま一定時間が経過すると無効になる.でも,同じ request token を使って,新しい session key を取り直せばよさそう.
「Scrobble して失敗するようなら session key の取り直しをして,再度 Scrobble する」という実装で問題なさそう.
です.
結局のところわからなかった仕様は,
o Last.fm の自分のページ上に再生中の曲の「プレイバー(いま,曲のこのあたりを再生しているという情報)」を表示する方法
です.
track.updateNowPlaying を使うと「再生中」アイコンがチラチラするのでそれ自体はうまくいくのだけど,「プレイバー」はどうしても表示されなかった.
あと,結局のところ,曲の長さが 30秒以下のときは duration 情報は送らないことにしました.
o 30秒以下の長さの曲は Scrobble できないらしい.でも,duration 情報を送らなければ,どんな長さの曲情報も Scrobble できる.
o duration 情報を送ってしまうと,「曲の半分の長さを再生した」か「その曲を4分以上再生した」ところで自動的に Scrobble されるので,track.updateNowPlaying → track.scrobble と機械的に POST していると,Scrobble 情報がダブってしまう.再生時間をツール側で管理して track.scrobble すればよいのだけど,実装がちょっと手間だったので,今回は見送った(^^;).
というのが理由です.
あと,ついでですが,Last.fm は曲のタイトルなどに文字数の制限がないらしいので,曲情報も情報源として ID3v1 ではなく,ID3v2 を使うことにしました.
Twitter に Tweet するときも ID3v2 の情報を元にしています.
20 文字以上の曲タイトルも扱えるようになったので,いままでのように曲タイトルが途中で終わる Tweet や Scrobble をしてしまうことがなくなりました.
なお,ID3v2 の情報の取得の仕方は,この記事↓
「(Perl) MP3::Tag を用いた ID3v2タグの読み取り・書き込み (r271-635)」
http://netlog.jpn.org/r271-635/2012/03/perl_mp3tag_id3v2.html が参考になりました.
いままで,MP3::Tag の使い方をちょっと勘違いしてしまっていて,
ID3v2 でも ID3v1 のときと同じように,$mp3->{ID3v2}->{title} で取得できるものと思っていました.
$mp3->{ID3v2}->get_frame() で,それぞれの情報が入っているフレームを探してこないといけなかったのですね.
==
2010年07月14日
曲情報を大量に Tweet したせいで,私の TL の S/N 比がかなり悪い状態になった気がする(^^;).
http://knoike.seesaa.net/article/156285751.html 2010年07月11日
聴いている曲データの情報を Tweet するときに,その情報で YouTube を検索した結果の URL も付記するツールを作ってみた.
http://knoike.seesaa.net/article/156013415.html 2009年12月09日
Media Player で再生している曲の情報を Twitter に自動投稿するようにしてみた.
http://knoike.seesaa.net/article/152842007.html --
2011年10月21日
「The Last.fm Dataset」
http://knoike.seesaa.net/article/231446002.html 2011年05月19日
「Audio Flowers: visualising the sound of music」
http://knoike.seesaa.net/article/202148798.html 2010年07月14日
曲情報を大量に Tweet したせいで,私の TL の S/N 比がかなり悪い状態になった気がする(^^;).
http://knoike.seesaa.net/article/156285751.html 2010年07月11日
聴いている曲データの情報を Tweet するときに,その情報で YouTube を検索した結果の URL も付記するツールを作ってみた.
http://knoike.seesaa.net/article/156013415.html 2009年12月11日
mixi station から mixi ミュージックの機能がなくなった.
http://knoike.seesaa.net/article/152841990.html 2009年12月09日
Media Player で再生している曲の情報を Twitter に自動投稿するようにしてみた.
http://knoike.seesaa.net/article/152842007.html 2009年04月03日
Last.fm のラジオが有料化へ.
http://knoike.seesaa.net/article/152839757.html 2009年02月11日
タブレットのドライバを更新したら直った.
http://knoike.seesaa.net/article/152839045.html 2008年09月26日
Rockbox が 3.0 に
http://knoike.seesaa.net/article/152835689.html 2008年09月09日
「mixi Radio」プレイヤー機能追加のお知らせ
http://knoike.seesaa.net/article/152835283.html 2008年07月20日
Last.fm サイトが,がらりと変わった
http://knoike.seesaa.net/article/152834639.html 2008年07月15日
Fire.fm
http://knoike.seesaa.net/article/152834276.html 2008年07月05日
lfls.php 取扱い説明書を複数ページに分割
http://knoike.seesaa.net/article/152834346.html 2008年07月04日
lfls.php の artist count 値の表示の桁揃えをしてみた
http://knoike.seesaa.net/article/152834350.html 2008年07月04日
lfls.php 取扱い説明書
http://knoike.seesaa.net/article/152834351.html 2008年07月04日
lfls.php に,「もっと見る」リンクを追加
http://knoike.seesaa.net/article/152834352.html 2008年06月30日
lfls.php を,CSS を使用できるように改良
http://knoike.seesaa.net/article/152833642.html 2008年06月29日
lfls.php に,項目の表示/非表示オプションと,「今」の範囲指定オプションを追加
http://knoike.seesaa.net/article/152833649.html 2008年06月29日
lfls.php を,「〜分前」形式の表示もできるように改良
http://knoike.seesaa.net/article/152833651.html 2008年06月19日
last.fm に scrobble した情報を表示する lfls.php
http://knoike.seesaa.net/article/152833699.html 2008年05月19日
lfls.php
http://knoike.seesaa.net/article/152833182.html 2008年03月21日
mixi ミュージック再生履歴からの曲の欠落
http://knoike.seesaa.net/article/152832447.html 2008年02月23日
Microsoft 主要製品の API
http://knoike.seesaa.net/article/152831313.html 2008年02月02日
そういえば globe は
http://knoike.seesaa.net/article/152831400.html 2008年02月02日
last.fm に再び scribe することにしてみた
http://knoike.seesaa.net/article/152831402.html 2007年03月29日
ID3 v2 の意外な効用
http://knoike.seesaa.net/article/152830188.html 2006年07月27日
Last.fm 日本版
http://knoike.seesaa.net/article/152829669.html 2006年06月28日
mixi ミュージック
http://knoike.seesaa.net/article/152829732.html 2006年05月24日
mixi ミュージックの使われ方予想のまとめ
http://knoike.seesaa.net/article/152829132.html 2006年05月22日
mixi ミュージック
http://knoike.seesaa.net/article/152829135.html 2006年05月10日
日本向け Last.fm
http://knoike.seesaa.net/article/152829159.html 2006年02月24日
last.fm RSS
http://knoike.seesaa.net/article/152828567.html 2006年01月29日
最近聴いた曲リスト Flash 版 (LastFmDisplayer)
http://knoike.seesaa.net/article/152827483.html 2006年01月29日
last.fm,混雑してる?
http://knoike.seesaa.net/article/152802115.html 2006年01月29日
last.fm が私の好みを学習しつつある
http://knoike.seesaa.net/article/152827487.html 2006年01月28日
last.fm 試用
http://knoike.seesaa.net/article/152827488.html
posted by NOIKE at 10:03
| 東京 ☀
|
Comment(0)
|
TrackBack(5)
|
コンピュータ
|
|