増田です。

長文です。すみません。

On Sat, 15 May 2010 00:57:35 +0900 (JST)
Tadashi MATSUO <t...@mymail.twin.jp> wrote:

> 今回の commit を導入すれば後は twittering-api-host,
> twittering-web-host, twittering-api-search-host を変更するだけで
> StatusNet を使えるようになるんですよね?

いえ、URL のパス変更と、環境によっては文字コードの修正が必要です。
以下にまとめましたが、サンプルソースが必要でしたらお知らせください。

◆URL のパス変更
今回は他のクライアントへのメリットも考慮して Apache の mod_rewrite で変
換しましたが、そういえば権限がないケースもありますね。

StatusNet を http://example.com/statusnet/ に構築した場合の Twitter と
の違いは以下になります。

           ホスト名                   パス
(1) 通常時
Twitter    http://api.twitter.com     /1/statuses/*.xml
StatusNet  http://example.com         /statusnet/api/statuses/*.xml
(2) 検索時
Twitter    http://search.twitter.com  /search*
StatusNet  http://example.com         /statusnet/api/search*
(3) "20 minutes ago" や "in reply to hoge" のリンク先
Twitter    http://twitter.com         /<アカウント>/status/<ツイート番号>
StatusNet  http://example.com         /statusnet/notice/<ツイート番号>
(4) ハッシュタグへのリンク先
Twitter    http://twitter.com         /#search?q=%23<タグ名>
StatusNet  http://example.com         /statusnet/tag/<タグ名>

mod_rewrite を使わず twittering-mode.el をベタに修正するとしたら、以下
のようになります。

(1) "1/" を全て "statusnet/api/" に置換
(2) twittering-call-api() の simple-spec-list の (search . "search") を
    (search . "statusnet/api/search") に変更。
(3) twittering-get-status-url() が返す URL を変更
(4) twittering-get-search-url() が返す URL を変更

 ※ (4) については、mod_rewrite は判断出来ないので advice で対応してい
    ます。

    (defadvice twittering-get-search-url
      (after
       twittering-get-search-url-for-hashtag
       activate)
      "ハッシュタグが指定されていたら、戻り値を StatusNet 用の URL に書き換える。"
      (let ((query-string (ad-get-arg 0))
            hashtag)
        (when (string-match "^#\\(.+\\)" query-string)
          (setq hashtag (match-string 1 query-string))
          (setq ad-return-value
                (format "http://%s/statusnet/tag/%s";
                        twittering-web-host
                        (twittering-percent-encode hashtag))))))

◆文字コードの変更
Emacs のデフォルト文字コードが UTF-8 以外の時は、以下相等の処理が必要で
す。Twitter はマルチバイト文字を %e3%81%bb%e3%81%92 のように符号化し送っ
て来ますが、StatusNet は生の UTF-8 を送ってくるからです。

(defadvice twittering-start-http-session-curl
  (around
   twittering-start-http-session-curl-utf8
   activate)
  "curl が受け取る文字コードを UTF-8 決め打ちにする。"
  (let ((coding-system-for-read 'utf-8))
    ad-do-it))

>>  1. 時間の書式が少し異なる。
>>     Twitter   -> "2010-05-08T05:59:41Z"
>>     StatusNet -> "2010-05-08T08:44:39+00:00"
> 
> この部分ですが、時差は無視して良いんでしょうか。
> http://status.net/ を見てもどういう値があり得るか分からなかった
> のですが、運用によってはローカルタイムが使われる可能性もある気が
> します。

タイムゾーンをいろいろ試してみましたが、大丈夫そうです。
# この時は UTC でテストしていました。

> ISO 8601形式( http://ja.wikipedia.org/wiki/ISO_8601 ) の時差が
> 指定されていると思って解釈するパッチを作ってみました。
> こちらを試してみてもらえませんか。問題なければ増田さんのcommitを
> 取り込むときに併せて commit します。

問題なさそうです。

> rel="related"の場合は必ずアイコン画像と思って良いでしょうか。
> 現状では user-profile-image-url のURLは実際にダウンロードしてみて
> 画像形式を判断しています。大きいデータとか画像とかの場合に
> 嫌なことになるかもしれません。

はい。検索時のアイコン画像だけで rel="related" が使われています。

--
Takashi Masuda <masut...@nifty.com>

------------------------------------------------------------------------------

_______________________________________________
twmode-users mailing list
twmode-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/twmode-users

メールによる返信