[Twitter][API] ドメイン名自動リンクのUser Streams APIでの扱い
Tweet::ToDeliciousでTwitterが勝手にリンクにする"example.com"のような文字列を排除しようと試みたのですが、
判別できなかったので諦めました。
ツイートに含まれるのURL情報のフォーマット
通常、User Streams APIでツイート時に含まれるリンクは以下のようにroot.entities.url
に格納されています。
関係ないところは省略しています。
{
"entities":
"url":
[
{
"display_url": "example.com",
"expanded_url": "http://example.com",
"url": "http://t.co/XXXXX",
"indices": [0,20]
},
]
}
そして、現在の仕様では"http"が頭に付かない"example.com"のような文字列が含まれていると、"http://example.com"として扱われます。
しかし、この場合はentities.urlにデータは入りません。URLのつもりでツイートしてるわけじゃないから、当たり前と言っていい挙動です。
問題になるケース
問題となるのは、上記のような自動変換される文字列を含み、且つツイートにURLが含まれる場合になります。
例として"example.com http://example.com"とツイートした場合、以下のようなデータが渡ってきます。
{
"entities":
"url":
[
{
"display_url": "example.com",
"expanded_url": "http://example.com",
"url": "http://t.co/XXXXX",
"indices": [0,20]
},
{
"display_url": "example.com",
"expanded_url": "http://example.com",
"url": "http://t.co/YYYYY",
"indices": [21,41]
}
]
}
URLに自動変換された文字列のexpanded_urlにはURI schemeが追加され、通常のURLのdisplay_urlからはURI scheme部分が削除されてる状態になっています。
この仕様によりentities.urlの中身からは、どちらが自動変換された文字列なのか判別ができません。
また、ツイート全体のtext情報では全URLがt.coの短縮URLに置換されているので、ここから判別することもできないようです。
0 件のコメント:
コメントを投稿