GareevaAlice / yt-playlists-app

Поиск по плейлисту YouTube (Python+pandas+Flask+API+OAuth)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Индивидуальный проект для мини-курса "Анализ и обработка веб-данных на Python".

июль 2021


Поиск по плейлисту YouTube

О проекте

YouTube не позволяет делать поиск по одному конкретному плейлисту, что зачастую является большим неудобством, потому что:

  • приходится пользоваться встроенным в браузер поиском по всей странице, который из-за этого может искать не так, как нужно, и не имеет дополнительных настроек
  • большие плейлисты не загружаются полностью и делают это медленно, что не позволяет искать по нему способом выше, и даже ручной просмотр всех видео занимает много времени и не является удобным

Сама я сталкивалась с данной проблемой, когда пыталась найти нужное видео в большом плейлисте или хотела просмотреть семинары только своей группы в плейлисте семинаров всех групп своего потока.
Был найден только один аналог - расширение для браузера Google Chrome с меньшим функционалом и работающий только с публичными плейлистами, да и не все используют именно этот браузер.

Данное web-приложение:

  • позволяет делать поиск по плейлисту, зная его url или id по различным критериям:
    • по названию / по названию и описанию
    • дословный поиск / поиск слов в любом порядке
    • по нику автора
    • по двум языкам одновременно (на русском и английском), находя соответствие хотя бы в одном из вариантов перевода
  • быстро выводит результаты поиска в формате таблицы, состоящей из:
    • номера видео в оригинальном плейлисте
    • ссылки на видео или изображения превью видео со ссылкой на него
    • названия видео
    • ника автора видео cо ссылкой на канал
    • описания видео

Настройка

Настройка API:

  1. Получаем API Key для YouTube Data API v3 с помощью подробного туториала по ссылке и сохраняем его в .txt файл.

  2. Получаем API Key для Detect Language API, авторизируясь на странице по ссылке, и сохраняем его в .txt файл.

Дополнительная настройка OAuth 2.0 (необязательная):

OAuth 2.0 используется для авторизации в google аккаунте, чтобы приложение могло искать по приватным плейлистам (доступ youtube аккаунта только для чтения), принадлежащим пользователю (за исключением плейлиста WL "watch later").

Приложение может полноценно работать с неприватными плейлистами без данной настройки.

  1. Переходим в OAuth consent screen из APIs & Services и настраиваем приложение:
  • заполняем нужные данные
  • в Scopes добавляем https://www.googleapis.com/auth/youtube.readonly (доступ youtube аккаунта только для чтения)
  • в Test users добавляем пользователей, которые смогут пользоваться авторизацией в приложении
  1. Переходим в Credentials из APIs & Services и создаем Client ID:
  • CREATE CREDENTIALS -> OAuth client ID
  • Application type -> Web application
  • заполняем нужные данные
  • в Authorized redirect URIs добавляем URI http://localhost:5000/oauth_callback
  1. Переходим на страницу Client ID for Web application из Credentials и сохраняем данные в формате .json (DOWNLOAD JSON)

Запуск приложения

  1. Создание виртуального окружения:
conda create -n py38_webapp_env python=3.8
conda activate py38_webapp_env
  1. Установка нужных библиотек:
pip install -r requirements.txt
  1. Настройка файла /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. В таком случае можно оставить путь к нему пустым.

  1. Запуск приложения:
python main.py

Итого, приложение было запущено на http://localhost:5000/

Использованные API

  • YouTube Data API v3 для работы с:
    • PlaylistItems - получение подробной информации о каждом видео из плейлиста
    • Playlists - проверка доступности плейлиста для просмотра

Бесплатное использование c ограничениями 10,000 запросов в день.
Доступ по api-key.

Бесплатное использование c ограничениями 1000 слов в день.
Доступ по api-key.

Бесплатное анонимное использование c ограничением 1000 слов в день.
Доступ без api-key.

Другие технологии

Python+pandas+Flask+OAuth+Bootstap

About

Поиск по плейлисту YouTube (Python+pandas+Flask+API+OAuth)

License:MIT License


Languages

Language:Python 79.2%Language:HTML 20.8%