Дзе я магу знайсці Instagram медыя ідэнтыфікатар выявы

Я шукаю для MediaID у якасці Instagram малюнка, якое было загружана. Гэта павінна выглядаць

<�Р> 1234567894561231236_33215652 </р>

I have found out the last set of integers are the usersID

Напрыклад: гэта спасылка на малюнак непасрэдна, аднак я не бачу MediaId у правільным фармаце?

http://distilleryimage11.ak.instagram.com/d33aafc8b55d11e2a66b22000a9f09de_7.jpg

у той час як гэта спасылка

http://instagram.com/p/Y7GF-5vftL/

Я не хачу выкарыстоўваць API, як усе мне трэба MediaID ад абранага малюнка.

25

11 адказы

Вось лепшы спосаб:

http://api.instagram.com/oembed?url=http://instagram.com/p/Y7GF-5vftL/

Рэндэру як аб'ект JSON, і вы можаце лёгка атрымаць медыя-ідэнтыфікатар з яго ---

<�Моцны> Напрыклад, у PHP

$api = file_get_contents("http://api.instagram.com/oembed?url=http://instagram.com/p/Y7‌​GF-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){}   
    } 
});
73
дададзена
Вы можаце паказаць мне, як з дапамогай JSON, мы можам атрымаць ідэнтыфікатар носьбіта?
дададзена аўтар user1788736, крыніца
Дзякуй за адказ я меў на ўвазе метад JavaScrip без PHP! Ці можна без PHP? Ці будзе крос абмежаванне дамена з дапамогай AJAX выкліку?
дададзена аўтар user1788736, крыніца
Вялікі дзякуй я павінен быў выкарыстоўваць вар media_id = data.media_id замест гэтага. Вы думаеце, я магу JSONP усіх Instagram API такім чынам? гэта добры спосаб, таму што гэта адымае нагрузку на сервер, выкарыстоўваючы JSONP.
дададзена аўтар user1788736, крыніца
чаму oembed трывае няўдачу на прыватных профілях? Я хачу, каб атрымаць малюнка СМІ ідэнтыфікатара прыватных профіляў, якія я ўжо наступнымі, але з выкарыстаннем вышэй метады не атрымоўваецца! Ці з'яўляецца yhere любы іншы спосаб, каб атрымаць гэтыя медыя-ідэнтыфікатары для прыватных профіляў?
дададзена аўтар user1788736, крыніца
Я ўжо пасля карыстальнікаў таму яго дапамогай у мяне ёсць дазвол, але і вышэй апите зваротную спасылку нічога! Для ўсіх прыватных профіляў вышэй апите URL трывае няўдачу! Мне трэба, каб перадаць яму свой маркер доступу? Як гэта зрабіць?
дададзена аўтар user1788736, крыніца
<�Код> $ = file_get_contents API ( "http://api.instagram.com/oembed?url=http:‌ //instagram.com/p/Y7‌ ГФ-5vftL /"); $ ApiObj = json_decode ($ АПА, праўда); $ Media_id = $ apiObj [ 'media_id'];
дададзена аўтар George, крыніца
Я не правяраў, але з верхняй частцы маёй галавы: $ Ajax ({тыпу :. 'GET', URL: «http://api.instagram.com/oembed?callback=&url=http://Instag & ZWNJ; ram.com/p/Y7GF-5vftL‌/», кэш: хлусня, Datatype: 'JSONP', поспех: функцыя (дадзеныя) {{паспрабаваць вар media_id = дадзеныя [0] .media_id;} злавіць ( е) {}}}); Калі вам патрэбна дадатковая дапамогу, стварыць новы білет і дайце мне ведаць,
дададзена аўтар George, крыніца
ды, і няма. не існуе абмежаванняў на колькасць АФІ выклікаў для дадзенага канкрэтнага API. Але для астатняй частцы API Instagram, ёсць 5000 запытаў/гадзіну ліміт на client_id і 30 запытаў/гадзіну ліміт на маркер доступу. у залежнасці ад таго што вам трэба.
дададзена аўтар George, крыніца
вам неабходна атрымаць доступ, выкарыстоўваючы Instagram API і дазволу ад карыстальнікаў. адпаведную спасылку
дададзена аўтар George, крыніца
Карыстальнік павінен даць вашаму з дадаткам дазволу - ніжэй не дастаткова. Як стварыць асобнае пытанне, і заявіць, што вы ўжо спрабавалі і што не працуе.
дададзена аўтар George, крыніца

Такім чынам, самыя прагаласавалі «лепшы спосаб» трохі абясцэніўся так вось маё рэдагаванне і іншыя рашэнні:

<�Моцны> JavaScript + jQuery

$.ajax({
    type: 'GET',
    url: 'http://api.instagram.com/oembed?callback=&url='+Url, //You must define 'Url' for yourself
    cache: false,
    dataType: 'json',
    jsonp: false,
    success: function (data) {
       var MediaID = data.media_id;
   }
});

<�Моцны> PHP

$your_url = "" //Input your url
$api = file_get_contents("http://api.instagram.com/oembed?callback=&url=" . your_url);      
$media_id = json_decode($api,true)['media_id'];

Такім чынам, гэта проста абноўленая версія коды @ Джордж і ў цяперашні час працуе. Тым не менш, я зрабіў іншыя рашэнні, а некаторыя нават пазбегнуць AJAX запыту:


<�Моцны> Скарочаны Ajax Рашэнне

Некаторыя URLs Instagram выкарыстоўваюць скарочаны URL-адрас сінтаксісу. Гэта дазваляе кліенту выкарыстоўваць толькі шорткод замест ідэнтыфікатара носьбіта, калі патрабуецца правільна.

An example shortcode url looks like this: https://www.instagram.com/p/Y7GF-5vftL/

<�Код> Y7GF-5vftL Ваш шорткод для карціны.

Выкарыстанне Regexp:

var url = "https://www.instagram.com/p/Y7GF-5vftL/"; //Define this yourself
var Key = /p\/(.*?)\/$/.exec(url)[1];

У той жа вобласці, Key будзе ўтрымліваць шорткод. Зараз прасіць, скажам, з нізкім дазволам малюнак з дапамогай гэтага шорткод, вы маглі б зрабіць нешта накшталт наступнага:

    $.ajax({
        type: "GET",
        dataType: "json",
        url: "https://api.instagram.com/v1/media/shortcode/" + Key + "?access_token=" + access_token, //Define your 'access_token'
        success: function (RawData) {
            var LowResURL = RawData.data.images.low_resolution.url;
        }
    });

Існуе шмат іншай карыснай інфармацыі, у тым ліку медыя-ідэнтыфікатара, у што вяртаецца структуры RAWDATA. Увайсці яго ці паглядзець дакументацыю АПА ўбачыць.


<�Моцны> Скарочаны Канверсія Рашэнне

Вы сапраўды можаце ператварыць ваш шорткод ў ід даволі лёгка! Вось просты спосаб зрабіць гэта ў JavaScript:

function shortcodeToInstaID(Shortcode) {
      var char;
      var id = 0;
      var alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
      for (var i = 0; i < Shortcode.length; i++) {
          char = Shortcode[i];
          id = (id * 64) + alphabet.indexOf(char);
      }
      return id;
  }

Заўвага: Калі вы хочаце атрымаць больш надзейнае рашэнне Node.js або хочаце паглядзець, як вы б пераўтварыць яго назад, праверыць @ слэнг модуль па НПМ .


<�Моцны> Поўная старонка Рашэнне

So what if you have the URL to a full Instagram page like: https://www.instagram.com/p/BAYYJBwi0Tssh605CJP2bmSuRpm_Jt7V_S8q9A0/

Ну, вы можаце прачытаць HTML, каб знайсці мету ўласцівасці, якое змяшчае ідэнтыфікатар носьбіта. Ёсць таксама некалькі іншых алгарытмаў, якія можна выканаць на самай URL, каб атрымаць яго, але я лічу, што патрабуе занадта шмат намаганняў, так што мы будзем трымаць яго проста. Альбо запыт мета-тэг </а > АЛ: ІАА-: URL ці перабіралі HTML. Паколькі чытанне метатега размешчаны ва ўсім, я пакажу вам, як ітэрацыю.

Заўвага: Гэта крыху нестабільныя і ўразлівыя для заделаны. Гэты метад не працуе на старонцы, якая выкарыстоўвае акно папярэдняга прагляду. Так што, калі вы даеце яму бягучы HTML пры пстрычцы на малюнку ў нечым профіль, гэта зламаецца і вярнуць дрэнны ідэнтыфікатар носьбіта.

function getMediaId(HTML_String) {
  var MediaID = "";
  var e = HTML_String.indexOf("al:ios:url") + 42; //HTML_String is a variable that contains all of the HTML text as a string for the current document. There are many different ways to retrieve this so look one up. 
  for (var i = e; i <= e + 100; i++) { //100 should never come close to being reached
      if (request.source.charAt(i) == "\"")
         break;
      MediaID += request.source.charAt(i);
  }
  return MediaID;
}

І там вы ідзяце, кучу розных спосабаў выкарыстання API Instagram, каб атрымаць ідэнтыфікатар носьбіта. Надзея адна фіксуе вашу барацьбу.

12
дададзена

You can actually derive the MediaId from the last segment of the link algorithmically using a method I wrote about here: http://carrot.is/coding/instagram-ids. It works by mapping the URL segment by character codes & converting the id into a base 64 number.

Напрыклад, пры спасылцы вы згадалі ( http://instagram.com/p/Y7GF-5vftL), мы атрымліваем апошні сегмент ( Y7GF-5vftL ), то адлюстраваць яго ў коды сімвалаў, выкарыстоўваючы base64 гіперспасылка бяспечны алфавіт ( 24: 59: 6: 5: 62: 57: 47: 31: 45: 11_64 ). Далей, мы преобразуем гэтую base64 лік у base10 ( 448979387270691659 ).

Калі дадаць свой USERID пасля _ вы атрымаеце поўны ідэнтыфікатар ў форме, названай, але так як MediaId унікальны без USERID вы можаце апусціць USERID ад большасці запытаў.

Нарэшце, я зрабіў Node.js модуль пад назвай Instagram-ідэнтыфікатар да URL звёны аўтаматызаваць гэта пераўтварэнне:

convert = require('instagram-id-to-url-segment');
instagramIdToUrlSegment = convert.instagramIdToUrlSegment;
urlSegmentToInstagramId = convert.urlSegmentToInstagramId;

instagramIdToUrlSegment('448979387270691659');//Y7GF-5vftL
urlSegmentToInstagramId('Y7GF-5vftL');//448979387270691659
11
дададзена

Try the solution from this question: How can I get an direct Instagram link from a twitter entity?

<�Р> Вы можаце атрымаць толькі малюнак шляхам дадання/СМІ/да URL-адрасе. Праца з кампутарам      
    <�Р> Вы нават можаце паказаць памер,   
     <�Р> Адна з т (піктаграм), м (сярэдні), л (вялікі). Па змаўчанні м. </Р>      <�Р> Такім чынам, для мініяцюры: http://instagr.am/p/QC8hWKL_4K/медыя /? памер = т </р>
8
дададзена
Пераход да старонцы не знойдзены, не працуе больш.
дададзена аўтар pal4life, крыніца
@ Pal4life Паспрабуйце выкарыстоўваць адзін носьбіт існых. Працаваў для мяне з іншым малюнкам: instagram.com/p/xrXtpsqlaV/media?size=l
дададзена аўтар LeonardDrs, крыніца

Ваш медыя-ідэнтыфікатар: 448979387270691659_45818965 Гэта, як атрымаць яго.

  1. Go to instgram.com/username.
  2. Click the photo you want the id of.
  3. (Chrome instructions) right click on the photo (should be a popup image)
  4. Inspect element
  5. Search through the selected text, you should see something like this photo448979387270691659_45818965

Там павінна быць ваша пасведчанне асобы з фатаграфіяй.

Па нейкай прычыне, гэта толькі здаецца, працаваць з ўсплывальным акном, а не фактычным URL малюнка.

6
дададзена

In pure JS (provided your browser can handle XHRs, which every major browser [including IE > 6] can):

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, што гэта менавіта тое, што гэта пра - гэта павінна зрабіць, асабліва калі вы не хочаце, каб вытрымаць ліцэнзійныя зборы.

3
дададзена

Пстрыкніце правай кнопкай мышы на фота і адкрыйце ў новай ўкладцы/акне. Пстрыкніце правай кнопкай мышы на інспектаваць элемент . Шукаць:

<�Р> Instagram://медыя ідэнтыфікатар =

Гэта дасць вам:

<�Р> Instagram://СМІ ID = ############# <�моцны> /// ВД

Поўны ідэнтыфікатар будуецца з

<�Код> photoID_userID

Каб атрымаць ідэнтыфікатар карыстальніка, пошук:

<�Р> instapp: owner_user_id <�моцны> Ці будзе ў змесце =
1
дададзена

Вось пітон рашэнне зрабіць гэта без апите выклік.

def media_id_to_code(media_id):
    alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'
    short_code = ''
    while media_id > 0:
        remainder = media_id % 64
        media_id = (media_id-remainder)/64
        short_code = alphabet[remainder] + short_code
    return short_code


def code_to_media_id(short_code):
    alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'
    media_id = 0;
    for letter in short_code:
        media_id = (media_id*64) + alphabet.index(letter)

    return media_id
1
дададзена

Свіфта раствор сінтаксічны 4 кароткага кода

private static func instagramDeepLinkFromHTTPLink(_ link: String) -> String? {
    guard let shortcode = link.components(separatedBy: "/").last else { return nil }

   //algorithm from https://stackoverflow.com/a/37246231/337934
    let alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"
    var mediaId: Int = 0
    for (_, char) in shortcode.enumerated() {
        guard let index = alphabet.index(of: char) else { continue }
        mediaId = (mediaId * 64) + index.encodedOffset
    }

    return "instagram://media?id=\(mediaId)"
}
0
дададзена

Вы можаце выкарыстоўваць шорткод медыя API ад Instagram. Калі вы выкарыстоўваеце PHP вы можаце выкарыстоўваць наступны код, каб атрымаць шорткод ад URL на малюнку ў:

$matches = [];

preg_match('/instagram\.com\/p\/([^\/]*)/i', $url, $matches);

if (count($matches) > 1) {
    $shortcode = $matches[1];
}

Затым адправіць запыт у API з дапамогай маркера доступу (Заменіце ACCESS-ЗНАК з маркерам)

$apiUrl = sprintf("https://api.instagram.com/v1/media/shortcode/%s?access_token=ACCESS-TOKEN", $shortcode);
0
дададзена