summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--flake.nix56
-rw-r--r--main.py24
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()