1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/jingyuexing-youtobe-dl

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Установка

Чтобы сразу установить его для всех пользователей UNIX (Linux, OS X и т. д.), введите:

sudo curl -L https://yt-dl.org/latest/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl

Если у вас нет curl, вы можете использовать вместо него свежий wget:

sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl

Пользователи Windows могут скачать файл .exe и поместить его в любое место на своём PATH, кроме %SYSTEMROOT%\System32 (например, не помещайте в C:\Windows\System32).

Вы также можете использовать pip:

sudo pip install --upgrade youtube-dl

Эта команда обновит youtube-dl, если он у вас уже установлен. Дополнительную информацию см. на странице pypi.

Пользователи OS X могут установить youtube-dl с помощью Homebrew:

brew install youtube-dl

Или с помощью MacPorts:

sudo port install youtube-dl

Также можно обратиться к инструкциям для разработчиков, чтобы проверить и поработать с репозиторием git. Дополнительные параметры, включая PGP-подписи, см. на странице загрузки youtube-dl.

Описание

youtube-dl — это небольшая программа командной строки для скачивания видео с YouTube.com и нескольких других сайтов. Для работы ей требуется интерпретатор Python версии 2.6, 2.7 или 3.2+, и она не зависит от платформы. Она должна работать на вашем компьютере Unix, Windows или Mac OS X. Программа выпущена в общественное достояние, что означает, что вы можете изменять её, распространять или использовать по своему усмотрению.

youtube-dl [OPTIONS] URL [URL...]

Параметры

-h, --help                       Вывести этот текст справки и выйти
--version                        Вывести версию программы и выйти
-U, --update                     Обновить эту программу до последней версии. Убедитесь, что у вас есть достаточные разрешения (запустите с sudo, если необходимо)
-i, --ignore-errors              Продолжить загрузку при ошибках, например, чтобы пропустить недоступные видео в плейлисте
--abort-on-error                 Прервать загрузку дальнейших видео (в плейлисте или в командной строке), если произошла ошибка
--dump-user-agent                Отобразить текущий идентификатор браузера
--list-extractors                Перечислить все поддерживаемые экстракторы
--extractor-descriptions         Вывести описания всех поддерживаемых экстракторов
--force-generic-extractor        Принудительно использовать универсальный экстрактор
--default-search PREFIX          Использовать этот префикс для неквалифицированных URL. Например, «gvsearch2:» загружает два видео из Google Videos для youtube-dl «large apple». Используйте значение «auto» для того, чтобы youtube-dl угадал («auto_warning» выдаст предупреждение при угадывании). «error» просто выдаст ошибку. Значение по умолчанию «fixup_error» исправляет неработающие URL, но выдаёт ошибку, если это невозможно, вместо поиска.
--ignore-config **Укажите любой ключ (см. справку для -o, чтобы узнать о доступных ключах), чтобы сопоставить его, если он присутствует, !key, чтобы проверить, отсутствует ли ключ, key > NUMBER (например, «comment_count > 12», также работает с >=, <, <=, !=, =) для сравнения с числом и & для одновременного сопоставления нескольких ключей.** Значения, которые неизвестны, исключаются, если вы не поставите знак вопроса (?) после оператора. Например, чтобы сопоставлять только видео, которым поставили лайк более 100 раз и дизлайк менее 50 раз (или функция дизлайка недоступна в данном сервисе), но у которых также есть описание, используйте --match-filter "like_count > 100 & dislike_count <? 50 & description".

Параметры загрузки: -r, --limit-rate RATE — максимальная скорость загрузки в байтах в секунду (например, 50K или 4.2M). -R, --retries RETRIES — количество попыток (по умолчанию 10) или «infinite». --fragment-retries RETRIES — количество повторных попыток для фрагмента (по умолчанию 10), или «infinite» (только для DASH). --buffer-size SIZE — размер буфера загрузки (например, 1024 или 16K) (по умолчанию 1024). --no-resize-buffer — не изменять автоматически размер буфера. По умолчанию размер буфера автоматически изменяется с начального значения SIZE. --playlist-reverse — загружать видео из плейлиста в обратном порядке. --xattr-set-filesize — установить атрибут файла ytdl.filesize с ожидаемым размером файла (экспериментально). --hls-prefer-native — использовать собственный загрузчик HLS вместо ffmpeg. --hls-prefer-ffmpeg — использовать ffmpeg вместо собственного загрузчика HLS. --hls-use-mpegts — использовать контейнер mpegts для видео HLS, позволяя воспроизводить видео во время загрузки (некоторые проигрыватели могут не поддерживать его). --external-downloader COMMAND — использовать указанный внешний загрузчик. В настоящее время поддерживает aria2c, avconv, axel, curl, ffmpeg, httpie, wget. --external-downloader-args ARGS — передать эти аргументы внешнему загрузчику.

Опции файловой системы: -a, --batch-file FILE — файл, содержащий URL-адреса для загрузки («-» для стандартного ввода). --id — использовать только идентификатор видео в имени файла. --output ШАБЛОН ИМЯ ФАЙЛА
Имя файла шаблона. Используйте %(title)s для получения заголовка, %(uploader)s для имени загрузчика, %(uploader_id)s для псевдонима загрузчика, если он отличается, %(autonumber)s для автоматического увеличения числа, %(ext)s для расширения имени файла, %(format)s для описания формата (например, «22 - 1280x720» или «HD»), %(format_id)s для уникального идентификатора формата (например, теги YouTube: «137»), %(upload_date)s для даты загрузки (ГГГГММДД), %(extractor)s для провайдера (youtube, metacafe и т. д.), %(id)s для идентификатора видео, %(playlist_title)s, %(playlist_id)s или %(playlist)s (=название, если присутствует, ID в противном случае) для плейлиста, в который входит видео, %(playlist_index)s для позиции в плейлисте. %(height)s и %(width)s для ширины и высоты видеоформата. %(resolution)s для текстового описания разрешения видеоформата. %% для буквального процента. Используйте -, чтобы вывести данные на стандартный вывод. Также можно использовать для загрузки в другой каталог, например с -o '/my/downloads/%(uploader)s /%(title)s-%(id)s.%(ext)s' .

--autonumber-size ЧИСЛО
Укажите количество цифр в %(autonumber)s при его наличии в шаблоне имени выходного файла или указана опция --auto-number.

--restrict-filenames
Ограничьте имена файлов только символами ASCII и избегайте & и пробелов в именах файлов.

-A, --auto-number [устарело; используйте -o "%(autonumber)s-%(title)s.%(ext)s"]
Нумеруйте загруженные файлы, начиная с 00000.

-t, --title [устарело]
Используйте заголовок в имени файла (по умолчанию).

-l, --literal [устарело]
Псевдоним опции --title.

-w, --no-overwrites
Не перезаписывайте файлы.

-c, --continue
Принудительно возобновите частичную загрузку файлов. По умолчанию youtube-dl возобновит загрузку, если это возможно.

--no-continue
Не возобновляйте частичную загрузку файлов (перезапустите с начала).

--no-part
Не используйте файлы .part — записывайте непосредственно в выходной файл.

--no-mtime
Не используйте заголовок Last-modified для установки времени модификации файла.

--write-description
Запишите описание видео в файл .description.

--write-info-json
Запишите метаданные видео в файл .info.json.

--write-annotations
Запишите аннотации видео в файл .annotations.xml.

--load-info FILE
Файл JSON, содержащий информацию о видео (создан с помощью опции "--write-info-json").

--cookies FILE Укажите пользовательский реферер, используйте, если доступ к видео ограничен одним доменом

--add-header FIELD:VALUE — укажите собственный заголовок HTTP и его значение, разделённые двоеточием. Эту опцию можно использовать несколько раз.

—bidi-workaround — обход терминалов, которые не поддерживают двунаправленный текст. Требуется наличие исполняемых файлов bidiv или fribidi в PATH.

—sleep-interval SECONDS — количество секунд для ожидания перед каждой загрузкой.

Опции формата видео:

-f, --format FORMAT — код формата видео, см. «Выбор формата» для получения дополнительной информации.

—all-formats — загрузка всех доступных форматов видео.

—prefer-free-formats — предпочтение бесплатных форматов видео, если не запрошен конкретный формат.

-F, --list-formats — список всех доступных форматов запрашиваемых видео.

—youtube-skip-dash-manifest — не загружать манифесты DASH и связанные данные на видео YouTube.

—merge-output-format FORMAT — если требуется объединение (например, bestvideo+bestaudio), вывод в указанный формат контейнера. Один из mkv, mp4, ogg, webm, flv. Игнорируется, если объединение не требуется.

Параметры субтитров:

—write-sub — запись файла субтитров.

—write-auto-sub — автоматическая генерация файла субтитров (только для YouTube).

—all-subs — загрузка всех доступных субтитров видео.

—list-subs — список всех доступных субтитров для видео.

—sub-format FORMAT — формат субтитров, принимает форматы предпочтений, например: «srt» или «ass/srt/best».

—sub-lang LANGS — языки субтитров для загрузки (необязательно), разделяются запятыми, используйте —list-subs для доступных языковых тегов.

Варианты аутентификации:

-u, —username USERNAME — вход с этим идентификатором учётной записи.

-p, —password PASSWORD — пароль учётной записи. Если эта опция не указана, youtube-dl запросит интерактивно.

-2, —twofactor TWOFACTOR — двухфакторный код аутентификации.

-n, —netrc — использование данных аутентификации .netrc.

—video-password PASSWORD — видеопароль (vimeo, smotri, youku).

Параметры постобработки:

-x, —extract-audio — преобразование видеофайлов в аудиофайлы (требуется ffmpeg или avconv и ffprobe или avprobe).

—audio-format FORMAT — указать формат аудио: «best», «aac», «vorbis», «mp3», «m4a», «opus» или «wav»; по умолчанию используется «best».

—audio-quality QUALITY — указать качество аудио ffmpeg/avconv, вставить значение от 0 (лучше) до 9 (хуже) для VBR или конкретный битрейт, такой как 128K (по умолчанию 5).

—recode-video FORMAT — кодирование видео в другой формат, если это необходимо (в настоящее время поддерживается: mp4|flv|ogg|webm|mkv|avi).

—postprocessor-args ARGS — предоставить эти аргументы постпроцессору.

-k, —keep-video — сохранить видеофайл на диске после постобработки; видео по умолчанию стирается.

—no-post-overwrites. Не перезаписывайте обработанные файлы; по умолчанию обработанные файлы перезаписываются

--embed-subs Встраивать субтитры в видео (только для видеофайлов mp4, webm и mkv)

--embed-thumbnail Встраивать миниатюру аудио в качестве обложки

--add-metadata Записывать метаданные в файл видео

--metadata-from-title FORMAT Анализировать дополнительные метаданные, такие как название песни / исполнитель из названия видео. Синтаксис формата такой же, как у --output, проанализированные параметры заменяют существующие значения. Дополнительные шаблоны: %(album)s, %(artist)s. Пример: --metadata-from-title "%(artist)s - %(title)s" соответствует названию типа "Coldplay - Paradise"

--xattrs Записывать метаданные в xattrs файла видео (используя стандарты dublin core и xdg)

--fixup POLICY Автоматически исправлять известные неисправности файла. Один из вариантов: никогда (ничего не делать), предупредить (выдать только предупреждение), detect_or_warn (по умолчанию; исправить файл, если возможно, предупредить в противном случае)

--prefer-avconv Предпочитать avconv вместо ffmpeg для запуска постпроцессоров (по умолчанию)

--prefer-ffmpeg Предпочитать ffmpeg вместо avconv для запуска постпроцессоров

--ffmpeg-location PATH Расположение двоичного файла ffmpeg/avconv; либо путь к двоичному файлу, либо содержащий его каталог.

--exec CMD Выполнить команду над файлом после загрузки, аналогично синтаксису find -exec. Пример: --exec 'adb push {} /sdcard/Music/ && rm {}'

--convert-subs FORMAT Преобразовать субтитры в другой формат (в настоящее время поддерживается: srt|ass|vtt)

КОНФИГУРАЦИЯ

Вы можете настроить youtube-dl, поместив любой поддерживаемый параметр командной строки в файл конфигурации. В Linux и OS X общесистемный файл конфигурации находится в /etc/youtube-dl.conf, а пользовательский файл конфигурации — в ~/.config/youtube-dl/config. В Windows пользовательские файлы конфигурации находятся в %APPDATA%\youtube-dl\config.txt или C:\Users\<имя пользователя>\youtube-dl.conf.

Например, с помощью следующего файла конфигурации youtube-dl всегда будет извлекать аудио, не копировать mtime, использовать прокси и сохранять все видео в каталоге Movies в вашем домашнем каталоге:

-x
--no-mtime
--proxy 127.0.0.1:3128
-o ~/Movies/%(title)s.%(ext)s

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

Вы можете использовать --ignore-config, если хотите отключить файл конфигурации для конкретного запуска youtube-dl.

Аутентификация с файлом .netrc

Возможно, вы также захотите настроить автоматическое хранение учётных данных для экстракторов, поддерживающих аутентификацию (путём предоставления логина и пароля с --username и --password), чтобы не передавать учётные данные в качестве аргументов командной строки при каждом запуске youtube-dl и предотвратить отслеживание паролей в виде простого текста в истории команд оболочки. Вы можете сделать это с помощью файла .netrc для каждого экстрактора. Для этого вам нужно создать файл .netrc в своём $HOME и ограничить права доступа на чтение/запись только вами: Сенсорные команды:

  • touch $HOME/.netrc;
  • chmod a-rwx,u+rw $HOME/.netrc.

После этого вы можете добавить учётные данные для экстрактора в следующем формате, где экстрактор — это имя экстрактора, написанное строчными буквами:

machine <экстрактор> login <логин> password <пароль>

Например:

machine youtube login myaccount@gmail.com password my_youtube_password
machine twitch login my_twitch_account_name password my_twitch_password

Чтобы активировать аутентификацию с помощью файла .netrc, необходимо передать --netrc в youtube-dl или поместить его в конфигурационный файл.

На Windows вам также может потребоваться вручную настроить переменную среды %HOME%.

Шаблон вывода

Опция -o позволяет пользователям указывать шаблон для имён выходных файлов.

tl;dr: перейдите к примерам.

Основное использование — не устанавливать никаких аргументов шаблона при загрузке одного файла, например, как в youtube-dl -o funny_video.flv "http://some/video". Однако он может содержать специальные последовательности, которые будут заменены при загрузке каждого видео. Специальные последовательности имеют формат %(NAME)s. Чтобы уточнить, это символ процента, за которым следует имя в скобках, а затем строчная буква S. Разрешённые имена:

  1. id: Идентификатор видео.
  2. title: Название видео.
  3. url: URL видео.
  4. ext: Расширение имени файла видео.
  5. alt_title: Дополнительное название видео.
  6. display_id: Альтернативный идентификатор видео.
  7. uploader: Полное имя загрузчика видео.
  8. license: Название лицензии, под которой видео лицензировано.
  9. creator: Создатель видео.
  10. release_date: Дата (ГГГГММДД), когда видео было выпущено.
  11. timestamp: Временная метка UNIX момента, когда видео стало доступным.
  12. upload_date: Дата загрузки видео (ГГГГММДД).
  13. uploader_id: Никнейм или идентификатор загрузчика видео.
  14. location: Физическое место, где было снято видео.
  15. duration: Продолжительность видео в секундах.
  16. view_count: Сколько пользователей посмотрели видео на платформе.
  17. like_count: Количество положительных оценок видео.
  18. dislike_count: Количество отрицательных оценок видео.
  19. repost_count: Количество репостов видео.
  20. average_rating: Средняя оценка, данная пользователями, шкала зависит от веб-страницы.
  21. comment_count: Количество комментариев к видео.
  22. age_limit: Возрастное ограничение для видео (лет).
  23. format: Человекочитаемое описание формата.
  24. format_id: Код формата, указанный с помощью --format.
  25. format_note: Дополнительная информация о формате.
  26. width: Ширина видео.
  27. height: Высота видео.
  28. resolution: Текстовое описание ширины и высоты.
  29. tbr: Средний битрейт аудио и видео в килобитах в секунду.
  30. abr: Средний аудиобитрейт в килобитах в секунду.
  31. acodec: Имя используемого аудиокодека.
  32. asr: Аудиочастота дискретизации в герцах.
  33. vbr: Средний видеобитрейт в килобитах в секунду.
  34. fps: Частота кадров.
  35. vcodec: Имя видеокодека в использовании.
  36. container: Имя формата контейнера.
  37. filesize: Число байтов, если известно заранее.
  38. filesize_approx: Оценка числа байтов.
  39. protocol: Протокол, который будет использоваться для фактической загрузки.
  40. extractor: Имя экстрактора.
  41. extractor_key: Ключевое имя экстрактора.
  42. epoch: Эпоха Unix при создании файла.
  43. autonumber: Пятизначное число, которое будет увеличиваться с каждой загрузкой, начиная с нуля.
  44. playlist: Название или идентификатор плейлиста, содержащего видео.
  45. playlist_index: Индекс видео в плейлисте, дополненный ведущими нулями в соответствии с общей длиной плейлиста.

Доступно для видео, принадлежащего некоторой логической главе или разделу:

  • chapter: Название или заголовок главы, к которой принадлежит видео.
  • chapter_number: Номер главы, к которой относится видео.
  • chapter_id: Идентификатор главы, к которой относится видео.

Доступно для видео, являющегося эпизодом какой-либо серии или программы:

  • series: Название серии или программы, к которой принадлежит эпизод видео.
  • season: Название сезона, к которому принадлежит эпизод видео.
  • season_number: Номер сезона, к которому относится эпизод видео. Принадлежит к:
    season_id: идентификатор сезона, к которому принадлежит видеоэпизод.
    episode: название видеоэпизода.
    episode_number: номер видеоэпизода в сезоне.
    episode_id: идентификатор видеоэпизода.

Для медиа, которое является треком или частью музыкального альбома:
track: название трека.
track_number: номер трека в альбоме или на диске.
track_id: идентификатор трека.
artist: исполнитель(и) трека.
genre: жанр(ы) трека.
album: название альбома, к которому относится трек.
album_type: тип альбома.
album_artist: список всех исполнителей, представленных на альбоме.
disc_number: номер диска или другого физического носителя, на котором находится трек.
release_year: год (ГГГГ), когда альбом был выпущен.

Каждая из вышеупомянутых последовательностей при обращении к выходному шаблону будет заменена фактическим значением, соответствующим имени последовательности. Обратите внимание, что некоторые последовательности не гарантированы, поскольку они зависят от метаданных, полученных конкретным экстрактором, такие последовательности будут заменены на «NA».

Например, для -o %(title)s-%(id)s.%(ext)s и видео в формате mp4 с названием «youtube-dl test video» и идентификатором «BaW_jenozKcj» это приведёт к созданию файла «youtube-dl test video-BaW_jenozKcj.mp4» в текущем каталоге.

Выходной шаблон также может содержать произвольный иерархический путь, например -o '%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s', который приведёт к загрузке каждого видео в каталог, соответствующий этому шаблону пути. Любой отсутствующий каталог будет автоматически создан для вас.

Чтобы указать процентный литерал в выходном шаблоне, используйте %%. Чтобы вывести данные на стандартный вывод, используйте -o -.

Текущий шаблон по умолчанию — %(title)s-%(id)s.%(ext)s.

В некоторых случаях вам могут не понадобиться специальные символы, такие как 中, пробелы или &, например, при передаче имени загруженного файла в систему Windows или имени файла через 8-битный небезопасный канал. В этих случаях добавьте флаг --restrict-filenames, чтобы получить более короткое название:

Примеры выходных шаблонов

Обратите внимание, что в Windows вам может потребоваться использовать двойные кавычки вместо одинарных.

$ youtube-dl --get-filename -o '%(title)s.%(ext)s' BaW_jenozKc
youtube-dl test video ''_ä↭𝕐.mp4    # Все виды странных символов

$ youtube-dl --get-filename -o '%(title)s.%(ext)s' BaW_jenozKc --restrict-filenames
youtube-dl_test_video_.mp4          # Простое имя файла

# Скачать видео с YouTube в отдельный каталог, проиндексированный по порядку видео в плейлисте
$ youtube-dl -o '%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s' https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re

# Загрузить все плейлисты канала/пользователя YouTube, сохраняя каждый плейлист в отдельном каталоге:
$ youtube-dl -o '%(uploader)s/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s' https://www.youtube.com/user/TheLinuxFoundation/playlists

# Скачать курс Udemy, сохранив каждую главу в отдельном каталоге в папке MyVideos вашего домашнего каталога
$ youtube-dl -u user -p password -o '~/MyVideos/%(playlist)s/%(chapter_number)s - %(chapter)s/%(title)s.%(ext)s' https://www.udemy.com/java-tutorial/

# Скачать весь сезон сериала, сохраняя каждую серию и каждый сезон в отдельном каталоге под C:/MyVideos
$ youtube-dl -o "C:/MyVideos/%(series)s/%(season_number)s - %(season)s/%(episode_number)s - %(episode)s.%(ext)s" http://videomore.ru/kino_v_detalayah/5_sezon/367617

# Транслировать загружаемое видео на стандартный вывод
$ youtube-dl -o - BaW_jenozKc

ВЫБОР ФОРМАТА

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

Но иногда вы можете захотеть скачать в другом формате, например, когда у вас медленное или прерывистое соединение. Ключевым механизмом для этого является так называемый выбор формата, на основе которого вы можете явно указать желаемый формат, выбрать форматы на основе некоторого критерия или критериев, установить приоритет и многое другое.

Общий синтаксис для выбора формата: --format. Формат запроса или короче -f FORMAT, где FORMAT — это селекторное выражение, то есть выражение, описывающее формат или форматы, которые вы хотели бы загрузить.

Вкратце: перейдите к примерам.

Самый простой случай — запросить конкретный формат, например, с помощью -f 22 можно скачать формат с кодом формата, равным 22. Вы можете получить список доступных кодов форматов для конкретного видео с помощью --list-formats или -F. Обратите внимание, что эти коды форматов зависят от экстрактора.

Вы также можете использовать расширение файла (в настоящее время поддерживаются 3gp, aac, flv, m4a, mp3, mp4, ogg, wav, webm), чтобы загрузить наилучший доступный формат определённого расширения файла в виде одного файла, например -f webm скачает наилучший формат с расширением webm в виде одного файла.

Также можно использовать специальные имена для выбора особого формата:

  • best: выбрать наилучший по качеству формат, представленный одним файлом с видео и аудио;
  • worst: выбрать наихудший по качеству формат, представленный одним файлом с видео и аудио;
  • bestvideo: выбрать наилучший только по видео формат (например, DASH-видео), может быть недоступен;
  • worstvideo: выбрать наихудший только по видео формат, может быть недоступен;
  • bestaudio: выбрать наилучший только по аудио формат, может быть недоступен;
  • worstaudio: выбрать наихудший только по аудио формат, может быть недоступен.

Например, чтобы скачать наихудший только по видео формат, можно использовать -f worstvideo.

Если вы хотите скачать несколько видео, и у них нет одинаковых доступных форматов, вы можете указать порядок предпочтения с помощью косой черты. Обратите внимание, что косая черта является левоассоциативной, то есть форматы слева предпочтительнее, например -f 22/17/18 скачает формат 22, если он доступен, в противном случае он скачает формат 17, если он доступен, иначе он скачает формат 18, если он доступен, иначе будет жаловаться на то, что подходящие форматы недоступны для загрузки.

Чтобы скачать несколько форматов одного видео, используйте запятую в качестве разделителя, например -f 22,17,18 скачают все три этих формата, конечно, если они доступны. Или более сложный пример в сочетании с приоритетом -f 136/137/mp4/bestvideo,140/m4a/bestaudio.

Можно также фильтровать видеоформаты, помещая условие в квадратные скобки, как в -f «best[height=720]» (или -f «[filesize>10M]»).

Следующие числовые метаполя можно использовать со сравнениями <, <=, >, >=, = (равно), != (не равно):

  • filesize: количество байтов, если известно заранее;
  • width: ширина видео, если известна;
  • height: высота видео, если известна;
  • tbr: средний битрейт аудио и видео в килобитах в секунду;
  • abr: средний аудиобитрейт в килобитах в секунду;
  • vbr: средний видеобитрейт в килобитах в секунду;
  • asr: частота дискретизации звука в герцах;
  • fps: частота кадров.

Фильтрация также работает для сравнений = (равенство), != (неравенство), ^= (начинается с), $= (заканчивается на), *= (содержит) и следующих строковых метаполей:

  • ext: расширение файла;
  • acodec: имя используемого аудиокодека;
  • vcodec: имя используемого видеокодека;
  • container: имя формата контейнера;
  • protocol: протокол, который будет использоваться для фактической загрузки, в нижнем регистре. http, https, rtsp, rtmp, rtmpe, m3u8 или m3u8_native;
  • format_id: краткое описание формата.

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

Форматы, значение которых неизвестно, исключаются, если после оператора не поставить вопросительный знак (?). Можно комбинировать фильтры форматов, поэтому -f «[height <=? 720][tbr>500]» выбирает видео до 720p (или видео, где высота неизвестна) с битрейтом не менее 500 килобит в секунду.

Можно объединить видео и аудио двух форматов в один файл с помощью -f + (требуется установленный ffmpeg или avconv), например -f bestvideo+bestaudio скачает только наилучший видеоформат, только наилучший аудиоформат и... Вот перевод текста на русский язык:

Удаление пакета дистрибутива с помощью команды вроде: sudo apt-get remove -y youtube-dl

После этого просто следуйте нашим инструкциям по ручной установке:

sudo wget https://yt-dl.org/latest/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+x /usr/local/bin/youtube-dl
hash -r

Опять же, после этого вы сможете обновлять с помощью sudo youtube-dl -U.

youtube-dl работает очень медленно на Windows

Добавьте исключение файла для youtube-dl.exe в настройках Защитника Windows.

Я получаю ошибку «Невозможно извлечь заголовок OpenGraph» в плейлистах YouTube

YouTube изменил формат своих плейлистов в марте 2014 года и позже, поэтому вам понадобится как минимум версия youtube-dl от 2014.07.25, чтобы загрузить все видео с YouTube.

Если вы установили youtube-dl с помощью менеджера пакетов, pip, setup.py или tarball, пожалуйста, используйте его для обновления. Обратите внимание, что пакеты Ubuntu больше не обновляются. Поскольку мы не связаны с Ubuntu, мы мало что можем сделать. Не стесняйтесь сообщать об ошибках парням из Ubuntu — всё, что им нужно сделать, это обновить пакет до относительно недавней версии. См. выше способ обновления.

Я получаю сообщение об ошибке при попытке использовать шаблон вывода: «ошибка: использование шаблона вывода конфликтует с использованием заголовка, идентификатора видео или автоматического номера»

Убедитесь, что вы не используете -o с любым из этих параметров -t, --title, --id, -A или --auto-number, установленными в командной строке или в файле конфигурации. Удалите последние, если они есть.

Нужно ли всегда передавать -citw?

По умолчанию youtube-dl стремится иметь наилучшие параметры (кстати, если у вас есть убедительные аргументы в пользу того, что они должны быть другими, пожалуйста, создайте проблему, где вы объясните это). Поэтому копировать длинные строки параметров с веб-страниц необязательно и иногда вредно. В частности, единственный параметр из -citw, который регулярно полезен, — это -i.

Можете ли вы вернуть опцию -b?

Большинство людей, задающих этот вопрос, не знают, что youtube-dl теперь по умолчанию скачивает самое высокое доступное качество, о котором сообщает YouTube, которое будет 1080p или 720p в некоторых случаях, так что вам больше не нужна опция -b. Для некоторых конкретных видео YouTube может не сообщать, что они доступны в определённом формате высокого качества, который вас интересует. В этом случае просто запросите его с опцией -f, и youtube-dl попытается скачать его.

Я получаю HTTP-ошибку 402 при попытке загрузить видео. Что это?

Очевидно, YouTube требует, чтобы вы прошли тест CAPTCHA, если вы загружаете слишком много. Мы рассматриваем возможность предоставить способ решения CAPTCHA, но на данный момент лучше всего указать веб-браузеру URL YouTube, решить CAPTCHA и перезапустить youtube-dl.

Нужны ли мне какие-либо другие программы?

youtube-dl отлично работает сам по себе на большинстве сайтов. Однако, если вы хотите конвертировать видео/аудио, вам понадобятся avconv или ffmpeg. На некоторых сайтах — в первую очередь на YouTube — видео можно получить в более высоком качестве без звука. youtube-dl определит, присутствует ли avconv/ffmpeg, и автоматически выберет лучший вариант.

Видео или видеоформаты, передаваемые через протокол RTMP, можно загрузить только при установленном rtmpdump. Загрузка видео MMS и RTSP требует установки либо mplayer, либо mpv.

Я скачал видео, но как я могу его воспроизвести?

Как только видео полностью загрузится, используйте любой видеоплеер, такой как mpv, vlc или mplayer.

Я извлёк URL видео с помощью -g, но он не воспроизводится на другом компьютере / в моём веб-браузере.

Это сильно зависит от сервиса. Во многих случаях запросы на видео (для загрузки/воспроизведения) должны поступать с одного IP-адреса и с Те же файлы cookie. Используйте опцию --cookies, чтобы записать необходимые файлы cookie в файл, и предложите вашему загрузчику читать файлы cookie из этого файла. Некоторым сайтам также требуется использовать общий пользовательский агент, используйте --dump-user-agent, чтобы увидеть тот, который используется youtube-dl.

Может быть полезно использовать IPv6; в некоторых случаях ограничения применяются только к IPv4. Некоторые сервисы (иногда только для подмножества видео) не ограничивают URL-адрес видео по IP-адресу, файлам cookie или пользовательскому агенту, но это скорее исключение, чем правило.

Имейте в виду, что некоторые протоколы URL не поддерживаются браузерами «из коробки», включая RTMP. Если вы используете -g, ваш собственный загрузчик также должен поддерживать их.

Если вы хотите воспроизвести видео на машине, на которой не запущен youtube-dl, вы можете передать видеоконтент с машины, на которой работает youtube-dl. Вы можете использовать -o -, чтобы позволить youtube-dl транслировать видео на стандартный вывод, или просто разрешить проигрывателю загружать файлы, записанные youtube-dl по очереди.

ERROR: no fmt_url_map or conn information found in video info

YouTube перешёл на новый формат информации о видео в июле 2011 года, который не поддерживается старыми версиями youtube-dl. См. выше как обновить youtube-dl.

ERROR: unable to download video

С сентября 2012 года YouTube требует дополнительную подпись, которая не поддерживается старыми версиями youtube-dl. См. выше, как обновить youtube-dl.

В URL видео есть амперсанд, и я получаю странный вывод [1] 2839 или 'v' не распознаётся как внутренняя или внешняя команда

На самом деле это вывод вашей оболочки. Поскольку амперсанд является одним из специальных символов оболочки, он интерпретируется оболочкой, не позволяя вам передать весь URL в youtube-dl. Чтобы отключить интерпретацию оболочки амперсандов (или любых других специальных символов), вы должны либо заключить весь URL в кавычки, либо экранировать их обратной косой чертой (какой подход будет работать, зависит от вашей оболочки).

Например, если ваш URL — https://www.youtube.com/watch?t=4&v=BaW_jenozKc, у вас должна получиться следующая команда: youtube-dl 'https://www.youtube.com/watch?t=4&v=BaW_jenozKc' или youtube-dl https://www.youtube.com/watch?t=4\&v=BaW_jenozKc

Для Windows вы должны использовать двойные кавычки: youtube-dl "https://www.youtube.com/watch?t=4&v=BaW_jenozKc"

ExtractorError: не удалось найти JS-функцию u'OF'

В феврале 2015 года новый проигрыватель YouTube содержал последовательность символов в строке, которую неправильно интерпретировали старые версии youtube-dl. См. выше, как обновить youtube-dl.

HTTP Error 429: слишком много запросов или 402: требуется оплата

Эти два кода ошибок указывают на то, что служба блокирует ваш IP-адрес из-за чрезмерного использования. Свяжитесь со службой и попросите её разблокировать ваш IP-адрес или, если вы уже приобрели белый список IP-адресов, используйте опции --proxy или --source-address, чтобы выбрать другой IP-адрес.

SyntaxError: символ не ASCII

Ошибка File "youtube-dl", line 2 SyntaxError: символ не ASCII '\x93' ...

означает, что вы используете устаревшую версию Python. Пожалуйста, обновитесь до Python 2.6 или 2.7.

Что это за двоичный файл? Куда делся код?

С июня 2012 (#342) youtube-dl упакован как исполняемый zip-файл, просто распакуйте его (возможно, потребуется сначала переименовать в youtube-dl.zip на некоторых системах) или клонируйте репозиторий git, как описано выше. Если вы изменяете код, вы можете запустить его, выполнив файл __main__.py. Чтобы перекомпилировать исполняемый файл, запустите make youtube-dl.

Исполняемый файл выдаёт ошибку из-за отсутствия MSVCR100.dll

Чтобы запустить исполняемый файл, вам необходимо сначала установить Microsoft Visual C++ 2010 Redistributable Package (x86).

Как настроить ffmpeg и youtube-dl на Windows? Где разместить исполняемые файлы?

Если вы поместите youtube-dl и ffmpeg в тот же каталог, в котором вы работаете... Команда from будет работать, но это довольно громоздко.

Чтобы заставить работать другой каталог — либо для ffmpeg, либо для youtube-dl, либо для обоих — просто создайте каталог (скажем, C:\bin или C:\Users\<имя пользователя>\bin), поместите туда все исполняемые файлы и затем установите переменную среды PATH, чтобы включить этот каталог.

После этого, после перезапуска вашей оболочки, вы сможете получить доступ к youtube-dl и ffmpeg (и youtube-dl сможет найти ffmpeg), просто набрав youtube-dl или ffmpeg, независимо от того, в каком каталоге вы находитесь.

Как поместить загрузки в определённую папку?

Используйте -o, чтобы указать шаблон вывода, например -o "/home/user/videos/%(title)s-%(id)s.%(ext)s". Если вы хотите сделать это для всех своих загрузок, добавьте опцию в свой файл конфигурации.

Как скачать видео, начинающееся с -?

Либо добавьте http://www.youtube.com/watch?v=, либо разделите идентификатор и параметры с помощью --:

youtube-dl -- -wNyEUrxzFU
youtube-dl "http://www.youtube.com/watch?v=-wNyEUrxzFU"

Как передать cookies в youtube-dl?

Используйте опцию --cookies, например --cookies /path/to/cookies/file.txt. Обратите внимание, что файл cookies должен быть в формате Mozilla/Netscape, а первая строка файла cookies должна быть либо # HTTP Cookie File, либо # Netscape HTTP Cookie File. Убедитесь, что у вас правильный формат новой строки в файле cookies, и при необходимости преобразуйте новые строки в соответствии с вашей ОС, а именно CRLF (\r\n) для Windows, LF (\n) для Linux и CR (\r) для Mac OS. HTTP Error 400: Bad Request при использовании --cookies является хорошим признаком неправильного формата новой строки.

Передача cookies в youtube-dl — хороший способ обойти логин, когда конкретный экстрактор не реализует его явно. Ещё один вариант использования — обход CAPTCHA, которую некоторые веб-сайты требуют решить в определённых случаях, чтобы получить доступ (например, YouTube, CloudFlare).

Можете ли вы добавить поддержку этому сайту с аниме-видео или сайту, который показывает текущие фильмы бесплатно?

В соответствии с политикой (а также законодательством) youtube-dl не включает поддержку сервисов, специализирующихся на нарушении авторских прав. Как правило, если вы не можете легко найти видео, которое сервису явно разрешено распространять (то есть оно было загружено создателем, дистрибьютором создателя или опубликовано под бесплатной лицензией), сервис, вероятно, не подходит для включения в youtube-dl.

Примечание о том, что сервис не размещает нарушающий контент, а просто ссылается на тех, кто это делает, свидетельствует о том, что этот сервис не следует включать в youtube-dl. То же самое касается любой заметки DMCA, когда вся главная страница сервиса заполнена видео, которые им не разрешено распространять. Примечание о «добросовестном использовании» также неубедительно, если сервис показывает защищённые авторским правом видео полностью без разрешения.

Однако запросы на поддержку сервисов, которые действительно покупают права на распространение своего контента, вполне приемлемы. В случае сомнений вы можете просто включить источник, в котором упоминается законная покупка контента.

Как ускорить работу над моей проблемой?

(Также известно как: Помогите, моя важная проблема не решается!) Основная команда разработчиков youtube-dl довольно мала. Хотя мы делаем всё возможное, чтобы решить как можно больше проблем, иногда это может занять довольно много времени. Чтобы ускорить решение вашей проблемы, вот что вы можете сделать:

Прежде всего, пожалуйста, сообщите о проблеме в нашем трекере проблем. Это позволяет нам координировать все усилия пользователей и разработчиков и служит единой точкой. К сожалению, проект youtube-dl стал слишком большим, чтобы использовать личную электронную почту в качестве эффективного канала связи.

Пожалуйста, ознакомьтесь с инструкциями по сообщению об ошибках ниже. Во многих ошибках отсутствует вся необходимая информация. Если можете, предоставьте прокси, VPN или доступ к оболочке разработчикам youtube-dl. Если возможно, протестируйте проблему с нескольких Компьютеры в разных странах, чтобы исключить проблемы с местной цензурой или неправильной конфигурацией.

Если никто не заинтересован в решении вашей проблемы, вы можете взять дело в свои руки и отправить запрос на извлечение (или заставить/заплатить кому-то другому, чтобы он это сделал).

Не стесняйтесь поднимать вопрос время от времени, написав небольшой комментарий («Проблема всё ещё присутствует в версии youtube-dl... из Франции, но исправлена из Бельгии»), но не чаще одного раза в месяц. Пожалуйста, не объявляйте свою проблему как «важную» или «срочную».

Как определить, поддерживается ли данный URL с помощью youtube-dl?

Прежде всего, взгляните на список поддерживаемых сайтов. Обратите внимание, что иногда может случиться так, что сайт меняет свою схему URL (скажем, с http://example.com/video/1234567 на http://example.com/v/1234567), и youtube-dl сообщает о неподдерживаемом URL из этого списка. В этом случае просто сообщите об ошибке.

Невозможно определить, поддерживается URL или нет. Это связано с тем, что youtube-dl содержит универсальный экстрактор, который соответствует всем URL. У вас может возникнуть соблазн отключить, исключить или удалить универсальный экстрактор, но универсальный экстрактор не только позволяет пользователям извлекать видео с множества веб-сайтов, которые встраивают видео с другого сервиса, но также может использоваться для извлечения видео с сервиса, который сам его размещает. Поэтому мы не рекомендуем и не поддерживаем отключение, исключение или удаление универсального экстрактора.

Если вы хотите узнать, поддерживается ли заданный URL, просто вызовите youtube-dl с ним. Если вы не получите видео обратно, скорее всего, URL либо не относится к видео, либо не поддерживается. Вы можете узнать это, изучив вывод (если вы запустите youtube-dl на консоли) или перехватив исключение UnsupportedError, если вы запускаете его из программы Python.

Зачем мне нужно проходить через столько бюрократических процедур при подаче отчётов об ошибках?

До того, как у нас появился шаблон проблемы, несмотря на наши обширные инструкции по сообщению об ошибках, около 80% полученных нами отчётов о проблемах были бесполезными, например, потому что люди использовали древние версии, которым сотни выпусков, из-за простых синтаксических ошибок (не в youtube-dl, а в общем использовании оболочки), потому что проблема уже была сообщена несколько раз ранее, потому что люди фактически не читали сообщение об ошибке, даже если там говорилось «пожалуйста, установите ffmpeg», потому что люди не упоминали URL, который они пытались загрузить, и многие другие простые, легко устранимые проблемы, многие из которых были совершенно не связаны с youtube-dl.

youtube-dl — это проект с открытым исходным кодом, которым занимается слишком мало добровольцев, поэтому мы бы предпочли потратить время на исправление ошибок, где мы уверены, что ни одна из этих простых проблем не применима, и где мы можем быть достаточно уверены, что сможем воспроизвести проблему, не спрашивая репортёра повторно. Таким образом, вывод команды youtube-dl -v YOUR_URL_HERE — это действительно всё, что требуется для подачи проблемы. Шаблон проблемы также поможет вам выполнить некоторые основные шаги, такие как проверка актуальности вашей версии youtube-dl.

ИНСТРУКЦИИ ДЛЯ РАЗРАБОТЧИКОВ

Большинству пользователей не нужно собирать youtube-dl, они могут скачать сборки или получить их из своего дистрибутива.

Чтобы запустить youtube-dl в качестве разработчика, вам также не нужно ничего собирать. Просто выполните команду:

python -m youtube_dl

Для запуска теста просто запустите свой любимый тестовый бегун или выполните тестовый файл напрямую; любой из следующих вариантов работает:

python -m unittest discover
python test/test_download.py
nosetests

Если вы хотите создать сборку youtube-dl самостоятельно, вам понадобятся:

  • python
  • make (поддерживаются как GNU make, так и BSD make)
  • pandoc
  • zip
  • nosetests

Добавление поддержки нового сайта

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

После того как вы убедились, что этот сайт распространяет его... Контент легально, вы можете следовать этому краткому списку (предполагая, что ваш сервис называется yourextractor):

  1. Форкните этот репозиторий.
  2. Проверьте исходный код с помощью команды git clone git@github.com:YOUR_GITHUB_USERNAME/youtube-dl.git.
  3. Создайте новую ветку git с помощью команды cd youtube-dl; git checkout -b yourextractor.
  4. Начните с этого простого шаблона и сохраните его в файле youtube_dl/extractor/yourextractor.py:
    # coding: utf-8
    from __future__ import unicode_literals
    
    from .common import InfoExtractor
    
    
    class YourExtractorIE(InfoExtractor):
        _VALID_URL = r'https?://(?:www\.)?yourextractor\.com/watch/(?P<id>[0-9]+)'
        _TEST = {
            'url': 'http://yourextractor.com/watch/42',
            'md5': 'TODO: md5 sum of the first 10241 bytes of the video file (use --test)',
            'info_dict': {
                'id': '42',
                'ext': 'mp4',
                'title': 'Video title goes here',
                'thumbnail': 're:^https?://.*\.jpg$',
                # TODO more properties, either as:
                # * A value
                # * MD5 checksum; start the string with md5:
                # * A regular expression; start the string with re:
                # * Any Python type (for example int or float)
            }
        }
    
        def _real_extract(self, url):
            video_id = self._match_id(url)
            webpage = self._download_webpage(url, video_id)
    
            # TODO more code goes here, for example ...
            title = self._html_search_regex(r'<h1>(.+?)</h1>', webpage, 'title')
    
            return {
                'id': video_id,
                'title': title,
                'description': self._og_search_description(webpage),
                'uploader': self._search_regex(r'<div[^>]+id="uploader"[^>]*>([^<]+)<', webpage, 'uploader', fatal=False),
                # TODO more properties (see youtube_dl/extractor/common.py)
            }
  5. Добавьте импорт в youtube_dl/extractor/extractors.py.
  6. Запустите python test/test_download.py TestDownload.test_YourExtractor. Сначала это должно завершиться ошибкой, но вы можете постоянно перезапускать его, пока не закончите. Если вы решите добавить более одного теста, то переименуйте _TEST в _TESTS и превратите его в список словарей. Тесты будут называться TestDownload.test_YourExtractor, TestDownload.test_YourExtractor_1, TestDownload.test_YourExtractor_2 и т. д.
  7. Ознакомьтесь с youtube_dl/extractor/common.py, чтобы узнать о возможных вспомогательных методах и подробном описании того, что должен и может возвращать ваш экстрактор. Добавьте тесты и код для любого количества, которое вы хотите.
  8. Имейте в виду, что единственными обязательными полями в info dict для успешного процесса извлечения являются id, title и либо url, либо formats, то есть это критические данные, без которых извлечение не имеет смысла. Это означает, что любое поле, кроме вышеупомянутых обязательных, следует рассматривать как необязательное, а извлечение должно быть терпимым к ситуациям, когда источники этих полей потенциально могут быть недоступны (даже если они всегда доступны в данный момент), и должно быть защищено от будущих изменений, чтобы не нарушить извлечение общих обязательных полей. Например, если у вас есть промежуточный dict meta, который является источником метаданных, и у него есть ключ summary, который вы хотите извлечь и поместить в результирующий info dict как description, вы должны быть готовы к тому, что этот ключ может отсутствовать в dict meta, то есть вы должны извлечь его как meta.get('summary'), а не meta['summary']. Аналогично, вы должны передавать fatal=False при извлечении данных из веб-страницы с _search_regex/_html_search_regex. Лимит вопросов, которые они могут или должны открыть.

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

В частности, каждый запрос поддержки сайта должен касаться только сервисов на одном сайте (обычно под общим доменом, но всегда с использованием одной и той же серверной технологии). Не запрашивайте поддержку для пользовательских видео Vimeo, подкастов Белого дома и страниц Google Plus в одном и том же вопросе. Кроме того, убедитесь, что вы не публикуете отчёты об ошибках вместе с запросами функций. Как правило, запрос функции не включает результаты работы youtube-dl, которые не имеют прямого отношения к рассматриваемой функции. Не публикуйте сообщения о сетевой ошибке вместе с запросом на новый видеосервис.

Понадобится ли кому-то эта функция?

Публикуйте только те функции, которые нужны вам (или недееспособному другу, с которым вы можете лично поговорить). Не публикуйте функции только потому, что они кажутся хорошей идеей. Если они действительно полезны, их запросит тот, кому они нужны.

Ваш вопрос о youtube-dl?

Может показаться странным, но некоторые отчёты об ошибках, которые мы получаем, совершенно не связаны с youtube-dl и относятся к другому приложению или даже к собственному приложению репортёра. Пожалуйста, убедитесь, что вы действительно используете youtube-dl. Если вы используете пользовательский интерфейс для youtube-dl, сообщите об ошибке разработчику фактического приложения, предоставляющего пользовательский интерфейс. С другой стороны, если ваш пользовательский интерфейс для youtube-dl каким-либо образом даёт сбой и вы считаете, что это связано с youtube-dl, обязательно сообщите об этом.

Авторские права

youtube-dl выпущен правообладателями в общественное достояние.

Этот файл README был первоначально написан Дэниелом Болтоном и также выпущен в общественное достояние.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Unlicense
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/jingyuexing-youtobe-dl.git
git@api.gitlife.ru:oschina-mirror/jingyuexing-youtobe-dl.git
oschina-mirror
jingyuexing-youtobe-dl
jingyuexing-youtobe-dl
master