Получение более 150 комментариев в Instagram

Эта проблема

Я хотел бы иметь возможность просматривать все комментарии к любому фрагменту медиа в Instagram, даже если в СМИ имеется более 150 комментариев. На данный момент, по-видимому, невозможно просмотреть больше, чем последние 20 комментариев к медиафайлу на сайте Instagram, и если вы используете Instagram API Console или Instagram API Libraries, последние 150 комментариев возвращаются без параметров для пагинация или просмотр дополнительных комментариев.

Что я пробовал

Сначала я, конечно, попробовал задокументированный запрос комментариев к мультимедиа как в предоставленной консоли, так и в моей собственной среде. В обоих случаях было возвращено не более 150 комментариев. Ошеломленный, я начал искать дополнительную информацию в Интернете.

Внимательно прочитав документацию по API Instagram, протестировав различные конечные точки в Instagram API Console и прочтите различные вопросы о StackOverflow в теге Instagram и Instagram API Google Group по нескольким темам в Instagram. Я подумал, есть ли шанс, что что-то не задокументировано, что я мог бы попробовать.

Документация последней конечной точки мультимедиа пользователя включает параметры для max_id и max_timestamp, которые позволяют пролистывать самые свежие мультимедиа для любых данного пользователя, извлекая носитель, который предшествует указанному max_id или max_timestamp. Поскольку каждый комментарий имеет атрибуты created_time и id, я попытался добавить параметры для max_id и max_timestamp (как по отдельности, так и вместе) для различных идентификаторов комментариев и временных меток, пытаясь пролистать комментарии. Ни одна из моих попыток не сработала.

Я сейчас нахожусь в тупике, если у кого-то нет другого предложения.

Конкретный пример

Используя Instagram API Console, я предпринял следующие шаги, чтобы попытаться получить все комментарии для это фото.

  1. Авторизовался для токена OAuth2
  2. Выполните поисковый запрос пользователя для coltonlhaynes, чтобы получить пользователя id: 9610843
  3. Выполните недавний медиа-запрос пользователя для идентификатора пользователя: 9610843, чтобы получить самые последние медиа
  4. Gathered information about the most recent media (the above linked photo)
    • media id: 698057751201132903_9610843
    • комментарий count: 1375
  5. Выполните запрос комментариев СМИ для идентификатора СМИ: 698057751201132903_9610843, чтобы получить самые последние комментарии
  6. Gathered information about the least recent comment
    • created time: 1397460230
    • комментарий id: 698269477955776593
  7. Ran a media comment query for media id: 698057751201132903_9610843 with the following additional query parameter strings in attempt to page through comments, but received the same results as step #6
    • ?max_timestamp=1397460230
    • ?max_id=698269477955776593
    • ?max_timestamp=1397460230&max_id=698269477955776593
    • ?max_id=698269477955776593&max_timestamp=1397460230

Пожалуйста, обрати внимание

Насколько мне известно, у этой проблемы нет решения, но поскольку команда разработчиков Instagram заявила, что они больше не будут контролировать Группа Google и вместо этого будет отслеживать StackOverflow, я помещаю это здесь.


person Ally    schedule 14.04.2014    source источник
comment
Крайне неприятно, что в их документации даже говорится, что эта конечная точка получает полный список комментариев к медиа-объекту.. Красиво написанный пост. Надеюсь, ты найдешь ответ.   -  person Lenny Sirivong    schedule 09.09.2014
comment
Стоит также сказать, что конечная точка лайков, похоже, ограничена 120 самыми последними лайками.   -  person AndyRyan    schedule 23.03.2015
comment
Теперь в описании конечной точки сказано: Получите список последних комментариев к медиа-объекту. :) Было бы неплохо иметь разбивку на страницы хотя бы на 500 комментариев. Этого было бы достаточно для большинства применений ...   -  person Alin    schedule 22.08.2015
comment
вы пробовали использовать InstaSharp?   -  person Kiquenet    schedule 10.07.2016
comment
Консоль API не найдена instagram.com / разработчик / api-console   -  person Kiquenet    schedule 10.07.2016
comment
Есть обновления по этому поводу?   -  person damirstuhec    schedule 07.02.2017


Ответы (4)


Хорошо, это будет очень «хакерское» решение, и я в настоящее время не настроен на это самостоятельно (из-за отсутствия ADSL дома), но я могу предоставить пошаговое руководство, как я подхожу к этой проблеме.

Прежде всего вам понадобится инструмент под названием "Charles Web Debuging Proxy".

На сайте есть руководство о том, как включить «отладку SSL» в charles (для чего вам потребуется установить новый «корневой сертификат» на мобильное устройство, чтобы заставить его думать, что транзакции https, подписанные charles, на самом деле подписаны автор instagram.com)

Теперь настройте мобильное устройство на маршрутизацию всех запросов через указанный прокси-сервер (который должен быть установлен в вашей локальной сети Wi-Fi).

перейдите на https://www.google.com и убедитесь, что charles регистрирует и запросы, и ответы.

После того, как все это настроено правильно, вы можете взглянуть на вызовы API, которые само приложение Instagram использует для создания указанных страниц комментариев.

person Damian Nikodem    schedule 25.01.2015

Общий ответ здесь: нет, это невозможно через обычные конечные точки.

Instagram обновил ограничения скорости (после 17 ноября, 2015). Все ограничения скорости на платформе Instagram контролируются отдельно для каждого токена доступа и в скользящем часовом окне. Живые приложения имеют более высокие ограничения скорости, чем приложения в режиме песочницы.

Укажите следующие ограничения в глобальном контексте:

Глобальные ограничения скорости

Глобальные ограничения скорости применяются, включая все вызовы API, сделанные приложением для каждого токена доступа в течение 1-часового скользящего окна, независимо от конкретной конечной точки. Ограничения скорости также применяются к недействительным или неправильно сформированным запросам.

  • Песочница ОГРАНИЧЕНИЕ СКОРОСТИ: 500 / час.
  • В реальном времени ОГРАНИЧЕНИЕ СТАВКИ: 5000 / час

Плюс отдельно ограничения для конечных точек комментариев:

Ограничения скорости для конкретных конечных точек

Конечные точки, используемые для публикации (POST или DELETE), имеют ограничения скорости, которые применяются для каждой конечной точки. Любые вызовы, совершаемые вашим клиентом OAuth на эти конечные точки, также учитываются в глобальных пределах скорости, указанных выше.

  • Песочница / media / media-id / comments: 30 / час.
  • Прямая трансляция / media / media-id / комментарии: 60 / час.

Если ваше приложение превышает любое из этих ограничений скорости, вы получите ответ с кодом ответа HTTP 429 (Too Many Requests).

Как только платформа Instagram будет управлять им на access token основе, вы можете достичь больших ограничений, используя многопоточность с токенами множественного доступа. Но у него есть предостережения: 1. Не все может быть распараллелено с помощью токенов множественного доступа, так как контекст будет другим. 2. Это может противоречить Политике платформы и TOS

person Farside    schedule 12.04.2016

Это совсем не "хакерство".

Поскольку Instagram дает ссылку, по которой вы можете получить все комментарии здесь: https://instagram.com/developer/endpoints/comments/

Все, что вам нужно сделать, это просмотреть ссылку, которую дает вам Instagram. Я сделал это вот так. Я использую Api, чтобы сделать это таким образом.

  public function getUserMediaComments($id, $limit = 0) {
    return $this->_makeCall('media/'.$id.'/comments', true, array('count' => $limit));
  }

$ Id - это media_id изображения. Если вы перейдете к этой функции с идентификатором изображения, вы получите все комментарии.

Когда я узнал об этом пути, это было не так уж и сложно.

Вы также можете сделать это таким же образом во время прохождения над ним. :

$comments = json_decode(file_get_contents('https://api.instagram.com/v1/' . 'media/'. $image->id . '/comments?access_token='. $data->access_token));

Он оба возвращает вам массив комментариев к изображениям.

person Armando van Oeffelen    schedule 06.10.2015
comment
Нет, это далеко не решение. Я не уверен, чего вы добиваетесь. Вы не можете получить все комментарии. Вам нужно будет подделать запрос к их конечной точке GraphQL, чтобы получить дополнительные комментарии сверх лимита 150. - person MrSaints; 20.10.2015
comment
подсчитать? нет в наличии получить 151 - 300 товаров? - person Kiquenet; 10.07.2016

В соответствии с тем, что сказал @Farside, я не верю, что это возможно сделать с помощью книг. Однако вы можете сделать это, используя Selenium и очистив все комментарии в Python. Вы можете использовать библиотеку InstaPy. У них есть шаблоны быстрого старта, чтобы сделать это действительно просто.

person Stefan Dacey    schedule 19.02.2021