Подтвердить что ты не робот

Где найти идентификатор носителя Instagram изображения

Я ищу MediaID изображения Instagram, которое было загружено. Он должен выглядеть как

1234567894561231236_33215652

Я обнаружил, что последний набор целых чисел - это usersID

Например: это ссылка для изображения напрямую, но я не вижу MediaID в правильном формате?

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

пока это ссылка

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

Я не хочу использовать API, поскольку мне нужен MediaID из выбранного изображения.

4b9b3361

Ответ 1

Так что "Лучший путь", за который проголосовали большинство, немного устарел, так что вот мое редактирование и другие решения:

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

Итак, это всего лишь обновленная версия кода @George и в настоящее время работает. Тем не менее, я принял другие решения, и некоторые даже избегают запроса ajax:


Шорткод Ajax Solution

Некоторые URL-адреса Instagram используют сокращенный синтаксис URL-адресов. Это позволяет клиенту просто использовать шорткод вместо идентификатора мультимедиа, если запрашивается правильно.

Пример короткого кода URL выглядит следующим образом: https://www.instagram.com/p/Y7GF-5vftL/

Y7GF-5vftL - это ваш Y7GF-5vftL для картинки.

Использование регулярных выражений:

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 есть много другой полезной информации, включая идентификатор медиа. Войдите или посмотрите документацию API, чтобы увидеть.


Решение для преобразования шорткодов

Вы можете довольно легко преобразовать свой шорткод в идентификатор! Вот простой способ сделать это в 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 или хотите узнать, как его преобразовать обратно, проверьте модуль @Slang на npm.


Решение для полной страницы

Так что, если у вас есть URL-адрес полной страницы Instagram, например: https://www.instagram.com/p/BAYYJBwi0Tssh605CJP2bmSuRpm_Jt7V_S8q9A0/

Ну, на самом деле вы можете прочитать HTML, чтобы найти мета-свойство, которое содержит идентификатор медиа. Есть также пара других алгоритмов, которые вы можете выполнить для самого URL, чтобы получить его, но я считаю, что это требует слишком больших усилий, поэтому мы будем упрощать его. Либо запросите метатег al:ios: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 для получения идентификатора Media ID. Надеюсь, что вы исправите вашу борьбу.

Ответ 2

Здесь лучший способ:

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

Render as json object, и вы можете легко извлечь из него идентификатор носителя ---

Например, в 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){}   
    } 
});

Ответ 3

Здесь еще лучший способ:

Нет вызовов API! И я бросил преобразование media_id в shortcode в качестве дополнительного бонуса.

На основе сленга потрясающая работа для определения конверсии. Натан работа, конвертирующий base10 в base64 в php. И rgbflawed работать, преобразуя его обратно в другую сторону (с измененным алфавитом). #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;

}

Ответ 4

Фактически вы можете выводить MediaId из последнего сегмента ссылки алгоритмически с помощью метода, который я написал здесь: http://carrot.is/coding/instagram-ids. Он работает путем сопоставления сегмента URL по кодам символов и преобразования идентификатора в базовый номер 64.

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

Если вы добавите свой userId после _, вы получите полный идентификатор в указанной вами форме, но поскольку MediaId уникален без userId, вы можете фактически опустить userId из большинства запросов.

Наконец, я сделал модуль Node.js, называемый instagram-id-to-url-segment, чтобы автоматизировать это преобразование:

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

instagramIdToUrlSegment('448979387270691659'); // Y7GF-5vftL
urlSegmentToInstagramId('Y7GF-5vftL'); // 448979387270691659

Ответ 5

Попробуйте решить этот вопрос: Как я могу получить прямую ссылку Instagram из объекта twitter?

Вы можете получить только изображение, добавив/media/в URL. Используя

Вы даже можете указать размер,

Один из t (миниатюра), m (средний), l (большой). По умолчанию m.

Итак, для миниатюры: http://instagr.am/p/QC8hWKL_4K/media/?size=t

Ответ 6

Идентификатор вашего носителя: 448979387270691659_45818965 Вот как это получить.

  • Перейдите на страницу instgram.com/username.
  • Нажмите на фотографию, в которой вы хотите.
  • (инструкции Chrome) щелкните правой кнопкой мыши по фотографии (должно быть всплывающее изображение).
  • Осмотреть элемент
  • Поиск по выбранному тексту, вы должны увидеть что-то вроде этого photo448979387270691659_45818965

Должен быть ваш идентификатор фотографии.

По какой-то причине это работает только со всплывающим окном, а не с фактическим URL-адресом изображения.

Ответ 7

Вот решение python для этого без вызова 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

Ответ 8

В чистом 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, и это именно то, о чем идет речь - это должно быть сделано, особенно если вы не хотите терпеть плату за лицензирование.

Ответ 9

Вы можете использовать API носителей короткого кода из instagram. Если вы используете php, вы можете использовать следующий код для получения короткого кода с URL-адреса изображения:

$matches = [];

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

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

Затем отправьте запрос в API с помощью маркера доступа (замените ACCESS-TOKEN на токен)

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

Ответ 10

редактировать

Приложение iOS для iOS теперь зарегистрировано для регулярных http-ссылок, которые открываются в приложении Instagram, и эта методика диплинков больше не нужна.

старый

Синтаксический анализ Swift 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)"
}

Ответ 11

То же самое, что вы можете реализовать в 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')

Ответ 12

В течение некоторого времени мне приходилось извлекать Media ID довольно часто, поэтому я написал свой собственный скрипт (весьма вероятно, что он основан на некоторых примерах здесь). Вместе с другими небольшими сценариями, которые я часто использовал, я начал загружать их на www.findinstaid.com для собственного быстрого доступа.

Я добавил возможность ввести имя пользователя для получения идентификатора мультимедиа из 12 последних сообщений или ввести URL-адрес, чтобы получить идентификатор мультимедиа для определенного сообщения.

Если это удобно, каждый может использовать ссылку (у меня нет никаких надбавок или других денежных интересов на веб-сайте - у меня есть только реферальная ссылка на вкладке "Аудит" на www.auditninja.io, которой я тоже владею, но и на этом сайте нет никаких надбавок или денежных интересов - только хобби-проекты).

Ответ 13

Щелкните правой кнопкой мыши по фотографии и откройте ее в новой вкладке/окне. Щелкните правой кнопкой мыши по inspect element. Поиск:

Instagram://медиа идентификатор =

Это даст вам:

instagram://media? id = ############# ///идентификатор

Полная конструкция id из

photoID_userID

Чтобы получить идентификатор пользователя, выполните поиск:

instapp: owner_user_id Будет в содержании =