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

ervinbek

Известный
Автор темы
244
77
Всем добрый вечер
Создал простую программу для 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

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

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

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

GrishaMazzlov

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

ervinbek

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

хромиус)

:steamhappy:
Друг
5,007
3,259
можно что то подобное,потому что возможны рофлы в виде приватности видео,ждать пока загрузится хуйта какая то,и код просто будет крашиться
я нег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,724
548
А почему он скачивает через раз? Могу видео скинуть если нужно
 

хромиус)

:steamhappy:
Друг
5,007
3,259
скачивает через раз
потому что нету проверки есть такой же файл или нет,и если есть то добавляет префикс ,я обновил свое сообщение выше,там я добавил такое,да код увеличился,что поделать,но без проверки,ожидания,код будет через раз нахуй посылать
1680457746303.png