Тут важно знать, это новый, уникальный тэг, нужна ли полная история фоток по этому тэгу и тд.
1. Получаем список последних фоток с нужным тэгом и сохраняем их в базу:
https://api.instagram.com/v1/tags/TAG_NAME/media/recent?access_token=TOKEN
2. Из ответа берем
pagination.next_min_id
и сохраняем его для следующего запроса.
2.a Если нужна история по этому тэгу, то делаем следующий запрос по ссылке из
pagination.next_url
или генерируем его сами с указанием
next_min_id
из
pagination
объекта и так пока этот параметр (
next_url
) будет в ответе или просто до момента пока вам не надоест.
3. Запрашиваем новые фотки с указанием параметра
next_min_id
и сохраняем их в базу:
https://api.instagram.com/v1/tags/TAG_NAME/media/recent?min_tag_id=NEXT_MIN_ID&access_token=TOKEN
4. GOTO 3.
Тут есть проблема, которую мне еще не удалось решить. Этот алгоритм работает пока у вас не очень много фоток появляется с этим тэгом и они все укладываются в один ответ на запрос к API. (параметр
count
может быть от 1 до 32). Как только кол-во новых фоток за то время пока вы делаете запрос к API и показываете/сохраняете фотки в базу превысит
count
— нужно будет выкачивать новые страницы по
next_url
и с каждой итерацией таких траниц будет все больше и больше (попробуйте тэг
love
например).
Поведение метода
tag c параметром
next_min_id
мне совсем не понятно, тк указывая этот параметр и
count=1
я ожидаю увидеть ровно одну фотку опубликованую в Instagram сразу после той, у которой этот
next_min_id
и был, но по факту в ответе будет самая свежая фотка из всех что появились за период после
next_min_id
и ссылка на следующую порцию фоток из этой группы в
next_url
. Как это решить - я не знаю, вот мой вопрос на
SO.