2003年08月22日(金)

QCDのNowPlyaingをscpでやっつける

ブログ,音楽に関するりばにしの記事

blogサイトをいろいろ見て回ると,PCで再生中の音楽ファイルの情報を公開している人が結構いるみたい.どんな仕組みなんだ?と思っていろいろ調べてみると,Netry Blogの'BlogAmp'やChitatopopsの'Winamp Playlistを表示させる方法'などを発見.ふむ,Winampのプラグインを使うことで実現可能なわけか.

Winampは普段使っているので,これでいいかな,と思ったんだけど,もうちょっと調べてみると,Going My Wayの'現在聞いている曲を表示する「Now Playing」'で,『QCD』なるプレイヤーによる同様の手法が紹介されているのを発見.NowPlayingというQCDのプラグインを使うことで,再生中のmp3ファイルの情報を好きな形式でファイルに書き出すことができるとのこと.その後,ファイル更新をチェックするソフトなどを用いてサーバにftpでアップロードして,blog側でファイルをincludeするなどすることで,実現されるらしい.出力されるファイルの文字コードがSJISなので,NDO::Weblogの'QCD + NowPlaying 使ってみました。'にあるように,文字コードを適宜変更してやらなければならないらしい.

「おー,いいなぁ」と導入してみようかとも思ったんだけど,ふと立ち止まる.ファイルのアップロードがftp,ってことはパスワードが心配じゃない?できれば,scpがいいんですけど・・・,と躊躇しておりました.が,思い切ってscpで更新できるようにしてみました.

scpで更新できるようにした,と言っても,僕の技量でscpのプログラムをそんなにすぐ組み込めるわけでもなく,別に新しいプラグインを開発したとかでもないんです.NowPlayingのプラグインで,プレイリスト更新時にプログラムを実行できるんですが,そこにscpを実行するバッチファイルを指定してやったんです.実はそれだけ(笑).
で,バッチファイルはこんな感じ.ドライブ名,パス,シェルスクリプト名は適宜変更.

@echo off
sh < C:\fullpath\shell.sh

あれれ?scpなんか実行していないじゃない.と,実はこのバッチファイルは,シェルスクリプトを呼んでるわけなんですよ.cygwinをインストールしないといけませんけどね.まぁ,scpもcygwinをインストールするときに一緒に導入できるので,なかなかいいのでは?
で,シェルスクリプトはこんな感じ.書き方おかしいかな?パス,ユーザ,サーバは適宜変更.「playlist.inc」はNowPlayingで吐き出すファイル.サーバ側でも同じ名前で指定してます.

#!/bin/sh
scp /fullpath/playlist.inc user@server:~/somewhere/playlist.inc

で,実はこれだけだと当然パスワードを聞かれるわけで.そこは公開鍵・秘密鍵のセットを用いた認証で,パスフレーズを空っぽにして,凌いでいます.これも危険だとは思いますけどね・・・.ftpとどっちがセキュアだろう?
まぁ,とにかくftpでやっていたことをscpでできているわけで,現状はこれでいいかな,と・・・.

表示するだけならこれで問題ないんだけど,実は別の問題が.発生.

まず,NowPlayingの吐き出すファイルが,最後に余計な文字を挿入してくれる.これが邪魔.正しいXHTMLじゃなくなってしまうんですよ,こいつのせいで.現状では出力したファイルを直接includeしているんですが,そうしないで,scpする前に編集するか,サーバ側でファイルとして開いて不要部分を削除してから表示するか,そんな手法をとることになるかな.

次に,NowPlayingで吐き出すファイルに,phpのコードを書いて,AmazonへのリンクのurlencodeやHTML文書内の特殊文字の変換作業をしてるんですが,超シンプル(でもないか?)に書いたため,歌手名,曲名,アルバム名に「"」があると,エラーを出します・・・.解決方法はあるんだけど,ちょっと逃げてますね・・・.'QCD + NowPlaying 使ってみました。'と同じように,Perlで処理した方が綺麗にできそうだなぁ.ちょっと勉強しよう.

2003年08月22日02時15分 | Permalink
Trackback
Trackback URL
Comment

プレイリスト情報を公開?

ちょっと趣旨は微妙にちがうのかもしれませんが、「wwwinamp」というソフトもありますね! 日本語の情報は皆無なんですが、自サーバーを立ててそこでwinampのプレイリスト及び特定フォル…

CJ A GO GO ブログ支部 at 2003年12月12日22時50分

Audioscrobbler参加中

今まではQCDのNow Playingプラグインを使って,現在聴いている曲の情報…

HeavenWolf at 2005年03月11日23時55分
Comment Form

▶次の記事:gigabeat G20
◀前の記事:PS2用P2Pミドルウェア