Python script to automate youtube-dl downloads

Overview

Automated Download Tool

!! Project status

I am writing a new version of this program, which will solve several errors. The new version only supports GNU/Linux (ArchLinux, Ubuntu, Debian and derivates).

Windows support needs more time to be tested. (you can test it on WSL and send reports to me)

MacOS (it will not be tested)

The program can run on VirtualBox, or LiveUSB (the second is best).

I can write a guide to use the program in a Live System (Live USB), please open an issue if you need it.

Comments
  • Error al descargar cursos Windows WSL Ubuntu 20.04 LTS

    Error al descargar cursos Windows WSL Ubuntu 20.04 LTS

    Al intentar realizar una descarga de cualquier curso/escuela aparece este error luego de descargar el html, uso windows 10 con WSL de ubuntu 20.04 LTS, tengo el mismo WSL en un computador de escritorio también con windows 10 y funciona perfecto. Están instalados los módulos solicitados en readme.md y todas las dependencias solicitadas. Probe cambiando el directorio del curso, limpiando el directorio, cambiando las cookies, clonando el proyecto en otro directorio y el error persiste.

    EDIT: el mensaje de error es de IndexError: list index out of range

    Codigo de error: Traceback (most recent call last): File "../platzi-dtool/platzi-dtool.py", line 78, in main() File "../platzi-dtool/platzi-dtool.py", line 66, in main scraper.init() File "/home/jjaraa/platzi-dtool/utils/extractor/scraper.py", line 54, in init scrape_course("", response[1], response[0]) File "/home/jjaraa/platzi-dtool/utils/extractor/scraper.py", line 220, in scrape_course l_url = lesson.xpath('a[@class="MaterialItem-anchor"]'

    opened by Jjaraa 5
  • sugerencias  a esta herramienta,

    sugerencias a esta herramienta,

    hola bro muy buena tu herramienta te agradezco que la compartas, mi energia electrica falla en las tardes y noches lo cual me deja sin internet por un rato la planta solo cubre el cuarto de mis padres, seria muy interesante añadirle ciertas características al comportamiento del script solo seria meterle mano a la clase download_video y modificar el comando para añadir estas características y como recibirlas como parámetros, sea en txt o algo asi

    • Ver el porcentaje de descarga por video y general de un curso
    • cuando exista un error de descarga que se guarde en un fichero txt como un log y asi poder saber que revisar para descargar manualmente
    • poder regular la frecuencia de descarga, añadir un tiempo de pausa para evitar baneos de cuenta
    • capacidad para descargar los subtitulos
    • descargar en maxima calidad o elegir la calidad de la descarga
    • seleccionar la velocidad maxima de la descarga
    opened by JeanCarlosDev17 4
  • ModuleNotFoundError: No module named 'utils.downloader'

    ModuleNotFoundError: No module named 'utils.downloader'

    parece en la último commit de la rama master no tiene algunos ficheros o están renombrados y me lanza este error al tratar ejecutar el programa:

    # ./dtool.py
    Traceback (most recent call last):
      File "./dtool.py", line 3, in <module>
        from utils.downloader.resources import ResourceDownloader
    ModuleNotFoundError: No module named 'utils.downloader'
    

    como lo podria solucionar? gracias de antemano

    opened by r3gor 3
  • Problemas para instalar los módulos de python

    Problemas para instalar los módulos de python

    Que tal, soy yo de nuevo :( , tuve que formatear el sistema anterior , entonces me propuse a actualizar todo de nuevo , instale todo lo referido a ubuntu , instale WSL 2 en UBuntu 18.04 y ejecuté sudo apt-get update && sudo apt-get upgrade. para actualizar todas lo que estuviera en una versión anterior, instale python y demas programas necesarios con el comando sudo apt-get install python3 youtube-dl ffmpeg , todo super bien hasta allí.

    El problema sucede es cuando intento instalar los módulos de python con pip dentro de la carpeta del programa image

    Es como si Pip no se ubiese instalado , entonces trato de ejecutar el otro comando sudo apt-get install wget

    sh -c "$(wget -O- https://raw.githubusercontent.com/Devil64-Dev/automated-dtool/master/extra/install.sh)"

    pero me sale el siguiente problema image

    *Por favor discúlpame si eh omitido algo para poder que me reconozcan los comandos :( , también quería preguntarte sobre , si cambio la interfaz y donde puedo encontrar el video demo mostrando el proceso de uso , mil disculpas por las molestias

    opened by estebanardila57 3
  • Error  de descarga

    Error de descarga

    image estaba descargando una escuela iba de maravilla hasta que llego este curso, posterior lo intente de forma individual mismo resultado, estoy pensando que esa comilla en el nombre afecta al algoritmo

    opened by JeanCarlosDev17 3
  • Pausa entre cursos

    Pausa entre cursos

    hola logre realizar los cambios despues de probarla por un dia me ayudaste mucho, en el modo multi curso tienes un detalle un input en el scraper en la linea 242 en el metodo scrape_course(), que hace que tengas que dar enter para seguir al siguiente curso de la lista, no estoy si afecta en el algo si lo hace por favor me lo mencionas, pero lo elimine, y ahora va fluido. creo que esa linea iria perfecto al final del metodo scrape_courses al finalizar la lista de todos los cursos realice la pausa

    def scrape_course(numeration, r_object, course_url):
        data = {}
        tools.clear_screen()
    
        target_page = html.fromstring(r_object.content)
    
        course_title = style.format_name_string(
            target_page.xpath('//h1[@class="CourseDetail-left-title"]/text()')[0]
        )
    
        if mode == 2:
            course_title = f"{numeration} - {course_title}"
    
        em = style.format_string(f"    Processing: {course_title}", 16)
        header("  downloading", em, "cyan", "left", 1, "-", "green", 0)
    
        print(style.string_color("  Course information: \n", "blue"))
        sleep(style.line_sleep)
        print(style.format_string(f"    Course: {course_title}", 12))
    
        # Download course page
        helper.download_page(course_url, course_title, "000 - Preview.html")
        course_url = course_url.replace("/clases/", "/cursos/")
        helper.download_page(course_url, course_title, "Course Details.html")
    
        sections = target_page.xpath('//div[@class="Material-concept"]')
        s_count = 1
        l_count = 1
        for s in sections:
    
            sn = "00"
            if s_count > 9:
                sn = "0"
    
            s_title = s.xpath(
                'div[@class="Material-concept-edit"]'
                '/h3[@class="Material-title"]/text()')[0]
    
            s_title = f"{sn}{s_count} - {style.format_name_string(s_title)}"
    
            # print()
            # p_print.line_char("-", "cyan", 2)
            # print(style.format_string(f"    Section: {s_title}\n", 13))
    
            
            for lesson in s.xpath('div[@class="MaterialItem-content"]'):
    
                ln = "00"
                if l_count > 9:
                    ln = "0"
    
                lock_element = 'div/div[@class="MaterialItem-copy"]' \
                               '/div[@class="MaterialItem-copy-actions"]/div[' \
                               '@class="MaterialItem-copy-actions-anchor"]/i/@class '
    
                if not len(lesson.xpath(lock_element)) > 0:
                    if len(lesson.xpath('div/div[@class="MaterialItem-video"]')) > 0:
                        # lesson_type = "[VIDEO_NAME]"
                        # course_data["type"] = "video"
                        l_type = "video"
                    else:
                        # lesson_type = "[MATERIAL_NAME]"
                        # course_data["type"] = "material"
                        l_type = "material"
    
                    l_title = lesson.xpath('div/div[@class="MaterialItem-copy"]'
                                           '/p[@class="MaterialItem-copy-title"]'
                                           '/text()')
    
                    l_title = f"{ln}{l_count} - {style.format_name_string(l_title[0])}"
                    # print(style.format_string(f"      Lesson: {l_title}", 14))
    
                    l_url = lesson.xpath('a[@class="MaterialItem-anchor"]'
                                         '/@href')[0]
    
                    l_url = url_tool.base_url + l_url
                    # print(style.format_string(f"        URL: {l_url}", 13))
    
                    # set data and start lesson download action
                    data["path"] = course_title + '/' + s_title
                    data["name"] = l_title
                    data["url"] = l_url
                    data["type"] = l_type
                    if l_type == "video":
                        data["extra_path"] = f"{course_title}/{s_title}/"
                        data["extra_path"] += f"{ln}{l_count} - extra_files"
                        data["webpage"] = f"{ln}{l_count} - webpage.html"
    
                    helper.download_lesson(data)
                    tools.clear_screen()
    
                l_count += 1
            s_count += 1
    
        input("\n\n    Press enter to continue")
    
    opened by JeanCarlosDev17 3
  • Recursos de clase y descargas simultáneas

    Recursos de clase y descargas simultáneas

    Estuve probando platzi-dtool con Ubuntu 18,04 LTS con WLS en Windows 10 y hasta el momento descarga muy bien los videos de los cursos, pero en el caso de los recursos de clase, que en su mayoría son PDF, no me los descarga, solo descarga archivos html como extra files.

    Por otro lado, solo instalé Ubuntu para utilizar platzi-dtool y estoy recién conociendo su funcionamiento, ¿cómo puedo hacer descargas simultáneas o descargar toda una ruta de aprendizaje?

    Gracias por el aporte! Un saludo!

    opened by mrverns 3
Owner
Devil64-Dev
Junior web developer, who wants to learn more about new technology every day.
Devil64-Dev
A script that downloads YouTube videos/audio

YouTube-Downloader A script that downloads YouTube videos/audio from youtube. Usage Download the script by executing the following in your terminal :

Debayan Sarkar 2 Jan 4, 2022
FireDM is a python open source (Internet Download Manager) with multi-connections, high speed engine, it downloads general files and videos from youtube and tons of other streaming websites .

python open source (Internet Download Manager) with multi-connections, high speed engine, based on python, LibCurl, and youtube_dl https://github.com/firedm/FireDM

null 1.6k Apr 12, 2022
Python-Youtube-Downloader - An Open Source Python Youtube Downloader

Python-Youtube-Downloader Hello There This Is An Open Source Python Youtube Down

Flex Tools 3 Jun 14, 2022
Youtube-downloader-using-Python - Youtube downloader using Python

Youtube-downloader-using-Python Hii guys !! Fancy to see here Welcome! built by

Lakshmi Deepak 2 Jun 9, 2022
A simple Python program which uses youtube-dl for downloading YouTube videos as mp3 files.

yt-mp3 converter This is a simple Python program which uses youtube-dl for downloading YouTube videos as mp3 files. This program is for you if you are

nostalgicnerdpenguin 1 Oct 24, 2021
Youtube Downloader by PyTube é uma ferramenta simples com interface gráfica e escrito em python para baixar vídeos e playlists do youtube...

YouTube Downloader by PyTube O que é o YouTube Downloader by PyTube? YouTube Downloader by PyTube é um software simples para baixar vídeos no YouTube

Elizeu Barbosa Abreu 5 Jul 30, 2022
Youtube-music - Youtube music with python

youtube-music fzf on https://github.com/junegunn/fzf python3 ytb.py [no/yes] yes

direskyfer 0 Feb 3, 2022
YouTube-Downloader - YouTube Video Downloader made using python

YouTube-Downloader YouTube Videos Downloder made using python.

Shivam 1 Jan 16, 2022
Youtube Downloader is a simple but highly efficient Youtube Video Downloader, made completly using Python

Youtube Downloader is a simple but highly efficient Youtube Video Downloader, made completly using Python

Arsh 3 May 25, 2022
YouTube Downloader is extremely simple program for downloading songs or playlists (in audio or video) from YouTube. Created using Python, PyTube and PySimpleGUI.

YouTube Downloader YouTube Downloader is extremely simple program for downloading songs or playlists (in audio or video) from YouTube. Disclaimer It's

Simeon Tsvetanov 3 Jun 28, 2022
Using Youtube downloader is the fast and easy way to download and save any YouTube video.

Youtube video downloader using Django Using Django as a backend along with pytube module to create Youtbue Video Downloader. https://yt-videos-downloa

Suman Raj Khanal 10 Jun 18, 2022
DYA ( Ditch YouTube API ) is a package created to power the user with YouTube Data API functionality without any API Key

Ditch YouTubeAPI (BETA) DYA ( Ditch YouTube API ) is a package created to power the user with YouTube Data API functionality without any API Key Detai

Sougata Jana 22 Nov 19, 2022
Youtube Downloader is a Graphic User Interface(GUI) that lets users download a Youtube Video or Audio through a URL

Youtube Downloader This Python and Tkinter based GUI allows users to directly download the Best Resolution Videos and Audios from Youtube. Pa-fy Insta

Samarth Kumar 2 Jun 25, 2022
Tkinter based YouTube video downloader works on pytube 11.0.2. Can download YouTube videos in 720p(HD), 144p and even only audio.

YouTube-Downloader Tkinter based YouTube video downloader works on pytube 11.0.2. Can download YouTube videos in 720p(HD), 144p and even only audio. G

Manav Grover 2 Dec 27, 2021
YouTube-Video-Downloader - Download Youtube Videos for free.

YouTube-Video-Downloader Download Youtube Videos for free. Installing Dependencies:- Windows pip install pytube Mac/Linux pip3 install pytube Clonin

Xception Inc. 1 Jan 1, 2022
PyQt5 simple files , youtube videos and youtube playlist downloader

PyQt5 simple files , youtube videos and youtube playlist downloader

AmirHossein Mohammadi 7 Jul 25, 2022
YouTube Video publisher using youtube-dl & ROS2🐢

YouTube-publisher-ROS2 Publish sensor_msgs/Image by "YouTube" ?? ?? ?? ! You don't have to use webcamera or your video to check demos. Purpose Quick d

Ar-Ray 4 Aug 26, 2022
Youtube list to mp3 - Youtube list to mp3 downloader

Youtube list to mp3 downloader Tiny script to convert a list of youtube videos t

Papi Diagne 3 Feb 11, 2022
Python Program that downloads gaming required packages based on your Linux Distribution.

LibreGaming Python Program that downloads gaming required packages based on your Linux Distribution. Table of contents Distributions Prerequisites Dep

Ahmed Al Balochi 194 Nov 19, 2022