VideoDownloader — это программа для загрузки видео, разработанная на основе библиотеки Python yt-dlp
.
yt-dlp — это многофункциональный загрузчик аудио/видео из командной строки, поддерживающий тысячи веб-сайтов. Этот проект является ответвлением youtube-dl, основанным на ныне несуществующем youtube-dlc.
yt-dlp в основном поддерживает все распространенные видео-сайты. Это программа командной строки с очень мощными функциями и множеством параметров. Этот проект разработан на основе библиотеки Python yt-dlp (yt_dlp). Он использует библиотеку tkinter для создания приложения с графическим интерфейсом для загрузки видео, что устраняет необходимость ввода длинных команд в командной строке и упрощает загрузку. .
По умолчанию используется среда Windows, я использую pycharm+Anaconda:
питон>=3.8
ffmpeg используется для автоматического объединения аудио и видео после загрузки. Обратите внимание, что это двоичный исполняемый файл ffmpeg, а не библиотека Python. Не забудьте добавить его в переменную среды, например: D:ffmpegbin
(1) Клонировать этот проект
git clone [email protected]:CQUPTLei/VideoDownloader.git
(2) Создайте новую виртуальную среду conda для проекта, пример:
conda create -n videodownload python=3.12
(3) Используйте pip для установки библиотеки yt_dlp:
conda активировать видеоскачать pip установить yt-dlp
В Linux возьмите в качестве примера Ubuntu24.04, используйте vim для редактирования виртуальной среды Python venv (вы также можете использовать conda):
(1) Клонируйте проект локально.
git clone [email protected]:CQUPTLei/VideoDownloader.git
(2) Установите венв Python
подходящая установка python3.12-venv
(3) Создайте виртуальную среду.
python3 -m загрузчик венв
(4) Активируйте виртуальную среду
загрузчик исходного кода/bin/активировать
(5) Установите связанные библиотеки.
pip установить yt-dlp sudo apt установить python3-tk pip install Prettytable# Для упаковки используйте pip install pyinstaller
(6) Предоставьте разрешения на исполняемый файл main.py.
sudo chmod 775 main.py
(7) Выполнение (обратите внимание на путь)
python3 main.py
Возможные изменения: Если вы используете файлы cookie для получения файлов cookie из браузера, вам может потребоваться изменить путь, а также может потребоваться изменить место хранения по умолчанию.
Окна:
Установите библиотеку pyinstaller:
pip установить pyinstaller
Пример команды упаковки, обратите внимание на каждый путь Следующий код выполняется в каталоге, где находится main.py:
pyinstaller -F --paths=D:anacondaenvsvideodownloadLibsite-packages --python=D:anacondaenvsvideodownloadpythonw.exe --noconsole --icon=icon1.ico --name=Загрузчик main.py
Убунту:
Простой пример:
pyinstaller -F --paths=/home/moon/VideoDownloader/downloader/lib/python3.12/site-packages --python=/home/moon/VideoDownloader/downloader/bin/python312 --noconsole --icon=icon1.ico --name=Downloader main.py
МакОС:
Добавить обработку и загрузку списков видео;
Выполняйте несколько задач загрузки одновременно;
Поддержка большего количества пользовательских параметров;
...
Специального справочного руководства по yt_dlp на pypi нет. Доступные параметры программы командной строки yt-dlp написаны как на github, так и на pypi, но вы можете прочитать конкретную реализацию yt_dlp: YoutubeDL.py
чтобы получить доступные параметры и их значения. .
Ниже приведены в основном параметры, поддерживаемые методом yt_dlp.YoutubeDL(download_opts)
.
Объекты YoutubeDL принимают множество параметров. Чтобы не перегружать конструктор объекта аргументами, вместо этого он получает словарь параметров. Эти параметры доступны через атрибут params для использования InfoExtractors. к нему добавляются, поэтому это «взаимная регистрация». Доступные параметры:имя пользователя: имя пользователя для целей аутентификации.пароль: пароль для целей аутентификации.видеопароль: пароль для доступа к видео.ap_mso: идентификатор оператора нескольких систем Adobe Pass.ap_username : имя пользователя учетной записи оператора нескольких систем.ap_password: пароль учетной записи оператора нескольких систем.usenetrc: вместо этого используйте netrc для аутентификации.netrc_location: расположение файла netrc по умолчанию ~/.netrc.netrc_cmd: используйте команду оболочки для получения учетных данныхverbose: Распечатать дополнительную информацию в stdout.quiet: Не печатать сообщения в stdout.no_warnings: Ничего не распечатывать для предупреждений.forceprint: Дикт с ключами, КОГДА сопоставлен со списком шаблонов для печати на стандартный вывод. Разрешенными ключами являются видео или любые другие. элементов в utils.POSTPROCESS_WHEN. Для совместимости также допускается один список. print_to_file: Дикт с ключами WHEN (то же, что и Forceprint), сопоставленный списку кортежей с (шаблоном, именем файла)forcejson: Принудительная печать info_dict как JSON.dump_single_json: Принудительно распечатать info_dict всего списка воспроизведения (или видео) в виде одной строки JSON.force_write_download_archive: принудительная запись архива загрузки независимо от «skip_download» или «simulate». Simulate: не загружать видеофайлы, если не установлено (или нет). моделировать только в том случае, если используются listsubtitles, listformats или list_thumbnailsformat: код формата видео см. в разделе «ВЫБОР ФОРМАТА». Вы также можете передать функцию. Функция принимает «ctx» в качестве аргумента и возвращает форматы для загрузки. для реализацииallow_unplayable_formats: разрешить извлечение и загрузку невоспроизводимых форматов.ignore_no_formats_error: игнорировать ошибку «Нет видеоформатов». Полезно для извлечения метаданных, даже если видео фактически недоступно для загрузки (экспериментально).format_sort: список полей для сортировки. форматы видео. Подробнее см. «Сортировка форматов».format_sort_force: Принудительно использовать заданный формат_sort. Дополнительные сведения см. в разделе «Сортировка форматов».prefer_free_formats: следует ли отдавать предпочтение видеоформатам с бесплатными контейнерами несвободным того же качества.allow_multiple_video_streams: Разрешить объединение нескольких видеопотоков в один файл.allow_multiple_audio_streams: Разрешить объединение нескольких аудиопотоков в один файл. «выбранные» (проверьте выбранные форматы) или «Нет» (проверьте только по запросу экстрактора). Пути: словарь выходных путей: «home», «temp» и ключи OUTTMPL_TYPES (в utils/_utils.py)outtmpl. : словарь шаблонов для выходных имен. Разрешены ключи «по умолчанию» и ключи OUTTMPL_TYPES (в utils/_utils.py). Для совместимости с youtube-dl также можно использовать одну строку outtmpl_na_placeholder: заполнитель для недоступных метаполей.restrictfilenames. : Не допускать «&» и пробелов в имени файла.strim_file_name: Ограничить длину имени файла (исключая расширение)windowsfilenames: Обеспечьте совместимость имен файлов с Windows.ignoreerrors: Не останавливаться при ошибках загрузки/постобработки. Может быть «only_download», чтобы игнорировать только ошибки загрузки. По умолчанию для CLI установлено значение «only_download», а для APIskip_playlist_after_errors — значение «false»: количество разрешенных сбоев до тех пор, пока не будет пропущена остальная часть списка воспроизведения. невидеофайлы, если нет, и не перезаписывать файлы, если Falseplaylist_items: конкретные индексы списка воспроизведения для загрузки.playlistandom: загрузка элементов списка воспроизведения в случайном порядке.lazy_playlist: обработка записей списка воспроизведения по мере их получения.matchtitle: загрузка только соответствующих заголовков.rejecttitle : отклонять загрузки для соответствующих заголовков.logger: регистрировать сообщения в журнале.Logger экземпляр.logtostderr: печатать все в stderr вместо stdout.consoletitle: отображать прогресс в заголовке окна консоли.writedescription: записывать описание видео в файл .description.writeinfojson: писать описание видео в файл .info.jsonclean_infojson: удалить внутренние метаданные из файла infojsongetcomments: извлечь комментарии к видео. Они не будут записаны на диск, если не задано также writeinfojson.writeannotations: записать аннотации к видео в файл .annotations.xmlwritethumbnail: записать миниатюру. изображение в файлallow_playlist_files: следует ли записывать описание плейлистов, информацию и т. д. также на диск при использовании параметров записи* write_all_thumbnails: записывать все форматы миниатюр в файлыwritelink: записывать файл ярлыка в Интернете, в зависимости от текущей платформы (.url/. webloc /.desktop)writeurllink: запись файла интернет-ярлыка Windows (.url)writewebloclink: запись файла интернет-ярлыка macOS (.webloc)writedesktoplink: запись файла интернет-ярлыка Linux (.desktop)writesubtitles: запись видеосубтитров в файлwriteautomaticsub : запись автоматически сгенерированных субтитров в список файлов. Субтитры: список всех доступных субтитров для видео. Формат субтитров: код формата субтитров. Язык субтитров: список языков субтитров для загрузки (может быть регулярным выражением). Список может содержать «все» для ссылки. все доступные субтитры могут иметь префикс «-», чтобы исключить его из запрошенных языков, например ['all', '-live_chat']keepvideo: сохранить видеофайл после постобработки. Daterange: объект utils.DateRange. , загружайте только в том случае, если upload_date находится в диапазоне.skip_download: пропустить фактическую загрузку видео filecachedir: расположение файлов кэша в файловой системе. Установите значение False для отключения кэша файловой системы.noplaylist: загрузите отдельное видео вместо списка воспроизведения, если есть сомнения. age_limit: целое число, обозначающее возраст пользователя в годах. Видео, не подходящие для данного возраста, пропускаются.min_views: целое число, обозначающее минимальное количество просмотров