загрузить видео с Youtube

Python — загрузить видео с Youtube

Как загрузить видео с YoutubeКак-то неожиданно закончилось лето, а значит — пора продолжать учебу. И сегодня мы разберемся, как с помощью Python загрузить видео с Youtube 🙂 Важно: никаких надстроек в браузер или куда-то еще вам не понадобится. Чистый Python.

Немного предыстории: несколько лет назад у меня имелся канал, посвященный (барабанная дробь) — плетению косичек. Понятное дело, большого количества оригинального видео у меня не было, а потому приходилось брать видео откуда угодно. Понятно, активнее всего использовался VK, в котором, как мне кажется, никакой цензуры и правил к размещаемому видео не было, и не будет. Но оставался и Youtube, видео из которого я загружал с помощью сервиса SaveFrom, и аналогичных. Но сегодня мы говорим о Python, и я покажу код, созданный самостоятельно с применением библиотеки Pytube (подробности вы можете узнать тут).

Сам код доступен по ссылке, а пока расскажу о нем подробнее.

Основная задача, которую я поставил себе — разобраться не только с сохранением видео вообще (тут все достаточно просто, ведь все работу делает библиотека, в которую мы только отправляем нужные параметры), но и с сохранением видео в указанный каталог на компьютере. Проблема, с которой столкнулся — совершенное непонимание Python-ом локального адреса в стиле: c:\Users\users\Downloads\, зато адрес: c:\Users\users\Downloads\ Python понимает великолепно.

Решение задачи просто: парсим полученную локальную ссылку, куда планируется сохранить видео, разбиваем на составляющие: c:-Users-users-Downloads и в каждый промежуток добавляем по два обратных слеша \, благодаря чему получаем адрес, понимаемый Python-ом:

save_link = input(‘Куда сохранять видео?: ‘) — запрос адреса сохранения видео
regxp = ‘[\w-]+[\w:]’ — регулярное выражение, разбивающее локальный адрес на составляющие
result = re.findall(regxp, save_link) #Собственно — сама работа регулярного выражения
final_link = ‘\\’.join(result) #Добавляем двойной слеш после каждой папки (под формат Python)

Кроме этого хочется отметить алгоритм формирования списка возможных для загрузки форматов видео. Все доступные варианты мы получаем с помощью метода: yt.get_videos(), которые потом отправляем в переменную format_video, которая, по сути, представляет собой список. Нужно лишь получить длину списка:
format_len = len(format_video)
а после — с помощью цикла — сформировать словарь, в котором ключами будут номера вариантов форматов видео, а значениями ключей — сами форматы:

i = 1
format_list = {}
for formats in format_video:
format_list[i] = formats
i = i + 1

Сформировали словарь? Отлично! Выводим его на печать, что бы пользователь мог понимать, под каким пунктом доступен какой вариант с форматом видео:

for key in format_list:
print(‘%s -> %s’ % (key, format_list[key]))

Далее, с помощью метода .get, который применяется к нашему словарю, обрабатываем полученное от пользователя значение к формату видео:

format_for_save = int(input(‘В каком формате сохраняем? : ‘)) — запрос на вариант формата видео

select = (format_list.get(format_for_save)) — получаем значение ключа
print(‘Вы выбрали: ‘, select) — выводим ключ на экран

В принципе, основные вопросы, возникшие при решении задачи «Как загрузить видео с Youtube» озвучены. В случае возникновения вопросов — пожалуйста, пишите 🙂

А, и да — если понравился пост, сделайте репост на свою страницу 🙂 Спасибо!

P.S. В планах на самое ближайшее будущее — разобраться и написать программу пакетной загрузки видео с каналов Youtube: вводите ссылку на канал, папку, куда все грузите, и спустя какое-то время получаете все файлы в готовом виде 🙂

UPD: Один из читателей блога заметил, что в настоящее время код не работает 🙁 В ближайшее время постараюсь посмотреть — в чем причина, и устранить ее.

UPD: Рабочая версия кода с конвертированием видео в аудио — доступна тут 🙂