Skip to content

Commit

Permalink
Merge pull request #351 from aapatre/develop
Browse files Browse the repository at this point in the history
Release v4.0.0
  • Loading branch information
cullzie authored Nov 12, 2021
2 parents b9a929b + 9489062 commit bc5596f
Show file tree
Hide file tree
Showing 17 changed files with 929 additions and 95 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/python-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,4 @@ jobs:
UDEMY_PASSWORD: ${{ secrets.UDEMY_PASSWORD }}
CI_TEST: "True"
run: |
poetry run python udemy_enroller.py --debug
poetry run python udemy_enroller.py --browser=chrome --debug
13 changes: 12 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [4.0.0] - 2021-11-12

### Added
- Added support for browser enrolment
- New coupon source from freebiesglobal

### Removed
- Remove REST based enrolment since it is no longer working

## [3.2.0] - 2021-09-13

### Added
Expand Down Expand Up @@ -89,7 +98,9 @@ can continue as normal
zip, extract, install the requirement and get a working version of this
project running locally. Suitable for users who are not looking forward to
contribute.


[4.0.0]:
https://github.com/aapatre/Automatic-Udemy-Course-Enroller-GET-PAID-UDEMY-COURSES-for-FREE/releases/tag/v4.0.0
[3.2.0]:
https://github.com/aapatre/Automatic-Udemy-Course-Enroller-GET-PAID-UDEMY-COURSES-for-FREE/releases/tag/v3.2.0
[3.1.0]:
Expand Down
90 changes: 58 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
[![forthebadge](https://forthebadge.com/images/badges/made-with-python.svg)](https://forthebadge.com)
[![forthebadge](https://forthebadge.com/images/badges/it-works-why.svg)](https://forthebadge.com)

* ALPHA IS A PRE DEVELOPMENT BRANCH, DO NOT EXPECT USER FACING ISSUES TO BE ADDRESSED IN THIS BRANCH!

# Udemy Coupon Grabber & Course Enroller: Grab FREE Coupons!

* Udemy Coupon Grabber & Course Enroller: Grab FREE Coupons!

Do you want to LEARN NEW STUFF for FREE? Don't worry, with the power of
web-scraping and automation, this script will find the necessary Udemy Coupons
Expand All @@ -14,9 +16,11 @@ web-scraping and automation, this script will find the necessary Udemy Coupons

The code scrapes course links and coupons from:

- [tutorialbar.com](https://tutorialbar.com)
- [discudemy.com](https://discudemy.com)
- [coursevania.com](https://coursevania.com)
- [tutorialbar.com](https://tutorialbar.com)
- [discudemy.com](https://discudemy.com)
- [coursevania.com](https://coursevania.com)
- [freebiesglobal.com](https://freebiesglobal.com) -> _New_


In case of any bugs or issues, please open an issue in github.

Expand All @@ -26,11 +30,11 @@ Also, don't forget to **Fork & Star the repository if you like it!**

**_Video Proof:_**

[![Udemy Auto-Course-Enroller](https://img.youtube.com/vi/IW8CCtv2k2A/0.jpg)](https://www.youtube.com/watch?v=IW8CCtv2k2A "GET PAID UDEMY Courses for FREE, Automatically with this Python Script!")
[![Udemy Auto-Course-Enroller](https://img.youtube.com/vi/tdLsVoraMxw/0.jpg)](https://www.youtube.com/watch?v=tdLsVoraMxw "GET Udemy Courses for FREE with Python | 2 Minute Tuesday")

---

## **_Disclaimer & WARNINGS:_**
** **_Disclaimer & WARNINGS:_**

1. **Use** this ONLY for **Educational Purposes!** By using this code you agree
that **I'm not responsible for any kind of trouble** caused by the code. **THIS PROJECT IS NOT AFFILIATED WITH UDEMY.**
Expand All @@ -41,9 +45,9 @@ Also, don't forget to **Fork & Star the repository if you like it!**

---

## Requirements:
** Requirements:

### How to Install the Requirements?
*** How to Install the Requirements?

**Required Python version:** [Python 3.8+](https://www.python.org/downloads/)

Expand All @@ -59,7 +63,7 @@ get all the requirements installed in one go. Similar instructions applies for p

---

## Instructions
** Instructions

Props to Davidd Sargent for making a super simple video tutorial. If you prefer written instructions then continue reading further, else click on the image below for a quick video tutorial:

Expand All @@ -77,30 +81,52 @@ Props to Davidd Sargent for making a super simple video tutorial. If you prefer

2 . The script can be passed arguments:

- `--help`: View full list of arguments available
- `--discudemy`: Run the discudemy scraper only
- `--coursevania`: Run the coursevania scraper only
- `--tutorialbar`: Run the tutorialbar scraper only
- `--max-pages=<NUMBER>`: Max number of pages to scrape from sites before exiting the script (default is 5)
- `--delete-settings`: Delete existing settings file
- `--debug`: Enable debug logging
- `--help`: View full list of arguments available
- `--browser=<BROWSER_NAME>`: Run with a specific browser
- `--discudemy`: Run the discudemy scraper only
- `--coursevania`: Run the coursevania scraper only
- `--tutorialbar`: Run the tutorialbar scraper only
- `--freebiesglobal`: Run the freebiesglobal scraper only _[New]_
- `--max-pages=<NUMBER>`: Max number of pages to scrape from sites before exiting the script (default is 5)
- `--delete-settings`: Delete existing settings file
- `--delete-cookie`: Delete the cookie file if it exists _[New]_
- `--debug`: Enable debug logging


3 . Run the script in terminal like so:
3 . Run the script in terminal with your target browser:

- `udemy_enroller`
- `udemy_enroller --browser=firefox`
- `udemy_enroller --browser=chrome`
- `udemy_enroller --browser=chromium`

4 . The bot starts scraping the course links from the first **All Courses** page
on [Tutorial Bar](https://www.tutorialbar.com/all-courses/page/1), [DiscUdemy](https://www.discudemy.com/all) and [Coursevania](https://coursevania.com) and starts
on [Tutorial Bar](https://www.tutorialbar.com/all-courses/page/1), [DiscUdemy](https://www.discudemy.com/all), [Coursevania](https://coursevania.com) and [FreebiesGlobal](https://freebiesglobal.com) and starts
enrolling you to Udemy courses. After it has enrolled you to courses from the
first page, it then moves to the next site page and the cycle continues.

- Stop the script by pressing ctrl+c in terminal to stop the enrollment process.

5 . _[New]_ At the end of process a detailed result is shown:

```
================== Run Statistics ==================
Enrolled: 56
Unwanted Category: 0
Unwanted Language: 1
Already Claimed: 93
Expired: 7
Total Enrolments: 1705
Savings: €2674.44
================== Run Statistics ==================
```


---

## FAQs

### 1. Can I get a specific course for free with this script?
*** 1. Can I get a specific course for free with this script?

Unfortunately no, but let me assure you that you may be lucky enough to get a
particular course for free when the instructor posts its coupon code in order
Expand All @@ -110,15 +136,15 @@ I made this course after completing a
[Python automation course](https://www.udemy.com/course/automate/) and selenium,
which of course I got for free! :)

### 2. How does the bot work?
*** 2. How does the bot work?

The bot retrieves coupon links from Tutorial Bar, DiscUdemy and Coursevania's lists to cut the prices and
then uses REST requests to authenticate and enroll to the
courses. Think of it this way: Epic Games & other clients like Steam provide you
a handful of games each week, for free; Only in this case, we need a coupon code
to make those courses free.

### 3. How frequently should you run the script?
*** 3. How frequently should you run the script?

Daily, at least once! I've painstakingly amassed over 4000
courses in the last four years! And out of those 4000, I've only paid for 4 of
Expand All @@ -128,57 +154,57 @@ So, a mere **0.001%** of courses are **actually paid** in my collection!
Thankfully, you can get more than what I gathered in 4 years, in a matter of
weeks! 🙌🏻

### 4. Why did I create this?
*** 4. Why did I create this?

It used to be my daily habit to redeem courses and it was an extremely tedious
task that took around 15 minutes, for 10 courses. And then I suddenly got the
idea to automate it, after I found the automation course mentioned above. I bet,
it will save your precious time too! :)

### 5. The code compiles successfully, but it's taking too long to work! IS there any way to fix that?
*** 5. The code compiles successfully, but it's taking too long to work! IS there any way to fix that?

Since we are heavily dependent on a third-party site to retrieve coupons links,
there may be issues when the site is down. Needless to mention the connectivity
issues too. If everything is working fine, you can see the courses being
retrieved in the Python console/shell, which may take a while.

### 6. Which is the best way to run the script?
*** 6. Which is the best way to run the script?

It is recommended to run the script using your terminal and system python.

### 7. Which branch to commit against?
*** 7. Which branch to commit against?

Pull request should be made on "develop" branch.

### 8. What's the roadmap?
*** 8. What's the roadmap?

Take a look at our
[Roadmap here](https://github.com/aapatre/Automatic-Udemy-Course-Enroller-GET-PAID-UDEMY-COURSES-for-FREE/projects/1)
and help us on what you want or talk to us about your proposed changes.

---

## Support & Maintenance Notice
** Support & Maintenance Notice

By using this repo/script, you agree that the authors and contributors are under no obligation to provide support for the script and can discontinue it's development, as and when necessary, without prior notice.

---

## Supporters
** Supporters

### Jetbrains
*** Jetbrains

[![JetBrains](https://i.imgur.com/h2R018M.jpg)](https://jetbrains.com/?from=udemy-free-course-enroller)

Thanks to [JetBrains](https://jetbrains.com/?from=udemy-free-course-enroller) for supporting us. They are the maker of world class IDE and developer tooling. If you think their product might help you, please support them.

### GitBook
*** GitBook

[![GitBook](https://i.imgur.com/OkuB14I.jpg)](https://gitbook.com)

Thanks to [GitBook](https://gitbook.com) for supporting us. GitBook is the best place to track personal notes and ideas for teams. If you think their product might help you, please support them.

### GitLab
*** GitLab

[![GitLab](https://i.imgur.com/aUWtSn4.png)](https://gitlab.com)

Expand Down
7 changes: 5 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
[tool.poetry]
name = "automatic-udemy-course-enroller-get-paid-udemy-courses-for-free"
version = "3.2.0"
version = "4.0.0"
description = ""
authors = [""]

[tool.poetry.dependencies]
python = "^3.8"
selenium = "^3.141.0"
beautifulsoup4 = "^4.9.3"
"ruamel.yaml" = "^0.16.12"
cloudscraper = "^1.2.56"
requests = "^2.25.1"
webdriver-manager = "^3.2.2"
aiohttp = {extras = ["speedups"], version = "^3.7.3"}
price-parser = "^0.3.4"

[tool.poetry.dev-dependencies]
black = "^20.8b1"
Expand All @@ -25,7 +28,7 @@ requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"

[tool.bumpver]
current_version = "3.2.0"
current_version = "4.0.0"
version_pattern = "MAJOR.MINOR.PATCH"
commit_message = "Bump version {old_version} -> {new_version}"
commit = true
Expand Down
3 changes: 3 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,6 @@ beautifulsoup4
ruamel.yaml
requests
cloudscraper
webdriver-manager
selenium
price-parser
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

setup(
name="udemy-enroller",
version="3.2.0",
version="4.0.0",
long_description=long_description,
long_description_content_type="text/markdown",
author="aapatre",
Expand Down
Loading

0 comments on commit bc5596f

Please sign in to comment.