Example #1
0
def test_settings(email, password, zip_code, languages, categories, save,
                  file_name):
    with mock.patch("builtins.input",
                    side_effect=[email, zip_code, languages, categories,
                                 save]):
        with mock.patch("getpass.getpass", return_value=password):
            settings_path = f"test_tmp/{file_name}"
            settings = Settings(settings_path)
            assert settings.email == email
            assert settings.password == password
            assert settings.zip_code == zip_code
            assert settings.languages == [] if languages is None else languages
            assert settings.categories == [] if categories is None else categories

            if save.upper() == "Y":
                yaml = YAML()
                with open(settings_path) as f:
                    settings = yaml.load(f)
                    assert settings["udemy"]["email"] == email
                    assert settings["udemy"]["password"] == password
                    assert settings["udemy"]["zipcode"] == zip_code
                    assert (settings["udemy"]["languages"] == []
                            if languages is None else ",".join(languages))
                    assert (settings["udemy"]["categories"] == []
                            if categories is None else categories)
                # Load settings just created
                Settings(settings_path)
            else:
                assert os.path.isdir(settings_path) is False
Example #2
0
    def __init__(self):
        """
        Initialize
        """
        super(QtCore.QObject, self).__init__()

        self.central_state_monitor = CentralStateMonitor()

        # News
        self.news = News()

        # settings
        self.central_settings = Settings()
        self.signals = Signals()

        # path to modules directory
        self.path_modules = os.path.normpath(
            os.path.join(os.path.dirname(os.path.realpath(__file__)), "../../",
                         "modules"))

        # dictionary to keep track of the instantiated modules
        self._instantiated_modules = {}

        # create window, show it
        self.window = HQWindow(self)
        self.window.show()

        # connect signals: signal_stop_all_modules, which can be called from the modules to stop all other modules
        self.signal_stop_all_modules.connect(self.stop_modules)
        self.signals.write_signal("stop_all_modules",
                                  self.signal_stop_all_modules)
Example #3
0
def test_load_existing_settings(email, password, zip_code, languages,
                                categories, save, file_name):
    with mock.patch("builtins.input",
                    side_effect=[email, zip_code, languages, categories,
                                 save]):
        with mock.patch("getpass.getpass", return_value=password):
            settings_path = f"test_tmp/{file_name}"
            Settings(settings_path)

    # Load existing settings
    settings = Settings(settings_path)
    assert settings.email == email
    assert settings.password == password
    assert settings.zip_code == zip_code
    assert settings.languages == [] if languages is None else languages
    assert settings.categories == [] if categories is None else categories
Example #4
0
def test_load_ci_settings(_, monkeypatch, is_ci_run, email, password):
    monkeypatch.setenv("CI_TEST", str(is_ci_run))
    monkeypatch.setenv("UDEMY_EMAIL", email)
    monkeypatch.setenv("UDEMY_PASSWORD", password)
    settings = Settings("")
    if is_ci_run:
        assert settings.email == email
        assert settings.password == password
def run(
    browser: str,
    max_pages: Union[int, None],
    cache_hit_limit: int,
    driver: WebDriver = None,
):
    """
    Run the udemy enroller script

    :param str browser: Name of the browser we want to create a driver for
    :param int or None max_pages: Max number of pages to scrape from tutorialbar.com
    :param int cache_hit_limit: If we hit the cache this many times in a row we exit the script
    :param WebDriver driver:
    :return:
    """
    settings = Settings()
    if driver is None:
        dm = DriverManager(browser=browser, is_ci_build=settings.is_ci_build)
        driver = dm.driver
    redeem_courses(driver, settings, max_pages, cache_hit_limit)
# Install all the requirements by running requirements.py in IDLE or follow the alternate instructions at
# https://github.com/aapatre/Automatic-Udemy-Course-Enroller-GET-PAID-UDEMY-COURSES-for-FREE/ Make sure you have
# cleared all saved payment details on your Udemy account & the browser! For firefox you need to manually install the
# driver on Arch Linux (sudo pacman -S geckodriver). Untested on other platforms.
from selenium import webdriver

from core import Settings
from core.utils import redeem_courses

settings = Settings()

driver = webdriver.Firefox()

# Maximizes the browser window since Udemy has a responsive design and the code only works
driver.maximize_window()

# in the maximized layout

try:
    redeem_courses(driver, settings)
except KeyboardInterrupt:
    print("Exiting the script")
except Exception as e:
    print("Error: {}".format(e))
finally:
    print("Closing browser")
    driver.quit()