うごメモ仕様まとめ(3) うごメモはてな上にあるいろいろな情報2
前回の書き忘れみたいなもんです。
コメント
メモのコメントは違うページになっています。うごメモはてなでもAjaxで動的に読み込まれています。(Javascriptがoffだとiframe)。そのページのURLは
http://ugomemo.hatena.ne.jp/作者ID@DSi/movie.comment/作品ID
となります。
- div.comment-pager 最初と最後にあるコメントのページャーです。ここから現在のページや合計ページ数を取得できます。
- li 一つ一つのコメントはliによって囲われています。以下の属性が存在します。
- class このメモの作者のコメントにはmovie_authorがつきます。また、id:ugomemohatenaのコメントは「 ugomemohatna」がつきます。それ以外は空文字のようです。
- data-author-name 「(作者名)さんのコメント」という文字が入ります。
- data-qm-uriコメントがうごメモシアターのちょっとメモで行われている場合、その場所を示します。ちょっとメモでない場合は空文字です。
- li > span.commentheader ヘッダ情報ここから作者画像、作者名、ID、投稿日時、コメントIDを取得できる。
- li > span.commentheader > span.timestamp > a hrefにコメントの個別ページ、nameには(id)-cの後ろにタイムスタンプと思われるコメントIDがついている。コメントIDは一意識別子として利用可能な模様。
- li > span.commentheader > span.timestamp > a > time datetime属性に具体的な投稿日時が書いてある。
また、コメントを削除できる権限を持っている場合、li > span.commentheaderの最後に消去用のフォームが現れる。それと、コメントには作品が貼り付けられる場合があるので考慮すること。さらに、id:ugomemohatenaのメモ(それ以外のIDでもあるかもしれないけど)にはspan.commentheaderの最初にはa[href="/images/ugomemo_police.png"].iconが存在します。(うごメモポリス!?)
なので、絶対にspan.commentheaderは要素の番号で取得しないようにしてください。XPathやセレクタ、要素名などの手段で絞ってください。
メモ検索
検索ページは以下。
http://ugomemo.hatena.ne.jp/search?word=■&obj_type=●
■には検索キーワード(URLエンコードしてください)
●には検索タイプ(author、channel、movie)
●を省略すると、作者とチャンネルが3つと、作品がいくつかの検索結果が出てきます。
2ページ目以降はmovieと同じになります。
コマンド検索
コマンド検索は、XMLで取得することができます。途中までの入力でも可能です。うごメモはてなでもAjaxで動的に結果を取得しています。5個以上入力した場合にのみ取得していますが、1つでも取得できます。ただし、いうまでもなく正しいものはまず出てこないので、リソースの無駄遣いを減らすため、5つ以上の時だけ取得するべきでしょう。
取得
XMLのURLは以下です。
http://ugomemo.hatena.ne.jp/c.xml
パラメータはcommand_prefixの1つだけのようです。指定されていないと400が返ります。
2ページ目以降はたぶん取得できません。不便不便。指定の際には以下を半角で指定します。
↑ | N |
→ | E |
← | W |
↓ | S |
A | A |
B | B |
X | X |
Y | Y |
L | L |
R | R |
結果
XMLは以下のような構成になっています。[]は属性を示しています。
items[command_prefix]
┣dsi_users
┃┣dsi_user[command]
┃┗以下dsi_userが複数
┣channels
┃┣channel[command]
┃┗以下channelsが複数
┣movies
┃┣movie[command]
┃┗以下movieが複数
items[command_prefix]は、command_prefixパラメータが入ります。dsi_users、channels、moviesは形式が同じです。commandはそのアイテムのコマンド。(上の表のようにアルファベットになっています。)また、かくアイテムリストの中身が存在しない場合、
それぞれのアイテムの中身はHTMLとなっており、タグなどもエスケープされてテキストノードになっています。検索ページにそのまま使われているようです。
絵文字
うごメモではちょくちょく絵文字が使われます。(ちなみに、絵文字の概念は日本発祥なので、外国でも「emoji」と表記されます。)PCのUAで取得した場合、imgタグとして展開されます。
- DS絵文字
<img src="http://ugomemo.hatena.ne.jp/images/dsi/m/U+E000.gif" alt="" width="11" height="13" class="emoji emoji-ds">
となり、altに絵文字の番号が、hrefに画像のURLがあり、そのファイル名から文字コードを取得できます。また、この場合はclassにemoji_dsが指定されています。
これは、DSがUnicodeの空き領域に絵文字を入れたのでこうなっています。
- Google絵文字
はてなプラスになると使える絵文字では、
<img src="http://ugomemo.hatena.ne.jp/images/emoji/e-962.gif" alt="" width="16" height="16" class="emoji emoji-google">
のようなものが存在します。
これはGoogleとかが制定したunicodeの絵文字です。
http://www.unicode.org/~scherer/emoji4unicode/snapshot/emojidata.pdf
に一覧表が出ています。上のe-962を見るとケーキになっていますね。
この表やGitHub - google/emoji4unicode: Automatically exported from code.google.com/p/emoji4unicodeあたりも参考。
これら(DS絵文字のみ?)は作者名に使われることもあり、その場合にはなんと堂々と作者名にimgタグが挿入されています。属性でも。なので、作者名の変数のサイズは可変にするかimgタグをUnicodeに変換して保存しないと面倒なことになります。作者名をUnicodeに変換するルーチンが必要なりそうです。
ソフトを作る場合、はてなの画像を使うなら負荷を減らすため先にまとめてダウンロードしてローカルにおいておくことを強く推奨しておきます。
ケータイで見た場合、それぞれのキャリアの絵文字となって表示されます。
投稿作品ID
(投稿作品IDについてはうごメモPPM仕様まとめ(1) 作者IDと作品ID - NoMeaning参照)
うごメモシアターと通報ページにのみ書いてあります。
チャンネル
関連付けた作品一覧も別ページになっていてAjaxで作成されています。
http://ugomemo.hatena.ne.jp/作者ID@DSi/movie.channels/作品ID
このページには以下の情報が含まれます。
- チャンネル名
- サムネイル
- 関連付けた作者名(本人の場合のみIDが書いてある模様)
- 解除権限がある場合、解除ボタン
不明
http://ugomemo.hatena.ne.jp/作者ID@DSi/movie.children/作品ID
を指定するとおかしなページが表示されます。文字がなく、一部のタグが壊れています。
bodyのdata-children-path属性にこのページが指定されているのですが、最近までそんなのなかった気が。
将来的に何かがある可能性があります。