アップロードされたInstagramの画像のMediaID
を探しています。以下のようになります。
1234567894561231236_33215652
最後の整数セットが usersID
であることがわかりました。
例えば、これは画像への直接のリンクですが、正しい形式の mediaID
が見当たりません。
http://distilleryimage11.ak.instagram.com/d33aafc8b55d11e2a66b22000a9f09de_7.jpg
これはリンクですが
http://instagram.com/p/Y7GF-5vftL/
選択した画像のMediaIDが必要なだけなので、APIは使いたくありません。
http://api.instagram.com/oembed?url=http://instagram.com/p/Y7GF-5vftL/
jsonオブジェクトとしてレンダリングし、そこからメディアIDを簡単に抽出することができます。
例えば、PHPでは。
$api = file_get_contents("http://api.instagram.com/oembed?url=http://instagram.com/p/Y7GF-5vftL/");
$apiObj = json_decode($api,true);
$media_id = $apiObj['media_id'];
例えば、JSの場合
$.ajax({
type: 'GET',
url: 'http://api.instagram.com/oembed?callback=&url=http://instagram.com/p/Y7GF-5vftL/',
cache: false,
dataType: 'jsonp',
success: function(data) {
try{
var media_id = data[0].media_id;
}catch(err){}
}
});
あなたのメディアIDは448979387270691659_45818965
このようになっています。
1.instgram.com/usernameにアクセスします。 2.IDを取得したい写真をクリックします。 3.(写真の上で右クリック(Chromeの場合はポップアップ画像が表示されます) 4.要素の検査 5.選択したテキストを検索すると、次のようなものが表示されます。
そこにはあなたの写真付きIDがあるはずです。
なぜか、これはポップアップでのみ動作するようで、実際の画像URLでは動作しません。
純粋なJSで(ブラウザがXHRを処理できることが条件で、主要なブラウザ(IE > 6を含む)はこれに対応しています)。
function igurlretrieve(url) {
var urldsrc = "http://api.instagram.com/oembed?url=" + url;
//fetch data from URL data source
var x = new XMLHttpRequest();
x.open('GET', urldsrc, true);
x.send();
//load resulting JSON data as JS object
var urldata = JSON.parse(x.responseText);
//reconstruct data as "instagram://" URL that can be opened in iOS app
var reconsturl = "instagram://media?id=" + urldata.media_id;
return reconsturl;
}
InstagramのiOSアプリでページを開く、というのが目的であれば、特にライセンス料を負担したくないのであれば、これで十分です。