Git Product home page Git Product logo

download-platzi's Introduction

Descarga automática de Platzi

Descarga automática mediante un script de Python utilizando Playwright y FFmpeg.

🎭 Playwright es un framework para web testing y automatizacion. Tambien se lo utiliza para realizar web scraping y esta disponible en varios lenguajes, por lo que el codigo podria ser traducido a Node.js, .NET o Java.

En este caso es utilizado junto con la herramienta FFmpeg para realizar descargas automatizadas de videos de Platzipertenecientes a un curso.

Instalación

  • Instalar Python.
  • Descargar o clonar el codigo en una carpeta con git.
git clone https://github.com/freddxvill/Download-platzi.git
  • Crear un entorno virtual de python dentro de la carpeta. Con virtualenv utilizar el siguiente comando:
virtualenv venv
  • Activa el entorno. En Windows - Powershell:
.\venv\Scripts\activate
  • Instalar las dependencias del archivo requirements.txt en el entorno.
pip install -r requirements.txt
  • Despues de tener Playwright instalado. Instalar los navegadores, que seran controlados por Playwright.
playwright install

Instalacion de FFmepg

Descargar FFmepg desde (https://ffmpeg.org/) para windows. En Windows descomprimir el .zip en el disco C y añadir su ruta a las variables del sistema, en path.

Esta herramienta permite descargar videos no solo de links directos, sino tambien de videos tipo streaming en tiempo real tipo (M-DASH y HLS).

M-DASH y HLS son protocolos que se ejecutan a través de HTTP, utilizan TCP como protocolo de transporte, dividen el vídeo en segmentos con un archivo de índice adjunto y ofrecen transmisión de velocidad de bits adaptable.

Para saber mas ver : Qué es M-DASH y HLS

Instrucciones

Crear un cuenta en Platzi, entrar en la pagina, realizar el login y despues cerrar el navegador.

Modificar en el script de python los datos de su navegador. Para ver las direcciones, escribir arriba del navegador en url: chrome://version . Para el user agent debe ir a what is my user agent y copiarlo.

user_data = 'C:/Users/.../AppData/Local/Google/Chrome/User Data' # Debe terminar en User Data
chrome_path = 'C:/Users/.../AppData/Local/Google/Chrome/Application/chrome.exe'
user_agent_nav = """ Mozilla/5.0 (Windows NT 10.0; Win64; x64)
                 AppleWebKit/537.36 (KHTML, like Gecko)
                 Chrome/104.0.0.0 Safari/537.36 """   # version de chrome 104, coloque la version del navegador

Esto con el fin de que el navegador este autenticado en la pagina y no abrir el navegador mientras descarga.

Ejecutar el archivo platzi.py (con el entorno activado)

python platzi.py

En la consola se mostrara lo siguiente:

Descargador de cursos [colocar los datos correctamente]
Importante: Debe estar ya logeado con su navegador Chrome
--------------------------------------------------------------------------------------
Curso [copiar el link de la portada del curso][La pagina donde se muestra el contenido]
Ejm: https://platzi.com/cursos/notacion-matematica/
Link curso: https://platzi.com/cursos/web-scraping/

Path [direccion de la carpeta donde sera descargado][ejm:'D:/cursos_programacion/'][debe terminar con un / ]
[ Se creara una carpeta dentro del Path con el nombre del curso ]
Path: D:/dir1/dir2/

Curso [Nombre del curso][se colocara ese nombre a la carpeta]
Curso: Curso de fundamentos de web scraping con python y xpath
--------------------------------------------------------------------------------------

y comenzara la descarga del curso.

Path ----> D:/dir1/dir2/curso de fundamentos de web scraping con python y xpath

Iniciando ...

link: ok
Clase ok
--------- Descargando clase: 1_Qué es el web scraping ---------
frame=3629 fps=88 q=-1.0 Lsize= 10901kB time=00:02:06.97 bitrate= 795 kbits/s speed=3.09x

link: ok
Clase ok
--------- Descargando clase: 2_Por qué aprender webscraping hoy ---------
frame=5575 fps=88 q=-1.0 Lsize= 10901kB time=00:03:05.97 bitrate= 735 kbits/s speed=3.5x

link: ok
Clase ok
--------- Descargando clase: 3_Python- el lenguaje mas poderoso para extraer datos ---------
frame=6032 fps=88 q=-1.0 Lsize= 10901kB time=00:03:21.97 bitrate= 735 kbits/s speed=3.5x
    .
    .
    .
    .
    .
    .

clases: 21
Descarga terminada: curso de fundamentos de web scraping con python y xpath

Una vez finalizado, ir al carpeta para ver los videos descargados.

Captura2.png

Funcionamiento del script

El script tomara el control del navegador Chrome (puede ser cambiado a otro tipo de navegadores), Playwright abrirá un navegador (en este caso Chrome), pero este sera el navegador de uso habitual con el que estamos autenticados en la pagina. Posteriormente se obtine los links de cada clase utilizando BeautifulSoup. Una vez obtenido los links de las clases, se dirige a la primera clase del curso y con Playwright se intercepta todas las requests que hace la pagina. Se captura el link del video en streaming y se lo pasa a ffmpeg para que realize la descarga y lo convierta directamente a .mp4.

Notas importantes

  • Si el script se detiene en la página, solo debe detener el script y volverlo a correr. El script detectará los archivos ya descargados, para no volverlos a descargar.
  • El script descargará videos con resolución 1080x720, pero puede cambiarlo a 1920x1080 modificando dentro del script, en la funcion download, después de '-map' en vez de '0:1' colocar '0:3'. Esto seleccionará el video stream a 1080p, el cual tendrá un mayor tamaño, por lo cual la descarga tomará un poco más de tiempo.

Referencias

download-platzi's People

Contributors

freddxvill avatar

Stargazers

Joshua Cobos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.