Софт YouTube Downloader|MP3 YouTube. UPDATE 07.04.2023

ervinbek

Известный
Автор темы
242
74
Всем добрый вечер
Создал простую программу для YouTube
Что она может?
  1. Cкачивать видео с ютуба
  2. Скачивать аудио с ютуба
  3. Скачивать плей-листы состоящих из видео
  4. Скачивать плей-листы состоящих из аудио
  5. Создавать папки для плейлистов
Примечание: Ниже будет показано,как правильно пользоваться программой
Возможно в будущем сделаю красивый интерфейс,посмотрим.


Панель
Выбераем желаемое.
Тут все просто, видео скачивает видео,а аудио - аудио


Для начала нужно найти ссылку на плейлист
1) Заходим в ютуб
2) Находим нужный плейлист
3) Сохраняем
4) Открываем свой канал
5) Выбераем "Плейлисты"
6) Под каждым плейлистом будет такая кнопка,переходим
7) Тыкаем Поделится
8) Копируем ссылку
9) Вставляем в программу.
Программа создает папку,туда сохраняет весь плейлист

На этом все
Всем спасибо!

Исходник:
from pytube import YouTube, Playlist
import os


choice = input("Что вы хотите скачать?\n1. Видео\n2. Аудио\n3. Плейлист\n\nВыберите 1 или 2 или 3: ")

if choice == '1':

link = input("Введите URL: ")
print("Начало загрузки...")
    yt = YouTube(link)

    stream = yt.streams.get_highest_resolution()
    stream.download()

print('Файл:' + yt.title + " успешно скачан")

elif choice == '2':
video_url = input("Введите URL: ")
print("Начало загрузки...")

    yt = YouTube(video_url)

 try:
        audio_stream = yt.streams.get_audio_only()
audio_file = audio_stream.download(timeout=300)

        video_title = yt.title
audio_name = f"{video_title}.mp3"

        file_counter = 1
        while os.path.exists(audio_name):
audio_name = f"{video_title} ({file_counter}).mp3"
            file_counter += 1

        os.rename(audio_file, audio_name)
print(f'Успешно скачано аудио из видео "{video_title}" и сохранено в файл "{audio_name}".\nАвтор кода: Erwin')
except Exception as e:
print('Ошибка при скачивании аудио:', e, '\nАвтор кода: Erwin')

elif choice == '3':
playlist_url = input("Введите URL плейлиста: ")
    playlist = Playlist(playlist_url)

playlist_type = input("Выберите тип плейлиста:\n1. Видео\n2. Аудио\nВыберите 1 или 2: ")
print("Начало загрузки...")

if playlist_type == '1':
folder_name, file_extension = 'playlist_videos', '.mp4'
    elif playlist_type == '2':
folder_name, file_extension = 'playlist_music', '.mp3'
    else:
print("Ошибка: выберите 1 или 2")
        exit()

os.makedirs(folder_name, exist_ok=True)

for video in playlist.videos:
 try:
stream = video.streams.get_highest_resolution() if playlist_type == '1' else video.streams.get_audio_only()
file_path = os.path.join(folder_name, f"{video.title}{file_extension}")
stream.download(output_path=folder_name, filename=f"{video.title}{file_extension}")

            print(
f'Успешно скачано {"видео" if playlist_type == "1" else "аудио"} "{video.title}" и сохранено в файл "{file_path}"')
except Exception as e:
print(f'Ошибка при скачивании {"видео" if playlist_type == "1" else "аудио"} "{video.title}":', e)

print("Готово!")

else:
print("Ошибка: выберите 1 или 2 или 3")

!!!!СКАЧАТЬ!!!!


1680731803145.png
 
Последнее редактирование:

ervinbek

Известный
Автор темы
242
74
Официально заявляю, что это больше нахуй не нужно.
Официально говорю-ОК.
Я начинаю только в этой сфере
Делюсь работой
Жду советы,критику
Но явно не твою цитату

они идут кто там азербайджане

Посмотреть вложение 196082
Не всегда удобно
 

GrishaMazzlov

https://t.me/RealCashFlow101
Проверенный
1,780
935
Официально говорю-ОК.
Я начинаю только в этой сфере
Делюсь работой
Жду советы,критику
Но явно не твою цитату
Почему, когда идёт сравнение с проприетарью, начинающий кодер думает, что его чморят? Я наоборот хвалю и восхищаюсь тобой, ибо ты создал бесплатный консольный аналог софта, за который по закону надо платить. Я тебя просто хотел поддержать в шуточной форме.
 

ervinbek

Известный
Автор темы
242
74
Почему, когда идёт сравнение с проприетарью, начинающий кодер думает, что его чморят? Я наоборот хвалю и восхищаюсь тобой, ибо ты создал бесплатный консольный аналог софта, за который по закону надо платить. Я тебя просто хотел поддержать в шуточной форме.
Тогда прошу меня извинить за грубость
Не правильно понял домысел твоих слов
За похвалу большое спасибо!
Дает большую мотивацию)
 
  • Нравится
Реакции: GrishaMazzlov

ChromiusJ

Известный
Друг
4,898
3,184
можно что то подобное,потому что возможны рофлы в виде приватности видео,ждать пока загрузится хуйта какая то,и код просто будет крашиться
я негiр:
import os
import urllib.request
import json
from http.client import IncompleteRead
from pytube import YouTube

# Введите URL видео YouTube
url = input("Введите URL видео YouTube: ")

yt = YouTube(url)

while True:
    choice = input("Что нужно скачать? (a - аудио, v - видео): ")
    if choice == "a":
        # почему то крашит код на 256 кбпс,но мне похуй....
        audio_quality = input("Выберите качество аудио (256kbps, 128kbps, 70kbps): ")
        file_extension = "mp3"
        stream = yt.streams.filter(only_audio=True, abr=audio_quality).first()
        break
    elif choice == "v":
        video_quality = input("Выберите качество видео (720p, 480p, 360p, 240p, 144p): ")
        file_extension = "mp4"
        stream = yt.streams.filter(res=video_quality, mime_type="video/mp4").first()
        break
    else:
        print("Некорректный выбор. Попробуйте еще раз.")

if not stream:
    print(f"Не удалось найти поток для выбранного качества. Попробуйте выбрать другое качество.")
else:
    save_dir = input("Введите директорию для сохранения файла: ")

    while True:
        try:
            file_name = f"{yt.title}.{file_extension}"
            file_path = os.path.join(save_dir, file_name)
            stream.download(save_dir)
            break
        except IncompleteRead as e:
            data = e.partial

    info_file = os.path.join(save_dir, f"{yt.title}.txt")
    with open(info_file, "w", encoding="utf-8") as f:
        f.write(f"Название: {yt.title}\n")
        f.write(f"Описание: {yt.description}\n")
        f.write(f"Автор: {yt.author}\n")
        if yt.keywords:
            f.write(f"Теги: {', '.join(yt.keywords)}\n")

    print(f"Файл '{file_name}' успешно сохранен в директории '{save_dir}'.")

и да,стоит добавить хотя бы хоть какое то уведомление что скачалось,я когда вписал ссылку,минуты 2 сидел втыкал думал что щас комп взорвется от таких вычислений
апд:обновил код,добавил выбор директории,хз как на ПК,но на Андроиде через пайдроид3 если ввести Download ,то действительно загрузит в загрузки,на ПК скорее всего немного иначе.
1680502475045.jpg
 

Вложения

  • 1680456776216.png
    1680456776216.png
    7.8 KB · Просмотры: 49
Последнее редактирование:
  • Нравится
Реакции: zakatov

zakatov

zkt-team
Проверенный
1,673
514
А почему он скачивает через раз? Могу видео скинуть если нужно
 

ChromiusJ

Известный
Друг
4,898
3,184
скачивает через раз
потому что нету проверки есть такой же файл или нет,и если есть то добавляет префикс ,я обновил свое сообщение выше,там я добавил такое,да код увеличился,что поделать,но без проверки,ожидания,код будет через раз нахуй посылать
1680457746303.png