コンテンツにスキップするには Enter キーを押してください

Twitterクライアントを日本語URLに対応させる一番楽な方法

先日公開したつい短ですが、残念ながらクライアントによっては日本語URL(国際化URL)に対応していない場合があります。

Janetterさんはアンカンファレンスの会場で僕がゴネたお願いしたこともあり数日中に対応していただいたのですが、他のクライアントでは特にそういう動きもなく…。
実際、Janetterでもだいぶ複雑な正規表現を使って判定されているようで、他のクライアントにもそれをお願いするのは難しいかもしれません。

が。

さっきTwitter APIのドキュメントを見ていたらそんな問題を一挙に解決する方法が載ってるじゃないですか。
しかもけっこう昔の版から。

なんでみんなこれを活用しないんだろう…。

その方法とは、Tweet Entities

Twitter APIにリクエストを投げてTLを取得するときに、「include_entities」というパラメータをTrueにして投げると、「entities」というオブジェクトがくっついて帰ってきます。
この中には、ツイート中の「メンションのあて先(ユーザ名)」「ハッシュタグ」「URL」とその出現位置が含まれています。

    "entities":
    {
        "urls":
        [
            {
                "url":"http://bit.ly/dCueLT",
                "indices":
                [
                    117,
                    137
                ]
            }
        ],
        "hashtags":
        [
            {
                "indices":
                [
                    62,
                    71
                ],
                "text":"titanium"
            }
        ],
        "user_mentions":
        [
            {
                "indices":
                [
                    3,
                    16
                ],
                "screen_name":"squarefactor",
                "name":"squareFACTOR",
                "id":15893275
            },
            {
                "indices":
                [
                    48,
                    61
                ],
                "screen_name":"appcelerator",
                "name":"Appcelerator",
                "id":9662352
            },
            {
                "indices":
                [
                    88,
                    97
                ],
                "screen_name":"intridea",
                "name":"Intridea,
                  Inc.",
                "id":14455548
            }
        ]
    },

あとは、この情報通りにリンクを埋め込めばおしまい。

また、いろんな言語向けのライブラリも用意されているので、これを使えばメソッドを呼び出すだけでリンクを張ることができるようです。

Java版
PHP版
Ruby版
Python版

で、さっき試してみたら、日本語URLでもちゃんとリンク情報に含まれていました。

もうわざわざ苦労して正規表現なんて使う必要なかったんや!!

というわけで、ぜひこの方法でご対応をお願いします。


3 Comments

  1. 匿名 2011/01/16

    Twitter側の日本語URL対応がまともだったらいいんですけどね!

  2. ryo_ryoo_ryooo 2011/01/18

    残念なことに検索APIには実装されてないんですよ (´・ω・`)

  3. ryo_ryoo_ryooo 2011/01/18

    ってことで結局こんな感じになりました。
    ドメインより後ろの日本語なんて知らないよ

    https?:\/\/[\S]+[..。]([jJjJ][pPpP]|[a-zA-Z]+)[!#-&*-;=?-[\]-~]*

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください