Requisito previo: API de datos de Youtube para manejar videos | Serie 1
Recientemente hemos discutido las dos primeras variantes del método de lista de videos, Lista de videos por ID de video y Lista de videos por ID de múltiples videos. Ahora, analicemos las otras dos variantes:
- Lista de videos Videos más populares
- Lista de videos Mis videos favoritos
- Enumerar los videos más populares: el
regionCode
parámetro indica el país para el que está recuperando videos.videoCategoryId
El parámetro se puede configurar para recuperar los videos más populares en una categoría en particular.# import libraries
from
apiclient.discovery
import
build
import
pprint
# arguments to be passed to build function
DEVELOPER_KEY
=
"Your_developer_key"
YOUTUBE_API_SERVICE_NAME
=
"youtube"
YOUTUBE_API_VERSION
=
"v3"
# creating youtube resource object
# for interacting with API
youtube
=
build(YOUTUBE_API_SERVICE_NAME,
YOUTUBE_API_VERSION,
developerKey
=
DEVELOPER_KEY)
def
mostpopular_video_details():
# Call the videos.list method to retrieve video info
list_videos_byid
=
youtube.videos().
list
(
part
=
"id, snippet, contentDetails, statistics"
,
chart
=
'mostPopular'
, regionCode
=
'IN'
,
maxResults
=
2
, videoCategoryId
=
'').execute()
# extracting the results from search response
results
=
list_videos_byid.get(
"items"
, [])
# empty list to store video details
videos
=
[]
n
=
1
for
result
in
results:
videos.append(
"% s (% s) (% s) (% s) (% s) (% s)"
%
(n, result[
"snippet"
][
"title"
],
result[
'snippet'
][
'description'
],
result[
"snippet"
][
"publishedAt"
],
result[
'contentDetails'
],
result[
"statistics"
]))
n
=
n
+
1
print
(
"Videos:\n"
,
"\n"
.join(videos),
"\n"
)
if
__name__
=
=
"__main__"
:
mostpopular_video_details()
Producción:
- Listar mis videos favoritos: Esto requiere la autorización del usuario para recuperar los videos favoritos de un usuario. Al establecer el
myRating
parámetro en No me gusta, se pueden recuperar los videos que no me gustan.myRating
El parámetro indica que la búsqueda debe hacerse dentro de la cuenta del usuario autorizado. Dado que este método requiere la autenticación del usuario, crearemos unOAuth
tipo de credencial para este ejemplo. Siga los pasos a continuación para generar una identificación de cliente y una clave secreta.- Vaya a Google Developers Console y haga clic en Iniciar sesión en la esquina superior derecha de la página. Inicie sesión con las credenciales de la cuenta de Google válida. Si no tiene una cuenta de Google, primero configure una cuenta y luego use los detalles para iniciar sesión en la página de inicio de Google Developers.
- Ahora navegue hasta el panel del desarrollador y cree un nuevo proyecto.
- Haga clic en la opción Habilitar API.
- En el campo de búsqueda, busque API de datos de Youtube y seleccione la opción API de datos de Youtube que aparece en la lista desplegable.
- Será redirigido a una pantalla que dice información sobre la API de datos de Youtube, junto con dos opciones: HABILITAR y PROBAR API .
- Haga clic en la opción HABILITAR para comenzar con la API.
- En la barra lateral debajo de API y servicios, seleccione
Credentials
. - En la parte superior de la página, seleccione la
OAuth consent screen
pestaña. Seleccione una dirección de correo electrónico, ingrese un nombre de producto si aún no lo ha establecido y haga clic en el botón Guardar. - En la pestaña Credenciales, seleccione la lista desplegable Crear credenciales y elija
OAuth Client Id
. OAuth generalmente se usa cuando se requiere autorización, como en el caso de recuperar videos que le gustan a un usuario. - Seleccione el tipo de aplicación Otro, ingrese el nombre «YouTube Data API Myvideos», y haga clic en el botón Crear y haga clic en Aceptar.
- Haga clic en el botón Descargar a la derecha de la identificación del cliente para descargar el archivo JSON.
- Guarde y cambie el nombre del archivo como
client_secret.json
y muévalo al directorio de trabajo.
Instale bibliotecas adicionales usando elpip
comando:pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
A continuación se muestra el ejemplo:
# importing libraries
import
os
import
google.oauth2.credentials
import
google_auth_oauthlib.flow
from
googleapiclient.discovery
import
build
from
googleapiclient.errors
import
HttpError
from
google_auth_oauthlib.flow
import
InstalledAppFlow
# The CLIENT_SECRETS_FILE variable specifies
# the name of a file that contains
# client_id and client_secret.
CLIENT_SECRETS_FILE
=
"client_secret.json"
# This scope allows for full read / write
# access to the authenticated user's account
# and requires requests to use an SSL connection.
API_SERVICE_NAME
=
'youtube'
API_VERSION
=
'v3'
def
get_authenticated_service():
flow
=
InstalledAppFlow.from_client_secrets_file(
CLIENT_SECRETS_FILE, SCOPES)
credentials
=
flow.run_console()
return
build(API_SERVICE_NAME, API_VERSION,
credentials
=
credentials)
def
print_response(response):
print
(response)
# Build a resource based on a list
# of properties given as key-value pairs.
# Leave properties with empty values
# out of the inserted resource.
def
build_resource(properties):
resource
=
{}
for
p
in
properties:
# Given a key like "snippet.title", split
# into "snippet" and "title", where
# "snippet" will be an object and "title"
# will be a property in that object.
prop_array
=
p.split(
'.'
)
ref
=
resource
for
pa
in
range
(
0
,
len
(prop_array)):
is_array
=
False
key
=
prop_array[pa]
# For properties that have array values,
# convert a name like "snippet.tags[]"
# to snippet.tags, and set a flag to
# handle the value as an array.
if
key[
-
2
:]
=
=
'[]'
:
key
=
key[
0
:
len
(key)
-
2
:]
is_array
=
True
if
pa
=
=
(
len
(prop_array)
-
1
):
# Leave properties without values
# out of inserted resource.
if
properties[p]:
if
is_array:
ref[key]
=
properties[p].split(
', '
)
else
:
ref[key]
=
properties[p]
elif
key
not
in
ref:
# For example, the property is "snippet.title",
# but the resource does not yet have a "snippet"
# object. Create the snippet object here.
# Setting "ref = ref[key]" means that in the
# next time through the "for pa in range ..."
# loop, we will be setting a property in the
# resource's "snippet" object.
ref[key]
=
{}
ref
=
ref[key]
else
:
# For example, the property is
# "snippet.description", and the resource
# already has a "snippet" object.
ref
=
ref[key]
return
resource
# Remove keyword arguments that are not set
def
remove_empty_kwargs(
*
*
kwargs):
good_kwargs
=
{}
if
kwargs
is
not
None
:
for
key, value
in
kwargs.items():
if
value:
good_kwargs[key]
=
value
return
good_kwargs
def
videos_list_my_liked_videos(client,
*
*
kwargs):
kwargs
=
remove_empty_kwargs(
*
*
kwargs)
response
=
client.videos().
list
(
*
*
kwargs).execute()
return
print_response(response)
if
__name__
=
=
'__main__'
:
# When running locally, disable OAuthlib's
# HTTPs verification. When running in production
# *do not * leave this option enabled.
os.environ[
'OAUTHLIB_INSECURE_TRANSPORT'
]
=
'1'
client
=
get_authenticated_service()
videos_list_my_liked_videos(client,
part
=
'snippet, contentDetails, statistics'
,
myRating
=
'like'
, maxResults
=
2
)
Producción:
Mientras ejecuta el código, le pedirá el código de autorización. Para obtener el código, debemos seguir el enlace mencionado en la pantalla del símbolo del sistema arriba de la línea: Ingrese el código de autorización.
Ahora siga el enlace y copie y pegue el código de autorización obtenido al otorgar el permiso.
Para mayor comodidad, hemos establecido
maxResults
el parámetro en 2.
Consulte la documentación de la API de datos de Youtube-video.list() para obtener la lista completa de parámetros.
Referencia: https://developers.google.com/youtube/v3/docs/videos/list
Publicación traducida automáticamente
Artículo escrito por rashi_garg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA