Индивидуальный проект для мини-курса "Анализ и обработка веб-данных на Python".
июль 2021
YouTube не позволяет делать поиск по одному конкретному плейлисту, что зачастую является большим неудобством, потому что:
- приходится пользоваться встроенным в браузер поиском по всей странице, который из-за этого может искать не так, как нужно, и не имеет дополнительных настроек
- большие плейлисты не загружаются полностью и делают это медленно, что не позволяет искать по нему способом выше, и даже ручной просмотр всех видео занимает много времени и не является удобным
Сама я сталкивалась с данной проблемой, когда пыталась найти нужное видео в большом плейлисте или хотела просмотреть семинары только своей группы в плейлисте семинаров всех групп своего потока.
Был найден только один аналог - расширение для браузера Google Chrome с меньшим функционалом и работающий только с публичными плейлистами, да и не все используют именно этот браузер.
Данное web-приложение:
- позволяет делать поиск по плейлисту, зная его url или id по различным критериям:
- по названию / по названию и описанию
- дословный поиск / поиск слов в любом порядке
- по нику автора
- по двум языкам одновременно (на русском и английском), находя соответствие хотя бы в одном из вариантов перевода
- быстро выводит результаты поиска в формате таблицы, состоящей из:
- номера видео в оригинальном плейлисте
- ссылки на видео или изображения превью видео со ссылкой на него
- названия видео
- ника автора видео cо ссылкой на канал
- описания видео
-
Получаем API Key для YouTube Data API v3 с помощью подробного туториала по ссылке и сохраняем его в .txt файл.
-
Получаем API Key для Detect Language API, авторизируясь на странице по ссылке, и сохраняем его в .txt файл.
OAuth 2.0 используется для авторизации в google аккаунте, чтобы приложение могло искать по приватным плейлистам (доступ youtube аккаунта только для чтения), принадлежащим пользователю (за исключением плейлиста WL "watch later").
Приложение может полноценно работать с неприватными плейлистами без данной настройки.
- Переходим в OAuth consent screen из APIs & Services и настраиваем приложение:
- заполняем нужные данные
- в Scopes добавляем https://www.googleapis.com/auth/youtube.readonly (доступ youtube аккаунта только для чтения)
- в Test users добавляем пользователей, которые смогут пользоваться авторизацией в приложении
- Переходим в Credentials из APIs & Services и создаем Client ID:
- CREATE CREDENTIALS -> OAuth client ID
- Application type -> Web application
- заполняем нужные данные
- в Authorized redirect URIs добавляем URI http://localhost:5000/oauth_callback
- Переходим на страницу Client ID for Web application из Credentials и сохраняем данные в формате .json (DOWNLOAD JSON)
- Создание виртуального окружения:
conda create -n py38_webapp_env python=3.8
conda activate py38_webapp_env
- Установка нужных библиотек:
pip install -r requirements.txt
- Настройка файла /config.py:
- добавление собственных API ключей:
- yt_api_key_file_path - путь к .txt файлу, где лежит api-key для доступа к YouTube Data API v3
- dl_key_file_path - путь к .txt файлу, где лежит api-key для доступа к Detect Language API
- добавление информации для OAuth 2.0:
- client_secret - путь к .json файлу, где лежат данные для доступа к OAuth 2.0
Приложение может полноценно работать с неприватными плейлистами без client_secret.json. В таком случае можно оставить путь к нему пустым.
- Запуск приложения:
python main.py
Итого, приложение было запущено на http://localhost:5000/
- YouTube Data API v3 для работы с:
- PlaylistItems - получение подробной информации о каждом видео из плейлиста
- Playlists - проверка доступности плейлиста для просмотра
Бесплатное использование c ограничениями 10,000 запросов в день.
Доступ по api-key.
- Detect Language API - для определения языка текста.
Бесплатное использование c ограничениями 1000 слов в день.
Доступ по api-key.
- MyMemory API - для перевода текста.
Бесплатное анонимное использование c ограничением 1000 слов в день.
Доступ без api-key.
Python+pandas+Flask+OAuth+Bootstap