[Python] Extrahiere die Video-ID aus der YouTube-Video-URL [Hinweis]

Vorwort

Es gibt viele Artikel zum Abrufen von YouTube-Video-URLs, aber Unterstützung für verkürzte URLs, die mit "https: // youtu.be /" beginnen, wenn Sie auf die Schaltfläche "Teilen" klicken, und URLs. Wenn Sie Abfrageparameter einschließen (z. B. "t = 15", das die Zeit angibt, oder "feature = youtu.be", das die Übertragung von der abgekürzten URL angibt), habe ich das Gefühl, dass nicht alle berücksichtigt wurden. Schreiben Sie sie daher hier als Memo. Versuchen. Der YouTube-URL-Abfrageparameter "t", der die Startposition der Wiedergabe angibt, ist übrigens "https: //youtu.be/r4Mkv-q4NmQ? t = 5437" Wie "https: //youtu.be/r4Mkv-q4NmQ? T = 5437s" Natürlich werden alle in Sekunden angegeben Wie https: //youtu.be/r4Mkv-q4NmQ? T = 1h30m37s Wenn Sie ◯ h △ m □ s eingeben, wird die URL ab" ◯ Stunden △ Minuten □ Sekunden "abgespielt!

Die YouTube-URL in diesem Artikel ist im Grunde meine gepostete Video- oder Kanal-URL!

Quellcode

Funktioniert mit Python3-Serien. Es scheint, dass es in der Python2-Serie kein "urllib.parse" -Modul gibt.

import urllib.parse
import re

##############################################################
##Extrahieren Sie die YouTube-Video-ID aus der URL-Liste
##Unterstützt normale URLs und verkürzte URLs. Bei nicht unterstützten URLs wird eine Fehlermeldung angezeigt
##Argumente: Liste der URLs
##Rückgabewert: Liste der extrahierten Video-IDs
##############################################################
def pick_up_vid_list(url_list):
  vid_list = []
  pattern_watch = 'https://www.youtube.com/watch?'
  pattern_short = 'https://youtu.be/'

  for i, url in enumerate(url_list):
    #Wenn es sich um eine normale URL handelt
    if re.match(pattern_watch,url):
      yturl_qs = urllib.parse.urlparse(url).query
      vid = urllib.parse.parse_qs(yturl_qs)['v'][0]
      vid_list.append(vid)

    #Für abgekürzte URL
    elif re.match(pattern_short,url):
      # "https://youtu.be/"Die 11 Zeichen nach der Video-ID
      vid = url[17:28]
      vid_list.append(vid)

    else:
      print('error:\n URL ist\"https://www.youtube.com/watch?\"Oder')
      print('  \"https://youtu.be/\"Bitte geben Sie eine URL an, die mit beginnt.')
      print('  - '+ str(i+1)+ 'Artikel:' + url)
  return vid_list

Kurzer Kommentar

In einer normalen URL, die mit "https: //www.youtube.com/watch?" Beginnt, entspricht die Video-ID dem "v" -Parameter der URL-Abfrage, also extrahiere ich sie! In der abgekürzten URL, die mit "https: // youtu.be /" beginnt, sind die 11 Zeichen nach "https: // youtu.be /" immer die Video-ID, also nehme ich sie heraus!

Ich war besorgt über die Möglichkeit, bis zu 12 Zeichen zu tragen und dachte, ich müsste mit einem regulären Ausdruck danach suchen, aber anscheinend ist es okay. → Über das Risiko, dass der v-Wert von YouTube das Nipotan Research Institute trägt Laut diesem Artikel scheint die Video-ID auch aus "[0-9] [a-z] [A-Z]", "-" und "_" zu bestehen. Laut "[Zeichen, die in URLs verwendet werden können, Zeichen, die nicht verwendet werden können](https://www.ipentec.com/document/web-url-invalid-char" Zeichen, die in URLs verwendet werden können, Zeichen, die nicht verwendet werden können ")" Es scheint, dass es für nichts anderes als dieses verwendet werden kann, daher werde ich die Anzahl der Zeichentypen nicht erhöhen, und wenn es nicht genug gibt, werde ich die Anzahl der Ziffern erhöhen.

Anwendungsbeispiel

url_list = [
'https://www.youtube.com/watch?v=k3nPaVj8-3w',
'https://www.youtube.com/watch?v=2k-uF-QPcEM&t=5',
'https://www.youtube.com/watch?v=5_Vy0ZtPo_w',
'https://youtu.be/_t-i0KLiJBk',
'https://youtu.be/tfIvsrRxaXg',
'https://youtu.be/biaC_2Mx7Mw?t=283',
'https://www.youtube.com/',
'https://www.youtube.com/channel/UCDWM7dKT5vLXqSi_YljdlBw']
vid_list = pick_up_vid_list(url_list)

for vid in vid_list:
  print (vid)

Ausführungsergebnis:

error:
URL ist"https://www.youtube.com/watch?"Oder
  "https://youtu.be/"Bitte geben Sie eine URL an, die mit beginnt.
  -7. https://www.youtube.com/
error:
URL ist"https://www.youtube.com/watch?"Oder
  "https://youtu.be/"Bitte geben Sie eine URL an, die mit beginnt.
  -8. https://www.youtube.com/channel/UCDWM7dKT5vLXqSi_YljdlBw
k3nPaVj8-3w
2k-uF-QPcEM
5_Vy0ZtPo_w
_t-i0KLiJBk
tfIvsrRxaXg
biaC_2Mx7Mw

Nachwort

Einige Standard-Python-Methoden können Abfrageparameter analysieren! Großer Komfort! Ich kann es nicht tun, ohne purl.js mit JavaScript zu verwenden! Natürlich können Sie es selbst implementieren, aber ... es ist ein Ärger.

Verweise

Verwendung regulärer Ausdrücke in Python - Qiita Verwendung des Python-Moduls für reguläre Ausdrücke (Match, Suche, Sub usw.)| note.nkmk.me Abrufen / Erstellen / Ändern der URL-Abfragezeichenfolge (Parameter) in Python| note.nkmk.me

Recommended Posts

[Python] Extrahiere die Video-ID aus der YouTube-Video-URL [Hinweis]
YouTube-Videoverwaltung mit Python 3
Laden Sie Videos von YouTube herunter (youtube-dl)
Ich habe versucht, das Gesicht aus dem Video zu erkennen (OpenCV: Python-Version)
Extrahieren Sie den Wert, der einem Wert am nächsten kommt, aus einem Listenelement in Python
Ich möchte mit Python eine beliebige URL aus der Zeichenfolge der HTML-Quelle extrahieren
Existenz aus Sicht von Python
Extrahieren Sie mit Python Text aus Bildern
Verwenden Sie die Flickr-API von Python
Extrahieren Sie die Targz-Datei mit Python
Python Hinweis: Holen Sie sich den aktuellen Monat
Extrahieren Sie mit Python Zeichenfolgen aus Dateien
Extrahieren Sie mit Python Zeilen, die den Bedingungen entsprechen, aus einer Textdatei
[Hinweis] Mit Python Daten von PostgreSQL abrufen
Notizen vom Anfang von Python 1 lernen
Hinweis für Pyjulia, die Julia aus Python anruft
# 5 [python3] Extrahiert Zeichen aus einer Zeichenfolge
Überprüfen Sie, ob die URL in Python vorhanden ist
Laden Sie Bilder von der URL-Liste in Python herunter
Starten Sie den Python-Interpreter über Git Bash
Ab Python 3.4 wird pip zum Standardinstallationsprogramm! ??
Python Hinweis: Die geheime Rolle von Kamma
[Hinweis] Führen Sie Python-Code aus Excel aus (xlwings)
DJango Hinweis: Von Anfang an (Formularverarbeitung)
Notizen vom Anfang von Python 2 lernen
[Python] Holen Sie sich die Hauptfarbe aus dem Screenshot
[Python] (Linie) Extrahieren Sie Werte aus Diagrammbildern
Hinweis: Python
Verwenden Sie PIL in Python, um nur die gewünschten Daten aus Exif zu extrahieren
Python-Notiz
Holen Sie sich den Inhalt von Git Diff aus Python
Python-Scraping Extrahieren Sie die Rennumgebung von der Pferderennseite
[Hinweis] Exportieren Sie das HTML der Site mit Python.
Laden Sie Bilder aus einer Textdatei herunter, die die URL enthält
[Automatisierung] Extrahieren Sie die Tabelle als PDF mit Python
ffmpeg-Erstellen Sie eine Python-Umgebung und teilen Sie das Video
Schreiben Sie eine Notiz über die Python-Version von Python Virtualenv
Der Typ, der Audio von YouTube-Wiedergabelisten herunterlädt
[Hinweis] Über die Rolle des Unterstrichs "_" in Python
Auszug nur vollständig aus dem Ergebnis von Trinity
Geben Sie die von Amazon CloudFront signierte URL in Python aus
Verwenden Sie das nghttp2 Python-Modul von Homebrew aus pyenvs Python
Rufen Sie Polly aus dem AWS SDK für Python auf
Versuchen Sie, direkt von Python 3 aus auf die YQL-API zuzugreifen
Extrahieren Sie mit Python Daten von einer Webseite
Extrahieren Sie Bilder und Tabellen mit Python aus PDF, um die Berichtslast zu verringern