diff options
-rw-r--r-- | flake.nix | 56 | ||||
-rw-r--r-- | main.py | 24 |
2 files changed, 44 insertions, 36 deletions
diff --git a/flake.nix b/flake.nix index c72a6fc..ed8d121 100644 --- a/flake.nix +++ b/flake.nix @@ -5,32 +5,36 @@ nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; }; - outputs = { self, nixpkgs }: - let - systems = [ "x86_64-darwin" "aarch64-darwin" "x86_64-linux" ]; - createDevShell = system: - let - pkgs = import nixpkgs { system = "${system}"; config.allowUnfree = true; }; - my-python = pkgs.python3; - python-with-my-packages = my-python.withPackages (p: with p; [ - selenium - python-dotenv - ]); - in - pkgs.mkShell { - buildInputs = [ - python-with-my-packages + outputs = { + self, + nixpkgs, + }: let + systems = ["x86_64-darwin" "aarch64-darwin" "x86_64-linux"]; + createDevShell = system: let + pkgs = import nixpkgs { + system = "${system}"; + config.allowUnfree = true; + }; + in + pkgs.mkShell { + buildInputs = [ + (pkgs.python3.withPackages (p: + with p; [ + selenium + python-dotenv + ])) - # Chrome driver and google-chrome dependencies - pkgs.chromedriver - pkgs.google-chrome + pkgs.black - # Create a script to run google-chrome-stable - (pkgs.writeShellScriptBin "google-chrome" "exec -a $0 ${pkgs.google-chrome}/bin/google-chrome-stable $@") - ]; - }; - in - { - devShell = nixpkgs.lib.genAttrs systems createDevShell; - }; + # Chrome driver and google-chrome dependencies + pkgs.chromedriver + pkgs.google-chrome + + # Create a script to run google-chrome-stable + (pkgs.writeShellScriptBin "google-chrome" "exec -a $0 ${pkgs.google-chrome}/bin/google-chrome-stable $@") + ]; + }; + in { + devShell = nixpkgs.lib.genAttrs systems createDevShell; + }; } diff --git a/main.py b/main.py index d1e1bff..49749b6 100644 --- a/main.py +++ b/main.py @@ -6,35 +6,36 @@ import logging import os from dotenv import load_dotenv + def main(): logging.basicConfig( - format='%(asctime)s %(levelname)-8s %(message)s', + format="%(asctime)s %(levelname)-8s %(message)s", level=logging.INFO, - datefmt='%Y-%m-%d %H:%M:%S' + datefmt="%Y-%m-%d %H:%M:%S", ) load_dotenv() - test_ua = 'Mozilla/5.0 (Windows NT 4.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36' + test_ua = "Mozilla/5.0 (Windows NT 4.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36" options = Options() # options.add_argument("--headless") # Remove this if you want to see the browser (Headless makes the chromedriver not have a GUI) # options.add_argument("--window-size=1920,1080") - options.add_argument(f'--user-agent={test_ua}') + options.add_argument(f"--user-agent={test_ua}") - options.add_argument('--no-sandbox') + options.add_argument("--no-sandbox") options.add_argument("--disable-extensions") driver = webdriver.Chrome(options=options) - driver.get('https://venta.renfe.com/vol/loginParticular.do') + driver.get("https://venta.renfe.com/vol/loginParticular.do") sleep(5) - driver.find_element(By.ID, "num_tarjeta").send_keys(os.getenv('RENFE_EMAIL')) - driver.find_element(By.ID, "pass-login").send_keys(os.getenv('RENFE_PASSWORD')) + driver.find_element(By.ID, "num_tarjeta").send_keys(os.getenv("RENFE_EMAIL")) + driver.find_element(By.ID, "pass-login").send_keys(os.getenv("RENFE_PASSWORD")) driver.find_element(By.ID, "loginButtonId").click() sleep(15) @@ -50,7 +51,7 @@ def main(): sleep(5) - #todo: select radio button ida o vuelta + # todo: select radio button ida o vuelta datepicker = driver.find_element(By.ID, "fecha1") driver.execute_script(f"arguments[0].value = '06/01/2025';", datepicker) @@ -66,7 +67,9 @@ def main(): while True: try: row = driver.find_element(By.XPATH, f"//tr[td[contains(text(), '18.50')]]") - select_button = row.find_element(By.XPATH, ".//button[contains(@id, 'continuar')]") + select_button = row.find_element( + By.XPATH, ".//button[contains(@id, 'continuar')]" + ) break except Exception: logging.info("No available places - refreshing...") @@ -84,5 +87,6 @@ def main(): logging.info("TICKET BOUGHT!!") + if __name__ == "__main__": main() |