Нам нужен список видео по названию канала YouTube (используя API).
Api youtube как получить
Я знал, что мне потребуется YouTube API для получения информации о видео. Затем я создал бы процедуру, обрабатывающую эту информацию для ранжирования видео. В качестве последнего шага я планировал установить автоматическую рассылку списков самых лучших видео самому себе с помощью AWS Lambda.
Однако все закончилось не совсем так, как ожидалось. (Если вы хотите пропустить историю и сразу увидеть финальный код, вам сюда).
Путешествие по YouTube API
Я хотел найти метрики, которые можно было бы использовать для ранжирования видео в терминах их привлекательности для меня.
Я изучил документацию YouTube и узнал, что можно получить информацию на уровне видео (название, дата публикации, количество просмотров, уменьшенное изображение и т.д.) и на уровне канала (количество подписчиков, комментариев, просмотров, плейлисты канала и пр.)
Как получить рабочий ключ Google API Key Youtube бесплатно в 2022
Увидев все это, я получил уверенность, что смогу применить эту информацию для определения метрик и ранжирования видео.
Я получил код API через консоль разработчика и скопировал его в свой скрипт Python. Это позволяет инициализировать вызов API и получать результаты следующими строками кода:
Я предпринял кое-какие попытки устранить подобные крайние случаи:
- Установил минимальное количество просмотров в 5000.
- Установил максимальное значение соотношения количества просмотров к количеству подписчиков в 5.
Затем я пошел на YouTube и вручную поискал там видео, относящиеся к медицине и обучению медицине. Оказалось, что мой инструмент захватил все видео, которые мне было бы интересно посмотреть. Особенно мне понравилось второе видео, от доктора Кевина Джаббала.
Я протестировал с другим условием поиска, «productivity», и результаты снова меня порадовали.
Второе видео оказалось слегка неожиданным – оно совсем не из тех видео, которые я искал. Но я не смог придумать простого способа отфильтровать такие видео, выбранные по другим значениям слов, заданных для поиска.
Несколько месяцев назад OpenAI выложила действительно интересную новую нейронную сеть, называемую «GPT-3». Я решил протестировать мой поисковик видео, передав в качестве критерия поиска «GPT-3», и нашел вот это видео:
Как получить YouTube API key (v3)
С помощью кода Video Finder, который я написал, намного проще находить эти интересные видео, содержащие новые перспективы.
За последние несколько месяцев я перепробовал множество условий поиска видео, основанных на моих интересах – например, ‘artificial intelligence’, ‘medical AI’ и ‘Python programming’. Практически всегда в первой пятерке предложений Video Finder’а было хотя бы одно интересное видео.
Запускаем рабочий процесс
Я причесал весь свой код и выложил его на GitHub.
На высоком уровне, теперь мой код работал примерно так:
- Используем условия поиска, период поиска и ключ API для получения информации о видео с YouTube.
- Рассчитываем «метрику интересности» для видео.
- Используем «функцию ценности» для ранжирования этих видео по предполагаемой интересности.
- Сохраняем интересующую нас информацию в DataFrame.
- Печатаем информацию (включая ссылки) о 5 лучших видео в консоль.
Я хотел найти способ запускать этот скрипт автоматически, и решил использовать AWS Lambda (платформу без сервера). Lambda позволяет писать код, который не выполняется, пока не сработает триггер (например, раз в неделю, или при происхождении какого-либо события).
Идеальный рабочий процесс заключался в том, чтобы автоматически присылать самому себе список видео каждую неделю с помощью Lambda. При этом я мог бы выбирать видео, которые хотел бы посмотреть на следующей неделе, и мне больше никогда не приходилось бы заходить на главную страницу YouTube.
Однако этот план не сработал.
Это была моя первая попытка использовать Lambda, и как я ни старался, я не смог заставить все импортированные библиотеки работать одновременно. Чтобы выполняться, коду требовался почтовый клиент boto3, OAuth для вызова API, Pandas для хранения результатов, и множество модулей, от которых они зависят.
Обычно установка этих пакетов довольно проста, но на Lambda возникли дополнительные сложности. Во-первых, там есть лимиты на загрузку файлов, так что мне пришлось упаковать библиотеки, а потом распаковать их после загрузки. Во-вторых, AWS Lambda использует собственную версию Linux, которая затруднила использование правильных библиотек с кросс-платформной совместимостью. В-третьих, мой Mac вел себя странно с ее виртуальными окружениями.
Потратив около 10-15 часов на поиск советов на StackOverflow, загрузку и повторную загрузку различных codebase и совещания с несколькими друзьями, я так и не смог заставить все это заработать. Так что, в конце концов я решил сдаться (если у вас есть какие-нибудь хорошие идеи, сообщите мне!)
Вместо этого, я реализовал план Б: запускать скрипт вручную на своем локальном компьютере раз в неделю (после автоматического напоминания через email). Честно говоря, это не конец света.
Итоговые мысли
В целом, это был действительно забавный проект. Я научился использовать YouTube API, познакомился с AWS Lambda и создал инструмент, который могу использовать в дальнейшем.
Использование своего кода для принятия решений, какие видео смотреть, повысило мою продуктивность, по крайней мере, пока я способен отказываться от переходов по ссылкам вроде «смотри также». Возможно, я и пропущу какие-нибудь интересные видео, но я и не пытался «поймать» все видео, заслуживающие просмотра (и не думаю, что это вообще возможно). Вместо этого я хотел поднять планку качества тех видео, которые я действительно смотрю.
Этот проект – лишь одна из множества моих идей, относящихся к автоматизации обработки информации. Я верю, что в этой области есть огромный потенциал для повышения нашей продуктивности и высвобождения нашего времени посредством разумного цифрового минимализма.
Если вы хотите присоединиться к моему путешествию, вы можете добавиться в мой почтовый список и на мой канал YouTube.
Возможные дальнейшие шаги
В целом, проект еще достаточно сырой, и здесь многое можно сделать:
- Метрика для ранжирования видео довольно груба, и я мог бы ее улучшить. Естественным следующим шагом было бы встроить соотношение лайков и дизлайков.
- При задании условий поиска также много условностей. Если строка поиска не содержится в названии видео или его описании, видео не будет выбрано. Я мог бы исследовать способы обойти эту проблему.
- Я мог также создать интерфейс, позволяющий пользователю просто вводить условия поиска и период поиска. Это сделало бы инструмент более доступным, а также позволило бы пользователям смотреть видео, не заходя на youtube.com.
- В настоящее время код работает довольно медленно. Я не приложил особых усилий к его оптимизации и ускорению, учитывая, что я собирался запускать этот код всего раз в неделю. Но есть несколько очевидных мест, где можно было бы повысить эффективность.
Похожие проекты:
- Автоматизируем поиск работы с помощью Python.
- Создаем цифровое искусство с помощью AI.
YouTube API:
- Официальная документация.
- Пример кода API.
- Серия видео про использование YouTube API (Indian Pythonista).
- Другая серия видео про использование YouTube API (Corey Schafer).
Источник: proglib.io
Как получить миниатюру видео YouTube из API YouTube?
Если у меня есть URL-адрес видео YouTube, есть ли способ использовать PHP и cURL для получения соответствующего эскиза из API YouTube?
Создан 14 янв.
CodeOverload
Вот несколько функций PHP, которые я создал, чтобы получить лучший эскиз, доступный из метода URL без проверки связи с API, на основе множества хороших ответов на этой странице: gist.github.com/squarecandy/30ec9f6779c0e8cdf12e337c665d96c5 — squarecandy
30 ответы
Каждое видео YouTube имеет четыре сгенерированных изображения. Они предсказуемо отформатированы следующим образом:
https://img.youtube.com/vi//0.jpg https://img.youtube.com/vi//1.jpg https://img.youtube.com/vi//2.jpg https://img.youtube.com/vi//3.jpg
Первый в списке — это полноразмерное изображение, а остальные — миниатюрные изображения. Изображение эскиза по умолчанию (т. Е. Одно из 1.jpg , 2.jpg , 3.jpg ) является:
https://img.youtube.com/vi//default.jpg
Для высококачественной версии миниатюры используйте URL-адрес, подобный этому:
https://img.youtube.com/vi//hqdefault.jpg
Существует также версия миниатюры среднего качества с URL-адресом, аналогичным HQ:
https://img.youtube.com/vi//mqdefault.jpg
Для версии эскиза со стандартным определением используйте URL-адрес, подобный этому:
https://img.youtube.com/vi//sddefault.jpg
Для версии миниатюры с максимальным разрешением используйте URL-адрес, подобный этому:
https://img.youtube.com/vi//maxresdefault.jpg
Все вышеперечисленные URL-адреса также доступны через HTTP.
Кроме того, немного более короткое имя хоста i3.ytimg.com работает вместо img.youtube.com в приведенном выше примере URL. Кроме того, вы можете использовать API данных YouTube (версия 3) чтобы получить эскизы изображений.
Создан 10 июля ’19, 22:07
На всякий случай, если кто-то еще совершит эту глупую ошибку — вы не можете использовать http://www.img.youtube.com , только http://img.youtube.com — Киаран Филлипс
это где-то официально задокументировано? — Bjunix
Наличие эскизов с более высоким разрешением не гарантируется. — Салман А
Вы можете использовать API данных YouTube для получения эскизов видео, подписи, описания, рейтинга, статистики и т. д. API версии 3 требует ключа *. Получите ключ и создайте видео: список запрос:
https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEYid=VIDEO_ID
Пример кода PHP
$data = file_get_contents(«https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEYid=T0Jqdjbed40»); $json = json_decode($data); var_dump($json->items[0]->snippet->thumbnails);
Результат
object(stdClass)#5 (5) < [«default»]=>object(stdClass)#6 (3) < [«url»]=>string(46) «https://i.ytimg.com/vi/T0Jqdjbed40/default.jpg» [«width»]=> int(120) [«height»]=> int(90) > [«medium»]=> object(stdClass)#7 (3) < [«url»]=>string(48) «https://i.ytimg.com/vi/T0Jqdjbed40/mqdefault.jpg» [«width»]=> int(320) [«height»]=> int(180) > [«high»]=> object(stdClass)#8 (3) < [«url»]=>string(48) «https://i.ytimg.com/vi/T0Jqdjbed40/hqdefault.jpg» [«width»]=> int(480) [«height»]=> int(360) > [«standard»]=> object(stdClass)#9 (3) < [«url»]=>string(48) «https://i.ytimg.com/vi/T0Jqdjbed40/sddefault.jpg» [«width»]=> int(640) [«height»]=> int(480) > [«maxres»]=> object(stdClass)#10 (3) < [«url»]=>string(52) «https://i.ytimg.com/vi/T0Jqdjbed40/maxresdefault.jpg» [«width»]=> int(1280) [«height»]=> int(720) > >
* Мало того, что вам нужен ключ, вас могут попросить предоставить платежную информацию в зависимости от количества запросов API, которые вы планируете сделать. Однако несколько миллионов запросов в день бесплатны. Исходная статья.
Создан 07 ноя.
К вашему сведению: я не менял код, чтобы он соответствовал новой структуре JSON. Код в вашем getJSON неверен. Ты использовал jsonc вместо json для getJSON. Это не удается из-за неправильной структуры JSON. — Маурис
Только первый пример может использовать jsonc . Примеры jQuery и PHP ДОЛЖЕН использование json . И я обновил код, чтобы он соответствовал новой структуре JSON. Я использую код прямо сейчас, и он работает в прямом эфире. поэтому не говорите, что это не работает, не прочитав изменения. Спасибо! — Маурис
Примеры jQuery и PHP ДОЛЖНЫ использовать json.. можете ли вы дать ссылку? Кроме того, запрос конкретного номера версии API ( v=2 ) заботится об изменениях API. — Салман А
Вызов gdata не возвращает, доступен ли maxresdefault.jpg для видео, где он доступен, только mq / hq / sd. — Аарон
API v3 ОЧЕНЬ плохо документирован. Они дают вам образец кода, но в разделе «справочная информация» очень мало деталей. Некоторые вещи, которые должны быть относительно «очевидными», по-видимому, требуют крайних решений. — Cashcow
То, что сказал Асаф, верно. Однако не каждое видео YouTube содержит все девять эскизов. Кроме того, размеры изображений миниатюр зависят от видео (числа ниже основаны на одном). Гарантированно существуют некоторые эскизы:
Width | Height | URL ——|———|—- 120 | 90 | https://i.ytimg.com/vi//1.jpg 120 | 90 | https://i.ytimg.com/vi//2.jpg 120 | 90 | https://i.ytimg.com/vi//3.jpg 120 | 90 | https://i.ytimg.com/vi//default.jpg 320 | 180 | https://i.ytimg.com/vi//mq1.jpg 320 | 180 | https://i.ytimg.com/vi//mq2.jpg 320 | 180 | https://i.ytimg.com/vi//mq3.jpg 320 | 180 | https://i.ytimg.com/vi//mqdefault.jpg 480 | 360 | https://i.ytimg.com/vi//0.jpg 480 | 360 | https://i.ytimg.com/vi//hq1.jpg 480 | 360 | https://i.ytimg.com/vi//hq2.jpg 480 | 360 | https://i.ytimg.com/vi//hq3.jpg 480 | 360 | https://i.ytimg.com/vi//hqdefault.jpg
Кроме того, некоторые другие эскизы могут существовать, а могут и не существовать. Их присутствие, вероятно, зависит от качества видео.
Width | Height | URL ——|———|—- 640 | 480 | https://i.ytimg.com/vi//sd1.jpg 640 | 480 | https://i.ytimg.com/vi//sd2.jpg 640 | 480 | https://i.ytimg.com/vi//sd3.jpg 640 | 480 | https://i.ytimg.com/vi//sddefault.jpg 1280 | 720 | https://i.ytimg.com/vi//hq720.jpg 1920 | 1080 | https://i.ytimg.com/vi//maxresdefault.jpg
- Как получить информацию о видео YouTube с помощью PHP
- Получение сведений о видео YouTube с помощью JavaScript — JSON и API v2
Вы также можете использовать утилиту Генератор видеоинформации YouTube инструмент для получения всей информации о видео YouTube, отправив URL-адрес или идентификатор видео.
Создан 07 июля ’20, 20:07
Источник: stackovergo.com