Заполнение моих понравившихся видео на YouTube в электронной таблице Excel

YouTube в значительной степени стал частью жизни каждого во время пандемии COVID 19. Отметка «Нравится» этим видео не только дает нам возможность оставить свой отзыв, но и дает нам возможность создать собственный персонализированный плейлист. Хотя к этому списку можно получить доступ через веб-сайт и приложение, нет действительно удобного способа получить старые понравившиеся видео — не без мучительной прокрутки, особенно когда список становится слишком большим.

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

В одну прекрасную ночь я подумал, что я программист, почему бы мне не применить свои навыки на работе, чтобы получить подробный список того же самого. Хотя я идентифицирую себя как ночной человек, тянуть все ночные часы обычно не мое. Однако это был один из тех случаев, когда я был вынужден не спать всю ночь, чтобы завершить сценарий, который принесет мне понравившиеся видео на YouTube.

Не теряя много времени, я просмотрел документацию Google по API YouTube, которая позволила бы мне программно получать данные с их серверов. Я бы использовал их Data API v3. Затем я создал небольшое консольное приложение .NET Core и опробовал простой запрос; и понял, что мне нужно использовать OAuth для получения моих личных данных, а не использовать ключ API, который извлекал бы только общедоступные данные.

Теперь, когда учетные данные OAuth были настроены, мне нужно было где-то сохранить результаты. Для этого я решил использовать электронную таблицу Excel, так как текстовый файл был бы слишком примитивным и относительно неуклюжим для навигации. Поэтому я создал небольшую модель данных и реализовал абстракцию с помощью библиотеки EPPlus, чтобы получить последнюю заполненную запись в файле Excel и добавить результаты из ответа на запрос API, создав таким образом непрерывный список.

Вот тут и начались проблемы. Люди в Google наложили несколько забавных ограничений на API данных YouTube. Ни один запрос не может получить более 50 результатов. Вдобавок ко всему, для проекта была предусмотрена ежедневная квота в 10 000 единиц. Это может показаться огромным, но один запрос на загрузку будет стоить 1600 единиц квоты. К счастью для меня, API, которые я использовал, неожиданно потребляли всего 1 единицу на запрос. Так что не это было главной проблемой.

… удалось получить весь мой список 2,5k видео

Конечная точка видео API, которую я использовал, допускала только 1000 кумулятивных строк для постраничных запросов; тогда как мои лайки насчитывают около 2,5 тыс. видео. Поиск в Интернете привел меня к решению, в котором вместо этого предлагалось использовать конечную точку элементов списка воспроизведения; и, конечно же, мне удалось получить весь мой список из 2,5 тыс. видео с небольшим недостатком — он не извлек другие полезные сведения, такие как информация о канале, идентификатор категории и теги.

Поэтому я снова просмотрел документацию и нашел одно приемлемое решение — получить список видео на основе их идентификаторов. Таким образом, после нескольких упражнений с Excel с помощью автоматизации электронных таблиц SheetKraft я смог создать массив оставшихся идентификаторов видео, разделенных запятыми, полученных через конечную точку элементов списка воспроизведения. Излишне говорить, что позже я интегрировал то же самое в свой код, поэтому не нужно возиться с Excel, и все делается одним щелчком мыши.

Теперь осталось только получить категории видео, что было одноразовой задачей — в основном, чтобы получить список категорий, сопоставленных с их соответствующими идентификаторами — которые я лениво удалил в самом отладчике! Вот интересный фрагмент кода для фанатов программирования :)