Перейти к содержимому



Купить ссылку здесь
Фотография
- - - - -

Что делать если Instagram не дал доступ к API?

Форум ZiSMO.biz
Instagram API habrahabr
7
Сообщений в теме: 7

OFFLINE Отправлено

Vanka59
группа пользователя

    Активный

  • Cообщений: 1 860
  • Поинты: 0
  • Предупреждений: 50
20

1 июня 2016 года Instagram отключит от своего API все приложения, которые не прошли модерацию. Что делать если вы в их числе?
 

Предыстория

Мы делаем сервис для постинга в Instagram по расписанию и используем API для получения информации об аккаунтах. Самим постингом занимаются телефоны в автоматическом режиме. Нам отказали в доступе к API после 1 июня (пробовали пройти модерацию два раза) поэтому было решено найти замену. 

Сначала расскажу как мы использовали официальный API:

  1. При добавлении аккаунта забираем из Instagram информацию об аккаунте: имя, фото профайла, количество постов, подписчиков, подписок.
  2. Перед тем как опубликовать фото/видео мы запрашиваем количество постов, и тоже самое после публикации, если число постов увеличилось считаем публикацию успешной.
  3. Если публикация прошла успешно забираем ссылку на последнее фото в профайле.
  4. Если пользователь удаляет фото из нашего сервиса, то перед тем как выполнить задачу нужно проверить существует ли такой пост в Instagram (или его удалили).

 

Реализация

У Instagram есть веб-версия. С помощью нее в приватных аккаунтах можно получить информацию о количестве постов, подписок и подписчиков, а в публичных еще и сами посты, комментарии и лайки. Поэтому, в силу простоты получения, я подумал, что уже написаны подобные библиотеки. Пошел гуглить и нашел только для NodeJS. И для PHP нашелся какой-то код, но всем четырем пунктам не соответствовал. В итоге было решено писать свою библиотеку. 

Не буду вдаваться в детали, так как вы можете посмотреть код на GitHub. Расскажу только ключевые моменты. 
 

Получение информации об аккаунте

Если зайти в профайл (например, instagram.com/kevin) и посмотерть исходный код страницы, то прокрутив вниз можно увидеть зашитый прямо в страницу JSON объект с информацией об аккаунте. 
Довольно просто вытаскиваем его (для удобства я использовал mashape/unirest-php), парсим и записываем в массив: 

$response = Request::get('https://instagram.com/kevin');
$pageString = $response->body();
$arr = explode('window._sharedData = ', $pageString);
$json = explode(';</script>', $arr[1]);
$userArray = json_decode($json[0], true);
$userData = $userArray['entry_data']['ProfilePage'][0]['user'];
echo $userData['username']; // Теперь можно делать вот так
echo $userData['follows']['count'] // или вот так
echo $userData['is_private']; // ну вы поняли

 

Получение всех постов в аккаунте

Как оказалось, можно получить готовый JSON последних 20 постов добавив к URL аккаунта /media:https://instagram.com/kevin/media

Но, что делать если нам нужны все посты? Достаточно добавлять в URL параметр max_id с id последнего поста из 20-ки в цикле, пока все посты не кончатся: https://instagram.co...media?max_id=id. Для удобства даже есть поле more_available, которое принимает значение true или false.
 

Информация об отдельном посте

Что если у вас есть ссылка на пост в Instagram (например, www.instagram.com/p/9BDXa_L7bm) и вы хотите получить о нем информацию? Тоже самое, что и со страницей профайла, туда вшит JSON с данными о посте. 
Тоже как в первом пункте: вытаскиваем, парсим и, бум, у нас есть инфо о посте. 
 

Бонус. Как получить фото из Instagram в лучшем качестве?

Самое лучшее качество фотографии в Instagram на данный момент 1080 пикселей. Но наше решение отдает лишь 640
Методом тыка мы поняли, что если, например, заменить в URL фото 
https://scontent.cdn...874826488_n.jpg

часть с 640x640 на 1080x1080
https://scontent.cdn...874826488_n.jpg

То получим фото в максимально возможном качестве.
 

Заключение

В нашем случае с помощью библиотеки удалось полностью перекрыть потребности в API от Instagram.

Скрытый текст

Источник





    • 1
  • Наверх
  • Ответить

OFFLINE Отправлено

wapgraf
группа пользователя

    Активный

  • Cообщений: 1 356
  • Поинты: 813
  • Предупреждений: 10
  • Онлайн:33д 5ч 40м
32

Интересно интересно)


Продвижeние в Instagrаm. Сбор баз. Аналитика - http://zismo.biz/top...a-ot-androgena/

    • 0
  • Наверх
  • Ответить

OFFLINE Отправлено

AHISHKA
группа пользователя

    5:42 am

  • Cообщений: 1 120
  • Друзей:9
  • Поинты: 1
  • Предупреждений: 10
  • Онлайн:16д 54м
27

Как я помню,на программы МФ-МЛ это не повлияет


    • 0
  • Наверх
  • Ответить

OFFLINE Отправлено

Vanka59
группа пользователя

    Активный

  • Cообщений: 1 860
  • Поинты: 0
  • Предупреждений: 50
20

Как я помню,на программы МФ-МЛ это не повлияет

если через API то повлияет


    • 0
  • Наверх
  • Ответить

OFFLINE Отправлено

AHISHKA
группа пользователя

    5:42 am

  • Cообщений: 1 120
  • Друзей:9
  • Поинты: 1
  • Предупреждений: 10
  • Онлайн:16д 54м
27

если через API то повлияет

Да,но тот же тулик,вроде не юзает API


    • 0
  • Наверх
  • Ответить

OFFLINE Отправлено

HOLPER
группа пользователя

    ✓Ⅰnstagram. ㉧ Решение любых задач.☝☝☝☝☝

  • Cообщений: 5 689
  • Друзей:241
  • Поинты: 227 038
  • Предупреждений: 30
  • Онлайн:113д 4ч 28м
409

Фотка таким образом получается не лучшего качества.


GREEN_Instagram.gif                                       SHOP.INSTAGRAM.BY                                         GREEN_Instagram.gif 

    • 0
  • Наверх
  • Ответить

OFFLINE Отправлено

Chtozor
группа пользователя

    Аккаунты инстаграм для мф

  • Cообщений: 801
  • Друзей:83
  • Поинты: 690
  • Предупреждений: 0
  • Онлайн:11д 23ч 38м
10

если через API то повлияет

апи вроде только на ленту жеж закрывают, нет?


    • 0
  • Наверх
  • Ответить

OFFLINE Отправлено

shaman22
группа пользователя

    Новичок

  • Cообщений: 145
  • Поинты: 18
  • Предупреждений: 0
  • Онлайн:3д 5ч 41м
0

А удалось получить список подписок и подписчиков?


    • 0
  • Наверх
  • Ответить



Напишите свое сообщение