日記/2009-3

<< 2009-3 >>
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

2009-3-28

Discogs プラグイン

 

Artist:Perfume (2)
Url:http://www.perfume-web.jp/
Title:ワンルーム・ディスコ
Label:Tokuma Japan Communications
Released:2009
Track:1 [5:16] ワンルーム・ディスコ
2 [5:06] 23:30
3 [5:18] ワンルーム・ディスコ (Original Instrumental)
4 [5:06] 23:30 (Original Instrumental)

 
 DiscogsDeveloper's APIV2.0にバージョンアップし、V1.0のAPIは2012/01/15に使えなくなるためFreeStyleWiki用のDiscogs プラグインもこれに対応してみました。

インストール

  • DiscogsのAPIがV2.0になり、API-Keyは不要になりました。
  • 以下のファイルをダウンロードして、plugin以下にインストールします。
  • さらに以下のモジュールをインストールします。
    • JSON::XSのインストール
cpan[1]> install JSON::XS

使い方

{{discogs Perfume (2),ワンルーム・ディスコ,2009}}
  • 「Perfume (2)」はミュージシャン名。「 (2)」というのは、Discogsのデータベースに、他にも「Perfume」という同名のミュージシャンが登録されているためにつけられている番号で、普通はつける必要ありません。
  • 「ワンルーム・ディスコ」はCDもしくはレコードのタイトル。
  • 「2009」はリリースされた年。
  • 「Trentemøller」や「Sven Väth」のような、特にIEではFreeStyleWikiの編集画面からの入力が難しい文字が入っているミュージシャン名やリリース名(CDもしくはレコードのタイトル)を与えなければいけないような場合には、以下のようにしてください。
  • 例えばミュージシャン名が「Trentemøller」の場合、Discogsの検索窓から検索して以下のページを表示します。
  • ここで上記URLの「www」を「api」に変えたページを表示してみます。
  • すると、このミュージシャンのID(ここでは「117914」)がわかります。
  • リリース名はより簡単に、そのリリースのページのURLの最下位の番号が、そのリリースのIDになります。例えば「Trentemøller EP」のページは以下のURLになりますが、この場合「172221」がIDになります。
  • この時、masterのURLと間違えないように注意してください。参照すべきURLは各々のreleaseのものです。
  • これらのIDの頭に「##」をつけてあたえることで、そのミュージシャン、リリースの情報を表示することができます。
{{discogs ##117914,##172221}}
  • 旧版では泣きそうになりながら文字コード問題に対応しましたが、今回はすっぱり割りきってこのような仕様にしました。

補足

  • プラグインの出力全体を <div class="discogs">〜</div> でくるんであります。テーブルを組んで表示していますので、枠線がうるさく感じる場合にはCSSで非表示にしてください。
div.discogs table {
 border-style:none;
}
div.discogs th, div.discogs td, div.discogs img {
 border-style:none;
}

参考


2009-3-25

テクノ名盤200+αの刷新

 

 このサイトを作るきっかけともなった「テクノ名盤200+α」のリストの内容を刷新しました。
 リストの各ページには、もともと記載されていたTechniqueへのリンクに加え、DiscogsYouTubeでの検索結果を追記しました。
 特に、DiscogsからDeveloper's APIを使ってデータを取ってくるのは結構大変でした……。


2009-3-18

雪の東京競馬場

 

 
 「『Google Earth』に過去画像を大量追加」という記事を見て、以前のある一時期、Google Earthで雪に覆われた東京競馬場が見られたことを思いだし、さっそく確認してみた。
 上の写真、明るい晴れた日の画像は2007年3月31日に、雪景色の画像は2006年1月22日に、それぞれ撮影されたもの。
 この雪の日は日曜日で競馬の開催日だが、毎年1月のこの時期には、競馬は中山競馬場で開催されているため、東京競馬場が雪に覆われていても問題はない。しかし、この雪は千葉県船橋市にある中山競馬場にも降り、前日の土曜日の開催は中止になっている。


2009-3-15

Tighten Up

 

 2009年3月の一ヶ月間にわたり、NHK-FM40周年特番として、「サウンドストリート・アーカイブス」という番組で往年の「サウンドストリート」が再放送されている。これは、NHK青春ラジカセのために収集したテープをそのまま流しているものと思われる。
 3月の第2週は坂本龍一特集。もしかしたら自分が提供したテープをラジオから聞いてるだけかも(再放送分はすべて提供したテープに含まれる回だった)、と思いながらも、懐かしく聞いていた。
 当時の番組の放送時間が40分とか45分とか50分だったのに対して、今回の番組は1時間。余分な時間は、再放送の前後に萩原健太が当時の世相や音楽状況を振り返ったり、放送内容に関連する曲を流したりしている。
 2009/03/12には、1983/05/17放送分が再放送された。この回は、YMOの三人がエフェクターをいじくりながらくりだすギャグをまじえて「浮気なぼくら」の曲を次々と紹介していくという内容だったのだが、それが、YMOがスネークマンショーといっしょにアルバムを作っていた頃のことを思い出させるとして、萩原健太は「増殖」の「TIGHTEN UP」をかけた。その曲紹介での言葉。

これは「Archie Bell and the Drells」というR&Bグループの曲のカバーなんですけども

 カバー曲だということは知っていたが、原曲をやってたのが誰かということはまったく気にしてなかった(よく聞くと、曲中でこのバンド名、言ってますね。気がつかなかった……)。
 さっそくYouTubeで探してみると、画質は悪いが以下の動画を発見。
 

Tighten up

 
 かっこいい!
 曲が終わった後、萩原健太はさらに以下のように発言。

アメリカに「ソウル・トレイン」というね、あのお、音楽番組がありますけども、
まあ、R&B、音楽がたくさんかかる番組ですが、そこにね、YMOがゲスト出演して、
この曲をやってる映像っていうのも、みなさんおなじみだと思いますけども。
えー、矢野顕子さんとかもサポートで参加したような形でね。

 全然おなじみじゃない……。
 これまたさっそくYouTubeで探してみると、またまた以下の動画を発見。
 

Yellow Magic Orchestra Tighten Up US TV Interview 1980

 
 これもいい!
 
 それにしても、二十数年後の再放送で新たな発見があるとは。
 まあ、私の間が抜けてるだけということもあるが。


2009-3-14

Yahoo!検索カスタムサーチに対応

 

 Yahoo!検索カスタムサーチを使えるようにしてみました。

 ついでに、Menuの「Search」の項目に検索窓を追加し、ページ上部のWikiメニューの「SEARCH」(虫眼鏡のアイコン)からも、FreeStyleWikiSearch プラグインといっしょに使えるようにしました。

 試しに、Yahoo!検索カスタムサーチと、FreeStyleWikiのSearch プラグインの両者で、いくつかのキーワードを検索してみると、以下のような感じになります。

 同じ本サイトからの検索結果であっても、Yahoo!検索カスタムサーチはYahoo!のロボットが収集したHTMLソースからのものであるのに対し、FreeStyleWikiのSearch プラグインの方はあくまでWikiソースに対して検索をかけたものであるため、微妙に違いがあるのが面白いですね。


2009-3-8

OutlineT プラグイン

 

 標準のプラグインである、Outline プラグインFreeStyleWikiの本家のサイトにも、以下のように、さまざまな改造版が投稿されていますが、

 私も改造してみました。
 標準のOutline プラグインは、ページ内に記載されている見出しを抽出し、入れ子のリストとして表示するものです。通常、Outline プラグインはHeaderのページに記載しますので、見出しの数が多いとページの上部に多くの行のリストが表示されることになり、肝心の本文が、スクロールしないと見えないくらいページの下の方に表示されてしまうことがありました。
 これを防ぐために、抽出した見出しをテーブルを組んで表示し、また、小見出し(行頭に「!」がひとつのもの)は見出しの言葉自体は表示せず「■」を表示することにしました。これにより、かなりコンパクトに表示されることになります。

インストール

  • 以下のファイルをダウンロードし、plugin/info以下にコピーする。
  • plugin/info/Install.pmに以下の行を追加する。
$wiki->add_paragraph_plugin("outlinet","plugin::info::OutlineT","HTML");

使い方

{{outlinet [ページ名]}}
  • 従来のOutline プラグインと同じ。本サイトでもHeaderのページに書いています。
  • プラグインの出力全体を <div class="outlinet">〜</div> でくるんであります。テーブルを組んで表示していますので、枠線がうるさく感じる場合にはCSSで非表示にしてください。
div.outlinet table {
  border-style:none;
}
div.outlinet th, div.outlinet td {
  border-style:none;
}

参考

  • BugTrack-plugin/384 outlineで別のページを指定できる様にしました
    • これを基に改造しました。ありがとうございます。


2009-3-7

jQaccordion プラグイン

 

 JavaScriptライブラリjQueryのプラグインであるAccordion Content scriptを用いたFreeStyleWiki用のプラグイン。
 ダウンロードはこちらから。
 
 アコーディオン・メニューを表示するプラグインです。本サイトの左側に表示されている、Menuのページに記載してあります。
 Menuのページのソースは以下の通り。

{{jqaccordion}}
{{div_begin class="acdn_header"}}
!!!Topic
{{div_end}}
{{div_begin class="acdn_content"}}
*テクノ名盤200+α
*洋楽オルタナティヴ・ミュージック・ベスト100
*THE BEST OF AMBIENT WORKS 1978-2008
*アメトーーク!昭和アニメソング芸人
*「タモリ倶楽部『台所で飲む』」の料理
*You Tune YouTube 352 VIDEOS!!
*YouTube 120 A NEW POINT OF VIEW
*jQueryを利用したプラグイン
*加藤愛
{{div_end}}
{{div_begin class="acdn_header"}}
!!!Recent
{{div_end}}
{{div_begin class="acdn_content"}}
{{outlinecalendar 日記,7}}
{{div_end}}
{{div_begin class="acdn_header"}}
!!!Category
{{div_end}}
{{div_begin class="acdn_content"}}
{{category_menu}}
{{div_end}}
 
{{include_html あわせて読みたい}}
{{jqaccordion end}}

 プラグインの作りがイマイチで、かなりダサい書き方をしなければなりませんが、

  • アコーディオン・メニューの開始位置(ページ最上部)に、{{jqaccordion}} を記載する。
  • 終了位置(ページ最下部)に、{{jqaccordion end}} を記載する。
    • メニュー全体を、両者で挟み込むようにする。
  • アコーディオン・メニューのヘッダーを、{{div_begin class="acdn_header"}} と、{{div_end}} で挟み込むように記載する。
  • アコーディオン・メニューの内容を、{{div_begin class="acdn_content"}} と、{{div_end}} で挟み込むように記載する。

といった感じになります。

参考および関連情報

宿題

  • もう少しましな書き方ができるようにしたい。
  • jQuery UIの、Accordionを使うことも考えたのですが、どうもうまくいかず……。

 

2009-3-1

RSS関連(RSS1.0、RSS2.0、Atom0.3)プラグインの修正

 

 「世紀末キッズのためのSF100冊」で使ってみて、FreeStyleWikiの本家のサイトに投稿されているRSS関連(RSS1.0、RSS2.0、Atom0.3)プラグインの、rss プラグインに、以下のような不具合を見つけました。

  1. 与えるRSSフィードのURIが長すぎるとエラーになる
  2. フィードのアイテム数が1つしかないとエラーになる

 まず、1.について。
 RSS情報をキャッシュする際、RSSフィードのURIをそのままURIエンコードしてファイル名を作り、このファイル名でRSS情報を保存しようとするのですが、当然ながらURIが長いとキャッシュのファイル名もその分長くなり、それがあんまり長い(ファイルシステムによるようですが、だいたい255バイトまで)と File name too long と怒られてしまいます。
 これを避けるため、MD5でとったURIのハッシュをファイル名に使うようにしました(下記のdiffの出力の50行目あたりからの変更に対応)。
 
 次に2.について。
 RSSフィードのアイテム数というんでしょうか、例えばRSS2.0の場合だと、フィードの構造は以下のような感じですが、

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title> TITLE </title> 
    <link> LINK </link> 
    <description> DESCRIPTION </description> 
    <language>ja</language> 
    <ttl>120</ttl> 
    <copyright>Copyright (C) 2009 XXXXXX</copyright> 
    <lastBuildDate>Sun, 01 Mar 2009 11:31:05 +0900</lastBuildDate> 
    <item>
      <title> TITLE </title> 
      <link> LINK </link> 
      <description> DESCRIPTION </description> 
      <pubDate>Wed, 26 Dec 2007 01:38:40 +0900</pubDate> 
    </item>
    <item>
      <title> TITLE </title> 
      <link> LINK </link> 
      <description> DESCRIPTION </description> 
      <pubDate>Wed, 15 Aug 2007 00:40:23 +0900</pubDate> 
    </item>
  </channel>
</rss>

 上記の例だと2つある<item>のタグでくくられている要素が1つしかないと、Not an ARRAY reference at plugin/rss2/Aggregater.pm line 136 と怒られてしまいます。
 これを避けるために、XML::TreePPのforce_arrayプロパティを指定して、<item>、および、<entry>というタグでくくられた要素は必ず配列としてパースされるようにしました(下記のdiffの出力の95行目あたりからの変更に対応)。
 
 以下が、FreeStyleWikiの本家のサイトのRSS関連(RSS1.0、RSS2.0、Atom0.3)プラグインのページに添付された、rss2_20061224.zip に含まれるファイル Aggregater.pm と、今回の修正を施したファイルとの差分です。

--- Aggregater.pm.org	2006-10-16 13:22:00.000000000 +0900
+++ Aggregater.pm	2009-03-01 10:03:20.799000000 +0900
@@ -50,7 +50,8 @@
 		return &Util::paragraph_error("RSSのURLが指定されていません。");
 	}
 	my $filename = $url;
-	my $cache = $wiki->config('log_dir')."/".&Util::url_encode($filename).".rss";
+	my $cache = &Util::url_encode($filename);
+	$cache = $wiki->config('log_dir')."/".&Util::md5($cache).".rss";
 
 	my $readflag = 0;
 	if(-e $cache){
@@ -95,6 +96,7 @@
 EOM
 
 	my $tpp = XML::TreePP->new();
+	$tpp->set(force_array => [ "item","entry" ]);
 	my $tree = $tpp->parse( $content );
 
 	my $ver = "RSS1.0";

参考

追記