Как-то неожиданно закончилось лето, а значит — пора продолжать учебу. И сегодня мы разберемся, как с помощью 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: Рабочая версия кода с конвертированием видео в аудио — доступна тут 🙂
Support the Blog!
Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️