Wie man Youtube in MP3 konvertiert und es super sicher herunterlädt [Python]

Dieses Mal werde ich zusammenfassen, wie man das auf YouTube veröffentlichte Video als MP3 herunterlädt.

Referenzseiten und Github werden ebenfalls veröffentlicht.

Wenn Sie Fehler oder Fragen haben, kommentieren Sie bitte.

wichtiger Punkt

Ich lade hauptsächlich Videos herunter, die ich persönlich auf YouTube hochgeladen habe, und konvertiere sie in MP3.

Daher sind wir nicht verantwortlich für Probleme, die durch die Verwendung der Tonquelle verursacht werden, die aus dem von einer anderen Person als Ihnen geposteten Video stammt.

Viele Leute sagen, dass die private Nutzung in Ordnung ist, aber bitte tun Sie dies nach eigenem Ermessen. Bitte sehen Sie unten mit dieser Absicht!

Fertiges Produkt

Es ist nur ein Beispiel. Angenommen, Sie möchten https://www.youtube.com/watch?v=E8bUKuF9v10 in MP3 konvertieren.

Wo es sich öffnete

2020-09-10_22h16_22.png

2020-09-10_22h16_57.png

Dateierzeugung

2020-09-10_22h17_19.png

2020-09-10_22h18_17.png

Alle Daten können ausgerichtet werden.

Mit anderen Worten, sie sind in der Reihenfolge des Downloads angeordnet. 2020-09-10_22h18_36.png

Übrigens, wenn Sie in der ersten Phase auf Beenden drücken, wird das Fenster geschlossen, und selbst wenn Sie To Mp3, DeleteURL, Paste eingeben, wenn nichts eingegeben wird, wird der Vorgang nicht ausgeführt.

Umgebung

Verzeichnis

...\ffmpeg~static\bin
Darin befindet sich eine Hauptdatei von ffmpeg. Übergeben Sie also den Pfad dorthin. Legen Sie auch die Datei yououtue-dl exe in den Papierkorb. Auf diese Weise können Sie die exe an einer beliebigen Stelle in der Eingabeaufforderung starten.

    -bin
      - ffmpeg.exe
      - ffplay.exe
      - ffprobe.exe
      - youtube-dl.exe

Den Hintergrund und die Struktur, die ich machen wollte

Es gibt unzählige YouTube-Video-Downloader im Internet, aber ich wollte die Daten nicht von einer unbekannten Website zurückerhalten.

Deshalb habe ich beschlossen, es auf meinem eigenen PC zu vervollständigen.

Anfangs wusste ich nichts über dedizierte Software, aber als ich googelte, fand ich eine gute und ich hatte das Gefühl, dass dies erreicht werden könnte.

Die zu implementierende Funktion war sehr einfach, so dass ich es möglich machte, mit der GUI zu arbeiten.

Wenn es sich um eine Python-Datei handelt, kann sie sofort in eine Exe konvertiert werden, sodass sie an Freunde verteilt werden kann.

Tkinter war als GUI berühmt, aber als ich es versuchte, fühlte ich mich übel, also benutzte ich pysimplegui.

Dank dessen denke ich, dass die GUI in kurzer Zeit fertiggestellt wurde.

Code

github:

https://github.com/cota-eng/youtube-dl-in-windows

Codekommentar

Ich werde es separat erklären.

Import der Modulbibliothek

import subprocess
import PySimpleGUI as sg
import sys
import re
import os
import pyperclip
from win32_setctime import setctime
from datetime import datetime

Zuerst in der Funktion

Alle sind py simplegui Programme. Es ist ein Ablauf, das Thema der Farbanordnung zu bestimmen, ein Layout zu erstellen und ein Fenster zu öffnen.

Die Bedeutung jeder Schaltfläche und jedes Textfelds entspricht der von englischen Wörtern.

sg.theme("SystemDefault")
    layout = [
        [sg.Text("Please Input Youtube URL!")],
        [sg.Button(
            'Quit', size=(34, 2))],
        [sg.Button('To Mp3', size=(34, 2))],
        [sg.InputText('', size=(39, 3))],
        [sg.Button('DeleteURL', size=(16, 2)),
         sg.Button('Paste', size=(16, 2))]
    ]
    window = sg.Window('From Youtube To mp3', layout)

while True

while True:
        event, values = window.read()
        url = values[0]

event=="Quit" Es bedeutet einfach, dass diese Taste beim Drücken die while-Schleife verlässt.

if event == 'Quit':
            break

Anstatt eine Pause am unteren Rand der while-Schleife zu machen, verwenden Sie if, elif usw., um an der entsprechenden Szene zu brechen.

In mp3 konvertieren

event == "" bedeutet das Ereignis, das auftritt, wenn auf die Schaltfläche geklickt wird. Sie können das Programm eindeutig angeben, indem Sie den Namen der Schaltfläche abgleichen. Lassen Sie uns auf einfache Weise Fehler mit der Länge der URL-Eingabe während dieses Ereignisses verhindern. Von den Youtube-Links beträgt die erforderliche Länge ungefähr 40, daher habe ich sicher 32 als Standard festgelegt.

len> 32 ist wahr

elif event == 'To Mp3':
    if len(url) > 32:
        cmd = r'youtube-dl {} -x --audio-format mp3 -o "C:\Users\INPUTUSERNAME\Music\youtube-dl\%(title)s.%(ext)s"'.format(
            url)
        subprocess.call(
            cmd, cwd=r"C:\Program Files\ffmpeg-20200831-4a11a6f-win64-static\bin")

        res = subprocess.check_output(f'youtube-dl -e {url}'.split())
        res = res.decode('shift_jis').replace('\n', '')
        res += '.mp3'
        root = "C:\\Users\\INPUTUSERNAME\\Music\\youtube-dl\\"
        filename = root + res
        print(filename)
        date = datetime.now()
        year, month, day, hour, minute, second = date.year, date.month, date.day, date.hour, date.minute, date.second
        now = datetime(date.year, date.month, date.day,
                       date.hour, date.minute, date.second).timestamp()
        os.chdir(root)
        setctime(filename, now)
        os.utime(filename, (now, now))

Ich werde es separat erklären.


Durch die Verwendung von r "Zeichenfolge" können alle verwirrenden Symbole als Zeichen behandelt werden. raw Die rohe Zeichenfolge. Der Befehl cmd wurde aus der Readme-Datei von youtube-dl erstellt. youtube-dl % (Titel) s.% (Ext) s ist der Dateiname. Es ist eine Geschichte auf youtube-dl, also solltest du sie selbst lesen, um Details zu erfahren. Ich habe es durch Versuch und Irrtum bekommen.

Rufen Sie es mit der Unterprozessaufruffunktion auf. Geben Sie auch das Verzeichnis mit cwd an.

cmd = r'youtube-dl {} -x --audio-format mp3 -o "C:\Users\INPUTUSERNAME\Music\youtube-dl\%(title)s.%(ext)s"'.format(
            url)
        subprocess.call(
            cmd, cwd=r"C:\Program Files\ffmpeg-20200831-4a11a6f-win64-static\bin")

Geben Sie den Dateinamen in res ein. Dies ist auch das Ergebnis von Versuch und Irrtum. Schauen Sie also bitte vorbei und verstehen Sie. Schließlich können Sie alle Pfade im Dateinamen wie folgt speichern:

res = subprocess.check_output(f'youtube-dl -e {url}'.split())
                res = res.decode('shift_jis').replace('\n', '')
                res += '.mp3'
                root = "C:\\Users\\INPUTUSERNAME\\Music\\youtube-dl\\"
                filename = root + res
                print(filename)

Stellen Sie die Erstellungszeit usw. in der datetime-Bibliothek ein. Genau genommen werden Datum und Uhrzeit der Aktualisierung beim Erstellen automatisch festgelegt, aber aus irgendeinem Grund wurden Datum und Uhrzeit der Aktualisierung nicht aktualisiert.

Daher konnte ich dies realisieren, indem ich die datetime auf meine eigene Weise einbettete und auf die folgende Site verwies.

Referenz-URL: https://srbrnote.work/archives/4054

Übrigens, wenn Sie Powershell verwenden,

Set-ItemProperty hogehoge.txt -name CreationTime -value $(Get-Date)

Set-ItemProperty hogehoge.txt -name LastWriteTime -value $(Get-Date)

Es ist einfach, aber ich habe gehört, dass Powershell nicht mit Python verwendet werden kann, deshalb habe ich mich für das OS-Modul entschieden.

date = datetime.now()
year, month, day, hour, minute, second = date.year, date.month, date.day, date.hour, date.minute, date.second
now = datetime(date.year, date.month, date.day,
                date.hour, date.minute, date.second).timestamp()
os.chdir(root)
setctime(filename, now)
os.utime(filename, (now, now))

Wenn len <= 32

Schließen Sie das Fenster einfach einmal, und wenn Sie es wie beim ersten Öffnen eingeben und ausführen, wird es abgespielt.

else:
    window.close()
    layout = [
        [sg.Text("Please Input youtube URL!")],
        [sg.Button('Quit', size=(34, 2))],
        [sg.Button('To Mp3', size=(34, 2))],
        [sg.InputText('', size=(39, 3))],
        [sg.Button('DeleteURL', size=(16, 2)),
                     sg.Button('Paste', size=(16, 2))]
        ]
        window = sg.Window('From youtube To mp3', layout)

Ereignis einfügen

Fügen Sie den kopierten Link ein. Ich habe es implementiert, weil es einfacher ist, die Tasten zu bedienen.

Da es nicht möglich ist, nur mit pyperclip in gui einzugeben, wurde dies gelöst, indem das Fenster geschlossen, der Inhalt von pyperclip einer Variablen zugewiesen und ein Fenster mit dieser Variablen als Anfangswert geöffnet wurde.

elif event == 'Paste':
    window.close()
    paste_url = pyperclip.paste()
    layout = [
        [sg.Text("Please Input youtube URL!")],
        [sg.Button('Quit', size=(34, 2))],
        [sg.Button('To Mp3', size=(34, 2))],
        [sg.InputText(paste_url, size=(39, 3))],
        [sg.Button('DeleteURL', size=(16, 2)),
         sg.Button("Paste", size=(16, 2))]
    ]
    window = sg.Window('From youtube To mp3 ', layout)

Ereignis löschen

Dies ist die gleiche Idee wie zuvor. Anstatt es löschen zu lassen, schloss ich das Fenster und rief ein Fenster auf, das keine Eingabe hatte.

elif event == 'DeleteURL':
            window.close()
            layout = [
                [sg.Text("Please Input youtube URL!")],
                [sg.Button('Quit', size=(34, 2))],
                [sg.Button('To Mp3', size=(34, 2))],
                [sg.InputText('', size=(39, 3))],
                [sg.Button('DeleteURL', size=(16, 2)),
                 sg.Button('Paste', size=(16, 2))]
            ]
            window = sg.Window('From youtube To mp3', layout)

das ist alles

Es tut mir leid, dass der Code schmutzig ist, aber ich hoffe, es hilft.

Ich konnte keine Website finden, die diese Reihe von Schritten vorstellt und erklärt, und habe sie daher auf Qiita hochgeladen.

Vielen Dank.

Recommended Posts

Wie man Youtube in MP3 konvertiert und es super sicher herunterlädt [Python]
[Python] Wie man MP3-Daten fFT
Übersicht über die virtuelle Python-Umgebung und deren Erstellung
So installieren Sie OpenCV in Cloud9 und führen es in Python aus
Konvertieren Sie das Ergebnis von Python Optparse, um es zu diktieren und zu verwenden
So verpacken und verteilen Sie Python-Skripte
So installieren und verwenden Sie pandas_datareader [Python]
[Python] So konvertieren Sie eine zweidimensionale Liste in eine eindimensionale Liste
So konvertieren Sie Python in eine exe-Datei
Python: Verwendung von Einheimischen () und Globalen ()
[Python] Berechnen von MAE und RMSE
Verwendung von Python zip und Aufzählung
Laden Sie einfach mp3 / mp4 mit Python und youtube-dl herunter!
So laden Sie YouTube-Videos mit pytube3 herunter
Verwendung ist und == in Python
Lesen Sie die CSV-Datei mit Python und konvertieren Sie sie unverändert in DataFrame
Suchen und laden Sie YouTube-Videos automatisch mit Python herunter
So generieren Sie eine Sequenz in Python und C ++
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
[Python] Verwendung von Hash-Funktion und Taple.
So installieren Sie den Cascade-Detektor und wie verwenden Sie ihn
Wie man Autokorrelation und partielle Autokorrelation mit Python zeichnet
Python datetime So berechnen Sie Datumsangaben und konvertieren Zeichenfolgen strftime, strptime [Definitive Edition]
[Python] So benennen Sie Tabellendaten und geben sie mit csv aus (to_csv-Methode)
So installieren Sie Python
So installieren Sie Python
Konvertieren Sie Datum und Uhrzeit in Zeitzonen in Unixtime in Python2.7
So konvertieren / wiederherstellen Sie einen String mit [] in Python
[Python] Konvertieren Sie Dezimalzahlen in Binär-, Oktal- und Hexadezimalzahlen
[Python] [Django] Verwendung des Auswahlfelds und Hinzufügen von Optionen
So konvertieren Sie den Python # -Typ für Super-Anfänger von Python: str
[Python] Konvertieren Sie Allzweckcontainer und Klasse ineinander
Laden Sie mp4 einfach teilweise mit Python und youtube-dl herunter!
[Python] So legen Sie den Download-Speicherort mit youtube-dl fest
So messen Sie die Wiedergabezeit von MP3-Dateien mit Python
So konvertieren Sie Gleitkommazahlen in Python in Binärzahlen
So konvertieren Sie eine JSON-Datei mit Python Pandas in eine CSV-Datei
[Python] So sortieren Sie Diktate in Listen und Instanzen in Listen
So laden Sie Dateien von Selenium of Python in Chrome herunter
[Python] So teilen und modularisieren Sie Dateien (einfach, Beispiel)
[Python] So erstellen Sie eine Korrelationsmatrix und eine Heatmap
Wie man Decorator in Django benutzt und wie man es macht
python, php, ruby Konvertieren von Dezimalzahlen in n
Python # So überprüfen Sie Typ und Typ für Super-Anfänger
Versuchen Sie es mit GUI, PyQt in Python
[Neueste Version 2020.8] So installieren Sie Python
[Python] Datum in Zeichenfolge konvertieren
So installieren Sie Python [Windows]
Konvertieren Sie numpy int64 in python int
python3: Verwendung der Flasche (2)
[Python] Liste in Pandas konvertieren [Pandas]
So konvertieren Sie mit Python [Anwendung] von einem Array in ein Wörterbuch
So tauschen Sie Elemente in einem Array in Python aus und wie kehren Sie ein Array um.
[Python] Verwendung von Liste 1
So aktualisieren Sie Pythons Tkinter auf 8.6
Herstellen einer Verbindung zu verschiedenen DBs über Python (PEP 249) und SQL Alchemy
[Pfeffer] Wie benutzt man es?
[Einführung in die Udemy Python3 + -Anwendung] 36. Verwendung von In und Not
Wie benutzt man Python Argparse?