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: Дикт с ключами WHEN, сопоставленными со списком шаблонов для печати на стандартный вывод. Разрешенными ключами являются видео или любые элементы в 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: не загружать видеофайлы, если не установлено (. или Нет), моделировать только в том случае, если используются listsubtitles, listformats или list_thumbnails. Формат: код формата видео см. в разделе «ФОРМАТ». SELECTION» для получения более подробной информации. Вы также можете передать функцию. Функция принимает «ctx» в качестве аргумента и возвращает форматы для загрузки. См. «build_format_selector» для реализации.allow_unplayable_formats: разрешить извлечение и загрузку невоспроизводимых форматов.ignore_no_formats_error: игнорировать «Нет» видеоформаты». Полезно для извлечения метаданных, даже если видео фактически недоступно для загрузки (экспериментальное)format_sort: A список полей, по которым можно сортировать форматы видео. Подробности см. в разделе «Сортировка форматов».format_sort_force: Принудительно использовать указанный формат_сортировки. Дополнительные сведения см. в разделе «Сортировка форматов».prefer_free_formats: следует ли отдавать предпочтение видеоформатам со свободными контейнерами над несвободными. одинаковые по качеству.allow_multiple_video_streams: разрешить объединение нескольких видеопотоков в один файлallow_multiple_audio_streams: разрешить объединение нескольких аудиопотоков в один один файлcheck_formats Проверять, доступны ли форматы для загрузки. Может быть True (отметьте все), False (отметьте ни одного), «выбранные» (проверьте выбранные форматы) или «Нет» (проверьте только по запросу экстрактора). Пути: словарь выходных путей: «home», «temp» и ключи OUTTMPL_TYPES (в utils/_utils.py)outtmpl. : Словарь шаблонов для выходных имен. Разрешены ключи «по умолчанию» и ключи OUTTMPL_TYPES (в utils/_utils.py). с youtube-dl также можно использовать одну строку.outtmpl_na_placeholder: заполнитель для недоступных метаполей.restrictfilenames: не допускать «&» и пробелов в имени файла.strim_file_name: ограничить длину имени файла (исключая расширение)windowsfilenames: заставить имена файлов быть совместимыми с Windows, игнорировать ошибки. : Не останавливаться при ошибках загрузки/постобработки. Можно использовать «only_download», чтобы игнорировать только ошибки загрузки. 'only_download' для CLI, но False для APIskip_playlist_after_errors: количество разрешенных сбоев до тех пор, пока остальная часть списка воспроизведения не будет пропущена.allowed_extractors: список регулярных выражений для сопоставления с именами экстракторов, которые разрешены. Перезапись: перезаписать все файлы видео и метаданных, если значение True, перезаписать только файлы, не относящиеся к видео. файлы, если нет, и не перезаписывать файлы, если Falseplaylist_items: конкретные индексы списка воспроизведения для загрузки.playliстрандом: загрузка элементы списка воспроизведения в случайном порядке.lazy_playlist: обрабатывать записи списка воспроизведения по мере их получения.matchtitle: загружать только совпадающие заголовки.rejecttitle: отклонять загрузки для совпадающих заголовков.logger: регистрировать сообщения в журнале.Logger экземпляр.logtostderr: печатать все в stderr вместо stdout.consoletitle: отображение прогресса в заголовке окна консоли.writedescription: запись описания видео в файл .description.writeinfojson: запись описания видео в файл .info.json fileclean_infojson: удалить внутренние метаданные из файла infojsongetcomments: извлечь комментарии к видео. Они не будут записаны на диск, если не задано также writeinfojson. writeannotations: записать аннотации к видео в файл .annotations.xmlwritethumbnail: записать миниатюру изображения в файл fileallow_playlist_files: Записывать ли описание плейлистов, информацию и т. д. на диск при использовании команды «запись*» optionswrite_all_thumbnails: записать все форматы миниатюр в файлыwritelink: записать файл интернет-ярлыка в зависимости от текущей платформы (.url/.webloc/.desktop)writeurllink: записать файл интернет-ярлыка Windows (.url)writewebloclink: записать интернет-ярлык macOS (.webloc)writedesktoplink: запись интернет-ярлыка Linux (.desktop)writesubtitles: запись видеосубтитров в файл writeautomaticsub: Запишите автоматически сгенерированные субтитры в список файлов. Субтитры: список всех доступных субтитров для видео. Формат субтитров: код формата субтитров. Язык субтитров: список языков субтитров для загрузки (может быть регулярным выражением). Список может содержать слово «all» для обозначения всех. доступные субтитры могут иметь префикс «-», чтобы исключить его из запрошенных языков, например ['all', '-live_chat']keepvideo: Сохранять видеофайл после постобработки.Диапазон дат: объект utils.DateRange, загружайте только в том случае, если upload_date находится в указанном диапазоне.skip_download: пропустить фактическую загрузку видеофайла.Cachedir: Расположение файлов кэша в файловой системе. Значение False для отключения кэша файловой системы. .noplaylist: в случае сомнений загрузите отдельное видео вместо списка воспроизведения.age_limit: целое число, обозначающее возраст пользователя в годах. Неподходящие видео для данного возраста. Skiped.min_views: целое число, представляющее минимальное количество просмотров</span.