Twitpic 等の画像投稿サービスのサムネイル画像の URL

December 23rd, 2009

ページ URL を書き換えるだけでサムネイル画像が表示できるもの

  • Twitpicドキュメント
    • ページ: http://twitpic.com/<image-id>
    • サムネイル画像: http://twitpic.com/show/<size>/<image-id>
      • <size>: “mini” or “thumb”
  • 携帯百景
    • ページ: http://movapic.com/<image-id>
    • サムネイル画像: http://image.movapic.com/pic/<size>_<image-id>.jpeg
      • <size>: “s” or “t”
  • はてなフォトライフ
    • ページ: http://f.hatena.ne.jp/<user-id>/YYYYMMDD<image-id>
    • サムネイル画像:http://img.f.hatena.ne.jp/images/fotolife/<user-idの1文字目>/<user-id>/YYYYMMDD/YYYYMMDD<image-id>_<size>.jpg
      • <size>: “120″ or “m”
  • Mobypictureドキュメント
    • ページ: http://moby.to/<image-id>
    • サムネイル画像: http://moby.to/<image-id>:<size>
      • <size>: “thumbnail”, “small”, “square” or “medium”
  • yFrogドキュメント
    • ページ: http://yfrog.com/<image-id>
    • サムネイル画像: http://yfrog.com/<image-id>.th.jpg
  • PhotoShare
    • 短縮URL: http://bctiny.com/p<image-noのbase36>
    • ページ: http://www.bcphotoshare.com/photos/<user-id?>/<image-no>
    • サムネイル画像: http://images.bcphotoshare.com/storages/<image-no>/<size>.jpg
      • <size>: “thumbnail”, “large”, “thumb68″ or “thumb180″
  • img.ly ドキュメント
    • ページ: http://img.ly/<image-id>
    • サムネイル画像: http://img.ly/show/<size>/<image-id>
      • <size>: “thumb” or “mini”
  • Twitgooドキュメント
    • ページ: http://twitgoo.com/<image-id>
    • サムネイル画像: http://twitgoo.com/show/<size>/<image-id>
    • サムネイル画像: http://twitgoo.com/<image-id>/<size>
      • <size>: “thumb”, “mini” or “img”
  • pic.imドキュメント
    • ページ: http://pic.im/<image-id>
    • サムネイル画像: http://pic.im/website/thumbnail/<image-id>
  • YouTubeドキュメント
    • 短縮URL: http://youtu.be/<video-id>
    • ページ: http://www.youtube.com/watch?v=<video-id>
    • ページ: http://www.youtube.com/watch#!v=<video-id>
    • サムネイル画像: http://i.ytimg.com/vi/<video-id>/<size>.jpg
      • <size>: “default”, or “hqdefault”
  • imgur
    • ページ: http://imgur.com/<image-id>.jpg
    • サムネイル画像: http://i.imgur.com/<image-id><size>.jpg
      • <size>: “s” or “l”
  • Lockerz(旧Plixi, その前は TweetPhoto) (ドキュメントアナウンス
    • ページ: http://lockerz.com/s/<photo-no>
    • ページ: http://plixi.com/p/<photo-no>
    • ページ: http://tweetphoto.com/<photo-no>
    • サムネイル:  http://api.plixi.com/api/TPAPI.svc/imagefromurl?size=<size>&url=<ページURL>
      • <size>: “thumbnail”, “small”, “mobile”, “medium” or “big”
  • Ow.ly
    • ページ: http://ow.ly/i/<image-id>
    • サムネイル画像:  http://static.ow.ly/photos/thumb/<image-id>.jpg
  • Instagramドキュメント
    • ページ: http://instagr.am/p/<shortcode>/
    • サムネイル: http://instagr.am/p/<shortcode>/media/?size=<size>
      • <size>: “t”, “m” or “l”
  • フォト蔵ドキュメント
    • ページ: http://photozou.jp/photo/show/0000/<photo_id>
    • サムネイル: http://photozou.jp/p/<size>/<photo_id>
      • <size>: “img” or “thumb”
  • ついっぷる フォトドキュメント
    • ページ: http://p.twipple.jp/<IMAGE ID>
    • サムネイル: http://p.twipple.jp/show/<size>/<IMAGE ID>
      • <size>: “thumb” or “large”

短縮 URL の展開や API の利用が必要なもの

  • flickrドキュメント
    • 短縮URL: http://flic.kr/p/<base58-photo-id>
  • brightkiteドキュメント
    • 短縮URL:  http://bkite.com/XXXX
    • ページ: http://brightkite.com/objects/<image-id>
    • サムネイル画像: http://cdn.brightkite.com/<image-idの先頭2文字>/<image-idの3-4文字目>/<image-id>-<size>.jpg
      • <size>: “feed” or “big”

PHP コード例

(flickr, brightkite の短縮 URL には未対応)

function getThumbnailHtml($status_text) {
    $html = '';
    $patterns = array(
        // twitpic
        array('/http:\/\/twitpic[.]com\/(\w+)/', '<img src="http://twitpic.com/show/thumb/$1" width="150" height="150" />'),

        // Mobypicture
        array('/http:\/\/moby[.]to\/(\w+)/', '<img src="http://moby.to/$1:small" />'),

        // yFrog
        array('/http:\/\/yfrog[.]com\/(\w+)/', '<img src="http://yfrog.com/$1.th.jpg" />'),

        // 携帯百景
        array('/http:\/\/movapic[.]com\/pic\/(\w+)/', '<img src="http://image.movapic.com/pic/s_$1.jpeg" />'),

        // はてなフォトライフ
        array('/http:\/\/f[.]hatena[.]ne[.]jp\/(([\w\-])[\w\-]+)\/((\d{8})\d+)/', '<img src="http://img.f.hatena.ne.jp/images/fotolife/$2/$1/$4/$3_120.jpg" />'),

        // PhotoShare
        array('/http:\/\/(?:www[.])?bcphotoshare[.]com\/photos\/\d+\/(\d+)/', '<img src="http://images.bcphotoshare.com/storages/$1/thumb180.jpg" width="180" height="180" />'),

        // PhotoShare の短縮 URL
        array('/http:\/\/bctiny[.]com\/p(\w+)/e', '\'<img src="http://images.bcphotoshare.com/storages/\' . base_convert("$1", 36, 10) . \'/thumb180.jpg" width="180" height="180" />\''),

        // img.ly
        array('/http:\/\/img[.]ly\/(\w+)/', '<img src="http://img.ly/show/thumb/$1" width="150" height="150" />'),

        // brightkite
        array('/http:\/\/brightkite[.]com\/objects\/((\w{2})(\w{2})\w+)/', '<img src="http://cdn.brightkite.com/$2/$3/$1-feed.jpg" />'),

        // Twitgoo
        array('/http:\/\/twitgoo[.]com\/(\w+)/', '<img src="http://twitgoo.com/$1/mini" />'),

        // pic.im
        array('/http:\/\/pic[.]im\/(\w+)/', '<img src="http://pic.im/website/thumbnail/$1" />'),

        // youtube
        array('/http:\/\/(?:www[.]youtube[.]com\/watch(?:\?|#!)v=|youtu[.]be\/)([\w\-]+)(?:[-_.!~*\'()a-zA-Z0-9;\/?:@&=+$,%#]*)/', '<img src="http://i.ytimg.com/vi/$1/hqdefault.jpg" width="240" height="180" />'),


        // imgur
        array('/http:\/\/imgur[.]com\/(\w+)[.]jpg/', '<img src="http://i.imgur.com/$1l.jpg" />'),

        // TweetPhoto, Plixi, Lockerz
        array('/http:\/\/tweetphoto[.]com\/\d+|http:\/\/plixi[.]com\/p\/\d+|http:\/\/lockerz[.]com\/s\/\d+/', '<img src="http://api.plixi.com/api/TPAPI.svc/imagefromurl?size=mobile&url=$0" />'),

        // Ow.ly
        array('/http:\/\/ow[.]ly\/i\/(\w+)/', '<img src="http://static.ow.ly/photos/thumb/$1.jpg" width="100" height="100" />'),

        // Instagram
        array('/http:\/\/instagr[.]am\/p\/([\w\-]+)\//', '<img src="http://instagr.am/p/$1/media/?size=t" width="150" height="150" />'),

        // フォト蔵
        array('/http:\/\/photozou[.]jp\/photo\/show\/\d+\/([\d]+)/', '<img src="http://photozou.jp/p/thumb/$1" />'),

        // ついっぷる フォト
        array('/http:\/\/p[.]twipple[.]jp\/([\w]+)/', '<img src="http://p.twipple.jp/show/thumb/$1" />'),
    );

    foreach ($patterns as $pattern) {
        if (preg_match($pattern[0], $status_text, $matches)) {
            $url = $matches[0];
            $html = preg_replace($pattern[0], $pattern[1], $url);
            $html = '<a href="' . $url . '" target="_blank">' . $html . '</a>';
            break;
        }
    }

    return $html;
}

関連リンク

iPhone 用検索ページに検索エンジンの編集機能追加(DOM Storage使用)

November 17th, 2009

iPhone 用検索ページ
に検索エンジンの編集機能を付けました。

最近のブラウザ(Firefox 2+、Safari4、IE8)に搭載されている DOM Storage というデータ保存機能を使って、設定を保存しています。ブラウザを再起動しても設定は消えません。
DOM Storage は Cookie と違って、毎回にサーバに送ろうとしない、5MBとか比較的大きなデータを保持できるらしいです。

文字列でしか保存できないので、json2.js を使って JSON 形式に変換して保存しています。

ということで、並べ替えたり、好きな検索エンジンを追加できます。
URL 中の %s の部分にクエリが入ります。URL を空にすると、グループ分けの名前になります。
target(新規ページで開くかどうか)、method(GET or POST)、文字コードの設定機能も付ける予定です。

一度に複数ユーザを指定して twitter のリストを作成するフォーム

November 3rd, 2009

twitter list maker

ユーザ名をカンマ区切りで指定してリストが作成できます。
入力するものは「自分のtwitter id」、「リストの名前」、「公開範囲」、「リストメンバーの twitter id (CSV形式、カンマ区切り)」です。
twitter 上だと、ユーザを一人ずつリストに追加して行くしかなさそうなので作成。同様のツールはありそうだけど。

twitter の List API を使ってます。ユーザ名とパスワードは twitter.com に直接送られるので、こちらのサーバには送られません。

良かったら使ってください。

注意点

API の返り値のチェックをしていません(iframe を作って、そこに向けて form を submit することで API を叩いているので、返り値のチェックができない)。そのため、うまくリストが作成できていないことがあります。途中で止まることもあります。。アルファ版ということでご了承ください。。

その他

リストにメンバーを追加する API は、数字のユーザ ID を使うので、screen_name からユーザ ID に変換する API を自前で用意して使っています。

出走馬の対戦成績表を表示するブックマークレット

August 30th, 2009

JRA の各レースの出馬表ページで使うブックマークレット。
対戦成績表を表示

使うと、ページの一番下にこんな感じの表が表示されます。
07735b97537967cbd3b6a29b2e9670e2
各馬の過去4走成績を時系列上に表示します。
馬番やレース名にマウスオーバーすると、馬名やレース詳細が表示されます。

こういう風に表示すると、出走馬同士の関連がわかりやすくていいと思います。

Yahoo!スポーツ 競馬にも対戦成績表があるけど、対戦してない馬のレースは表示されないので、このブックマークレットとはちょっと違います。

まだとりあえず動く程度の出来です。
追記: うまく動いてなかったので修正しました。

Bookmarklets

August 14th, 2009

よく使うものやときどき使うものやほとんど使ってないものを列挙。

どこでも

Shorten with bit.ly (via bit.ly Tools ページ)
delicious を表示 (via delicious ヘルプページ)
はてブを表示
はてブでブックマークする (via はてブ設定ページ)
Google  で関連ページを検索
HatebuSets で関連ページを検索
このページをはてなアンテナに追加 (via はてなブックマークレット)
このページを含むはてなアンテナ
tako3
パックマン (読み込み後にダブルクリックでスタート)

ブログ用

livedoor Reader に登録 (via livedoor Reader ブックマークレット)
Google Reader に登録 (via Google Reader 設定ページ)
LDRLens で関連フィードを検索
RSSバトラーで対戦

twitter 用

ふぁぼったーを表示
favstar.fm を表示 (参考: favstar.fm の bookmarklet ページ)