2009年08月28日
SLブログポータルの構造
手動登録サーバ
SLでの名前、ブログURL、カテゴリを入力→仮登録。
登録したアバターに認証装置を送信。
アバターが認証装置を装備した段階で認証→本登録。
これにより、登録ユーザーがSLのユーザーであることを確認する。
認証装置
装備したアバターの名前をllHTTPRequestで登録サーバに送信するプリム。HUDでもいいが、むしろデフォルトの右手装備がいろんなものとバッティングしないのでいいと思われる。この装置からの信号を受け取ったら、サーバ側では仮登録アカウントと比較して本登録に移行する。登録が成功したらhttp responceでその旨伝えて、プリムは自己消滅するようにする、これ自体の配布方法は、専用ベンダーを製作し、LSL HTTPサーバを使って登録サーバからのアクセスを可能にする。
更新サーバ
更新サーバは定期的に登録サイトのfeedを取得して新着リストなどを更新、データベースに登録。また、更新pingを受け取った場合はその場で更新。また、登録されていないslmame.comからのpingは自動登録。ただし、カテゴリーは「その他」とかにしておく。
ポータルフロントエンド
フロントエンドはデータベースから現在の状態を取得し。Webページにして表示。トップは全カテゴリの最新記事、カテゴリリンクから各カテゴリに移動可能という形式がいいと思う。
投稿による制御
登録アカウントごとににパスワードを設定して管理ページを作成するのが普通だが、別の方法として、ブログの記事中にポータル登録情報の変更を行うコマンドを埋め込むという方法が考えられる。たとえば本文中に
[portalcommand:delete]
と埋め込むと登録削除
[portalcommand:cat=アダルト]
とするとアダルトカテゴリに設定するなど。
これによって、自動登録なソラマメなどでもカテゴリの設定が可能になるし、あとからカテゴリを変更したい場合も管理ページなしで実現できる。通常RSSなどは本文とコメントは別になっているので、ブログオーナー以外が勝手にコマンドを送信することはないと思うが、セキュリティに注意する必要はあるかも。
2009年08月26日
Bloggerは更新pingが打てない!
登録サイト全体のRSSを定期的に取得する方法をとるしかないということかなあ。この間の実験で、70個ほどのサイトのRSSを取得して解析するのに一分以上かかりました。また、RSSリーダなどが頻繁にフィードを取得することは相手のサイトに負荷を与え、場合によってはDOS攻撃となりうることから、一般にRSSの取得にはある程度時間をあけて行うことになります。ポータルの側が登録サイト総なめでデータを集めるとなると、やはり一時間とか二時間とかおきにしかチェックしないと言うことになると思います。ううむ、やっぱり大変だなあ
2009年08月26日
あるべきSLブログポータル
- 基本的にソラマメトップの新着表示なみの機能が実現されること。
見やすいサイズの画像サムネールと、画像なし新着リストの一覧が表示される。アクセスランキングもあるとなおよし。 - 登録が簡単であること
Webフォームで気楽に登録できると良い。登録しなくてもいいならもっとよい。 - 更新が迅速に反映されること
「開店時間です」「今ここにいます」といった情報も遅延なく反映されるとよい。 - 登録サイトの横断検索があること
これ、自分のところで完結しているソラマメと違って結構大変だと思います。最悪自分でWeb検索エンジンを作る羽目になる。
1はまあ、機能としてはこの前考えた方法で可能なのでやればやれるでしょう。
2についてですが、ブログURLとカテゴリを設定すればすぐ有効になるくらいの簡単なのがいいですね。登録カテゴリ編集したり、登録を解除したりとかいう機能を付けようと思うと管理ページへのログインが必要になるのでそうもいかないとおもいますが。六ヶ月以上更新がなかったら自動削除とかで、あえてユーザーによる管理機能をなくす方向でもいいかも。問題は誤登録ですが、登録ページにセカンドライフ関連ブログのみに限る旨書いておくだけでそれなりに防止になるでしょうし、なんだったら登録項目にSL名を含め、インワールドでタッチすればその情報を確認して登録完了になるオブジェクトでも設置して認証すればいいのではないかと思います。
3については更新pingを受け取ってRSSを読み取り、反映させる方法がいいと思います。また、2とも関係しますが、ソラマメユーザーはあらためてポータルに登録することなく、更新pingを送るだけで自動登録されるようにしたらいいんじゃないでしょうか。なにしろソラマメユーザーは基本的にSL関係のブログを書いているわけですから。
とにかく、更新pingを送る設定はブログ環境設定に一度やっちゃえばOKなので、あとは新規記事を書く度に更新されることになります。更新pingを送る機能のないブログもあった気がしますが、その場合トラックバックpingでも受け付けるなどすればいいかもしれません。ただし、トラックバックというのは基本的に記事毎に設定する物ですから、実用上は毎回の更新通知で設定するのはあまりよくないですね。
4は自分で検索をまともに作ろうと思ったら大変なので、Googleのカスタム検索エンジンを使うのがいいでしょう。スクリプトから新規サイトを検索対象に追加することも可能なようです。検索結果に広告が入りますが無料でつかえますし。
大事なことは、ソラマメの代替という位置づけではなく、レイヤーの違うSL情報集積サイトとしてやっちゃうことじゃないかと思います。
なんだったらいまいち普及していないTwitterもどきだけどSLで使いやすい機能をもったWassrのSLタイムラインを表示する機能などもつけるといいかもしれません。うまいことやればWassrにスポンサーになってもらえるかもよw
スポンサーといえば、この種のポータルをやる場合、アフィリとかで維持費をまかなうとか、なんだったら一儲けするというの考えられますが、ソラマメがいまいちそっちの方向うまくいってないのは、読者がみんなSLの事を考えてるときにRLの広告しか表示されないからですよね。もし広告を入れるならそのへんを考えないとやっぱしうまくいかないと思います。もっとも、SL内からスポンサー募るのも、デフレ状況考えるとやっぱしきびしいですね。
2009年08月24日
ソラマメ風の新着表示を試しに作成

んー、とりあえずいろんなブログURLからRSSフィードを探して、それでRSS取得して、画像リンクをみつけて縦横90ピクセルで表示
ってのをPHPでやってみましたが、ちなみにこれは新着順にもなってません。とりあえずデータを抽出して表示する実験なので。
やってみて気がついたこと。
RSSフィードでは画像リンクを省いているブログがある(Wordpress.comとか)。
小さい画像は無視するようにしないと、絵文字などが拡大表示されてしまう。
ページに広告バナーとか入れられちゃうとそっちが表示される。
大量の登録サイトを横断的に更新チェックするのはかなり重い。
リンク先のリモート画像を縮小表示しているので、このページを見るだけで相手方のブログにリクエストが飛んでしまう。トラフィックを減らすためには画像をローカルにコピーして縮小保存するなどの方法が必要。GDでできたっけ。
まあ、もちろん全登録サイトを一度に取得するってのが無茶なので、たとえばトラックバックpingを受け取る仕組みを作って、pingもらったら登録サイトのリストにあるかどうか比較し、あったらそのサイトのデータを更新し、新着リストのトップに入れて、現在の新着リストの最下位を落とすというようなやり方がスマートだと思います。
GYARAN-DOUのルナさん、うきしまさんらがSLブログ新着情報サイトSL-FUNを構築中ですが、新着画像がウエブページそのものの縮小サムネールなので、ソラマメと比べて絵で内容を想像できないということもあり、上のような実験をしてみたのですが、RSSに画像が入ってないサイトはこの方法では画像を取得できないので、結局サイトイメージの縮小というのが仕方ないところかもしれません。
8/25追記
2009年08月22日
ソラマメトップページのすごさ

なんといっても最新記事の画像が30個みっちり表示されるのがすごいです。ぱっと気になる画像をクリックして記事を読むって人多いと思います。縦横比を合わせてくれないので、正方形以外の画像を貼るとゆがんじゃうのが残念ですが…
個々の画像の下には記事のタイトルが短く切り詰めて表示されるのですが、短すぎて意味がわからないことがままあります。そういうときは画像リストの下のテキストによる新着一覧で確認できます。画像のないページもこちらにはリストされるので、これは非常に考えられた仕組みです。
ところで、トップの画像一覧に表示される画像は、画像をアップロードすると自動的に作られるサムネールを、imgタグのwidth, heightで縦横90ピクセルに縮小表示しています。実際この大きさって結構顔も解るしサイズも小さい、いい感じのサイズだと思いますよ。
2009年08月20日
ブログ移転方法など
もちろん、有料化と別に「大人のソラマメ」の全廃なんかもあるので、そのへんも厳しいです。私のブログはそもそも「Matureで行こう」というエロ系のもので、こちらはそもそもエロ以外の記事を書くときにトップに載らないのがもったいないのでPG版として立ち上げた物です。
まあ、愚痴はさておいて、最終的に移転する場合の行き先、どうしましょうということです。エロっぽい内容、ストリップクラブのヌード画像などは一般の無料ブログサービスでも規約違反になる危険性はあるわけで、安全を考えると基本的にアダルトブログOKをうたっているところがいいということになります。このジャンルで有名なのはFC2とDTIです(どちらもブログのカテゴリをアダルトにする必要はあります)。ただし、DTIのアダルトカテゴリーでは強制的に写真入りのエロ広告が挿入されてしまうので、SLブログとの相性は悪いです。FC2では容量を減らしてよければ広告をカットできるようですし、そもそもテキスト広告なので出会い系だの金貸しだのでも、あんまし気になりません。というわけでFC2に移行する場合の方法です。
まあ基本管理画面でブログの中身を書き出して、移転先で読み込ませるだけですが。ソラマメのブログ管理画面で、「ブログの設定」→読み込み・書き出しを選んで、「ブログ記事の書き出し(エクスポート)を行います。」というところを使います。

FC2も文字コードはEUC-JPなので、上の写真のように設定して「書き出し開始」ボタンを押すとブログの記事やコメントなどが一通りまとめて書き出されます。
注意しないといけないのは、ソラマメにアップロードした画像は書き出されないということです。このまま移転すると画像のあったところが全部空白になります。画像はローカルに保存してあった物をあらためてアップロードしなければいけません。また、同じファイル名でアップロードしても結局リンク先のディレクトリが異なるため表示されないことになります。
これを解決するには、移転先で一個一個画像を張り直すか、移転先にブログファイルを読み込ませる前に、書き出したブログファイルをエディタなどで開いて、画像リンクのURLを一括変換するといいと思います。ただし、サムネイルをつかっている場合はうまくいかないかもしれません。
また、ソラマメで書き出したファイルをFC2で読み込ませると改行が無視されて文章が全部繋がってしまいます。これを解決するには、やはり書き出したファイルを開いて、
CONVERT BREAKS: 1
となっているところを、すべて
CONVERT BREAKS: default
に書き換えるといいです。これもテキストエディタなどで一括置換すれば早いです。
ところで、ソラマメの一番の強みは、SLポータルとして、ここにSL内の日本の情報が集約されているという事があるわけです。トップページを開けば、SL参加者の新着情報が画像入りで一覧されているというのは、ほんとうにありがたいですよ。この機能の代替ができてうまく動かない限り、ソラマメから移転してもただ訪問者が減るだけだと思います。どうしたものでしょうねえ。
2009年08月08日
plsファイルの変換にYahoo! Pipes
やっぱり外部サイトを構築したりPHPやPerlを使ってスクリプトを書くのは面倒ですし、どうもスマートではありません。ほんとはLSL内で完結できれば一番いいんですけど、それは無理なようなので、試しにYahoo! Pipesを利用してみることにしました。
Yahoo! Pipesというのは、インターネット上の情報を組み合わせたり編集して、RSS形式で配信するための環境です。何を言ってるのかわからないと思いますが、大丈夫です、私もよくわかっていません。なんというかビジュアルにパーツを組み合わせてプログラムが組めるのでなかなかおもしろいです。
.plsファイルをエディタなどで開くと以下のようになっています。
[playlist]この局の場合上位のURLにはリスナーの空きが多く、最後のURLだけフォーマットが違うのがわかります。正式な仕様はわかりませんが、上の方はリレーサーバで、一番下のが放送している人が直接使っているサーバになるようです。SHOUTcastの場合、放送URLに/7.htmlとつけて表示すると現在放送している曲名などの情報が得られるのですが、上の方のリレーサーバではこれらの情報が得られないことが多いようです。従って、放送受信のために最上位のリレーサーバを、曲名取得のために一番下のサーバを取得すると便利そうです。
numberofentries=21
File1=http://scfire-mtc-aa03.stream.aol.com:80/stream/1065
Title1=(#1 - 46/500) Vocal Trance - D I G I T A L L Y - I M P O R T E D - a fusion of trance, dance, and chilling vocals
Length1=-1
File2=http://scfire-mtc-aa04.stream.aol.com:80/stream/1065
Title2=(#2 - 48/500) Vocal Trance - D I G I T A L L Y - I M P O R T E D - a fusion of trance, dance, and chilling vocals
Length2=-1
<中略>
File20=http://scfire-mtc-aa02.stream.aol.com:80/stream/1065
Title20=(#20 - 426/500) Vocal Trance - D I G I T A L L Y - I M P O R T E D - a fusion of trance, dance, and chilling vocals
Length20=-1
File21=http://205.188.xxx.xxx:8004
Title21=(#21 - 20/20) Vocal Trance - D I G I T A L L Y - I M P O R T E D - a fusion of trance, dance, and chilling vocals
Length21=-1
Version=2

これが今回作ったプレイリスト変換プログラムです。URLを受け取って、CVS形式と仮定して読み込み、音楽のURLを抽出します。プレイリストにいくつもならんでいるサーバURLのうち、最初と最後を取り出して返すようにしています。サーバURLを全部取り出すとLSLで受信不可能なサイズになる恐れがあるので、このあたりがちょうどいいと思います。
なぜFetch CVSでplsファイルを読み込むかというと、他の方法ではうまく読み込めなかったからです><
Fetch Pageだとrobots.txtに拒否られたとエラーが出るし。もともとCSVじゃないので少々工夫がいりますが、まあこれでなんとかURLは取得できるのでいいでしょう。
このようなパイプを作成して、
http://pipes.yahoo.com/pipes/pipe.run?_id=[パイプid]&_render=csv&url=[URL]
というような感じでURLデータを渡してやれば、結果がCSV形式で返ってくるので、あとはLSLで加工してMusic URLに設定したり、定期的に曲情報を取得したりできるでしょう。