Où puis-je trouver L'identifiant Instagram media D'une image

je suis à la recherche du MediaID D'une image Instagram qui a été téléchargée. Il devrait ressembler à

1234567894561231236_33215652

j'ai découvert que le dernier ensemble d'entiers sont les usersID

par exemple: c'est le lien pour l'image directement, cependant je ne vois pas mediaID dans le bon format?

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

alors que c'est le lien

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

Je ne souhaite pas utiliser L'API car je n'ai besoin que de la MediaID d'une image sélectionnée.

26
demandé sur JakeGould 2013-05-26 14:28:46

12 réponses

de Sorte que le plus voté "Mieux" est un peu amortis voici donc mon montage, et d'autres solutions:

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'];

donc, ceci est juste une version mise à jour du code de @George et fonctionne actuellement. Cependant, j'ai fait d'autres solutions, et certains même éviter une demande ajax:


Shortcode Ajax Solution

certaines URL Instagram utilisent une syntaxe raccourcie. Cela permet au client d'utiliser simplement le shortcode à la place du media id si demandé correctement.

un exemple d'url de shortcode ressemble à ceci: https://www.instagram.com/p/Y7GF-5vftL/

Le Y7GF-5vftL est votre shortcode pour l'image.

Utilisation De Regexp:

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

dans la même portée, Key contiendra votre shortcode. Maintenant, pour demander, disons, une image basse résolution en utilisant ce shortcode, vous feriez quelque chose comme:

    $.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;
        }
    });

il y a beaucoup d'autres informations utiles, y compris l'id du média, dans la structure de données brutes retournées. Journal ou regarder la documentation de l'api pour voir.


Shortcode Conversion Solution

vous pouvez convertir votre shortcode en id assez facilement! Voici une façon simple de le faire en 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;
  }

Note: Si vous voulez un noeud plus robuste.js solution, ou vous voulez voir comment vous reconvertir, découvrez @Argot module npm .


Full Page Solution

alors que faire si vous avez L'URL d'une page Instagram complète comme: https://www.instagram.com/p/BAYYJBwi0Tssh605CJP2bmSuRpm_Jt7V_S8q9A0/

Eh bien, vous pouvez effectivement lire le HTML pour trouver une propriété meta qui contient le Media ID. Il ya aussi un couple d'autres algorithmes que vous pouvez effectuer sur l'URL elle-même pour l'obtenir, mais je crois que nécessite trop d'efforts, donc nous va garder les choses simples. Soit interroge la balise meta al:ios:url ou itère par le html. Puisque lire des métabalises est affiché partout, je vais vous montrer comment itérer.

NOTE: c'est un peu instable et vulnérable à être corrigé. Cette méthode ne fonctionne pas sur une page qui utilise une boîte de prévisualisation. Donc si vous lui donnez le HTML courant quand vous cliquez sur une image dans le profil de quelqu'un, cela cassera et retournera un mauvais ID média.

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;
}

et voilà, un tas de différentes façons d'utiliser L'api Instagram pour obtenir un ID média. Espérons que l'un des correctifs de vos luttes.

13
répondu Anselm 2017-08-10 15:48:14

Voici une meilleure façon:

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

Rendre comme objet json et vous pouvez facilement extraire media id ---

par exemple, en 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'];

par exemple, dans 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){}   
    } 
});
75
répondu George 2016-11-27 08:21:52

vous pouvez en fait dériver la MediaId du dernier segment du lien algorithmiquement en utilisant une méthode que j'ai écrite ici: http://carrot.is/coding/instagram-ids . Il fonctionne en cartographiant le segment D'URL par des codes de caractères et en convertissant l'id en un nombre de base 64.

par exemple, compte tenu du lien que vous avez mentionné ( http://instagram.com/p/Y7GF-5vftL ), nous obtenons le dernier segment ( Y7GF-5vftL ) puis nous le mappons en codes de caractères utilisant l'alphabet base64 url-safe alphabet ( 24:59:6:5:62:57:47:31:45:11_64 ). Ensuite, nous convertissons ce nombre de base64 en base10 ( 448979387270691659 ).

si vous ajoutez votre userId après un _ vous obtenez l'identifiant complet dans la forme que vous avez spécifiée, mais puisque la MediaId est unique sans l'userId, vous pouvez en fait omettre l'userId de la plupart des requêtes.

enfin, j'ai fait un noeud.js module appelé instagram-id-à-url-segment pour automatiser cette conversion:

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

instagramIdToUrlSegment('448979387270691659'); // Y7GF-5vftL
urlSegmentToInstagramId('Y7GF-5vftL'); // 448979387270691659
11
répondu slang 2015-07-30 02:18:16

essayez la solution de cette question: Comment puis-je obtenir un lien Instagram direct d'une entité twitter?

vous pouvez obtenir juste l'image en ajoutant /media/ à L'URL. En utilisant votre

vous pouvez même spécifier une taille,

l'Un des t (miniature de), m (moyen), l (large). Par défaut à M.

donc pour une vignette: http://instagr.am/p/QC8hWKL_4K/media/?size=t

8
répondu cluzt 2017-05-23 12:10:36

Voici une même meilleure façon:

pas D'appels API! Et je me suis lancé dans la conversion d'un media_id en un shortcode comme un bonus supplémentaire.

basé sur argot 1519120920" travail étonnant pour comprendre la conversion. Nathan travail la conversion de base10 base64 en php. Et rgbflowed's travail le convertir dans l'autre sens (avec une modification de l'alphabet). # teameffort

function mediaid_to_shortcode($mediaid){

    if(strpos($mediaid, '_') !== false){
        $pieces = explode('_', $mediaid);
        $mediaid = $pieces[0];
        $userid = $pieces[1];
    }

    $alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
    $shortcode = '';
    while($mediaid > 0){
        $remainder = $mediaid % 64;
        $mediaid = ($mediaid-$remainder) / 64;
        $shortcode = $alphabet{$remainder} . $shortcode;
    };

    return $shortcode;

}

function shortcode_to_mediaid($shortcode){

    $alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';

    $mediaid = 0;

    foreach(str_split($shortcode) as $letter) {
        $mediaid = ($mediaid*64) + strpos($alphabet, $letter);
    }

    return $mediaid;

}
8
répondu ggwarpig 2017-05-23 12:34:32

votre ID média est: 448979387270691659_45818965 C'est la façon de l'obtenir.

  1. Aller à instgram.com/username.
  2. cliquez sur la photo dont vous voulez la carte d'identité.
  3. (instructions Chrome) clic droit sur la photo (doit être une image popup)
  4. élément D'inspection
  5. recherche dans le texte sélectionné, vous devriez voir quelque chose comme ceci photo448979387270691659_45818965

il devrait être votre photo d'identité.

pour une raison quelconque, cela ne semble fonctionner qu'avec le popup, et pas avec L'URL de l'image réelle.

6
répondu user1992271 2015-12-10 14:55:38

en js pur (à condition que votre navigateur puisse gérer XHRs, ce que tous les navigateurs principaux [y compris IE > 6] peuvent faire):

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;

}

pourvu que ce soit votre but -- simplement ouvrir la page dans L'application Instagram iOS, ce qui est exactement ce dont il s'agit -- cela devrait faire, surtout si vous ne voulez pas avoir à supporter les frais de licence.

3
répondu realkstrawn93 2013-12-17 06:35:05

Voici la solution python pour le faire sans appel api.

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
répondu Abdul Majeed 2017-05-09 18:21:52

vous pouvez utiliser l'API shortcode media D'instagram. Si vous utilisez php, vous pouvez utiliser le code suivant pour obtenir le shortcode de L'URL de l'image:

$matches = [];

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

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

puis envoyer une demande à L'API en utilisant votre token d'accès (remplacer ACCESS-TOKEN par votre token)

$apiUrl = sprintf("https://api.instagram.com/v1/media/shortcode/%s?access_token=ACCESS-TOKEN", $shortcode);
0
répondu totas 2017-08-21 14:41:09

Swift 4 court-code d'analyse de la solution

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
répondu SamB 2018-06-10 22:15:36

même chose que vous pouvez implémenter en Python -

import requests,json

def get_media_id(media_url):
   url = 'https://api.instagram.com/oembed/?callback=&url=' + media_url
   response = requests.get(url).json()
   print(response['media_id'])

get_media_id('MEDIA_URL')
0
répondu Shubham Gupta 2018-09-16 19:25:21

faites un clic droit sur une photo et ouvrez dans un nouvel onglet/Fenêtre. Clic droit sur inspect element . Recherche pour:

instagram: / / media?id=

cela vous donnera:

instagram: / / media?id=############# /// l'ID

Le plein d'id de construire à partir de

photoID_userID

pour obtenir le code d'utilisateur, recherchez:

instapp: owner_user_id sera dans le contenu=

-1
répondu Tal Zion 2016-11-24 10:29:40