Python script for download course from platzi.com

Overview

Platzi Downloader Tool

Platzi Downloader Tool Preview Esta es una pequeña herramienta que hace mucho y que te ahorra una gran cantidad de trabajo a la hora de descargar cursos de Platzi

Instalaciones necesarias

De momento solo se da referencia a la instalación en Sistemas GNU/Linux como Debian GNU/Linux, Ubuntu, ArchLinux

  • python 3.x.x

    Instalación en Debian GNU/Linux o Ubuntu

    Ejecuta: sudo apt-get install python3

    Instalación en ArchLinux y Manjaro

    Ejecuta: sudo pacman -S python

    Instalación en otros sistemas operativos o distribuciones

    Ingresa al Sitio Oficial de Python

    Puedes ver esta guia para Windows

  • pip

    Instalación en Debian GNU/Linux o Ubuntu

    Ejecuta: sudo apt-get install python3-pip

    Instalación en ArchLinux y Manjaro

    Ejecuta: sudo pacman -S python-pip

    Para otros sistemas operativos o distribuciones de GNU/Linux busca en Internet

    Puedes revisar esta guia para Windows

  • youtube-dl

    Instalación en Debian GNU/Linux o Ubuntu

    Ejecuta: sudo apt-get install youtube-dl

    Instalación en ArchLinux y Manjaro

    Ejecuta: sudo pacman -S youtuble-dl

    Instalación en otros sistemas o plataformas

    Ingresa al sitio oficial de youtube-dl para más información sobre instalaciones.

    Si realizas la instalación en Windows asegurarte de agregar el programa a la variable PATH, de este modo no se generaran problemas.

    Para no tener problemas de dependencias es recomendable instalar la dependencia python-pycryptodome

  • ffmpeg

    Instalación en Debian GNU/Linux o Ubuntu

    Ejecuta: sudo apt-get install ffmpeg

    Instalación en ArchLinux y Manjaro

    Ejecuta: sudo pacman -S ffmpeg



    Tip: Si algo falla al momento de la instalación prueba actualizar los repositorios de tu distro

Instalación de módulos python necesarios

Los pasos de instalación que se muestran son probados solo en sistemas GNU/Linux no es seguro que funcionen si tiene un sistema operativo diferente como Windows.

  • requests

    Ejecuta: pip3 install requests

  • lxml

    Ejecuta pip3 install lxml

  • colorama

    Ejecuta pip3 install colorama

Si al momento de la descarga te da un error prueba verifica si los módulos json y re están correctamente instalados.

Importante (WSL)

Debido a que el programa esta probado solo en distribuciones basadas en GNU/Linux, no se espera que funcione en Windows aunque se hagan las instalaciónes correctamente. Para usar el programa en Windows recomiendo usar WSL (Windows Subsystem For Linux).

Extra: Para una guia básica de la instalación en WSL puedes echar un vistaso aquí

Modo de empleo

Clic para abrir el video alt text

Notas:
El archivo cookies.txt debe guardarse en la carpeta donde se encuentra el scipt platzi-dtool.py para que el programa no genere errores.

Debido a que no tengo una suscripción en platzi no puede comprobar si el modo de descarga masiva de cursos funciona correctamente, si hay algún error estén atentos que tan pronto comienza el platzi day se corregirán lo antes posible.

Recomiendo que no descarguen los cursos en la carpeta donde se encuentra el programa y el resto de archivos, creen una nueva carpeta limpia para que no tengan problema alguno.

IMPORTANTE: Recomiendo que descarguen varios cursos a la vez, de ese modo puede aprovechar el maximo de la velocidad de descarga que brinde vuestra red.

Estructura de los directorios usados

Aquí una breve explicación de los directorios que se crearan y usaran para guardar los cursos descargados.

  • Descargando una ruta de aprendizaje o escuela

    Cuando se realizan este tipo de descargas se genera la siguiente estructura de directorios:

      Convensiones usadas:
          [CN] = Digitos que se usan para numerar los cursos para que queden ordenados
    
          [COURSE_NAME] = Nombre del curso.
    
          [SN] = Numero de seccion, digito que permite ordenar una seccion
    
          [SECTION_NAME] = Se refiere al nombre de la sección dentro del curso
    
          [LN] = Numero que identifica a una leccion dentro de una seccion
    
          [LESSON_NAME] = Nombre de la leccion
    

    Jerarquía de directorios

    El número uno en la jerarquía es la carpeta del curso, la cual se nombre de la siguiente manera:

      [CN] - [COURSE_NAME]
    

    Esto se hace para que se puedan ordenar y saber cual curso es él siguiente cuando se descargan rutas o escuelas de aprendizaje.

    Dentro de la carpeta del curso encontramos lo siguiente

      [CN] - [COURSE_NAME]
          [SN] - [SECTION_NAME]
    

    La estructura anterior hace referencia una sección dentro de un curso. Las secciones van enumeradas para que se pueda saber que sección es primero y cual es última.

    La siguiente estructura es:

      [CN] - [COURSE_NAME]
          [SN] - [SECTION_NAME]
              [LN] - [LESSON_NAME]
    

    La estructura anterior hace referencia a una lección que se encuentra contenida dentro de una sección la cual a su vez está contenida dentro de un curso.

    Las lecciones se enumeran para que se puedan ordenar y se pueda saber con cual continuar, el nombre de la lección en algunos casos no puede ser exacto, ya que algunos caracteres se reemplazan por otros o se eliminan para tener mayor compatibilidad un ejemplo es el caso del carácter :, que se reemplaza por la cadena - (espacio + -).

    La siguiente estructura se usa para almacenar la página de la lección, ya que en algunos casos esta contiene información como enlaces a otros recursos o resúmenes de la lección.

      [CN] - [COURSE_NAME]
          [SN] - [SECTION_NAME]
              [LN] - [LESSON_NAME]
              [LN] - extra_files
    

    Ya que algunas lecciones no son videos, se descargara la página web, la cual contiene el contenido de la lección tal como esta y se puede ver de forma offline, aunque se requiere conexión a Internet para cargar imagines.

    Cuando se descarga una lección de video, se descargara una página web, la cual es la página que se encuentra en la url de la clase, dicha página tiene el siguiente nombre.

      Estando en:
          [LN] - extra_files
              [LN] - webpage.html
    

    Otro archivo que se encontrará es un archivo llamado 000 - Preview.html, este archivo se encuentra en la carpeta del curso, y se trata de la página del curso, la puedes usar para saber cierta información del curs y también para saber como se estructura el curso aunque no haga falta.

  • Descargando un solo curso

    Cuando en el archivo que contiene la información de la descarga solo hay un curso la carpeta de este curso no contiene una numeración solamente el nombre.

      [COURSE_NAME]
          [SN] - [SECTION_NAME]
              [LN] - [LESSON_NAME]
              [LN] - extra_files
    

    De tal modo la estructura del curso será como la siguiente.

Con eso se concluye la explicación de los directorios usados por las descargas.

Recomendaciones de uso

  • Sistema operativo

    Este programa fue probado en ArchLinux, pero puedo sugerir que se ejecutara sin problemas en cualquier otra distribución de Linux siempre que se tengan los programas y los módulos de python correctamente instalados.

    Puedes probar en Windows aunque no estoy muy seguro de que funcione bien, debido a que usa un sistema de archivos diferente a los sistemas de archivos Unix.
    Si lo probaste y ocurrió algún error puedes abrir una discusión y poner la salida de la ejecución de ese modo podre arreglarlo rápidamente y dar soporte a usuarios de Windows

  • Descargando

    Si la descarga se pausa y no avanza más presiona CTL + C solo una vez, de este modo la descarga volverá a iniciarse y retomar desde el punto en el que encontraba.

    Puedes usar CTL + C tantas veces que quieras pero solo si se está descargando un video sabras que se está descargando cuando ves un texto que dice "Status: Downloading video" or algo similar.

    En carro de que la descarga se interrumpa, esta volverá a reiniciarse hasta que se haya descargado por completo, así que no tendrás problemas con esto.

Solución de problemas

Si te genera un problema al momento de correr el programa abre el archivo utils/text_utils.py y en la línea 6 deberás ver algo como esto: TERMINAL_COLUMNS = os.get_terminal_size().columns cambia su valor a 80 o un número cercano a este.

Si estas en Windows y experimentas problemas con la creación y guardado de archivos, puedes abrir una discusión y pones la salida del error, de ese modo me ayudaras a arreglar el error rápidamente.

Información extra

Las herramientas usadas en el programa no son de mi propiedad, son herramientas de código libre que llevan años funcionando aquí la lista de los programas que he usado:

Si te gusto el programa puedes darle una estrella.
Si tienes alguna idea de como mejorar el programa, puedes abrir una discusión y comentar, tal vez se pueda hacer algo.

Esta herramienta la cree debido a que mi conexión a Internet es realmente mala y solo está algo decente en horas de la noche, en las cuales ya no es posible aprovecharla debido al cansancio o al sueño.
Me gusta mucho aprender pero trasnochar todos los días no es bueno para el cuerpo y la mente, por eso me dije y si descargo las clases mientras duermo?, y así se creó este en 7 Dias xD

Ente proyectó no se hizo con intensiones de Piratería, ya que es solo una herramienta para las personas que no pueden cuentan con una conexión a Internet estable y de este modo pueden descargar las clases y verlas cuando quieran con más comodidad.

Owner
Devil64-Dev
Junior web developer, who wants to learn more about new technology every day.
Devil64-Dev
Stack Overflow Error Parser

A python tool that executes python files and opens respective Stack Overflow threads in browser for errors encountered.

Raghavendra Khare 3 Jul 24, 2022
Azure free vpn for students only! (Self hosted/No sketchy services/Fast and free)

Azpn-Azure-Free-VPN Azure free vpn for students only! (Self hosted/No sketchy services/Fast and free) This is an alternative secure way of accessing f

Harishankar Kumar 6 Mar 19, 2022
My homeserver setup. Everything managed securely using Portainer.

homeserver-traefik-portainer Features: access all services with free TLS from letsencrypt using your own domain running a side project is super simple

Tomasz Wójcik 44 Jan 03, 2023
This Lambda will Pull propagated routes from TGW and update VPC route table

AWS-Transitgateway-Route-Propagation This Lambda will Pull propagated routes from TGW and update VPC route table. Tested on python 3.8 Lambda AWS INST

4 Jan 20, 2022
PlaylistAudioBot - Telegram playlist download bot with ytdl

Telegram PlaylistAudioBot PlaylistAudioBot: 🇬🇧 Telegram playlist download bot

Hüzünlü Artemis [HuzunluArtemis] 14 Jul 22, 2022
Tomli is a Python library for parsing TOML. Tomli is fully compatible with TOML v1.0.0.

Tomli A lil' TOML parser Table of Contents generated with mdformat-toc Intro Installation Usage Parse a TOML string Parse a TOML file Handle invalid T

Taneli Hukkinen 313 Dec 26, 2022
1.本项目采用Python Flask框架开发提供(应用管理,实例管理,Ansible管理,LDAP管理等相关功能)

op-devops-api 1.本项目采用Python Flask框架开发提供(应用管理,实例管理,Ansible管理,LDAP管理等相关功能) 后端项目配套前端项目为:op-devops-ui jenkinsManager 一.插件python-jenkins bug修复 (1).插件版本 pyt

3 Nov 12, 2021
Replacement for the default Dark Sky Home Assistant integration using Pirate Weather

Pirate Weather Integrations This integration is designed to replace the default Dark Sky integration in Home Assistant with a slightly modified, but f

Alexander Rey 129 Jan 06, 2023
A simple but useful Discord Selfbot with essential features, made with discord.py-self.

Discord Selfbot Xyno Discord Selfbot Xyno is a simple but useful selfbot for Discord. It has currently limited useful features but it will be updated

Amit Pathak 7 Apr 24, 2022
Discord Bot for SurPath Hub's server

Dayong Dayong is dedicated to helping Discord servers build and manage their communities. Multipurpose —lots of features, lots of automation. Self-hos

SurPath Hub 6 Dec 18, 2021
A Telegram bot that add a dynamic caption to musics

Music Channel Manager A Telegram bot that add a dynamic caption to musics Deploy to Heroku What is it ? It manage your music channel. With just adding

13 Oct 18, 2022
Bearer API client for Python

Bearer Python Bearer Python client Installation pip install bearer Usage Get your Bearer Secret Key and integration id from the Dashboard and use the

Bearer 9 Oct 31, 2022
A Discord bot that controls Pico-8.

Pico-8 Discord Bot Synopsis: A Discord bot that controls Pico-8. Please let me know if you make any games with this tool! I will simplify the discord.

Camden 1 Jan 28, 2022
Discord Multitool made in python 3.9

XTool Discord Multitool 24 Features: Webhook Delete VC Lagger Fast Token Checker Mass Report [Not Done] Token rape 2K Characters Bypass Block bypass M

Tiie 50 Dec 20, 2022
A module to get data about anime characters, news, info, lyrics and more.

Animec A module to get data about anime characters, news, info, lyrics and more. The module scrapes myanimelist to parse requested data. If you wish t

DriftAsimov 31 Aug 31, 2022
The WhatsApp lib

yowsup WARNING It seems that recently yowsup gets detected during registration resulting in an instant ban for your number right after registering wit

Tarek 6.8k Jan 04, 2023
ANKIT-OS/TG-MUSIC-PLAYER a special repository. Its Is A Telegram Bot To Play To Play Music In Voice Chat

🔥 🎶 TG MUSIC PLAYER 🎶 🔥 The owner would not be responsible for any kind of bans due to the bot. • ⚡ INSTALLING ⚡ • • 🛠️ Lᴀɴɢᴜᴀɢᴇs Aɴᴅ Tᴏᴏʟs 🔰 •

ANKIT KUMAR 1 Dec 27, 2021
A Python Module That Uses ANN To Predict A Stocks Price And Also Provides Accurate Technical Analysis With Many High Potential Implementations!

Stox ⚡ A Python Module For The Stock Market ⚡ A Module to predict the "close price" for the next day and give "technical analysis". It uses a Neural N

Dopevog 31 Dec 16, 2022
𝐀 𝐦𝐨𝐝𝐮𝐥𝐚𝐫 𝐓𝐞𝐥𝐞𝐠𝐫𝐚𝐦 𝐆𝐫𝐨𝐮𝐩 𝐦𝐚𝐧𝐚𝐠𝐞𝐦𝐞𝐧𝐭 𝐛𝐨𝐭 𝐰𝐢𝐭𝐡 𝐮𝐥𝐭𝐢𝐦𝐚𝐭𝐞 𝐟𝐞𝐚𝐭𝐮𝐫𝐞𝐬 !!

𝐇𝐨𝐰 𝐓𝐨 𝐃𝐞𝐩𝐥𝐨𝐲 For easiest way to deploy this Bot click on the below button 𝐌𝐚𝐝𝐞 𝐁𝐲 𝐒𝐮𝐩𝐩𝐨𝐫𝐭 𝐆𝐫𝐨𝐮𝐩 𝐒𝐨𝐮𝐫𝐜𝐞𝐬 𝐆𝐞𝐧𝐞?

Mukesh Solanki 1 Dec 10, 2021
OGE-2022-na-Python - Solving problems in python for the OGE 2022

OGE-2022-na-Python Решение задачек на питоне для ОГЭ 2022 Тут разобраны разные в

Slava 0 Oct 14, 2022