Настройка кода и папки для скачивания файлов видео
Настройка кода и папки для скачивания файлов
Чтобы настроить код и папку для скачивания видео, вам нужно выполнить несколько шагов:
Чтобы настроить код и папку для скачивания видео, вам нужно выполнить несколько шагов:
1. Настройка папки для скачивания
- Папка для скачивания создается автоматически, если её нет. По умолчанию, папка будет называться
downloads
.
- Если вы хотите изменить имя папки для скачивания или путь к папке, просто измените значение переменной
download_folder
.
- Папка для скачивания создается автоматически, если её нет. По умолчанию, папка будет называться
downloads
. - Если вы хотите изменить имя папки для скачивания или путь к папке, просто измените значение переменной
download_folder
.
2. Настройка кода
Вот как можно настроить код для скачивания файлов и указания папки:
Вот как можно настроить код для скачивания файлов и указания папки:
Изменение пути папки для скачивания
Если вы хотите изменить папку для скачивания на другую, достаточно указать нужный путь в переменной download_folder
. Например:
- Для скачивания в папку
C:/Videos/Downloads
, установите:
download_folder = "C:/Videos/Downloads"
Если вы хотите изменить папку для скачивания на другую, достаточно указать нужный путь в переменной download_folder
. Например:
- Для скачивания в папку
C:/Videos/Downloads
, установите:
download_folder = "C:/Videos/Downloads"
Если папка содержит пробелы или специальные символы, они автоматически обработаются корректно, так как os.makedirs()
будет создавать папку с учетом таких символов.
Изменение имени плейлиста
Плейлист, из которого будут скачиваться видео, можно изменить, подставив нужный URL. Например:
playlist_url = "https://rutube.ru/plst/261299/"
3. Пример настройки и использования кода
Полный пример с настройками:
import subprocess
import os
import json
import logging
# Настройка логирования
log_file = "download_videos.log"
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler(log_file),
logging.StreamHandler()
])
# Устанавливаем ссылку на плейлист (замените на нужный URL плейлиста)
playlist_url = "https://rutube.ru/plst/261299/"
# Начальный номер для обратной нумерации
counter = 24
# Папка, в которую будут сохраняться скачанные видео
# Измените путь на нужный, если хотите другую папку для скачивания
download_folder = "C:/Videos/Downloads" # Укажите путь вашей папки
# Проверка существования папки и её создание, если папка не существует
if not os.path.exists(download_folder):
os.makedirs(download_folder)
logging.info(f"Папка для скачивания создана: {download_folder}")
else:
logging.info(f"Папка для скачивания уже существует: {download_folder}")
# Функция для скачивания видео из плейлиста
def download_video(url, output_name):
logging.info(f"Запуск скачивания: {output_name}")
command = [
"yt-dlp",
"-o", os.path.join(download_folder, output_name),
url
]
subprocess.run(command)
logging.info(f"Видео скачано и сохранено как: {output_name}")
# Получаем список всех видео в плейлисте (ссылки на отдельные видео)
logging.info("Получение информации о видео из плейлиста...")
command = [
"yt-dlp",
"-j", # выводит информацию в JSON-формате
playlist_url
]
result = subprocess.run(command, capture_output=True, text=True)
if result.returncode != 0:
logging.error(f"Ошибка при получении информации о видео: {result.stderr}")
exit(1)
videos = result.stdout.strip().splitlines()
# Скачиваем и переименовываем каждый файл
logging.info(f"Начинаем скачивание {len(videos)} видео...")
for video_info in videos:
try:
video_data = json.loads(video_info) # Парсим JSON
video_url = video_data['url'] # Извлекаем URL видео
video_title = video_data['title'] # Извлекаем название видео
logging.info(f"Скачиваем видео: {video_title} ({video_url})")
# Скачиваем видео с обычным именем
download_video(video_url, f"{video_title}.%(ext)s")
# Переименовываем файл с обратной нумерацией
old_name = os.path.join(download_folder, f"{video_title}.mp4") # Предположим, что формат .mp4
new_name = os.path.join(download_folder, f"{counter:03d}_{video_title}.mp4")
os.rename(old_name, new_name)
logging.info(f"Переименован в: {new_name}")
# Уменьшаем счётчик
counter -= 1
except Exception as e:
logging.error(f"Ошибка при обработке видео: {str(e)}")
logging.info("Скачивание и переименование завершены!")
import subprocess
import os
import json
import logging
# Настройка логирования
log_file = "download_videos.log"
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler(log_file),
logging.StreamHandler()
])
# Устанавливаем ссылку на плейлист (замените на нужный URL плейлиста)
playlist_url = "https://rutube.ru/plst/261299/"
# Начальный номер для обратной нумерации
counter = 24
# Папка, в которую будут сохраняться скачанные видео
# Измените путь на нужный, если хотите другую папку для скачивания
download_folder = "C:/Videos/Downloads" # Укажите путь вашей папки
# Проверка существования папки и её создание, если папка не существует
if not os.path.exists(download_folder):
os.makedirs(download_folder)
logging.info(f"Папка для скачивания создана: {download_folder}")
else:
logging.info(f"Папка для скачивания уже существует: {download_folder}")
# Функция для скачивания видео из плейлиста
def download_video(url, output_name):
logging.info(f"Запуск скачивания: {output_name}")
command = [
"yt-dlp",
"-o", os.path.join(download_folder, output_name),
url
]
subprocess.run(command)
logging.info(f"Видео скачано и сохранено как: {output_name}")
# Получаем список всех видео в плейлисте (ссылки на отдельные видео)
logging.info("Получение информации о видео из плейлиста...")
command = [
"yt-dlp",
"-j", # выводит информацию в JSON-формате
playlist_url
]
result = subprocess.run(command, capture_output=True, text=True)
if result.returncode != 0:
logging.error(f"Ошибка при получении информации о видео: {result.stderr}")
exit(1)
videos = result.stdout.strip().splitlines()
# Скачиваем и переименовываем каждый файл
logging.info(f"Начинаем скачивание {len(videos)} видео...")
for video_info in videos:
try:
video_data = json.loads(video_info) # Парсим JSON
video_url = video_data['url'] # Извлекаем URL видео
video_title = video_data['title'] # Извлекаем название видео
logging.info(f"Скачиваем видео: {video_title} ({video_url})")
# Скачиваем видео с обычным именем
download_video(video_url, f"{video_title}.%(ext)s")
# Переименовываем файл с обратной нумерацией
old_name = os.path.join(download_folder, f"{video_title}.mp4") # Предположим, что формат .mp4
new_name = os.path.join(download_folder, f"{counter:03d}_{video_title}.mp4")
os.rename(old_name, new_name)
logging.info(f"Переименован в: {new_name}")
# Уменьшаем счётчик
counter -= 1
except Exception as e:
logging.error(f"Ошибка при обработке видео: {str(e)}")
logging.info("Скачивание и переименование завершены!")
Разбор ключевых моментов:
playlist_url
:
Укажите URL плейлиста, из которого хотите скачивать видео.
Пример:
playlist_url
:Укажите URL плейлиста, из которого хотите скачивать видео.
Пример:
playlist_url = "https://rutube.ru/plst/261299/"
download_folder
:Укажите папку для скачивания. Если она не существует, скрипт автоматически создаст её.
Пример:
download_folder = "C:/Videos/Downloads" # Можете указать любой путь
- Логирование:
Логи записываются в файлdownload_videos.log
и выводятся в консоль, чтобы отслеживать процесс скачивания и возможные ошибки.
4. Как запустить код:
- Установите все зависимости:
В терминале выполните команду:
В терминале выполните команду:
pip install yt-dlp
- Скопируйте код в файл с расширением
.py
(например,download_videos.py
).
В командной строке перейдите в папку, где находится ваш файл, и выполните:
python download_videos.py
- Проверка результатов:
- Логи будут записаны в файл
download_videos.log
. - Видео будут скачаны в папку, которую вы указали в
download_folder
, а их имена будут переименованы с добавлением обратной нумерации.
- Логи будут записаны в файл
Теперь вы можете легко настроить папку и путь для скачивания видео в коде, а также следить за процессом через лог-файл.