Downloads new lessons and series from laracasts if there are updates. Or the whole catalogue.

Overview

Laracasts Downloader

Join the chat at https://gitter.im/laracasts-downloader SensioLabsInsight Scrutinizer Code Quality Build Status

Downloads new lessons and series from laracasts if there are updates. Or the whole catalogue.

Currently looking for maintainers.

Description

Syncs your local folder with the laracasts website, when there are new lessons the app download it for you. If your local folder is empty, all lessons and series will be downloaded!

A .skip file is used to prevent downloading deleted lessons for these with space problems. Thanks to @vinicius73

Just call php makeskips.php before deleting the lessons.

Do I need an active subscription account?

You ONLY can download free episodes as guest and need active subscription to download all series.

I suggest starting the script as a guest at first step, this helps you to don't exceed daily download limits. Then fill your account credentials in .env and re-run project.

You need active subscription account to take advantage of cache feature.

Requirements

  • PHP >= 7.0
  • php-cURL
  • php-xml
  • php-json
  • Composer

OR

  • Docker

Installation

  1. Clone this repo to your local machine.
  2. Make a local copy of the .env file:
$ cp .env.example .env
  1. Update your laracasts account credentials (EMAIL, PASSWORD) in .env
  2. The next steps, choose if you want a local installation or a Docker based installation and follow along.

Using your local machine

  1. Install project dependencies:
$ composer install
  1. To run a download of all content, run the following command:
$ php start.php [empty for all OR provide flags]
  1. See downloading specific series or lessons for optional flags.

Using Docker

  1. Build the image:
$ docker-compose build
  1. Install project dependencies:
$ docker-compose run --rm composer
  1. Then, run the command of your choice as if we were running it locally, but instead against the docker container:
$ docker-compose run --rm laracastdl php ./start.php [empty for all OR provide flags]
  1. See downloading specific series or lessons for optional flags.

Also works in the browser, but is better from the cli because of the instant feedback.

Downloading specific series or lessons

  • You can use series and lessons names
  • You can use series and lessons slugs (preferred because there are some custom slugs too)
  • You can download multiples series/lessons

Commands to download an entire series

You can either use the Series slug (preferred):

$ php start.php -s "series-slug-example"
$ php start.php --series-name "series-slug-example"

Or the Series name:

$ php start.php -s "Series name example"
$ php start.php --series-name "Series name example"

Filter to download specific episodes of a series

You can provide episode number(s) saperated by comma ,: You can add 1 or more episodes.

$ php start.php -s "lesson-slug-example" -e "12,15"
$ php start.php --series-name "series-slug-example" --series-episodes "12,15"

Or the with Series name:

$ php start.php -s "Series name example" -e "12"
$ php start.php --series-name "Series name example" --series-episodes "12"

This will only download episodes which you mentioned in -e or --series-episodes flag, it will also ignor already downloaded episodes as usual.

Troubleshooting

If you have a cURL error 60: SSL certificate problem: self signed certificate in certificate chain or SLL error: cURL error 35 do this:

And you are done! If using apache you may need to restart it.

License

This library is under the MIT License, see the complete license here

Comments
  • No longer finding new downloads

    No longer finding new downloads

    Not sure when it changed, but new downloads are no longer being found, for at least the past two weeks. I have at least half a dozen not downloaded, and it simply tells me there are no new lessons or episodes on run, regardless of any flags passed, etc.

    0 new lessons and 0 episodes. 1.142s elapsed with 6.00Mb of memory usage.

    opened by willvincent 14
  • cant download a series or a single episode of a series

    cant download a series or a single episode of a series

    i have php7.4 in my ubuntu machine and i have installed and configured this package. everything looks fine and without any error when i search for a series like php start.php -s "laravel-8-from-scratch" -e "1"; the process of searching the series start and i can see the exact series name in laravel section of the searchs in my terminal and at the end i get Checking for options {"s":"laravel-8-from-scratch","e":"1"}

    ====================================

    Series names provided: ["laravel-8-from-scratch"] Series names provided: ["laravel-8-from-scratch"] Episode numbers provided: "1" Episode numbers provided: ["1"] ==================================== Checking if series exists ==================================== Series "laravel-8-from-scratch" found!

    ==================================== Downloading

    0 new episodes. 84.952s elapsed with 6.00Mb of memory usage.

    Finished! Downloaded 0 new episodes. Failed: 0 it looks that the app is not able to download. it can find the series but not downloading it.

    please help me if something is messing in my scenario

    opened by M-hanif 13
  • ERROR: The current node list is empty after upgrading laracast to Intertia

    ERROR: The current node list is empty after upgrading laracast to Intertia

    Currently laracasts-downloader is not working after the latest upgrade of Laracast to intertia : https://laracasts.com/blog/the-best-of-both-worlds

    Any update for this ?

    opened by kossa 13
  • 429  Too Many Requests

    429 Too Many Requests

    When i try to download series it show me "[status code] 429 [reason phrase] Too Many Requests " error. It only download 30 video, now it is not working. Maybe jeffrey use throttle for that i dont know. But i try proxy and etc , they didnt work. I searched bit on laracast but didnt found about download limits.

    opened by thmsbgfrv 10
  • Getting errors Too Many Requests

    Getting errors Too Many Requests

    This is one of the errors after running PHP start.php

     Download started: 03 - The Composition API . . . . Saving on series/whats-new-in-vue-3 folder.
    > Client error response [url] https://laracasts.com/downloads/eyJpdiI6ImFyb2poZkVac203c0J2TWl3NUF4elE9PSIsInZhbHVlIjoiU05LWmxrRnBJeVpvOEtpcy9kY2xIUT09IiwibWFjIjoiMTRhNWJmM2UzYjAwYjExODI5YTU1NmY4MGZkYWFmOWQ2NTY5MTRmNmZiMDMwYmI0ZDMzZTg5MzE2NzAzZTU0ZiJ9 [status code] 429 [reason phrase] Too Many Requests
    > Current: 87 of 1293 total. Left: 1206
    

    Should I wait or is this as a response to this downloading script, basically stopping you from downloading the movies?

    opened by ramseycodes 9
  • not downloading latest videos

    not downloading latest videos

    For example, the "whatcha-working-on" series

    A new video was just uploaded in the last 24 hours:

    https://laracasts.com/series/whatcha-working-on/episodes/39

    I have all previous 38 but when I run the downloader it doesn't find the new one (# 39) and says no available downloads

    opened by vesper8 8
  • cURL error 60: SSL certificate problem: unable to get local issuer certificate

    cURL error 60: SSL certificate problem: unable to get local issuer certificate

    Somehow I'm getting this error whenever I try to download. The workaround I've found is to use an earlier version of guzzle. I'm using version 4.2.3 ( ~4.0 )

    Updating composer.json and running composer update seems to fix it.

    Any idea of what's happening?

    opened by sikrew 8
  • Unprocessable Entity error on start

    Unprocessable Entity error on start

    Hello,

    I am having issue that i can't seem to understand. few days back it was working but now it stopped with this message.

    ERROR: Client error response [url] https://laracasts.com/sessions [status code] 422 [reason phrase] Unprocessable Entity

    I have setup everything in .env and it is loading in start.php correctly. but above is printed in console when i run the command i tried php 7.3 and 8.0 in both cases it has same set of issues.

    opened by hardikdangar 7
  • Get real episode count since algolia episode count is wrong on newer …

    Get real episode count since algolia episode count is wrong on newer …

    …series/episodes.

    Instead of using the Algolia episode count, it checks the series page and reads the episode count from there. It's worse than using Algolia directly but Algolia episode count is apparently not up to date, so this fixes that.

    Notice that the composer.lock is updated and included with this commit. Works for me with php 7.3.

    opened by mattias 7
  • SLL error:  cURL error 35

    SLL error: cURL error 35

    I have a problem.. with php7.0.8 The log:

    ==================================== Authenticating

    Successfull!

    ==================================== Starting Collecting the data

    ==================================== Checking for options []

    No options provided

    ==================================== Downloading

    0 new lessons and 24 episodes. 9.626s elapsed with 6.00Mb of memory usage.

    ==================================== Downloading Series

    Download started: 17 - How Do I Impersonate Users . . . . Saving on series/how-do-i folder. Total: 0% Downloaded: 0 B of 0 B
    Retry download after connection fail!
    Total: 0% Downloaded: 0 B of 0 B
    Retry download after connection fail!
    Total: 0% Downloaded: 0 B of 0 B
    Retry download after connection fail!
    ERROR: cURL error 35: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version%

    opened by lucassmacedo 7
  • New website layout breaks downloader

    New website layout breaks downloader "2018"

    Jeff updates the layout and the downloader is not working anymore:

    PHP Notice: Undefined index: series in D:\tutorials\laracasts-downloader-master-08-08-2018\App\Utils\Utils.php on line 85 PHP Stack trace: PHP 1. {main}() D:\tutorials\laracasts-downloader-master-08-08-2018\start.php:0 PHP 2. App\Downloader->start() D:\tutorials\laracasts-downloader-master-08-08-2018\start.php:23 PHP 3. App\Utils\Utils::resolveFaultyLessons() D:\tutorials\laracasts-downloader-master-08-08-2018\App\Downloader.php:109

    Notice: Undefined index: series in D:\tutorials\laracasts-downloader-master-08-08-2018\App\Utils\Utils.php on line 85

    Call Stack: 0.4058 384880 1. {main}() D:\tutorials\laracasts-downloader-master-08-08-2018\start.php:0 0.4519 1870880 2. App\Downloader->start() D:\tutorials\laracasts-downloader-master-08-08-2018\start.php:23 2.4998 3218224 3. App\Utils\Utils::resolveFaultyLessons() D:\tutorials\laracasts-downloader-master-08-08-2018\App\Downloader.php:109

    Variables in local scope (#3): $array = array ('series' => array (), 'lessons' => array ()) $episode = uninitialized $episodes = uninitialized ...........................

    opened by cerberos 6
  • Fail to merge sources when DOWNLOAD_SOURCE is vimeo in Windows wsl2 docker

    Fail to merge sources when DOWNLOAD_SOURCE is vimeo in Windows wsl2 docker

    The downloader failed to merge source when DOWNLOAD_SOURCE is vimeo in Windows wsl2 docker.

    It seems to be Permission error tho I'm not sure.

    The error code is 127.

    opened by kwarnkham 2
  • download with out credentials removed . why?

    download with out credentials removed . why?

    hi in previous version we can start script without entering any email | password but in new update we must provide credentials , why we cant download free courses and lessons ? suggestion : can download a video from playing section ? or dump showing video and after finishing create full video?

    opened by hoseininjast 0
  • Support PHP8

    Support PHP8

    Hello,

    Getting some error when using PHP8

    
    ====================================
    Authenticating
    ====================================
    PHP Deprecated:  Function libxml_disable_entity_loader() is deprecated in /Users/mac/code/laracasts-downloader/vendor/symfony/dom-crawler/Crawler.php on line 162
    
    Deprecated: Function libxml_disable_entity_loader() is deprecated in /Users/mac/code/laracasts-downloader/vendor/symfony/dom-crawler/Crawler.php on line 162
    PHP Deprecated:  Function libxml_disable_entity_loader() is deprecated in /Users/mac/code/laracasts-downloader/vendor/symfony/dom-crawler/Crawler.php on line 182
    
    Deprecated: Function libxml_disable_entity_loader() is deprecated in /Users/mac/code/laracasts-downloader/vendor/symfony/dom-crawler/Crawler.php on line 182
    > Successfull!
    
    ====================================
    Starting Collecting the data
    ====================================
    PHP Deprecated:  Function libxml_disable_entity_loader() is deprecated in /Users/mac/code/laracasts-downloader/vendor/symfony/dom-crawler/Crawler.php on line 162
    
    Deprecated: Function libxml_disable_entity_loader() is deprecated in /Users/mac/code/laracasts-downloader/vendor/symfony/dom-crawler/Crawler.php on line 162
    PHP Deprecated:  Function libxml_disable_entity_loader() is deprecated in /Users/mac/code/laracasts-downloader/vendor/symfony/dom-crawler/Crawler.php on line 182
    
    Deprecated: Function libxml_disable_entity_loader() is deprecated in /Users/mac/code/laracasts-downloader/vendor/symfony/dom-crawler/Crawler.php on line 182
    
    opened by kossa 2
This is a Task Manager system for managing your task. You can categorize your tasks and upload music to the project And a whole host of other features

taskManager Login and register Each user can have their own task Categorize tasks by creating folders Edit and Delete Folders Search for Tasks Show nu

masoudharooni 11 May 22, 2022
This Laracast Blog is built with Laravel 8.x taught by Jeffery Way on Laracasts

This Laracast Blog is built with Laravel 8.x taught by Jeffery Way on Laracasts. I followed his tutorial videos and added new features as he mentioned on his Github.

Wai Yan Kyaw 1 Dec 7, 2021
API for Laracasts Feed built with Lumen.

Lissandra Discontinued API for Laracasts Feed built with Lumen. Lissandra fetches the Laracasts XML RSS feed and converts it to JSON format. By doing

Laravelista 15 Oct 6, 2018
The forum is a base for our Youtube tutorial series on "how to build a forum"

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

AngelJay 15 Oct 11, 2022
Now Introducing a new and easy way to manage your clients and MyOwnFreeHost hosting accounts.

Warning This is a beta version of Xera. Use it for testing purpose only. You are be responsible for any loss or damages that may occor from using this

Mahtab Hassan 23 Dec 15, 2022
Schedule your OLX searches and get notified by email when something new is published 📆

Olx.ba search scheduler Missing scheduler for Olx.ba searches. Production-ready small web application which notifies you by email when something new i

Benjamin Fajić 8 Nov 8, 2022
Avant-Garde - about pushing boundaries and experimenting with new ideas

Avant-Garde is about pushing boundaries and experimenting with new ideas. It’s about dreaming, thinking outside the box, and creating something unique.

Brian Gardner 10 Aug 30, 2022
Source code of Strm.pl, brand-new social service.

Strimoid Source code of Strm.pl, brand-new social service.

Strimoid 67 Oct 20, 2022
A free and open-source accounting and production system for businesses and non-profits with support for multiple users and varied integrations

A free and open-source accounting and production system for businesses and non-profits with support for multiple users and varied integrations.

null 3 Sep 22, 2022
Emoncms is an open-source web application for processing, logging and visualising energy, temperature and other environmental data and is part of the OpenEnergyMonitor project.

Emoncms is an open-source web application for processing, logging and visualising energy, temperature and other environmental data and is part of the OpenEnergyMonitor project.

Emoncms 1.1k Dec 22, 2022
Created simple login system and chat type website using mysql database along with php and html , css and javascript.

Created simple login system and chat type website using mysql database along with php and html , css and javascript.

null 1 Jan 6, 2022
This prj we have two NODEMCU ( ESP8266) and two RFID_RC522 and some rfid tags we used ARDUINO IDE on NODEMCU and running server with XAMPP

This prj we have two NODEMCU ( ESP8266) and two RFID_RC522 and some rfid tags we used ARDUINO IDE on NODEMCU and running server with XAMPP

Mohammadamir Soltanzadeh 2 Mar 29, 2022
Rafa Cake and Bakery is a web-based application project that aims to introduce Rafa Cake and Bakery, introduce what products are sold and can also order them via Whatsapp.

Rafa-cake-and-bakery Rafa Cake and Bakery is a web-based application project that aims to introduce Rafa Cake and Bakery, introduce what products are

Aan Evian Nanda 2 Jun 19, 2022
A great looking and easy-to-use photo-management-system you can run on your server, to manage and share photos.

Lychee A great looking and easy-to-use photo-management-system. Since the 1st of April 2018 this project has moved to it's own Organisation (https://g

Tobias Reich 6.2k Jan 5, 2023
TinyFileManager is web based file manager and it is a simple, fast and small file manager with a single file, multi-language ready web application

TinyFileManager is web based file manager and it is a simple, fast and small file manager with a single file, multi-language ready web application for storing, uploading, editing and managing files and folders online via web browser. The Application runs on PHP 5.5+, It allows the creation of multiple users and each user can have its own directory and a build-in support for managing text files with cloud9 IDE and it supports syntax highlighting for over 150+ languages and over 35+ themes.

Prasath Mani 3.5k Jan 7, 2023
Open source ERP software. Built on modern PHP and bootstrap 4. Easy and powerful.

FacturaScripts Open source ERP software. Built on modern PHP and bootstrap 4. Easy and powerful. Install Clone and deploy with composer and npm (compo

Carlos Garcia 313 Jan 4, 2023
OpenEMR is a Free and Open Source electronic health records and medical practice management application

OpenEMR is a Free and Open Source electronic health records and medical practice management application. It features fully integrated electronic health records, practice management, scheduling, electronic billing, internationalization, free support, a vibrant community, and a whole lot more. It runs on Windows, Linux, Mac OS X, and many other platforms.

OpenEMR 2.1k Jan 9, 2023
A free and open-source Laravel 5.5 and VueJS (SPA) Ticket system

Ticket-conductor A Laravel 5.5 and VueJS (SPA) Ticket system app (This project was mostly for myself to learn Vue Js a bit better, and will not be mai

Casper Bottelet 51 Dec 17, 2022