Buscando contenido específico en Netflix con Python
Luis Ch enero 02, 2025 #api #python #proyectosIntro
Durante estas vacaciones quise aprovechar el tiempo libre para completar al menos una serie de TV. Evitando series inconclusas, ya que no quiero volver a engancharme a series que terminan siendo canceladas. En esta ocasión buscaremos en la plataforma de Netflix, la cual como bien sabemos tiene la fama de cancelar muchas de las series que produce.
Solución
Vamos a filtrar el contenido para encontrar series de TV que tengan como estatus Ended
(finalizada). En el sitio web de TMDB podemos ver informacion completa sobre series y películas. Nos permite filtrar el contenido por plataformas y hasta por regiones, pero lamentablemente no permite filtrar por estatus. Sin embargo, desde su API, podemos acceder a una gran cantidad de filtros y entre ellos, podemos filtrar por estatus.
TMDB API
Descubrir Series de TV
Iniciamos sesión en el portal de desarrolladores de TMDB, y vamos a la sección Descubrir series. En dicha sección podremos ver un listado de los endpoints[1] disponibles, la documentación de estos y una pequeña interfaz para probar la API.
En esta última sección podremos usar directamente la API, y también nos muestra el código para realizar la consulta en distintos lenguajes de programación. Copia la API key que puedes ver en al campo "Credentials" o en el código de ejemplo.
En la documentación del endpoint encontraremos una larga lista de filtros, pero sólo usaremos algunos de ellos.
with_status
: El estatusEnded
se representa con el valor3
.with_watch_providers
: ID de la plataforma en la que debe estar disponible el contenido, es necesario especificar la región. El ID de la plataforma Netflix es8
.watch_region
: acá especificamos la región, que en mi caso seráVE
.with_networks
: para obtener series originales de la compañia especificada. El ID de la network de Netflix es213
.
Los valores mencionados actualmente fueron extraidos del contenido detallado, de una serie original de Netflix, obtenidos desde la API de TMDB.
En el caso del estatus para series de TV no se especifica en la documentación, pero sí hay una clara referencia en el foro de TMDB.
Preparamos el código
Comenzamos creando la estructura base del proyecto. Desde Linux lo hacemos con los siguientes comandos.
# Creamos un directorio para el proyecto y entramos
# Creamos el entorno virtual de Python y lo activamos
# Actualizamos pip e instalamos los requerimientos del proyecto
# Creamos los archivos de python que luego escribiremos
Ahora creamos un módulo de python con los modelos de los objetos que obtendremos de la API, basados en los resultados de la función discover.
models.py
:
"""Models"""
"""Media Content class"""
: =
:
"""TV show content"""
:
:
:
"""Response from TMDB API"""
:
:
:
:
Ahora creamos el módulo principal (discover.py
), donde importaremos el modulo models.py
y escribiremos toda la funcionalidad. Es necesario crear un archivo llamado .env
dentro de nuestro proyecto, donde vamos a almacenar nuestra API key como una variable de entorno.
.env
:
TMDB_API_KEY= coloca aqui tu clave secreta
Importamos todos los módulos necesarios, declaramos las constantes y cargamos la variable de entorno con nuestra clave secreta.
discover.py
:
"""Module to discover content in TMDB"""
=
=
# CONSTANTS
: =
: = 8
: = 213
: = 3
: =
...
Ahora, en el mismo módulo vamos a crear la función "obtener series".
discover.py
:
...
"""Funcion que retorna los resultados de la API de TMDB."""
=
=
=
=
=
return
...
Y por último, vamos a modelar esos datos y presentarlos en una tabla.
discover.py
:
...
"""Función principal"""
=
=
+=
=
=
Resultado
Estos son los principales resultados de TMDB, de series completas en Netflix disponibles para Venezuela.
Y acá filtramos para obtener series originales de Netflix.
Conclusiones
De esta forma he podido encontrar series completas en la plataforma de Netflix. Además, ajustando los filtros podemos obtener diferentes resultados por ejemplo, buscar contenido en multiples plataformas o en alguna otra plataforma específica como Apple TV.
Esta versión del código la escribí hace tiempo, actualmente estoy creando una versión con interfaz web (Web UI), para facilitar el acceso a todo tipo de usuarios, ya que esta version funciona desde la línea de comandos (CLI).
Además, en este caso obtenemos los primeros 20 resultados, luego implementaremos paginación.
Y por supuesto, puedes acceder al código completo en este repositorio.