[Python] Extrayez l'ID vidéo de l'URL de la vidéo YouTube [Remarque]

Préface

Il existe de nombreux articles sur la façon de récupérer les URL de vidéos YouTube, mais prend en charge les URL raccourcies commençant par https: // youtu.be / générées lorsque vous appuyez sur le bouton "Partager" et les URL. Si vous incluez des paramètres de requête (par exemple, t = 15 qui spécifie l'heure ou feature = youtu.be qui indique le transfert à partir de l'URL abrégée), j'ai senti que tous n'étaient pas pris en compte, alors écrivez-les ici sous forme de mémo. Essayer. À propos, le paramètre de requête d'URL YouTube t qui indique la position de début de lecture est https: //youtu.be/r4Mkv-q4NmQ? t = 5437 Comme https: //youtu.be/r4Mkv-q4NmQ? T = 5437s Bien sûr, tous sont spécifiés en secondes Comme https: //youtu.be/r4Mkv-q4NmQ? T = 1h30m37s Si vous entrez ◯ h △ m □ s, la lecture de l'URL commencera à partir de" ◯ heures △ minutes □ secondes "!

L'URL YouTube dans cet article est essentiellement l'URL de ma vidéo ou de ma chaîne publiée!

Code source

Fonctionne avec la série Python3. Il semble qu'il n'y ait pas de module ʻurllib.parse` dans la série Python2.

import urllib.parse
import re

##############################################################
##Extraire l'identifiant de la vidéo YouTube de la liste d'URL
##Prend en charge l'URL normale et l'URL raccourcie. Message d'erreur affiché pour les URL non prises en charge
##Arguments: liste des URL
##Valeur de retour: liste des identifiants vidéo extraits
##############################################################
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):
    #Lorsqu'il s'agit d'une URL normale
    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)

    #Pour une URL abrégée
    elif re.match(pattern_short,url):
      # "https://youtu.be/"Les 11 caractères suivant l'ID vidéo
      vid = url[17:28]
      vid_list.append(vid)

    else:
      print('error:\n URL est\"https://www.youtube.com/watch?\"Ou')
      print('  \"https://youtu.be/\"Veuillez spécifier une URL commençant par.')
      print('  - '+ str(i+1)+ 'Article:' + url)
  return vid_list

Bref commentaire

Dans une URL normale qui commence par https: //www.youtube.com/watch?, L'ID vidéo correspond au paramètre v de la requête d'URL, donc je l'extraye! Dans l'URL abrégée commençant par https: // youtu.be /, les 11 caractères suivantshttps: // youtu.be /sont toujours l'identifiant de la vidéo, donc je le retire!

Je m'inquiétais de la possibilité de transporter jusqu'à 12 caractères et j'ai pensé que je devais le chercher avec une expression régulière, mais apparemment, ça va. → À propos du risque que la valeur de v sur YouTube soit reportée-Nipotan Research Institute De plus, selon cet article, il semble que l'ID vidéo soit composé de «[0-9] [a-z] [A-Z]», «-» et «_». Selon "[Caractères qui peuvent être utilisés dans les URL, caractères qui ne peuvent pas être utilisés](https://www.ipentec.com/document/web-url-invalid-char" Caractères qui peuvent être utilisés dans les URL, caractères qui ne peuvent pas être utilisés ")" Il semble qu'il ne puisse pas être utilisé pour autre chose que cela, donc je n'augmenterai pas le nombre de types de caractères, et s'il n'y en a pas assez, j'augmenterai le nombre de chiffres.

Exemple d'utilisation

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)

Résultat de l'exécution:

error:
L'URL est"https://www.youtube.com/watch?"Ou
  "https://youtu.be/"Veuillez spécifier une URL commençant par.
  -7ème: https://www.youtube.com/
error:
L'URL est"https://www.youtube.com/watch?"Ou
  "https://youtu.be/"Veuillez spécifier une URL commençant par.
  -8ème: https://www.youtube.com/channel/UCDWM7dKT5vLXqSi_YljdlBw
k3nPaVj8-3w
2k-uF-QPcEM
5_Vy0ZtPo_w
_t-i0KLiJBk
tfIvsrRxaXg
biaC_2Mx7Mw

Épilogue

Certaines méthodes Python standard peuvent analyser les paramètres de requête! Grand confort! Je ne peux pas le faire sans utiliser purl.js avec JavaScript! Bien sûr, vous pouvez l'implémenter vous-même, mais ... c'est un problème.

Les références

Comment utiliser les expressions régulières en Python --Qiita Comment utiliser le module d'expression régulière de Python re (correspondance, recherche, sous, etc.)| note.nkmk.me Obtenir / créer / modifier la chaîne de caractères de requête URL (paramètre) en Python| note.nkmk.me

Recommended Posts

[Python] Extrayez l'ID vidéo de l'URL de la vidéo YouTube [Remarque]
Gestion de vidéos YouTube avec Python 3
Télécharger des vidéos de YouTube (youtube-dl)
J'ai essayé de reconnaître le visage de la vidéo (OpenCV: version python)
Extraire la valeur la plus proche d'une valeur à partir d'un élément de liste en Python
Je souhaite extraire une URL arbitraire de la chaîne de caractères de la source html avec python
Existence du point de vue de Python
Extraire du texte d'images avec Python
Utilisez l'API Flickr de Python
Extraire le fichier targz en utilisant python
Remarque Python: obtenez le mois en cours
Extraire des chaînes de fichiers avec Python
Extraire les lignes qui correspondent aux conditions d'un fichier texte avec python
[Note] Obtenir des données de PostgreSQL avec Python
Notes d'apprentissage depuis le début de Python 1
Remarque pour Pyjulia appelant Julia depuis Python
# 5 [python3] Extraire des caractères d'une chaîne de caractères
Vérifiez si l'URL existe en Python
Télécharger des images à partir de la liste d'URL en Python
Lancez l'interpréteur Python depuis Git bash
Depuis Python 3.4, pip devient le programme d'installation standard! ??
Note Python: le rôle secret de Kamma
[Note] Exécuter du code Python à partir d'Excel (xlwings)
Remarque DJango: depuis le début (traitement de formulaire)
Notes d'apprentissage depuis le début de Python 2
[Python] Obtenez la couleur principale de la capture d'écran
[Python] (Line) Extraire les valeurs des images graphiques
Remarque: Python
Utilisez PIL en Python pour extraire uniquement les données souhaitées d'Exif
Note de Python
Récupérer le contenu de git diff depuis python
Python grattage Extraire l'environnement de course du site de courses de chevaux
[Note] Exportez le html du site avec python.
Télécharger des images à partir d'un fichier texte contenant l'URL
[Automation] Extraire le tableau en PDF avec Python
ffmpeg-Construisez un environnement python et divisez la vidéo
Écrire une note sur la version python de python virtualenv
Le gars qui télécharge de l'audio à partir de listes de lecture YouTube
[Note] À propos du rôle du trait de soulignement "_" en Python
Extrait uniquement complet du résultat de Trinity
Émettre l'URL signée Amazon CloudFront en Python
Utilisez le module Python nghttp2 de Homebrew de Python de pyenv
Appeler Polly à partir du kit SDK AWS pour Python
Essayez d'accéder à l'API YQL directement depuis Python 3
Extraire des données d'une page Web avec Python
Extraire des images et des tableaux de pdf avec python pour réduire la charge de reporting