2013年08月15日

自作の音楽ファイル再生ツールに,聴いている曲データの情報を Last.fm に Scrobble する機能をつけてみました.「いまさらながら,」という感じ.以前は,どうしてくじけたんだったかなぁ.割とすんなりとできました.

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) | コンピュータ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック

ということで,再び Last.fm に Scrobble することにしてみました.私のアカウントは http://www.lastfm.jp/user/knoike です.
Excerpt: ということで,再び Last.fm に Scrobble することにしてみました. 私のアカウントは knoike です. http://www.lastfm.jp/user/knoike ..
Weblog: とり茶
Tracked: 2013-08-15 10:12

Last.fm に Scrobble するときのアーティスト名は,アーティスト名文字列に半角英数字以外の文字が含まれているときは半角空白文字を除去して Scrobble するほうが,すでに登録されているアーティスト名と一致することが多いような感じ.
Excerpt: Last.fm に Scrobble するときのアーティスト名は,アーティスト名文字列に半角英数字以外の文字が含まれているときは半角空白文字を除去して Scrobble するほうが,すでに登録されてい..
Weblog: とり茶
Tracked: 2013-08-29 16:53

last.fm に scrobble した情報を表示する lfls.php を,新しくなった last.fm サイトの仕様に対応させました.
Excerpt: 「lfls.php -- last.fm listing」 http://noike.info/~kenzi/cgi-bin/lfls/ last.fm に scrobble した情報を表示する ..
Weblog: とり茶
Tracked: 2015-09-16 18:30

自作の音楽ファイルプレイヤーに,再生している曲の情報を Mastodon インスタンスに Toot する機能を追加した.
Excerpt: 「つづききけるくん」 https://noike.info/~kenzi/programming/tudukikikeru/ 自作の音楽ファイルプレイヤーに,再生している曲の情報を Ma..
Weblog: とり茶
Tracked: 2017-05-05 03:38

API で Mastodon インスタンスに Toot したときに,インスタンスによって結果が異なったのでメモ.
Excerpt: API で Mastodon インスタンスに Toot したときに,インスタンスによって結果が異なったのでメモ. x mastodon.cloud (Ver. 1.3.2) API で Toot ..
Weblog: とり茶
Tracked: 2017-05-05 22:14
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。