Gestion de vidéos YouTube avec Python 3

Cette fois, je vais essayer d'afficher une liste de vidéos de mon compte sur la console.

Environnement de développement

Procédure approximative

  1. Préparation de l'API Google
  2. Créez un environnement virtuel pour Python
  3. Exécutez Python

URL de référence

http://silver-shell.org/blog/?p=227 http://qiita.com/ottati/items/f7782bc834847470d4c8

Préparation de Google Api

Le contrôle se fait dans la Google API Console.

Création de projet et certification

Pour utiliser l'API Google, vous devez créer un "projet". Sélectionnez "Bibliothèque" dans le menu de gauche [https://console.developers.google.com/apis/library) et sélectionnez l'API de données YouTube. Sélectionnez "Créer un projet". (Il existe d'autres façons de créer un "projet") Créez un projet avec un nom approprié. Veuillez consulter ici pour supprimer le projet. 006.png

Informations d'authentification

Sélectionnez "Bibliothèque" dans le menu de gauche, Sélectionnez l'API de données YouTube. Activez le bouton à côté de "Youtube API Data v3". Si vous l'activez, il y aura un bouton appelé "Créer des informations d'identification", alors cliquez dessus.

002.png

Le même écran peut également être affiché en sélectionnant "Credentials" -> "Credentials" -> "Select with Wizard". 009.png

Ajoutez des informations d'identification à votre projet

"Déterminez le type d'informations d'identification requises" pour "YouTube Data API v3" Remplacez "où appeler l'API" par "navigateur Web (Javascript)" Réglez "Type de données à accéder" sur "Données utilisateur" Cliquez sur "Informations d'identification requises". 003.png

Créer un client OAuth 2.0

Donnez un nom approprié en anglais pour l'identification. 004.png

L'URI de redirection approuvée est "http: // localhost: 8080 /" À (Cette partie peut changer en fonction de l'environnement. Il peut s'agir de 8000 ou 8090, et elle peut ne pas fonctionner à moins que vous n'y mettiez le dernier "/".) 005.png

Télécharger les identifiants

Cliquez sur le bouton "Télécharger" pour télécharger le fichier json qui décrit les paramètres à utiliser sur Python. Vous pouvez le télécharger après avoir terminé les paramètres ici, mais le nom du fichier peut être différent de celui que vous avez téléchargé ici. (Même contenu sauf pour le nom du fichier) (Cette fois, c'était un fichier appelé client_id.json.) 007.png

Créer un environnement virtuel pour Python

Créez un nouvel environnement virtuel Python à utiliser dans le terminal (invite de commande pour Windows). Cette fois, je l'ai nommé youtube.

command


conda create -n youtube python=3.5.3
#Lors de la création avec un ensemble d'Anaconda
# conda create -n youtube python=3.5.3 anaconda
#Lors de la vérification de l'environnement créé
# conda info -e
# conda list -n youtube
#Lors de la suppression de l'environnement virtuel créé
# conda remove -n youtube --all

Activation de l'environnement virtuel

Le travail ultérieur est effectué dans l'environnement virtuel.

command


# Windows
activate youtube
#Désactiver
# deactivate

# Mac
source activate youtube
#Désactiver
# source deactivate

Installation de Django

cmd


conda install -c https://conda.anaconda.org/anaconda django

Installez le client Google Api

cmd


pip install --upgrade google-api-python-client

Installez oauth2client

https://github.com/google/oauth2client

cmd


pip install --upgrade oauth2client

Mettre à jour juste au cas où

http://mikegrouchy.com/blog/2014/06/pro-tip-pip-upgrade-all-python-packages.html

cmd


pip freeze --local | grep -v '^\-e' | cut -d = -f 1  | xargs pip install -U

Exécuter Python

Créer un projet Python

Créez un répertoire pour enregistrer le fichier Python et y déplacer le fichier téléchargé.

Créez un fichier Python.

Cette fois, nous obtiendrons une liste des fichiers téléchargés. Certaines modifications ont été apportées en fonction du script «Obtenir ma vidéo téléchargée» à l'URL ci-dessous.

https://developers.google.com/youtube/v3/code_samples/python?hl=ja#retrieve_my_uploads

Créez un fichier Python qui décrit le script ci-dessous. (Cette fois nommé main.py) 010.png

main.py


#! env python
# -*- coding: utf-8 -*-

import httplib2
import os
import sys
import glob

from apiclient.discovery import build
from oauth2client.client import flow_from_clientsecrets
from oauth2client.file import Storage
from oauth2client.tools import argparser, run_flow

if __name__ == '__main__':
    #Remplacez le répertoire actuel par l'emplacement du fichier exécutable
    os.chdir(os.path.dirname(os.path.abspath(sys.argv[0])))

    CLIENT_SECRETS_FILE = "client_id.json"  #Nom du fichier téléchargé

    MISSING_CLIENT_SECRETS_MESSAGE = """
    WARNING: Please configure OAuth 2.0

    To make this sample run you will need to populate the client_secrets.json file
    found at:

       %s

    with information from the Developers Console
    https://console.developers.google.com/

    For more information about the client_secrets.json file format, please visit:
    https://developers.google.com/api-client-library/python/guide/aaa_client_secrets
    """ % os.path.abspath(os.path.join(os.path.dirname(__file__),
                                       CLIENT_SECRETS_FILE))

    YOUTUBE_READONLY_SCOPE = "https://www.googleapis.com/auth/youtube.readonly"
    YOUTUBE_API_SERVICE_NAME = "youtube"
    YOUTUBE_API_VERSION = "v3"

    CLIENT_SECRETS_FILE_PATH = glob.glob(os.path.join(os.getcwd(), CLIENT_SECRETS_FILE))[0]

    flow = flow_from_clientsecrets(os.path.join(os.getcwd(), CLIENT_SECRETS_FILE_PATH),
                                   message=MISSING_CLIENT_SECRETS_MESSAGE,
                                   scope=YOUTUBE_READONLY_SCOPE)

    storage = Storage("%s-oauth2.json" % sys.argv[0])
    credentials = storage.get()

    if credentials is None or credentials.invalid:
        flags = argparser.parse_args()
        credentials = run_flow(flow, storage, flags)

    youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
                    http=credentials.authorize(httplib2.Http()))

    channels_response = youtube.channels().list(
        mine=True,
        part="contentDetails"
    ).execute()

    for channel in channels_response["items"]:
        uploads_list_id = channel["contentDetails"]["relatedPlaylists"]["uploads"]
        print("Videos in list %s" % uploads_list_id)
        playlistitems_list_request = youtube.playlistItems().list(
            playlistId=uploads_list_id,
            part="snippet",
            maxResults=50
        )
        while playlistitems_list_request:
            playlistitems_list_response = playlistitems_list_request.execute()

            for playlist_item in playlistitems_list_response["items"]:
                title = playlist_item["snippet"]["title"]
                video_id = playlist_item["snippet"]["resourceId"]["videoId"]
                print("%s (%s)" % (title, video_id))

            playlistitems_list_request = youtube.playlistItems().list_next(
                playlistitems_list_request, playlistitems_list_response)

Première exécution

Lors de l'exécution dans un terminal sur un environnement virtuel (invite de commande pour Windows)

cmd


cd (Répertoire de projet Python)
python main.py

La première fois que vous l'exécutez, le navigateur démarre "(Le nom des informations d'identification) demande l'autorisation suivante." Sera affiché, alors donnez la permission.

Exécution terminée

Après avoir exécuté ce qui précède, la liste des vidéos téléchargées jusqu'à présent sera affichée sur la console.

Autres contrôles

Diverses commandes autres que l'affichage de la liste sont possibles. Bien sûr, lors de la suppression d'une vidéo, assurez-vous de la vérifier soigneusement avant de le faire à vos propres risques.

https://developers.google.com/youtube/1.0/developers_guide_python

Recommended Posts

Gestion de vidéos YouTube avec Python 3
Obtenez des données Youtube avec python
[GUI en Python] PyQt5-Layout management-
Gestion des mots de passe avec python: trousseau de clés
Lecture vidéo avec son sur python !! (tkinter / imageio)
FizzBuzz en Python3
Grattage avec Python
Grattage avec Python
Enregistrer la vidéo image par image avec Python OpenCV
Python avec Go
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
Création de tableaux Excel avec Python [Table de gestion des progrès]
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Collectez des informations vidéo sur "Chanter avec XX personnes" [Python] [API de données Youtube]
[Python] J'ai créé un téléchargeur Youtube avec Tkinter.
Publiez le titre en plein essor de YouTube sur Twitter avec python3
Communication série avec Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Grattage en Python (préparation)
Essayez de gratter avec Python.
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
"Orienté objet" appris avec python
Manipuler yaml avec python
Résolvez AtCoder 167 avec python
Communication série avec python
[Python] Utiliser JSON avec Python
Apprendre Python avec ChemTHEATER 05-1
Apprenez Python avec ChemTHEATER
Exécutez prepDE.py avec python3
1.1 Premiers pas avec Python
Collecter des tweets avec Python
Binarisation avec OpenCV / Python
3. 3. Programmation IA avec Python
Méthode Kernel avec Python
Grattage avec Python + PhantomJS
Publier des tweets avec python
Conduisez WebDriver avec python
Utiliser mecab avec Python 3
[Python] Redirection avec CGIHTTPServer
Jouez à YouTube en Python
Analyse vocale par python
Pensez à yaml avec python
Utiliser Kinesis avec Python
Premiers pas avec Python
Utiliser DynamoDB avec Python
Getter Zundko avec python