Подтвердить что ты не робот

Как получить всю историю просмотра YouTube на YouTube?

Я пытаюсь получить полный список просмотренных видео для данного пользователя в приложении YouTube API. Я хочу добавить общую продолжительность всех видеороликов.

Когда я получаю список видео из списка воспроизведения истории, API закрывает его на 50 элементов. Там разбиение на страницы, но общее количество предметов составляет 50 (не только на странице); Я не могу получить доступ к большему количеству данных с API-интерфейсом.

Есть ли способ получить этот плейлист без крышки данных? Я надеюсь на другой метод (с использованием API) или способ сделать это без API. Я знаю, что YouTube хранит эти данные, потому что я могу просмотреть всю свою историю (более 50 видеороликов).

Я использую этот код:

var requestOptions = {
    playlistId: playlistId,
    part: 'snippet',
    maxResults: 50
};
gapi.client.youtube.playlistItems.list(requestOptions);

где playlistId - идентификатор списка воспроизведения истории, который я получил от запроса gapi.client.youtube.channels.list.

Изменить (2017): Я хочу уточнить, что всегда было желание загрузить мою собственную историю, просто из интереса, чтобы посмотреть, сколько времени я потратил на просмотр видео. Я все еще не смог этого сделать.

4b9b3361

Ответ 1

В настоящее время API извлекает только две последние недели истории просмотров. Для получения дополнительной информации см. Сообщение об ошибке: https://code.google.com/p/gdata-issues/issues/detail?id=4642

Примечание: Здесь есть аналогичный вопрос: "API YouTube v3 возвращает историю усеченного просмотра

Ответ 2

Я написал скребок (в Python 2.7 (обновленный для 3.5) и Scrapy) для этой задачи некоторое время назад. Sans, он использует зарегистрированный сеанс cookie и синтаксический анализ html. По умолчанию дампы SQLite. https://github.com/zvodd/Youtube-Watch-History-Scraper

Как это делается: по существу он открывает URL-адрес

https://www.youtube.com/feed/history'

с действительным (зарегистрированным) сеансом cookie, взятым из Chrome. Сбрасывает все записи видео для имени, vid (url), канала/пользователя, описания, длины. Затем он находит кнопку внизу страницы с атрибутом data-uix-load-more-href, который содержит ссылку на следующую страницу, что-то вроде:

"/browse_ajax?action_continuation=1&continuation=98h32hfoasau0fu928hf2hf908h98hr%253D%253D&target_id=item-section-552363&direct_render=1"

... повторно удаляет записи видео и отбрасывает их все в базу данных sqlite; которые вы можете искать в любом из полей (имя, длина, пользователь, описание и т.д.).

Итак, пока они не изменят свою страницу фида/истории, это выполнимо и сделано. Я даже могу его обновить.

Ответ 3

Похоже, что это известная ошибка, о которой первоначально сообщалось в 2013 году. Точно такое же поведение объясняется в цепочке Google Code: https://code.google.com/p/gdata-issues/issues/detail?id=4642

Ответ 4

Мозговой штурм, никогда не пробовали: вы пробовали не с помощью API и вместо этого анализировали URL https://www.youtube.com/feed/history?

Теоретически, просмотр пользователей может быть эмулирован, включая разбиение на страницы. Я не знаю, насколько сложно (возможно, очень), поскольку вам нужно иметь дело с проверкой подлинности, и YouTube, вероятно, пытается проверить, что человек просматривает.