Perlで書かれたプラガブルなRSS/ATOMフィードアグリゲーター(直訳)PlaggerとPerlのウェブアプリケーションフレームワークCatalystを使ってエロサイトを作ってみた。とりあえず公開。以前作ったERO Plaの進化版にあたります。動画系優良アダルトサイトの更新情報を自動取得して表示閲覧可能なだけではなく、エロページを検索をすることややタグ・キーワードをたどってエロページをみることができます。一応なんちゃってWeb2.0風なエロサイトを目指しています。 で、Catalystを使ったということでその名もErolyst/エロリスト! 場所はこちら:エロリスト(18歳未満立ち入り禁止!)。まじCatalystの勉強になった。というか勉強のためと割り切ったらエロサイトみても興奮しなくなったw
以下ざくっとした仕組みについてだらだらと。
まず、ERO PlaでもやっているようにFilter-EntryFullTextを使って動画系アダルトサイトの新着ページをアグリゲートしてくる。それでそのデータをStore-DBICを使ってsqliteのファイル形式にしてそれをCatalystで読み込むというのが基本構成。 これやるとCatalystからPlaggerのフィードオブジェクトをモデルとして操作できるのでいろいろできるわけだ。 特に、これを使ってアサマシイことも考えているので、たとえばエントリー毎をPermalink化させて自分のサイトに取り込むことができるのが魅力。 Catalystのコード、一部公開するとEntryというパーマリンクを生成するメソッドはこうなっている。
sub Entry : LocalRegex('^(http://.*)') { my ( $self, $c ) = @_; my $url = $c->request->uri; my $uri_for = $c->uri_for; $url =~ s|$uri_for||; my @entries = Erolyst::Model::Plagger::Entry->search(permalink=>$url); my @tags = Erolyst::Model::Plagger::EntryTag->search(entry=>$entries[0]->id); $c->log->info($entries[0]->tags); $c->stash->{entry} = $entries[0]; $c->stash->{tags} = $entries[0]->tags; $c->stash->{template} = 'entry.tt'; }
Catalystはいい点のひとつとしてこれを使うとURIがきれいになるというのがあるけど、 それをかなり体感できた。SEOの効果があがると嬉しい。
次に大きな機能として、検索というのがあるが、これはPlaggerのSearch-Namazuを使ってインデックスを作ってCatalystのコントロール側ではCPANモジュールSearch::Namazuで操作をしているという具合。
もう一つの面白い機能はタグ機能。 普通タグ付けというとソーシャルブックマークのようにユーザー自身がつけるのだけど、 このエロリストではちょっとそうしたCGM(Customer Generated Media)的要素ではない。 どうやってつけられるかというと、PlaggerでFilter-EntryFullTextで抽出するときに、適当に女優名などを見つけてきてそれをタグとしてくっつけている(参照: ゆーすけべー日記: EntryFullTextをタグ入れれるように修正)。というわけで例えば、白石ひよりタグページとかできるわけ。
CGMの件に触れたけど、一応Plaggerのモデル以外にも独自のモデルを作って、例えば、人気のあるタグがわかったりよく検索されるキーワードがわかるようになっている。 タグのページでははてな風味にクリック数の多いタグがでかくなるという仕組みです。
というわけで解説終わり。このPlagger+Store-DBIC+Catalystという構成はなかなか面白いということがわかった次第です。さて、このエロリストどうなっていくのやら。あ、あくまでアダルトコンテンツを含んでいるので18禁ですよー(エロリスト本サイトで18歳未満の人の退席先はYahoo!じゃくてはてなにしておいたw)。
追記
なんか検索がうまくいかないときがある。Search::Namazuがいけないのかなぁ。いやmod_perlで動かすとおかしいぞ