うごメモ仕様まとめ(3) うごメモはてな上にあるいろいろな情報2

うごメモ仕様まとめ一覧 - NoMeaning

前回の書き忘れみたいなもんです。

コメント

メモのコメントは違うページになっています。うごメモはてなでも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の空き領域に絵文字を入れたのでこうなっています。

はてなプラスになると使える絵文字では、

<img src="http://ugomemo.hatena.ne.jp/images/emoji/e-962.gif" alt="[emoji:962]" 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属性にこのページが指定されているのですが、最近までそんなのなかった気が。
将来的に何かがある可能性があります。