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.
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.
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/Y7GF-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){}
}
});
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
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
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;
}
votre ID média est: 448979387270691659_45818965
C'est la façon de l'obtenir.
- Aller à instgram.com/username.
- cliquez sur la photo dont vous voulez la carte d'identité.
- (instructions Chrome) clic droit sur la photo (doit être une image popup)
- élément D'inspection
- 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.
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.
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
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);
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)"
}
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')
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=