« 思いついた、CDTubeをよりそれっぽくする方法 | メイン | sub search_youtube {...} »

CDTubeのRSS

CDTubeではPlaggerで生成したRSSをフィードとして使っていたのだけども、仕様上、そうするとlinkがAmazonの商品ページへのURLになっていて、CDTubeのサイトには行かない。それじゃあ面白くないので、link先をCDTubeの映像があるページに移動させるようにした。Catalystのコントローラーでrssを作って吐き出す。XML::Feedを使って、

sub rss : Local {
        my ($self,$c) = @_;

        my $it = $c->model('Plagger::Entry')->search(    {},{ order_by => 'cast(rate AS INTEGER) ASC',
                                                                                                    });

        my $feed = XML::Feed->new('RSS');
        $feed->title( $c->config->{name} . ' RSS Feed' );
        $feed->link( $c->request->base ); 
        $feed->description('Mashup the Sing CD ranking with YouTube'); 
                
        while( my $e = $it->next ) {
                my $feed_entry = XML::Feed::Entry->new('RSS');
                $feed_entry->title("No." . $e->rate . " " . $e->title . " by " . $e->author);
                $feed_entry->link( $c->request->base . $e->rate );
                $feed_entry->author( $e->author );
                $feed->add_entry($feed_entry);
        }
        $c->res->content_type('application/rss+xml');
        $c->res->body( $feed->as_xml );
}

ってな感じ。リンク先はその曲を先頭に以下それより順位が下の曲情報がでてくるという具合です(この辺も改善の余地はあるがとりあえず放置)。 rss.ttが無いとエラる。参考: Catalyst::Manual::Cookbook - Cooking with Catalyst - search.cpan.org

なのでフィードのURLが http://pulpsite.net/cdtube/rss に変更になりました。あ、date入れたいな。 ところで、100位の曲が2つあったり、取得できないエントリーがあったりとバグが結構あるね。

トラックバック

このエントリーのトラックバックURL:
http://yusukebe.com/mt/mt-tb.cgi/2049

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


ブログSEO対策:track word seo