Где найти идентификатор Instagram media ID изображения
Я ищу MediaID
изображения Instagram, которое было загружено. Это должно выглядеть как
1234567894561231236_33215652
я узнал, что последний набор целых чисел-это usersID
например: это ссылка для изображения напрямую, однако я не вижу mediaID
в правильном формате?
http://distilleryimage11.ak.instagram.com/d33aafc8b55d11e2a66b22000a9f09de_7.jpg
а это ссылка
http://instagram.com/p/Y7GF-5vftL/
Я не хочу использовать API как все, что мне нужно MediaID из выбранного изображения.
12 ответов
так что большинство проголосовали "Лучше" немного обесценивается, поэтому вот мое редактирование и другие решения:
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 Решение
некоторые URL-адреса Instagram используют сокращенный синтаксис url. Это позволяет клиенту просто использовать шорткод вместо идентификатора носителя при правильном запросе.
пример url-адреса шорткода выглядит следующим образом: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 есть много другой полезной информации, включая идентификатор носителя. Войдите в него или посмотрите документацию api, чтобы увидеть.
Решение Для Преобразования Шорткода
вы можете конвертировать свой шорткод в id довольно легко! Вот простой способ сделать это в 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;
}
Примечание: Если вы хотите более надежный узел.JS решение, или хотите увидеть, как вы бы преобразовать его обратно, проверить @Slang's модуль на npm.
Полная Страница Решение
Итак, что делать, если у вас есть URL-адрес полной страницы Instagram, например:https://www.instagram.com/p/BAYYJBwi0Tssh605CJP2bmSuRpm_Jt7V_S8q9A0/
Ну, вы действительно можете прочитать HTML найдите свойство meta, содержащее идентификатор носителя. Есть также несколько других алгоритмов, которые вы можете выполнить на самом 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, чтобы получить идентификатор носителя. Надеюсь, один исправит вашу борьбу.
вот лучше так:
http://api.instagram.com/oembed?url=http://instagram.com/p/Y7GF-5vftL/
Render как объект json, и вы можете легко извлечь из него идентификатор носителя - - -
например, в 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){}
}
});
вы можете фактически вывести MediaId из последнего сегмента ссылки алгоритмически, используя метод, о котором я писал здесь:http://carrot.is/coding/instagram-ids. Он работает путем сопоставления сегмента URL по кодам символов и преобразования идентификатора в базовый номер 64.
например, учитывая ссылку, которую вы упомянули (http://instagram.com/p/Y7GF-5vftL), получаем последний сегмент (Y7GF-5vftL
) затем мы сопоставляем его в символьные коды, используя в base64 URL-адрес-безопасный алфавит (24:59:6:5:62:57:47:31:45:11_64
). Затем мы преобразуем это число base64 в base10 (448979387270691659
).
если вы добавляете свой идентификатор пользователя после _
вы получаете полный идентификатор в указанной вами форме, но поскольку MediaId уникален без идентификатора пользователя, вы можете фактически опустить идентификатор пользователя из большинства запросов.
наконец, я сделал узел.модуль js называется instagram-id-to-url-сегмент для автоматизации этого преобразования:
convert = require('instagram-id-to-url-segment');
instagramIdToUrlSegment = convert.instagramIdToUrlSegment;
urlSegmentToInstagramId = convert.urlSegmentToInstagramId;
instagramIdToUrlSegment('448979387270691659'); // Y7GF-5vftL
urlSegmentToInstagramId('Y7GF-5vftL'); // 448979387270691659
попробуйте решение из этого вопрос: Как я могу получить прямую ссылку Instagram от объекта twitter?
вы можете получить только изображение, добавив/ media / к URL-адресу. Используя ваш
вы даже можете указать размер,
один из t (эскиз), m (средний), l (большой). По умолчанию м.
Так для эскиза: http://instagr.am/p/QC8hWKL_4K/media/?size=t
здесь даже лучше так:
нет вызовов API! И я бросил в преобразование media_id
до shortcode
в качестве дополнительного бонуса.
на основе слэнг-х потрясающая работа для выяснения преобразования. Нейтан работа преобразование base10 в base64 в php. И rgbflawed это работа преобразование его обратно в другую сторону (с измененным алфавитом). # teamefort
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;
}
Ваш идентификатор носителя:448979387270691659_45818965
Вот как его получить.
- перейти к instgram.com/username.
- нажмите на фотографию, которую вы хотите идентификатор.
- (инструкции Chrome) щелкните правой кнопкой мыши на фотографии (должно быть всплывающее изображение)
- Проинспектировать элемент
- поиск по выбранному тексту, вы должны увидеть что-то вроде этого
photo448979387270691659_45818965
должен быть Ваш идентификатор фотографии.
по какой-то причине это работает только с всплывающим окном, а не фактическим URL-адресом изображения.
в чистом JS (при условии, что ваш браузер может обрабатывать XHRs, который может каждый основной браузер [включая 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, что именно об этом-это должно сделать, особенно если вы не хотите терпеть лицензионные сборы.
вот решение 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
вы можете использовать шорткод media API из instagram. Если вы используете php, вы можете использовать следующий код для получения шорткода из URL-адреса изображения:
$matches = [];
preg_match('/instagram\.com\/p\/([^\/]*)/i', $url, $matches);
if (count($matches) > 1) {
$shortcode = $matches[1];
}
затем отправьте запрос в API, используя маркер доступа (Replace ACCESS-TOKEN
С вашего маркера)
$apiUrl = sprintf("https://api.instagram.com/v1/media/shortcode/%s?access_token=ACCESS-TOKEN", $shortcode);
Свифт 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)"
}
то же самое, что вы можете реализовать в 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')
щелкните правой кнопкой мыши на фотографии и откройте новую вкладку/Окно. Щелкните правой кнопкой мыши на inspect element
. Искать:
instagram://медиа?id=
это даст вам:
instagram://медиа?id=############# / / / ID
полная конструкция id из
photoID_userID
чтобы получить идентификатор пользователя, выполните поиск:
instapp:owner_user_id будет в Content=