В настоящее время я пытаюсь извлечь данные о видео из фида для загрузки YouTube. Этот фид содержит все видео, загруженные определенным пользователем, и к ним обращаются из API по запросу:
http://gdata.youtube.com/feeds/api/users/USERNAME/uploads
Где USERNAME - это имя пользователя YouTube, которому принадлежит фид.
Тем не менее, я столкнулся с проблемами при попытке доступа к каналам, длина которых превышает 1000 видео. Поскольку каждый запрос API может возвращать 50 элементов, я выполняю итерацию через фид с использованием max_length и start_index следующим образом:
http://gdata.youtube.com/feeds/api/users/USERNAME/uploads?start-index=1&max-results=50&orderby=published
http://gdata.youtube.com/feeds/api/users/USERNAME/uploads?start-index=51&max-results=50&orderby=published
И так далее, увеличивая start_index на 50 при каждом вызове. Это работает отлично, пока:
http://gdata.youtube.com/feeds/api/users/USERNAME/uploads?start-index=1001&max-results=50&orderby=published
В какой момент я получаю сообщение об ошибке 400, сообщая мне, что "Вы не можете запрашивать значение за пределами объекта 1000". Это меня смутило, поскольку я предположил, что запрос вернет только 50 видео: 1001-1051 в порядке, который был опубликован совсем недавно. Просмотрев документацию, я обнаружил это:
Ограничения по количеству результатов и доступным результатам
...
Для любого заданного запроса вы не сможете получить более 1000 результатов, даже если их больше. API вернет ошибку если вы попытаетесь получить более 1000 результатов. Таким образом, API будет вернуть ошибку, если вы установите параметр запроса start-index на значение 1001 или выше. Он также вернет ошибку, если сумма параметры start-index и max-results больше, чем 1.001.
Например, если вы задаете значение параметра start-index 1000, тогда вы должны установить значение параметра max-results равным 1, и если вы установите значение параметра start-index до 980, то вы должны установить максимальные результаты значение параметра равно 21 или меньше.
Я не понимаю, как получить доступ к общему пользователю 1001-го последнего загруженного видео и дальше последовательно, так как они не могут быть проиндексированы с использованием только max-results и start-index. У кого-нибудь есть какие-либо полезные предложения о том, как избежать этой проблемы? Надеюсь, что я четко изложил эту проблему!