2017-08-28 7 views
1

J'ai cherché partout, mais il n'y a pas un seul lien expliquant ou expliquant pourquoi cela se produit. Chaque fois que je fais une demande de point de terminaison à Instagram pour des photos, la plupart des URL de l'image sont coupées - pas toute la photo est là par rapport à la publication originale sur Instagram. Il me semble, et peut-être logiquement, que les images qui sont coupées sont celles qui ne sont pas exactement carrées.API Instagram - Les médias retournés sont coupés

Y at-il un moyen d'obtenir l'image complète, sans le recadrer pour l'insérer dans un carré exact?

Merci.

EDIT: Je viens de réaliser qu'il existe une option média non-carré dans la console des développeurs, mais j'ai vérifié mais cela ne semble pas fonctionner.

Répondre

0

Résolu. Bien que cela fonctionne, décevoir la fonction média non-carré d'Instagram ne fonctionne pas comme prévu.

$image_url = $insta_liked_array['data'][$image_key]['images'] 
['standard_resolution']['url']; 

//parse url to get last segment before image name 

$segments = explode('/', parse_url($image_url, PHP_URL_PATH)); 
$segment_removal = $segments[5]; 

//New Url without the segment 
$image_url_dynamic = str_replace("/" . $segment_removal,"",$image_url); 

echo $image_url_dynamic; 

Edit: Parfois ce qui précède pourrait ne pas fonctionner comme prévu, je pris la peine de faire quelque chose qui va ... 26 lignes de code parce que instagram ne peut pas fixer une simple case à cocher!

//'/e35/c' is a common string in each url, so from this we can take 
//away the /c... section using this info 
//whatever index [e35] is, check if the next index has c as the first 
//letter, if so, remove that part 

echo "Exploding url, checking for non-square media...\n\n"; 
$segments = explode('/', parse_url($image_url, PHP_URL_PATH)); 

if(in_array('e35', $segments)){ 
//get the index of e35 
$e35_index = array_search('e35', $segments); 
//if the letter 'c' is in the next seg, remove it 
// to check if 'c' is in the next segment 
$c_segment = $segments[$e35_index + 1]; 

if (strpos($c_segment, 'c') !== false) { 
echo "Non square media resolve in progress...\n\n"; 
//get rid of that section +backslash, (replace with nothing) 
$image_url = str_replace("/" . $c_segment,"",$image_url); 
echo "New url has been made...\n\n\n\n" . $image_url; 
} 
elseif(strpos($c_segment, 'c') === false){ 
echo "Square media detected, no need to remove a segment...\n\n"; 
$image_url = $image_url; 
} 
else { 
echo "An error occured"; 
} 
} 
else{ 
echo "An error occured - url should contain 'e35' string"; 
} 
0

Il y a une option dans la page de configuration du client de l'API pour définir l'API pour retourner les médias non-carrés, son dans l'onglet de migration:

enter image description here

+0

C'est ce que je l'avais déjà souligné out comme ne fonctionne pas - il ne restaure que les médias carrés croppud. J'ai résolu le problème maintenant –

+0

@LucaSarif Assurez-vous de recréer vos jetons d'accès après avoir modifié ce paramètre; il ne s'applique pas aux jetons déjà créés. –

+0

A fait tellement de fois, même créé de nouveaux clients depuis le début avec cette option cochée. Je suis arrivé à la conclusion que je dois approuver mon application, ce qui n'arrivera jamais, ou c'est juste cassé. @Steven Schobert –