seguidores - hashtags para tener 100 likes en instagram
¿Dónde encuentro el ID de medios de Instagram de una imagen? (12)
Estoy buscando el MediaID
de una imagen de Instagram que se ha subido. Debe parecer
1234567894561231236_33215652
He descubierto que el último conjunto de enteros son los usersID
Por ejemplo: este es el enlace para la imagen directamente, sin embargo, ¿no veo un mediaID
en el formato correcto?
http://distilleryimage11.ak.instagram.com/d33aafc8b55d11e2a66b22000a9f09de_7.jpg
Si bien este es el enlace
http://instagram.com/p/Y7GF-5vftL/
No deseo usar la API, ya que todo lo que necesito es el MediaID de una imagen seleccionada.
Aquí hay una manera aún mejor:
No hay llamadas API! Y lancé la conversión de un media_id
a un shortcode
como un bono adicional.
Basado en increíble trabajo de para averiguar la conversión. Nathan''s work Nathan''s convirtiendo base10 a base64 en php. Y rgbflawed''s work rgbflawed''s convierte de nuevo a la inversa (con un alfabeto modificado). #Esfuerzo de equipo
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;
}
Aquí hay una mejor manera:
http://api.instagram.com/oembed?url=http://instagram.com/p/Y7GF-5vftL/
Procese como un objeto json y puede extraer fácilmente el ID de medios de él ---
Por ejemplo, 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''];
Por ejemplo, en 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){}
}
});
Aquí está la solución de Python para hacer esto sin una llamada de 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
Así que la "Mejor manera" más votada está un poco depreciada, así que aquí está mi edición y otras soluciones:
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''];
Entonces, esta es solo una versión actualizada del código de @George y actualmente está funcionando. Sin embargo, hice otras soluciones, y algunas incluso evitan una solicitud ajax:
Solución Shortcode Ajax
Ciertas URL de Instagram utilizan una sintaxis de URL acortada. Esto permite que el cliente solo use el código abreviado en lugar de la identificación de medios si se solicita correctamente.
Un ejemplo de url de código abreviado se ve así: https://www.instagram.com/p/Y7GF-5vftL/
El Y7GF-5vftL
es su shortcode para la imagen.
Usando Regexp:
var url = "https://www.instagram.com/p/Y7GF-5vftL/"; //Define this yourself
var Key = /p//(.*?)//$/.exec(url)[1];
En el mismo ámbito, Key
contendrá su shortcode. Ahora para solicitar, digamos, una imagen de baja resolución con este shortcode, harías algo como lo siguiente:
$.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;
}
});
Hay mucha otra información útil, incluida la identificación de medios, en la estructura RawData devuelta. Iniciar sesión o buscar la documentación de la API para ver.
Solución de conversión de código corto
¡Puedes convertir tu shortcode a la ID con bastante facilidad! Aquí hay una manera simple de hacerlo 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;
}
Nota: Si desea una solución node.js más robusta, o si desea ver cómo la volvería a convertir, consulte el módulo @ Slang''s el npm .
Solución de página completa
¿Y qué pasa si tiene la URL de una página de Instagram completa como: https://www.instagram.com/p/BAYYJBwi0Tssh605CJP2bmSuRpm_Jt7V_S8q9A0/
Bueno, realmente puedes leer el HTML para encontrar una meta propiedad que contenga el ID de medios. También hay un par de otros algoritmos que puede realizar en la propia URL para obtenerla, pero creo que eso requiere demasiado esfuerzo para que sea sencillo. Consulta la etiqueta meta al:ios:url
o itera a través del html. Dado que la lectura de los metatags se publica en todas partes, te mostraré cómo iterar.
NOTA: Esto es un poco inestable y es vulnerable a ser parcheado. Este método NO funciona en una página que utiliza un cuadro de vista previa. Por lo tanto, si le asigna el código HTML actual cuando hace clic en una imagen en el perfil de alguien, esto se romperá y devolverá una ID de medios incorrecta.
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;
}
Y ahí van, un montón de maneras diferentes de usar la API de Instagram para obtener una identificación de medios. Espero que uno arregle vuestras luchas.
De hecho, puede derivar el MediaId del último segmento del enlace mediante un método que escribí aquí: http://carrot.is/coding/instagram-ids . Funciona al asignar el segmento de la URL por códigos de caracteres y convertir el ID en un número base 64.
Por ejemplo, dado el enlace que mencionó ( http://instagram.com/p/Y7GF-5vftL ), obtenemos el último segmento ( Y7GF-5vftL
) y luego lo Y7GF-5vftL
en códigos de caracteres usando el alfabeto base 64 url-safe ( 24:59:6:5:62:57:47:31:45:11_64
). A continuación, convertimos este número base64 en base10 ( 448979387270691659
).
Si agrega su ID de usuario después de un _
, obtiene el ID completo en el formulario que especificó, pero dado que el ID de Media es único sin el ID de usuario, puede omitir el ID de usuario de la mayoría de las solicitudes.
Finalmente, hice un módulo Node.js llamado instagram-id-to-url-segment para automatizar esta conversión:
convert = require(''instagram-id-to-url-segment'');
instagramIdToUrlSegment = convert.instagramIdToUrlSegment;
urlSegmentToInstagramId = convert.urlSegmentToInstagramId;
instagramIdToUrlSegment(''448979387270691659''); // Y7GF-5vftL
urlSegmentToInstagramId(''Y7GF-5vftL''); // 448979387270691659
En JS puro (siempre que su navegador pueda manejar XHR, que todos los navegadores principales [incluido IE> 6] pueden):
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;
}
Siempre que este sea su objetivo, simplemente abra la página en la aplicación iOS de Instagram, que es exactamente de lo que se trata, debería hacerlo, especialmente si no quiere tener que soportar los aranceles de licencia.
Haga clic derecho en una foto y abra en una nueva pestaña / ventana. Haga clic derecho en inspect element
. Buscar:
instagram: // media? id =
Esto te dará:
instagram: // media? id = ############# /// el ID
La construcción completa de id desde
photoID_userID
Para obtener la identificación del usuario, busque:
instapp: owner_user_id estará en content =
Lo mismo que puedes implementar 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'')
Pruebe la solución con esta pregunta: ¿Cómo puedo obtener un enlace directo de Instagram de una entidad de Twitter?
Puede obtener solo la imagen agregando / media / a la URL. Usando tu
Incluso puedes especificar un tamaño,
Uno de t (miniatura), m (medio), l (grande). El valor predeterminado es m.
Así que para una miniatura: http://instagr.am/p/QC8hWKL_4K/media/?size=t
Puede utilizar la API de medios de shortcode desde instagram. Si usa php, puede usar el siguiente código para obtener el shortcode de la URL de la imagen:
$matches = [];
preg_match(''/instagram/.com//p//([^//]*)/i'', $url, $matches);
if (count($matches) > 1) {
$shortcode = $matches[1];
}
Luego envíe una solicitud a la API usando su token de acceso (Reemplace ACCESS-TOKEN
con su token)
$apiUrl = sprintf("https://api.instagram.com/v1/media/shortcode/%s?access_token=ACCESS-TOKEN", $shortcode);
Solución de análisis de código corto Swift 4
private static func instagramDeepLinkFromHTTPLink(_ link: String) -> String? {
guard let shortcode = link.components(separatedBy: "/").last else { return nil }
// algorithm from https://.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)"
}
Su ID de medios es: 448979387270691659_45818965
Esta es la forma de obtenerlo.
- Vaya a instgram.com/username.
- Haga clic en la foto que desea el ID de.
- (Instrucciones de Chrome) haga clic derecho en la foto (debe ser una imagen emergente)
- Inspeccionar elemento
- Busque en el texto seleccionado, debería ver algo como esto.
photo448979387270691659_45818965
Debe haber su identificación con foto.
Por alguna razón, esto solo parece funcionar con la ventana emergente, y no con la URL de la imagen real.