うごメモPPM仕様まとめ(1) 作者IDと作品ID

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

作者ID

世界中のDSiを一意に識別するIDです。DSiID、うごメモIDと呼ばれることもあります。初期化などでIDは変化します。
長さは8byteで文字列で表す場合は大文字の16進法で表記します。
うち後半4byteは本体のMACアドレスの末尾4byteです。これはDSi固有のもので初期化しても変わりません。
MACアドレスの末尾がかぶる可能性はたぶん40億分の1ぐらいなのであんまりかぶらないです。
前半4byteはランダムです。
ユーザーのマイルームは http://ugomemo.hatena.ne.jp/(ID)@DSi/ という形式になります。

うごメモのファイル内にはバイナリで入っています。

作品ID

作品を一意に識別するIDです。

3つのセクションに分かれており、それらを「_」でつなげます。
PPMファイルの中にも同様のデータがあるのでそれをつなぎ合わせて作品IDを作ることができます。

場所 説明 PPMファイル内の扱い ID文字列への変換法
先頭6桁 DSiMACアドレスの末尾3byte。DSi固有ですが1600万分の1ぐらいの確立でかぶります。作者IDのMACアドレスの後ろ3byteとも一致します。 バイナリ 16進に変換
中央13桁 作品ごとに違うランダムな16進文字列。なぜか13桁という半端な桁数。1byteでも削るべきなのに生文字で保存しているところを見ると将来的な拡張の可能性があるかもしれない 普通に文字 ASCII文字列としてそのまま使う
末尾3桁 作品の更新回数で同じ作品を識別するために使われる。255を超える場合を必ず考慮する バイナリ 2byteを10進法の3桁(ゼロ埋め)に

アップロードされていれば「http://ugomemo.hatena.ne.jp/作者ID@DSi/movie/作品ID」でその作品のページに行くことができます。

SDカードにメモを入れる

SDカードにメモを入れる場合、以下のフォルダにPPMファイルを入れてください。

(SDカード)/private/ds/app/4B47554A

(4B47554Aは日本のリージョンのようなので、海外では違うかもしれません)
PPMファイルはたぶん正しい名前(作品ID)である必要があります。
作品IDが不明な場合でもPPMファイル中のデータから作品IDを求めることができます。

また、PPMの後ろについているチェックサムが一致しない場合、メモが改ざんされていると判定されうごメモで開こうとした地点で強制的に削除されます。
チェックサムは1024bitなのでRSA-1024っぽいですが、鍵がわからないと求まらないと思われます。

作者IDと作品IDを抜き出す正規表現

この作者ID+作品IDの組み合わせは作品ページ以外にPPMファイルやサムネイル画像などにも使われており、それらから作者IDと作品IDをとりたい場合があります。

どんな形式でも抜き出せるようにするためには正規表現を使うのが手っ取り早いでしょう。

現在私が利用している正規表現は以下です。

/([0-9A-F]{16})(?:@DSi)?/.*?([0-9A-F]{6}_[0-9A-F]{13}_[0-9]{3})

もっとよい方法があれば随時変えていっています。

投稿作品ID

追記です。
作品には、うごメモ内で「作品ID」と表記される、投稿した順番に振られるIDが存在します。
紛らわしいので、こちらのほうは「投稿作品ID」と呼びます。投稿されていないメモも含めたID(上のやつ)は「作品ID」と呼ぶことにします。

投稿作品IDは早いメモだとIDが1桁や2桁のものも存在します。
現在では3000万台に達しているようです。

たぶん、メモごとに全部違う作品IDだと長すぎるので、こちらをデータベースの主キーに使っているのでしょう。
シアターでは書いてあるのですが、残念ながらパソコン版などではなかなか見られません。
通報ページに書いてある程度です。通報ページはIDのある人しか見れないので、実質使い物になりません。


3/28 作品IDとSDカードについての記述を一部追加

うごメモ仕様まとめ一覧

うごメモうごメモはてなPPMに関していろいろ解析したり調査したりした結果をまとめていきます。で、このページはまとめのまとめです。
自分用でもあるので適当な部分があったり。今後の予定もあります。

その他 ノンジャンルや汎用的なもの
作者IDと作品ID 作品IDと作者ID、投稿作品IDの基本事項
Web うごメモはてな関連のもの
うごメモはてな上のメモファイル うごメモ上にある各種ファイルをダウンロード。PPM、FLV、3GP、3G2
うごメモはてな上にあるいろいろな情報1 うごメモはてな上にある作者情報と、RSS、☆などのAPI
うごメモはてな上にあるいろいろな情報2 うごメモはてな上にあるコメント、検索、絵文字、チャンネルの情報
PPM うごメモのメモファイルを解析
PPMファイルの構造概要 PPMファイルの構造の概要です
ヘッダ PPMファイルのヘッダ情報
アニメーションヘッダ アニメの前にあるヘッダ
アニメーション解析 アニメーションの実データを解析

謝辞

以下のサイトを参考、参照、翻訳パクリとさせていただきました。
すべての項目について、ここで出展と感謝にかえさせていただきます。
Flipnote Files/PPM - DSiBrew
pbsds's blog
うごくメモ帳のメモデータ *.ppm - mirai-iro's diary
bricklifeの日記 - うごメモはてな部

うごメモ拡張の1.1.0.9【β】を公開

うごメモ拡張の1.1.0.9【β】を公開しました。
うごメモはてなの仕様の変更と独自マイリストのβ実装が行われています。
前回までのには不具合があるので、ベータ版ですがインストールを推奨します。
こちらからダウンロード。
http://www.geocities.jp/ugomemo_harimau/greasemonkey.html

詳しい変更内容はダウンロードページのChangeLogと、スクリプト上部のコメントを参考にしてください。

マイリストの使い方

拡張をインストールします。
一番下の「うごメモスクリプト設定」をクリックします。
「マイリストβ」のチェックを入れて「適用」を押し、ページを更新します。
上に半透明のバーが現れます。
ユーザー名のを右クリック、作品ページの「Add+」、チャンネルページの「マイリストに追加」、バー上の「☆」の「登録」を押したダイアログのいずれかから登録できます。

詳細については後で書くことにします。

うごメモのエラーコードをちょっと調べてみた。

ちょっとイントラネットで串刺してHTTP改ざんしてうごメモのエラーについて調べてみた。

基本「340+HTTPステータスコード」となるらしい。
HTTPステータスコードは、

1xx
Informational 情報 リクエストは受け取られた。処理は継続される。
2xx
Success 成功 リクエストは受け取られ、理解され、受理された。
3xx
Redirection リダイレクション リクエストを完了させるために、追加的な処理が必要。
4xx
Client Error クライアントエラー クライアントからのリクエストに誤りがあった。リクエストは失敗した
5xx
Server Error サーバエラー サーバがリクエストの処理に失敗した。

となっています。はてなのサーバーはあまり5xxを返しません。
エラーとなるのは4xxがほとんどでしょう。

特に「403 Forbidden(アクセス拒否)」は結構あるかもしれないです。
はてなはサーバー高負担などで処理できなかったりすると片っ端から403を返すみたいなので。
アク禁だったら別のメッセージが出るので、これはアク禁とは違う。

ただし、600版以降や100版未満が使われることもあるようです。
600版以降と100版以下はは定義されていないので、独自のエラーコードだと思われます。サーバーが返さなくてもクライアント側の判断ででる場合もあるので、クライアントタイムアウトなんかも入ったりしているのでしょうか?
340605はFAQによると「はてなにデータが届く前に問題が発生し接続が切れてしまうエラーで、現在のところ発生する詳しい原因が分かっておりません」とのこと。

他の処理

  • タイムアウト
    • シアターのクライアント側のタイムアウトは大体1分以下。「データが取得できませんでした」「340070」。
  • 切断
    • レスポンスをうけずに通信を切る。「データが取得できませんでした」「340610」
  • 全力でリダイレクト
    • しつこく307で同じとこに飛ばし続けるとタイムアウトで340070が返った

もっといろいろやりたいけど、ネットワークに詳しくないんですよねー

--------
追加
ネットで他のエラーコードを出来るだけ見つけてみた。
ちなみに、拾ってきた情報なので全部が真実とは限りません。書き間違えている人などもいるでしょうし。

エラーコード 原因([予]は実際にあったことがなく、完全に予想)
340001
340070 クライアント側のタイムアウト
340302 [予]302=>Found リダイレクトしてその先のリソースをとりに行くのにエラーになるはずはない・・・?
340401 [予]401=>セッション切れ?
340403 負荷が高すぎるなどでアクセスが拒否された
340404 [予]404=>データがない?
340503 [予]503=>メンテナンスやサービス停止、障害、処理不能
340604
340605 はてなのサーバーの手前で問題が発生して切断された(FAQ参照)
340610 通信が途中で切断された

うごメモ拡張の暫定修正版

え〜前回のうごメモはてなの変更で私が公開しているうごメモ拡張の一部で不具合が発生していました。

とりあえず、暫定版を用意しました。
http://www.geocities.jp/ugomemo_harimau/greasemonkey.html

なんかうまく動かないアカウントポップアップが無効となっています。他にも一部おかしいですが、暫定版です。はい。

GoogleChrome版ではまぁそれなりに動くので、とりあえずなしです。
メモページで表示がいろいろおかしいですが、とりあえず設定で通常プレイヤーに戻してしのいでください。

完全復活までには少しお待ちください。

                • -

原因発見。jQueryのバージョンが古いせいでした。OperaFirefox用の暫定版2を作成しますので、少々お待ちを。

                • -

同日 20:41
修正完了。アカウントポップアップが有効な1.1.0.1【暫定版】を公開しました。
http://www.geocities.jp/ugomemo_harimau/greasemonkey.html
他に、アカウントポップアップの複数の不具合が修正されています。詳しくは変更履歴をご覧ください。
内部に大量のコメントが残っていますが、暫定版なので。
GoogleChrome版はもう少々お待ちください。(要望があればできれば即日で対応させて見ます)

誰得マイリストも開発が進んでおり、近日まとめてアップデートします。

                          • -

なかなか時間が取れなくてバージョンアップが出来ずにいます。
GoogleChromeで直に必要な方がいましたら、暫定版を何とか仕上げますので、コメントまでお願いします。

うごメモはてなの作品ページのメモがでっかくなった件について

2011/09/16にうごメモはてなのPC版の再生ページの表示がでっかくなりました。
右上の矢印ボタンを押すと小さくなります。
しかし、その設定を保存するコードはこうなってます。

new Ten.Cookie().set('_hatena_small_player', 1);

いちいちなんでもnewするTenライブラリがうざいとか、jQueryCookieを使ってほしいとか、そういう問題ではありません。
期限が設定されてない!!
おかげで、ブラウザはセッションが終了するたびに設定をリセットします。
ブラウザを終了させるたびに馬鹿でかい画面に戻るということ。
これは、うざい。

さすがにそのうち対策されるでしょうが、とりあえず一時的に以下をコピーしてアドレスバーに入れれば設定の期間を1年間に延長できます。

javascript:(function(){new Ten.Cookie().set('_hatena_small_player', 1,{expires: '+1y' });})()

矢印ボタンを一度でも押すと期限はリセットされます。


今回の変更に関して、私が公開しているうごメモはてな拡張でいくつかの不具合が発生しています。現在修正を行っているので近日修正版を公開します。

自分のやる気の波

ゲームとかいろいろ作りたいなーと思うんだけど、やる気がおきない^^;;
結構最近忙しいのもあるんですけどね。

自分はやる気の波が大きいほうなので、気分しだいでいろいろなことをやるタイプです。
とりあえず、現在他の事をやってます。

具体的には、以前やったPPM解析のプログラムがあまりにお粗末で余裕でメモリを占拠してしまうので、仕様も含め再実装中だったり。サイズ的にMemoryStreamなんぞ使わず、FileStreamにキャッシュするのが一番という結論に。
結局、公開していないけど再実装後はどうしようかな?