Tumblrの写真をプレビューできるようにする

概要

アドベントカレンダーも11日目になりました。1回忘れたけどなんとかここまで…

Azureaにはわりとたくさんのサイトをプレビューできるような機能があります。でもこのなかにTumblrは含まれていなくて、それは写真だけを共有するサイトでは無いため。

でもわざわざブラウザ開くのも面倒なのでプレビューしたい。このプレビュー機能、スクリプトから拡張できます。スクリプトなら柔軟なURL判定やリダイレクト先を取得してからのAPI呼び出しなど自由に出来るのでTumblrをプレビューできるようにする拡張を作ってみます。

スクリプト

var apiKey = ""; // APIキー入れる

if(!String.prototype.trim){
    String.prototype.trim = function() {
        return this.replace(/^\s+|\s+$/g, "");
    }
}

function processTumblr(url){
    if(url.search(/http:\/\/([a-zA-Z0-9.]+)\/post\/([0-9]+)$/) >= 0){
        var req = 'http://api.tumblr.com/v2/blog/'+RegExp.$1+'/posts?api_key='+apiKey+'&id='+RegExp.$2;
        var resp = Http.downloadString(req);
        var json = eval('('+resp+');');
        if(json.response.posts[0].type == "photo" && json.response.posts[0].photos.length == 1){
            return json.response.posts[0].photos[0].alt_sizes[0].url;
        }
    }
    return '';
}

System.addOpenUrlHandler(function(url){
    if(url.match(/http:\/\/(www\.)?tu?mblr\.com?\/[a-zA-Z0-9]+$/)){
        while(true){
            if(url.match(/http:\/\/(www\.)?tu?mblr\.com?\/[a-zA-Z0-9]+$/)){
                var resp = Http.sendRequest(url, false);
                if(resp.header.search(/Location\s*:\s*(.*)/)){
                    var u = RegExp.$1.trim();
                    if(u.search(/www\.tumblr\.com/) >= 0){
                        url = u;
                        continue;
                    }
                    u = processTumblr(u);
                    if(u != '') return u;
                }
            }
            break;
        }
    }else if(url.search(/http:\/\/([a-zA-Z0-9]+\.)?tumblr\.com?/) >= 0){
        if(RegExp.$1 != ''){
            var u = processTumblr(url);
            if(u != '') return u;
        }
    }
});

解説

まずTumblrのAPIキーが必要なので各自取得してください。取得したら先頭のapiKeyにセットしておいてください。これで準備完了です。

URLが選択された場合に起動するハンドラを設定しておきます。このなかでTumblrのURLかを判定して、処理すべきならURLを解析したり、APIを呼び出したり、実際にURLをリクエストしてリダイレクトさせたり…を行います。

このハンドラが文字列を返した場合、本体はそれをプレビューするURLと解釈し、プレビューウィンドウを起動します。なにも返さなかった場合はそのままブラウザで開かれます。

こまかい中身の処理は、URLを正規表現で判定したり、リダイレクトしたり、APIを呼び出したりetc,etc,etc...なので読んでみてください

コメントとか


もし見えてたら空欄にしてね!:

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-08-27 (土) 10:33:42 (1443d)