Приложение на основе командной строки/терминала, написанное на Go, для загрузки коротких видео и видео с использованием URL-адресов/идентификаторов YouTube.
Примечание . Если вы ищете готовый к использованию инструмент, проверьте закрепленные проблемы в этом репозитории.
Загрузка YouTube Shorts и видео.
Возможность выбора контента разного качества.
На данный момент проект имеет 2 зависимости:
tview — библиотека пользовательского интерфейса терминала с богатыми интерактивными виджетами, написанная на Golang.
FFmpeg — ведущая кроссплатформенная мультимедийная среда. Он должен быть установлен в системе или, по крайней мере, иметь последний статический двоичный файл в корневом каталоге проекта. Это скорее внешняя зависимость времени выполнения .
При вставке YouTube Shorts/идентификатора видео или URL-адреса приложение получает метаданные из внутренних API YouTube.
Затем, в зависимости от выбранного качества видео и аудио, приложение загружает контент Shorts/Video, отправляя запросы данных небольшого размера по URL-адресам полученного контента.
В конце концов, если FFmpeg существует, то отдельные файлы видео и аудио потоков объединяются в один выходной файл.
После установки Go введите команду ниже из корня проекта:
В Linux/UNIX,
go build -o go_youtube_downloader ./cmd/go_youtube_downloader.go
В Windows,
go build -o go_youtube_downloader.exe ./cmd/go_youtube_downloader.go
После установки Go клонируйте/загрузите этот проект и введите команду ниже из корня проекта:
go run ./cmd/go_youtube_downloader.go
В системах должен быть установлен FFmpeg или иметь последнюю версию статического двоичного файла в корневом каталоге проекта, чтобы объединить загруженные отдельные видео- и аудиопотоки в один файл.
Видео с возрастными ограничениями невозможно загрузить из-за фирменного шифрования YouTube.
У YouTube есть ограничения по пропускной способности для каждого входящего запроса: около 10 МБ на запрос. Если какой-либо запрос получает больше данных, чем этот предел размера, дальнейшие запросы будут ограничивать загрузку или соединение может быть прервано. Таким образом, чтобы повысить производительность при загрузке данных и записи их в выходной файл, для обеспечения единообразия они делятся на более мелкие фрагменты. В зависимости от выбранного качества и размера время загрузки будет больше или меньше.
Реверс-инжиниринг YouTube: новый взгляд — блог, объясняющий внутренние API YouTube.
YouTube-Internal-Clients — скрипт Python, который обнаруживает скрытые клиенты YouTube API. Просто исследовательский проект.
YT-DLP — форк youtube-dl с дополнительными функциями и исправлениями.
Youtubei — получайте данные Youtube, такие как видео, плейлисты, каналы, информацию о видео и комментарии, похожие видео, следующее видео и многое другое!
Эффективная загрузка файлов в Golang: подробное руководство
Пример загрузки файлов Golang
Команда НьюПайп
Расширенное выполнение команд в Go с помощью os/exec