Giter VIP home page Giter VIP logo

auto-southwest-check-in's People

Contributors

ankit-jha avatar davidkassa avatar ender18g avatar fusionneo avatar jdholtz avatar joewesch avatar mightyquack avatar netpappy avatar ntalekt avatar pcarn avatar samdatkins avatar sdstolworthy avatar stevenmassaro avatar techneaux avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

auto-southwest-check-in's Issues

Check in failed

Error when running the comment. Stacktrace below.

$ python3 southwest.py ****** First Last

127.0.0.1:60764: Traceback (most recent call last):
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/server/server.py", line 113, in handle
    root_layer()
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/server/modes/http_proxy.py", line 9, in __call__
    layer()
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/server/protocol/tls.py", line 285, in __call__
    layer()
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/server/protocol/http1.py", line 100, in __call__
    layer()
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/server/protocol/http.py", line 206, in __call__
    if not self._process_flow(flow):
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/server/protocol/http.py", line 285, in _process_flow
    return self.handle_regular_connect(f)
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/server/protocol/http.py", line 224, in handle_regular_connect
    layer()
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/server/protocol/tls.py", line 278, in __call__
    self._establish_tls_with_client_and_server()
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/server/protocol/tls.py", line 358, in _establish_tls_with_client_and_server
    self._establish_tls_with_server()
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/server/protocol/tls.py", line 445, in _establish_tls_with_server
    self.server_conn.establish_tls(
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/connections.py", line 295, in establish_tls
    self.convert_to_tls(cert=client_cert, sni=sni, **kwargs)
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/net/tcp.py", line 382, in convert_to_tls
    context = tls.create_client_context(
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/net/tls.py", line 276, in create_client_context
    context = _create_ssl_context(
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/net/tls.py", line 179, in _create_ssl_context
    context.set_verify(verify, verify_callback)
  File "/home/schmeed/.local/lib/python3.8/site-packages/OpenSSL/SSL.py", line 1128, in set_verify
    self._verify_helper = _VerifyHelper(callback)
  File "/home/schmeed/.local/lib/python3.8/site-packages/OpenSSL/SSL.py", line 359, in __init__
    self.callback = _ffi.callback(
SystemError: ffi_prep_closure(): bad user_data (it seems that the version of the libffi library seen at runtime is different from the 'ffi.h' file seen at compile-time)

127.0.0.1:60776: Traceback (most recent call last):
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/server/server.py", line 113, in handle
    root_layer()
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/server/modes/http_proxy.py", line 9, in __call__
    layer()
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/server/protocol/tls.py", line 285, in __call__
    layer()
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/server/protocol/http1.py", line 100, in __call__
    layer()
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/server/protocol/http.py", line 206, in __call__
    if not self._process_flow(flow):
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/server/protocol/http.py", line 285, in _process_flow
    return self.handle_regular_connect(f)
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/server/protocol/http.py", line 224, in handle_regular_connect
    layer()
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/server/protocol/tls.py", line 278, in __call__
    self._establish_tls_with_client_and_server()
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/server/protocol/tls.py", line 358, in _establish_tls_with_client_and_server
    self._establish_tls_with_server()
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/server/protocol/tls.py", line 445, in _establish_tls_with_server
    self.server_conn.establish_tls(
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/connections.py", line 295, in establish_tls
    self.convert_to_tls(cert=client_cert, sni=sni, **kwargs)
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/net/tcp.py", line 382, in convert_to_tls
    context = tls.create_client_context(
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/net/tls.py", line 276, in create_client_context
    context = _create_ssl_context(
  File "/home/schmeed/.local/lib/python3.8/site-packages/seleniumwire/thirdparty/mitmproxy/net/tls.py", line 179, in _create_ssl_context
    context.set_verify(verify, verify_callback)
  File "/home/schmeed/.local/lib/python3.8/site-packages/OpenSSL/SSL.py", line 1128, in set_verify
    self._verify_helper = _VerifyHelper(callback)
  File "/home/schmeed/.local/lib/python3.8/site-packages/OpenSSL/SSL.py", line 359, in __init__
    self.callback = _ffi.callback(
SystemError: ffi_prep_closure(): bad user_data (it seems that the version of the libffi library seen at runtime is different from the 'ffi.h' file seen at compile-time)

Traceback (most recent call last):
  File "southwest.py", line 35, in <module>
    set_up(arguments)
  File "southwest.py", line 26, in set_up
    account.get_checkin_info(confirmation_number)
  File "/home/schmeed/auto-southwest-check-in/lib/account.py", line 44, in get_checkin_info
    self.refresh_headers()
  File "/home/schmeed/auto-southwest-check-in/lib/account.py", line 51, in refresh_headers
    self.headers = webdriver.get_info()
  File "/home/schmeed/auto-southwest-check-in/lib/webdriver.py", line 34, in get_info
    info = self._get_checkin_info(driver)
  File "/home/schmeed/auto-southwest-check-in/lib/webdriver.py", line 43, in _get_checkin_info
    driver.get(CHECKIN_URL)
  File "/home/schmeed/.local/lib/python3.8/site-packages/undetected_chromedriver/__init__.py", line 497, in get_wrapped
    return orig_get(*args, **kwargs)
  File "/home/schmeed/.local/lib/python3.8/site-packages/undetected_chromedriver/__init__.py", line 535, in get
    return super().get(url)
  File "/home/schmeed/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 441, in get
    self.execute(Command.GET, {'url': url})
  File "/home/schmeed/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 429, in execute
    self.error_handler.check_response(response)
  File "/home/schmeed/.local/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 243, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: net::ERR_CONNECTION_CLOSED
  (Session info: headless chrome=106.0.5249.119)
Stacktrace:
#0 0x55b605b252c3 <unknown>
#1 0x55b60592e83a <unknown>
#2 0x55b605928213 <unknown>
#3 0x55b60591b82a <unknown>
#4 0x55b60591cb3d <unknown>
#5 0x55b60591bb3a <unknown>
#6 0x55b60591aea5 <unknown>
#7 0x55b60591acc0 <unknown>
#8 0x55b6059199bb <unknown>
#9 0x55b605919d92 <unknown>
#10 0x55b60593052e <unknown>
#11 0x55b60599e24f <unknown>
#12 0x55b605985f42 <unknown>
#13 0x55b60599da50 <unknown>
#14 0x55b605985d63 <unknown>
#15 0x55b60595a7e3 <unknown>
#16 0x55b60595ba21 <unknown>
#17 0x55b605b7318e <unknown>
#18 0x55b605b76622 <unknown>
#19 0x55b605b59aae <unknown>
#20 0x55b605b772a3 <unknown>
#21 0x55b605b4decf <unknown>
#22 0x55b605b97588 <unknown>
#23 0x55b605b97706 <unknown>
#24 0x55b605bb18b2 <unknown>
#25 0x7f3698d9f609 <unknown>

Clarity in README for party of >1

It's unclear whether I need to run a separate instance for each individual on a reservation or whether this will auto-checkin the entire party. I'm guessing the latter. It would be nice if there were a note in the README for this.

Checking in by account is able to login but flight is under different name

Checking in by account is able to login but flight reservation is under different name.

Account name: James Smith
Flight reservations: Jane Doe and John Doe

I'm not able to see flight checking scheduled after successful login message -- "Successfully logged in to James Smith's account"
Not seeing -- "Successfully scheduled the following flights to check in for Jane Doe & John Doe"

Please advise, thank you.
P.S - Great script simple to use.

Fare Check

I am not sure if this is possible, but it would be pretty cool if you could add the fare you paid and have the system check if the fare went down for the same flight.

Since the system knows the flights and confirmation code...maybe use a script like

Southwest.py CONFIRMATION $/POINTS XXXXX

So, you'd be telling the system to attribute either dollars or points to the flights/confirmation. If the flight drops in cost a notification is sent.

Stack trace from multiple checkins at once

I recently had it auto check me in for three different reservations on the same flight.

15 min before the flight I got this stack trace on 2/3 sessions.

Process Process-1:                                                                                                                                                                                                                                               
Traceback (most recent call last):                                                                                                                                                                                                                               
  File "/usr/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap                                                                                                                                                                                 
    self.run()                                                  
  File "/usr/lib/python3.10/multiprocessing/process.py", line 108, in run                                                       
    self._target(*self._args, **self._kwargs)                                                                                   
  File "/root/auto-southwest-check-in/lib/checkin_handler.py", line 40, in _set_check_in                                                                                                                                                                         
    self._wait_for_check_in(checkin_time)                                                                                       
  File "/root/auto-southwest-check-in/lib/checkin_handler.py", line 54, in _wait_for_check_in                                                                                                                                                                    
    self.checkin_scheduler.refresh_headers()                                                                                    
  File "/root/auto-southwest-check-in/lib/checkin_scheduler.py", line 81, in refresh_headers                                                                                                                                                                     
    webdriver.set_headers()                                     
  File "/root/auto-southwest-check-in/lib/webdriver.py", line 61, in set_headers                                                                                                                                                                                 
    driver = self._get_driver()                                 
  File "/root/auto-southwest-check-in/lib/webdriver.py", line 46, in _get_driver                                                                                                                                                                                 
    driver.get(CHECKIN_URL)                                     
  File "/usr/local/lib/python3.10/dist-packages/undetected_chromedriver/__init__.py", line 618, in get_wrapped                                                                                                                                                   
    return orig_get(*args, **kwargs)                            
  File "/usr/local/lib/python3.10/dist-packages/undetected_chromedriver/__init__.py", line 656, in get                                                                                                                                                           
    return super().get(url)                                     
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py", line 455, in get                                                                                                                                                        
    self.execute(Command.GET, {"url": url})                                                                                     
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py", line 444, in execute                                                                                                                                                    
    self.error_handler.check_response(response)                                                                                 
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py", line 249, in check_response                                                                                                                                          
    raise exception_class(message, screen, stacktrace)                                                                          
selenium.common.exceptions.WebDriverException: Message: unknown error: session deleted because of page crash                                                                                                                                                     
from unknown error: cannot determine loading status                                                                             
from tab crashed                                                
  (Session info: headless chrome=109.0.5414.74)                                                                                 
Stacktrace:                                                     
#0 0x56070339e303 <unknown>                                     
#1 0x560703172bbd <unknown>                                     
#2 0x56070315edc5 <unknown>                                     
#3 0x56070315e2b0 <unknown>                                     
#4 0x56070315d432 <unknown>                                     
#5 0x56070315d285 <unknown>                                     
#6 0x56070315bc77 <unknown>                                     
#7 0x56070315c408 <unknown>                                     
#8 0x56070316967f <unknown>                                     
#9 0x56070316a2d2 <unknown>                                     
#10 0x56070317afd0 <unknown>                                    
#11 0x56070317f34b <unknown>                                    
#12 0x56070315c9c5 <unknown>                                    
#13 0x56070317abd2 <unknown>                                    
#14 0x5607031e7aa0 <unknown>                                    
#15 0x5607031cf753 <unknown>                                    
#16 0x5607031a2a14 <unknown>                                    
#17 0x5607031a3b7e <unknown>                                    
#18 0x5607033ed32e <unknown>                                    
#19 0x5607033f0c0e <unknown>                                    
#20 0x5607033d3610 <unknown>                                    
#21 0x5607033f1c23 <unknown>                                    
#22 0x5607033c5545 <unknown>                                    
#23 0x5607034126a8 <unknown>                                    
#24 0x560703412836 <unknown>                                    
#25 0x56070342dd13 <unknown>                                    
#26 0x7f5fa5507b43 <unknown>
Process Process-1:                                                                                                                                                                                                                                                                                                     
Traceback (most recent call last):                                                                                                                                                                                                                                                                                     
  File "/usr/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap                                                                           
    self.run()                                                                                                                                             
  File "/usr/lib/python3.10/multiprocessing/process.py", line 108, in run                                                                                  
    self._target(*self._args, **self._kwargs)                                                                                                              
  File "/root/auto-southwest-check-in/lib/checkin_handler.py", line 40, in _set_check_in                                                                   
    self._wait_for_check_in(checkin_time)                                                                                                                  
  File "/root/auto-southwest-check-in/lib/checkin_handler.py", line 54, in _wait_for_check_in                                                              
    self.checkin_scheduler.refresh_headers()                                                                                                               
  File "/root/auto-southwest-check-in/lib/checkin_scheduler.py", line 81, in refresh_headers                                                               
    webdriver.set_headers()                                                                                                                                
  File "/root/auto-southwest-check-in/lib/webdriver.py", line 61, in set_headers                                                                           
    driver = self._get_driver()                                                                                                                            
  File "/root/auto-southwest-check-in/lib/webdriver.py", line 46, in _get_driver                                                                           
    driver.get(CHECKIN_URL)                                                                                                                                
  File "/usr/local/lib/python3.10/dist-packages/undetected_chromedriver/__init__.py", line 618, in get_wrapped                                             
    return orig_get(*args, **kwargs)                                                                                                                       
  File "/usr/local/lib/python3.10/dist-packages/undetected_chromedriver/__init__.py", line 656, in get                                                     
    return super().get(url)                                                                                                                                                                                                                                                                                            
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py", line 455, in get                                                  
    self.execute(Command.GET, {"url": url})                                                                                                                
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py", line 444, in execute                                              
    self.error_handler.check_response(response)                                                                                                            
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py", line 249, in check_response                                    
    raise exception_class(message, screen, stacktrace)                                                                                                     
selenium.common.exceptions.WebDriverException: Message: unknown error: session deleted because of page crash                                               
from unknown error: cannot determine loading status                                                                                                        
from tab crashed                                                                                                                                           
  (Session info: headless chrome=109.0.5414.74)                                                                                                            
Stacktrace:                                                                                                                                                                                                                                                                                                            
#0 0x5630c93ed303 <unknown>                                                                                                                                
#1 0x5630c91c1bbd <unknown>                                                                                                                                
#2 0x5630c91addc5 <unknown>                                                                                                                                
#3 0x5630c91ad2b0 <unknown>                                                                                                                                
#4 0x5630c91ac432 <unknown>                                                                                                                                
#5 0x5630c91ac285 <unknown>                                                                                                                                
#6 0x5630c91aac77 <unknown>                                                                                                                                
#7 0x5630c91ab408 <unknown>                                                                                                                                
#8 0x5630c91b867f <unknown>                                                                                                                                
#9 0x5630c91b92d2 <unknown>                                                                                                                                
#10 0x5630c91c9fd0 <unknown>                                                                                                                               
#11 0x5630c91ce34b <unknown>                                                                                                                               
#12 0x5630c91ab9c5 <unknown>                                                                                                                               
#13 0x5630c91c9bd2 <unknown>                                                                                                                               
#14 0x5630c9236aa0 <unknown>                                                                                                                               
#15 0x5630c921e753 <unknown>                                                                                                                               
#16 0x5630c91f1a14 <unknown>                                                                                                                               
#17 0x5630c91f2b7e <unknown>                                                                                                                                                                                                                                                                                           
#18 0x5630c943c32e <unknown>                                                                                                                               
#19 0x5630c943fc0e <unknown>                                                                                                                               
#20 0x5630c9422610 <unknown>                                                                                                                               
#21 0x5630c9440c23 <unknown>                                                                                                                               
#22 0x5630c9414545 <unknown>                                                                                                                               
#23 0x5630c94616a8 <unknown>                                                                                                                               
#24 0x5630c9461836 <unknown>                                                                                                                               
#25 0x5630c947cd13 <unknown>                                                                                                                               
#26 0x7f6aeacfab43 <unknown>    

The process was alive, but I restarted them manually as I wasn't confident they would still work. Has anyone else seen this?

It might just be a weird glitch that happened, the checkins worked and the previous 4 flights worked flawlessly as well.

Google Chrome out of date

I'm now getting an error that my Google Chrome is out of date. I think somehow the selenium dependency got updated to require 108 while my containers are stuck at 107.

Is there a way to ensure that one doesn't get updated and the other doesn't?

Also, is there a way to update the existing containers?

Lastly, is there a way to get notified of failures like this?

Thanks!

  File "/app/southwest.py", line 35, in <module>
    set_up(arguments)
  File "/app/southwest.py", line 26, in set_up
    account.get_checkin_info(confirmation_number)
  File "/app/lib/account.py", line 44, in get_checkin_info
    self.refresh_headers()
  File "/app/lib/account.py", line 51, in refresh_headers
    self.headers = webdriver.get_info()
  File "/app/lib/webdriver.py", line 30, in get_info
    driver = Chrome(options=options, seleniumwire_options=seleniumwire_options)
  File "/usr/local/lib/python3.10/dist-packages/seleniumwire/undetected_chromedriver/webdriver.py", line 61, in __init__
    super().__init__(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/undetected_chromedriver/__init__.py", line 401, in __init__
    super(Chrome, self).__init__(
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/chrome/webdriver.py", line 70, in __init__
    super(WebDriver, self).__init__(DesiredCapabilities.CHROME['browserName'], "goog",
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/chromium/webdriver.py", line 92, in __init__
    RemoteWebDriver.__init__(
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py", line 275, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python3.10/dist-packages/undetected_chromedriver/__init__.py", line 589, in start_session
    super(selenium.webdriver.chrome.webdriver.WebDriver, self).start_session(
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py", line 365, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py", line 430, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py", line 247, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot connect to chrome at 127.0.0.1:55479
from session not created: This version of ChromeDriver only supports Chrome version 108
Current browser version is 107.0.5304.110
Stacktrace:
#0 0x55a44e92a2a3 <unknown>
#1 0x55a44e6e8f77 <unknown>
#2 0x55a44e715fd7 <unknown>
#3 0x55a44e70cf89 <unknown>
#4 0x55a44e74e0b7 <unknown>
#5 0x55a44e74da5f <unknown>
#6 0x55a44e745903 <unknown>
#7 0x55a44e718ece <unknown>
#8 0x55a44e719fde <unknown>
#9 0x55a44e97a63e <unknown>
#10 0x55a44e97db79 <unknown>
#11 0x55a44e96089e <unknown>
#12 0x55a44e97ea83 <unknown>
#13 0x55a44e953505 <unknown>
#14 0x55a44e99fca8 <unknown>
#15 0x55a44e99fe36 <unknown>
#16 0x55a44e9bb333 <unknown>
#17 0x7f7e923eb402 <unknown>

Error 429 with Chrome v110

Description

I know this is a known issue that I have been following. I am not sure if the issue was corrected for <110 or up to and including Chrome 110 with v2.

I updated to v2
I updated my json file to include "chrome_version": 110
I ran the --requirements.txt script
The webdriver file is confirmed to have the options.add_argument("--headless=new") entry.

What else am I missing? Should I have the undetected-chromedriver 3.4.6 or 3.1.7? I tried both and neither work...

To Reproduce

southwest.py USERNAME PASSWORD

Failed to log in to account with username XXXXXXXXX. Status Code: 429.
Make sure the login information is correct and try again.

Expected Behavior

No response

Version

Auto-Southwest Check-In v2.0

Additional context

No response

Dockerfile build error on ARM architecture

I've been trying to run docker on my ubuntu server, but seeing a gpg key issue. Below is a log.

$ docker build -f Dockerfile . -t auto-southwest-check-in


.
.
.
Step 5/10 : RUN wget https://dl-ssl.google.com/linux/linux_signing_key.pub -O /tmp/google.pub && gpg --no-default-keyring --keyring /etc/apt/keyrings/google-chrome.gpg --import /tmp/google.pub && echo 'deb [arch=amd64 signed-by=/etc/apt/keyrings/google-chrome.gpg] http://dl.google.com/linux/chrome/deb/ stable main' | tee /etc/apt/sources.list.d/google-chrome.list
---> Running in 37cd582cfe2d
--2022-12-14 17:38:36-- https://dl-ssl.google.com/linux/linux_signing_key.pub
Resolving dl-ssl.google.com (dl-ssl.google.com)... 74.125.137.91, 74.125.137.190, 74.125.137.93, ...
Connecting to dl-ssl.google.com (dl-ssl.google.com)|74.125.137.91|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12415 (12K) [application/octet-stream]
Saving to: '/tmp/google.pub'
0K .......... .. 100% 4.48M=0.003s

2022-12-14 17:38:36 (4.48 MB/s) - '/tmp/google.pub' saved [12415/12415]

gpg: keybox '/etc/apt/keyrings/google-chrome.gpg' created
gpg: directory '/root/.gnupg' created
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key A040830F7FAC5991: public key "Google, Inc. Linux Package Signing Key [email protected]" imported
gpg: key 7721F63BD38B4796: 1 signature not checked due to a missing key
gpg: key 7721F63BD38B4796: public key "Google Inc. (Linux Packages Signing Authority) [email protected]" imported
gpg: Total number processed: 2
gpg: imported: 2
gpg: no ultimately trusted keys found
deb [arch=amd64 signed-by=/etc/apt/keyrings/google-chrome.gpg] http://dl.google.com/linux/chrome/deb/ stable main
Removing intermediate container 37cd582cfe2d
---> 69f8d041bb25
.
.
.
.
Reading state information...
E: Unable to locate package google-chrome-stable
The command '/bin/sh -c apt-get update && apt-get -y install google-chrome-stable' returned a non-zero code: 100


Any suggestions to resolve that issue? Thanks!

Error setting name of account on first login

Description

When attempting to log into a Southwest account for the first time, the application crashes. It happens regardless of whether account is loaded from config.json or by setting a username/password in command line.

To Reproduce

  1. Run the script using an account that has not logged in before.
  2. Wait for the crash.

Expected Behavior

No response

Version

Auto-Southwest Check-In v3.1

Additional context

I am using the fare_checker branch. I have added a bit of additional code to try and debug the issue myself. I have changed the Chromedriver instance to be visible and I can confirm it is successfully logging in. I am also logging the response that is causing the script to crash.

        response = driver.requests[0].response
        print(driver.requests[0])
        print(driver.requests[0].response)
        print(driver.requests[0].response.body)
        if response.status_code != 200:
            error = self._handle_login_error(response)
            raise error

        # If this is the first time logging in, the account name needs to be set
        # because that info is needed later
        if flight_retriever.first_name is None:
            logger.debug("First time logging in. Setting account name")
            response_body = json.loads(response.body)
            self._set_account_name(flight_retriever, response_body)
           ### THIS IS WHERE THE CRASH OCCURS ^^^^
            print(
                f"Successfully logged in to {flight_retriever.first_name} "
                f"{flight_retriever.last_name}'s account\n"
            )  # Don't log as it contains sensitive information

The print statements are my own additions and the output of the statements is the following:

https://accounts.google.com/ListAccounts?gpsia=1&source=ChromiumBrowser&json=standard
200
b'["gaia.l.a.r",[]]'

Here is the traceback information:

Traceback (most recent call last):
  File "C:\Users\fusio\AppData\Local\Programs\Python\Python310\lib\multiprocessing\process.py", line 315, in _bootstrap
    self.run()
  File "C:\Users\fusio\AppData\Local\Programs\Python\Python310\lib\multiprocessing\process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\fusio\OneDrive\Desktop\Personal Projects\Southwest\auto-southwest-check-in\lib\flight_retriever.py", line 115, in monitor_account
    flights = self._get_flights()
  File "C:\Users\fusio\OneDrive\Desktop\Personal Projects\Southwest\auto-southwest-check-in\lib\flight_retriever.py", line 131, in _get_flights
[auto-southwest-check-in.log](https://github.com/jdholtz/auto-southwest-check-in/files/11246109/auto-southwest-check-in.log)

    flights = webdriver.get_flights(self)
  File "C:\Users\fusio\OneDrive\Desktop\Personal Projects\Southwest\auto-southwest-check-in\lib\webdriver.py", line 128, in get_flights
    self._set_account_name(flight_retriever, response_body)
  File "C:\Users\fusio\OneDrive\Desktop\Personal Projects\Southwest\auto-southwest-check-in\lib\webdriver.py", line 202, in _set_account_name
    flight_retriever.first_name = response["customers.userInformation.firstName"]
TypeError: list indices must be integers or slices, not str

The most recent log has been attached.

SSL Certificate Error

Description

2023-05-01 09:37:38 DEBUG MainProcess[log]: Initialized the application
2023-05-01 09:37:38 DEBUG MainProcess[main]: Called with 3 arguments
2023-05-01 09:37:40 DEBUG MainProcess[config]: Reading the configuration file
2023-05-01 09:37:40 DEBUG MainProcess[config]: No configuration file found. Using defaults
2023-05-01 09:37:40 DEBUG MainProcess[main]: Flight added through CLI arguments
2023-05-01 09:37:40 DEBUG MainProcess[main]: Monitoring 0 accounts and 1 flights
2023-05-01 09:37:41 DEBUG Process-1[flight_retriever]: Scheduling reservations for 1 flights
2023-05-01 09:37:41 DEBUG Process-1[checkin_scheduler]: No headers set. Refreshing...
2023-05-01 09:37:41 DEBUG Process-1[checkin_scheduler]: Refreshing headers for current session
2023-05-01 09:37:41 DEBUG Process-1[webdriver]: Starting webdriver for current session
Process Process-1:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py", line 1348, in do_open
    h.request(req.get_method(), req.selector, req.data, headers,
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py", line 1283, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py", line 1329, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py", line 1278, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py", line 1038, in _send_output
    self.send(msg)
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py", line 976, in send
    self.connect()
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py", line 1455, in connect
    self.sock = self._context.wrap_socket(self.sock,
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/ssl.py", line 517, in wrap_socket
    return self.sslsocket_class._create(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/ssl.py", line 1075, in _create
    self.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/ssl.py", line 1346, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/Users/tom/Downloads/auto-southwest-check-in/lib/flight_retriever.py", line 37, in schedule_reservations
    self.checkin_scheduler.schedule(confirmation_numbers)
  File "/Users/tom/Downloads/auto-southwest-check-in/lib/checkin_scheduler.py", line 36, in schedule
    self.refresh_headers()
  File "/Users/tom/Downloads/auto-southwest-check-in/lib/checkin_scheduler.py", line 48, in refresh_headers
    webdriver.set_headers()
  File "/Users/tom/Downloads/auto-southwest-check-in/lib/webdriver.py", line 60, in set_headers
    driver = self._get_driver()
             ^^^^^^^^^^^^^^^^^^
  File "/Users/tom/Downloads/auto-southwest-check-in/lib/webdriver.py", line 140, in _get_driver
    driver = Chrome(
             ^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/seleniumwire/undetected_chromedriver/webdriver.py", line 61, in __init__
    super().__init__(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/undetected_chromedriver/__init__.py", line 242, in __init__
    patcher.auto()
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/undetected_chromedriver/patcher.py", line 127, in auto
    release = self.fetch_release_number()
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/undetected_chromedriver/patcher.py", line 148, in fetch_release_number
    return LooseVersion(urlopen(self.url_repo + path).read().decode())
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py", line 216, in urlopen
    return opener.open(url, data, timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py", line 519, in open
    response = self._open(req, data)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py", line 536, in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py", line 496, in _call_chain
    result = func(*args)
             ^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py", line 1391, in https_open
    return self.do_open(http.client.HTTPSConnection, req,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py", line 1351, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)>

To Reproduce

python3 southwest.py XXXXXX My Name -v

Expected Behavior

No response

Version

No response

Additional context

No response

Script doesn't return to command prompt

Ran the script and it hasn't returned to the command prompt. Is this the expected behavior? It just sits waiting to check in at the specified time?

What if my desktop reboots?

image

After successful check-in, "ValueError: list.remove(x): x not in list"

Hello, I just noticed this in my console output. This is with the fix-notifications branch.

Successfully logged in to Eric REDACTED's account

Scheduling checkin to flight from 'REDACTED' to 'REDACTED' for Eric REDACTED at 2022-09-04 REDACTED UTC

Checking in to flight from 'REDACTED' to 'REDACTED' for Eric REDACTED

Successfully checked in to flight from 'REDACTED' to 'REDACTED' for Eric REDACTED!
Eric REDACTED got B01!
Joe REDACTED got B02!

Process Process-2:
Traceback (most recent call last):
  File "/usr/lib64/python3.10/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/usr/lib64/python3.10/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/eric/auto-southwest-check-in/lib/flight.py", line 80, in _set_check_in
    self.account.flights.remove(self)
ValueError: list.remove(x): x not in list

Failed Login With Password Containing Special Characters

Description

Hello,

I have a flight tomorrow and I was hoping I could use this bot to auto check-in for me. I've been trying for about an hour to get it working. Every time I try to run the script I get the following error: "Failed to log in to account with username XXX. Reason: Invalid credentials. Status code: 400." I am 100% certain that my login information is correct, and I have tried with both the account number and username using the same password with no luck. I have opened the install of Google Chrome and manually logged into southwest.com, and the login works just fine. I cannot tell if I am doing something wrong or southwest has changed something on their end.

I am trying to run this on Ubuntu 22.04, but I have also tried running the Docker container and running the script on my MacBook with the same error.

To Reproduce

  1. Clone the repository
  2. Install google-chrome-stable v1.112.0.5615.49-1 from https://www.ubuntuupdates.org/package/google_chrome/stable/main/base/google-chrome-stable?id=202706&page=2
  3. Install python modules from requirements.txt
  4. Run python3 southwest.py [username] [password]

Expected Behavior

Script runs and outputs upcoming flights on the account

Version

Auto-Southwest Check-In v3.1

Additional context

I would also like to note that I have tried using an install of Chromium, an install of Chrome v109, and a python venv to run this script. My accounts password also contains special characters.

Can you attach multiple users to the process?

If you can't, I think it could be helpful if you're setting this up for your whole family and make reservations seperately, either by accident or intentionally.

Like having multiple USERNAME and PASSWORD arguments I think

Notification on Service Start

I have my notifications enabled with Telegram; however, it would be really nice to have a notification when the service starts. For example, I have a vbs file which silently runs the service via cmd when my Windows machine restarts (I am not sure if this is required or not). It would be nice to have the service notify me that the system started properly.

Dumb question time:

Do I need to log-in/register the flight every time my system restarts?
It would be great to have the system provide a list of the flights registered and tracking
Do I need to have the vbs run the CMD each time my system starts or does the system run as a service automatically?
Not sure if this is helpful to others...but this is the vbs file code I use:

Set oShell = CreateObject ("Wscript.Shell")
Dim strArgs
strArgs = "cmd /c C:"southwest.py location on your PC" SWAUSERNAME SWAPASSWORD"
oShell.Run strArgs, 0, false

SSL Cert Error

Description

I'm pretty sure I'm doing something wrong as I'm not sure where I should be setting the home browser info. The error I keep getting though is:

urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)>

config.json

{
"notification_urls": "",
"notification_level": 1,
"retrieval_interval": 24,
"accounts": [
{
"username": "todd",
"password": "password"
}
],
"flights": []
}

To Reproduce

Running the file creates the error everytime.

Expected Behavior

No response

Version

Auto-Southwest Check-In v3.1

Additional context

Here is the output from --verbose:

Output

tsimmon8@UTO-D6JWVF12VJ auto-southwest-check-in % python3 southwest.py --verbose
2023-04-14 21:00:46 DEBUG MainProcess[log]: Initialized the application
2023-04-14 21:00:46 DEBUG MainProcess[main]: Called with 0 arguments
2023-04-14 21:00:46 DEBUG MainProcess[config]: Reading the configuration file
2023-04-14 21:00:46 DEBUG MainProcess[config]: Adding 1 accounts from configuration file
2023-04-14 21:00:46 DEBUG MainProcess[config]: Adding 0 flights from configuration file
2023-04-14 21:00:46 DEBUG MainProcess[config]: Setting notification level to 1
2023-04-14 21:00:46 DEBUG MainProcess[config]: Using 1 notification services
2023-04-14 21:00:46 DEBUG MainProcess[config]: Setting retrieval interval to 24 hours
2023-04-14 21:00:46 DEBUG MainProcess[main]: Monitoring 1 accounts and 0 flights
2023-04-14 21:00:47 DEBUG Process-1[flight_retriever]: Retrieving flights for account
2023-04-14 21:00:47 DEBUG Process-1[webdriver]: Starting webdriver for current session
Process Process-1:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py", line 1348, in do_open
h.request(req.get_method(), req.selector, req.data, headers,
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py", line 1282, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py", line 1328, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py", line 1277, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py", line 1037, in _send_output
self.send(msg)
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py", line 975, in send
self.connect()
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py", line 1454, in connect
self.sock = self._context.wrap_socket(self.sock,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/ssl.py", line 517, in wrap_socket
return self.sslsocket_class._create(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/ssl.py", line 1075, in _create
self.do_handshake()
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/ssl.py", line 1346, in do_handshake
self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
self.run()
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "/Users/tsimmon8/Automation Projects/Southwest Checkin/auto-southwest-check-in/lib/flight_retriever.py", line 64, in monitor_account
flights = self._get_flights()
^^^^^^^^^^^^^^^^^^^
File "/Users/tsimmon8/Automation Projects/Southwest Checkin/auto-southwest-check-in/lib/flight_retriever.py", line 85, in _get_flights
flights = webdriver.get_flights(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/tsimmon8/Automation Projects/Southwest Checkin/auto-southwest-check-in/lib/webdriver.py", line 90, in get_flights
driver = self._get_driver()
^^^^^^^^^^^^^^^^^^
File "/Users/tsimmon8/Automation Projects/Southwest Checkin/auto-southwest-check-in/lib/webdriver.py", line 140, in _get_driver
driver = Chrome(
^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/seleniumwire/undetected_chromedriver/webdriver.py", line 61, in init
super().init(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/undetected_chromedriver/init.py", line 242, in init
patcher.auto()
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/undetected_chromedriver/patcher.py", line 127, in auto
release = self.fetch_release_number()
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/undetected_chromedriver/patcher.py", line 148, in fetch_release_number
return LooseVersion(urlopen(self.url_repo + path).read().decode())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py", line 216, in urlopen
return opener.open(url, data, timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py", line 519, in open
response = self._open(req, data)
^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py", line 536, in _open
result = self._call_chain(self.handle_open, protocol, protocol +
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py", line 496, in _call_chain
result = func(*args)
^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py", line 1391, in https_open
return self.do_open(http.client.HTTPSConnection, req,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py", line 1351, in do_open
raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)>

Add docker image to public repo

Description

I think it would be easier for users to incorporate this tool into their existing workflow/system if it were available as a prebuilt image on a public repository (like Docker Hub or GitHub Container Registry).

It would appear that the process for publishing to a public repo is not overly convoluted (DockerHub / GH CR), but does seem to be something better done by an active dev on the project as opposed to someone like me hahaha. Still, if there is anything I can do to help, I am happy to do so.

This would allow for seamless integration with existing docker-compose containers as well as streamline the process of starting, restarting, and updating the container.

What alternatives have you considered?

The existing method of pulling the git repo, inspecting then rebuilding the image if there have been modifications, and then starting the container, all necessitating the use of the documentation and scanning prior commands to ensure proper syntax.

airport_timezones.json Error

I'm suddenly getting this error. I do have the most current version downloaded. This is on Windows 11 (22H2) with Python 3.10.5.

C:\>python "C:\auto-southwest-check-in\southwest.py" 14MNE6 Soandso Person
Traceback (most recent call last):
  File "C:\auto-southwest-check-in\southwest.py", line 33, in <module>
    set_up(arguments)
  File "C:\auto-southwest-check-in\southwest.py", line 24, in set_up
    account.get_checkin_info(confirmation_number)
  File "C:\auto-southwest-check-in\lib\account.py", line 45, in get_checkin_info
    self._get_reservation_info(confirmation_number)
  File "C:\auto-southwest-check-in\lib\account.py", line 73, in _get_reservation_info
    flight = Flight(self, confirmation_number, flight)
  File "C:\auto-southwest-check-in\lib\flight.py", line 25, in __init__
    self._get_flight_info(flight)
  File "C:\auto-southwest-check-in\lib\flight.py", line 32, in _get_flight_info
    self.departure_time = self._get_flight_time(flight)
  File "C:\auto-southwest-check-in\lib\flight.py", line 37, in _get_flight_time
    airport_timezone = self._get_airport_timezone(departure_airport_code)
  File "C:\auto-southwest-check-in\lib\flight.py", line 44, in _get_airport_timezone
    with open("utils/airport_timezones.json") as tz:
FileNotFoundError: [Errno 2] No such file or directory: 'utils/airport_timezones.json'

\auto-southwest-check-in\utils\airport_timezones.json does exist too.

Docker Container Runs Repeatedly After Successful Check In

Feel free to close as wontfix, but in testing my image on a reservation that is currently open for checking in the script attempts to check in repeatedly without docker kill:

Checking in to flight from 'A' to 'B' for Grantland Chew

Successfully checked in to flight from 'A' to 'B' for Grantland Chew!
Grantland Chew got A51!

Checking in to flight from 'A' to 'B' for Grantland Chew

Successfully checked in to flight from 'A' to 'B' for Grantland Chew!
Grantland Chew got A51!

Checking in to flight from 'A' to 'B' for Grantland Chew

Successfully checked in to flight from 'A' to 'B' for Grantland Chew!
Grantland Chew got A51!

Failed to log in with 429

Description

Yesterday I started getting the following error consistently:

Failed to log in to account with username[redacted]. Reason: Unknown. Status code: 429.

Haven't pulled newer code or changed my configuration in anyway. Anyone else seeing this?

Out of paranoia I've also tried a VPN to ensure I haven't been denylisted and I got the same results. Haven't gone as far as looking at the response yet at this point.

To Reproduce

Run docker run -d jdholtz/auto-southwest-check-in [username] [password]

Expected Behavior

No response

Version

No response

Additional context

No response

Check in - less than 24h hours from date shows wrong placement?

Description

It appears that when the flight is less than 24h it either:
a) Displays the 1st flight's place in line
b) It doesn't check in the second flight appropriately

Re-ran script just in case and noticed the difference in location.

To Reproduce

Confirmation# FName LName

With flights that are less than 24h apart.

image

Expected Behavior

You get the same place in line.

image

Version

Docker Image: 3.0

Additional context

No response

RuntimeWarning: coroutine 'AddonManager.handle_lifecycle' was never awaited

Description

Received an error in my logs, appears to be at a login interval. I am running via Docker.

/usr/local/lib/python3.11/asyncio/base_events.py:678: RuntimeWarning: coroutine 'AddonManager.handle_lifecycle' was never awaited

self._ready.clear()

RuntimeWarning: Enable tracemalloc to get the object allocation traceback

To Reproduce

  1. Start Docker container (I am using 1 hour intervals)
  2. Wait a few hours?

Expected Behavior

No response

Version

Auto-Southwest Check-In v4.0

Additional context

No response

Ran Script, nothing happened

Installed locally on my mac, when I passed it the info my terminal just sat. Ended up checking in manually on my phone. I most likely did something wrong, but is there a good way to test this for future use cases?

ChomeDriver Issue

Was working fine just 2 weeks ago but now getting this error with ChromeDriver after update. Everything is updated per the Changelog.

selenium.common.exceptions.WebDriverException: Message: unknown error: cannot connect to chrome at 127.0.0.1:61720
from unknown error: unable to discover open pages

Stacktrace:
0 a89393ec409dc680_chromedriver 0x0000000100de5fa8 a89393ec409dc680_chromedriver + 4886440
1 a89393ec409dc680_chromedriver 0x0000000100d63643 a89393ec409dc680_chromedriver + 4351555
2 a89393ec409dc680_chromedriver 0x00000001009b1b27 a89393ec409dc680_chromedriver + 477991
3 a89393ec409dc680_chromedriver 0x00000001009e3659 a89393ec409dc680_chromedriver + 681561
4 a89393ec409dc680_chromedriver 0x00000001009d9f95 a89393ec409dc680_chromedriver + 642965
5 a89393ec409dc680_chromedriver 0x0000000100a25bd7 a89393ec409dc680_chromedriver + 953303
6 a89393ec409dc680_chromedriver 0x0000000100a1c3a3 a89393ec409dc680_chromedriver + 914339
7 a89393ec409dc680_chromedriver 0x00000001009e657f a89393ec409dc680_chromedriver + 693631
8 a89393ec409dc680_chromedriver 0x00000001009e7b1e a89393ec409dc680_chromedriver + 699166
9 a89393ec409dc680_chromedriver 0x0000000100db2b9e a89393ec409dc680_chromedriver + 4676510
10 a89393ec409dc680_chromedriver 0x0000000100db791e a89393ec409dc680_chromedriver + 4696350
11 a89393ec409dc680_chromedriver 0x0000000100dbf19f a89393ec409dc680_chromedriver + 4727199
12 a89393ec409dc680_chromedriver 0x0000000100db881a a89393ec409dc680_chromedriver + 4700186
13 a89393ec409dc680_chromedriver 0x0000000100d8ba62 a89393ec409dc680_chromedriver + 4516450
14 a89393ec409dc680_chromedriver 0x0000000100dd78c8 a89393ec409dc680_chromedriver + 4827336
15 a89393ec409dc680_chromedriver 0x0000000100dd7a45 a89393ec409dc680_chromedriver + 4827717
16 a89393ec409dc680_chromedriver 0x0000000100ded7ef a89393ec409dc680_chromedriver + 4917231
17 libsystem_pthread.dylib 0x00007fff7cf812eb _pthread_body + 126
18 libsystem_pthread.dylib 0x00007fff7cf84249 _pthread_start + 66
19 libsystem_pthread.dylib 0x00007fff7cf8040d thread_start + 13

Error while "Starting webdriver...": TypeError: expected str, bytes or os.PathLike object, not NoneType

Description

I'm running Python 3.8.10 on Ubuntu 20.04 on an x86_64 box.

When installing requirements, I got these errors:

ERROR: selenium 4.8.0 has requirement certifi>=2021.10.8, but you'll have certifi 2019.11.28 which is incompatible.
ERROR: selenium 4.8.0 has requirement urllib3[socks]~=1.26, but you'll have urllib3 1.25.8 which is incompatible.

I successfully installed newer versions of these:

pip3 install urllib3==1.26
pip3 install certifi==2021.10.8

But when I run, I get a TypeError when it tries to start the webdriver:

$ python3 southwest.py -v MYCONFIRMATION Darryl Lee
2023-04-11 14:20:03 DEBUG MainProcess[log]: Initialized the application
2023-04-11 14:20:03 DEBUG MainProcess[main]: Called with 3 arguments
2023-04-11 14:20:03 DEBUG MainProcess[config]: Reading the configuration file
2023-04-11 14:20:03 DEBUG MainProcess[config]: No configuration file found. Using defaults
2023-04-11 14:20:03 DEBUG MainProcess[main]: Flight added through CLI arguments
2023-04-11 14:20:03 DEBUG MainProcess[main]: Monitoring 0 accounts and 1 flights
2023-04-11 14:20:03 DEBUG Process-1[flight_retriever]: Scheduling reservations for 1 flights
2023-04-11 14:20:03 DEBUG Process-1[checkin_scheduler]: No headers set. Refreshing...
2023-04-11 14:20:03 DEBUG Process-1[checkin_scheduler]: Refreshing headers for current session
2023-04-11 14:20:03 DEBUG Process-1[webdriver]: Starting webdriver for current session
Process Process-1:
Traceback (most recent call last):
  File "/usr/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
    self.run()
  File "/usr/lib/python3.8/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/darryllee/workspace/auto-southwest-check-in/lib/flight_retriever.py", line 37, in schedule_reservations
    self.checkin_scheduler.schedule(confirmation_numbers)
  File "/home/darryllee/workspace/auto-southwest-check-in/lib/checkin_scheduler.py", line 36, in schedule
    self.refresh_headers()
  File "/home/darryllee/workspace/auto-southwest-check-in/lib/checkin_scheduler.py", line 48, in refresh_headers
    webdriver.set_headers()
  File "/home/darryllee/workspace/auto-southwest-check-in/lib/webdriver.py", line 60, in set_headers
    driver = self._get_driver()
  File "/home/darryllee/workspace/auto-southwest-check-in/lib/webdriver.py", line 140, in _get_driver
    driver = Chrome(
  File "/home/darryllee/.local/lib/python3.8/site-packages/seleniumwire/undetected_chromedriver/webdriver.py", line 61, in __init__
    super().__init__(*args, **kwargs)
  File "/home/darryllee/.local/lib/python3.8/site-packages/undetected_chromedriver/__init__.py", line 409, in __init__
    browser = subprocess.Popen(
  File "/usr/lib/python3.8/subprocess.py", line 858, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.8/subprocess.py", line 1585, in _execute_child
    and os.path.dirname(executable)
  File "/usr/lib/python3.8/posixpath.py", line 152, in dirname
    p = os.fspath(p)
TypeError: expected str, bytes or os.PathLike object, not NoneType

To Reproduce

  1. Install auto-southwest-check-in following directions
  2. Try to setup checkin with confirmation number and name

Expected Behavior

Script gets ready to check me in.

Version

Auto-Southwest Check-In v3.1

Additional context

No response

TypeError when attempting to run script

auto-southwest-check-in> python southwest.py ABC123 FIRST LAST
Checking in to flight from 'CITY_1' to 'CITY_2' for FIRST LAST
Scheduling checkin to flight from 'CITY_2' to 'CITY_1' for FIRST LAST at 2022-05-25 12:59:55 UTC

Failed to retrieve reservation. Reason: Bad Request 400
Exception in thread Thread-1:
Traceback (most recent call last):
  File "\Python\Python39\lib\threading.py", line 973, in _bootstrap_inner
    self.run()
  File "\Python\Python39\lib\threading.py", line 910, in run
    self._target(*self._args, **self._kwargs)
  File "\auto-southwest-check-in\lib\flight.py", line 78, in _set_check_in
    self._check_in()
  File "\auto-southwest-check-in\lib\flight.py", line 91, in _check_in
    info = response['checkInViewReservationPage']['_links']['checkIn']
TypeError: 'NoneType' object is not subscriptable

Not sure if this happens to all reservations or to just the return leg of a round trip reservation

Run with sudo?

Not an issue, but easiest way to ask a question. Should the .py script be run using sudo? Or regular user?

I have a flight upcoming on Saturday so I'll let you know how it works.

Thanks!
Dave

chromedriver cannot connect to chrome

Worked on Monday for my checkin, then stopped today on my return flight. Chrome was 109 when this first error was thrown:
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot connect to chrome at 127.0.0.1:65194
from session not created: This version of ChromeDriver only supports Chrome version 110
Current browser version is 109.0.5414.121

So I opened chrome and let it update to 110. Then ran the script again and got this error:
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot connect to chrome at 127.0.0.1:65324
from unknown error: unable to discover open pages

Check Fare Bug

Description

I have my configuration setup with my account credentials and to check for updated fares every 24 hours. Just started it and after logging into my account, it then returns this error:

Unexpected error during fare check: TypeError("'NoneType' object is not iterable")
Traceback (most recent call last):
  File "C:\Southwest_Check_in\auto-southwest-check-in\lib\flight_retriever.py", line 78, in _check_flight_fares
    fare_checker.check_flight_price(flight)
  File "C:\Southwest_Check_in\auto-southwest-check-in\lib\fare_checker.py", line 31, in check_flight_price
    flight_price = self._get_flight_price(flight)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Southwest_Check_in\auto-southwest-check-in\lib\fare_checker.py", line 50, in _get_flight_price
    return self._get_matching_fare(new_flight["fares"], fare_type)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Southwest_Check_in\auto-southwest-check-in\lib\fare_checker.py", line 144, in _get_matching_fare
    for fare in fares:
TypeError: 'NoneType' object is not iterable

To Reproduce

  1. Setup the config.json with login account information and set to check fare.
  2. Run python southwest.py
  3. After the script logs in, it tries to check the fare and results in the above error.

Expected Behavior

No response

Version

Auto-Southwest Check-In v4.0

Additional context

No response

Notifications don't seem to be working correctly

I just used this for the first time. It's awesome! I spun up a Fedora VM with GUI, installed Chrome, and it worked perfectly. Thank you so much!

[eric@localhost-live auto-southwest-check-in]$ cat config.json
{
	"notification_urls": "pover://REDACTED@REDACTED",
	"notification_level": 1
}
[eric@localhost-live auto-southwest-check-in]$ python3 southwest.py --test-notifications
Sending test notifications...
[eric@localhost-live auto-southwest-check-in]$ apprise -vv -t "Test Message Title" -b "Test Message Body" pover://REDACTED@ REDACTED
2022-08-31 23:09:33,527 - INFO - Notifying 1 service(s) asynchronously.
2022-08-31 23:09:33,866 - INFO - Sent Pushover notification to ALL_DEVICES.
[eric@localhost-live auto-southwest-check-in]$ 

I successfully received the test notification on my iPhone's Pushover app. However, when actually running southwest.py...

Successfully logged in to Eric REDACTED's account

Scheduling checkin to flight from 'REDACTED' to 'REDACTED' for Eric REDACTED at 2022-09-01 REDACTED UTC

Scheduling checkin to flight from 'REDACTED' to 'REDACTED' for Eric REDACTED at 2022-09-04 REDACTED UTC

Checking in to flight from 'REDACTED' to 'REDACTED' for Eric REDACTED

Successfully checked in to flight from 'REDACTED' to 'REDACTED for Eric REDACTED!
Eric REDACTED got B01!
Joe REDACTED got B02!

... it didn't send the send the notification. Does it only send the notification once both legs (roundtrip) are checked in?

Just in case Southwest "TOS team" stumbles on this, I redacted the above output so I won't get in trouble. ;)

different confirmation same flight.

There might be an issue when you try to schedule 2 flights (2 different confirmations) for the same flight on the same system. When each respective thread wakes from its sleep (minus 10) to get its headers, I suspect they hit a race condition since both need chromedriver to get the headers.

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/threading.py", line 926, in _bootstrap_inner
    self.run()
  File "/usr/local/lib/python3.7/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/home/ryanxfjw/projects/checkin/jdholtz/auto-southwest-check-in/lib/flight.py", line 74, in _set_check_in
    self.account.get_checkin_info(self.confirmation_number)
  File "/home/ryanxfjw/projects/checkin/jdholtz/auto-southwest-check-in/lib/account.py", line 35, in get_checkin_info
    self.headers = webdriver.get_info()
  File "/home/ryanxfjw/projects/checkin/jdholtz/auto-southwest-check-in/lib/webdriver.py", line 29, in get_info
    driver = Chrome(options=options, seleniumwire_options=seleniumwire_options)
  File "/home/ryanxfjw/projects/checkin/jdholtz/auto-southwest-check-in/py37-venv/lib/python3.7/site-packages/seleniumwire/undetected_chromedriver/v2.py", line 55, in __init__
    super().__init__(*args, **kwargs)
  File "/home/ryanxfjw/projects/checkin/jdholtz/auto-southwest-check-in/py37-venv/lib/python3.7/site-packages/undetected_chromedriver/v2.py", line 163, in __init__
    patcher.auto()
  File "/home/ryanxfjw/projects/checkin/jdholtz/auto-southwest-check-in/py37-venv/lib/python3.7/site-packages/undetected_chromedriver/patcher.py", line 121, in auto
    self.unzip_package(self.fetch_package())
  File "/home/ryanxfjw/projects/checkin/jdholtz/auto-southwest-check-in/py37-venv/lib/python3.7/site-packages/undetected_chromedriver/patcher.py", line 175, in unzip_package
    zf.extract(self.exe_name, os.path.dirname(self.executable_path))
  File "/usr/local/lib/python3.7/zipfile.py", line 1619, in extract
    return self._extract_member(member, path, pwd)
  File "/usr/local/lib/python3.7/zipfile.py", line 1690, in _extract_member
    open(targetpath, "wb") as target:
OSError: [Errno 26] Text file busy: '/home/ryanxfjw/.local/share/undetected_chromedriver/chromedriver'

I added another random sleep after the initial sleep to hopefully avoid a race condition accessing chromedriver.

@@ -67,7 +67,10 @@ class Flight:
             # Only try to refresh the headers if the checkin is more than ten minutes away
             if sleep_time > 0:
                 time.sleep(sleep_time)
-
+                random.seed()
+                t = random.randrange(0,60)
+                time.sleep(t)

Since this is an uncommon situation I can't confirm if this quick fix works or not.

Failure Starting Webdriver

Description

System: Fedora 36
Python: 3.10.8
PIP: 23.1.2
Auto-Southwest Check-In v3.1

I am running into following issue when trying to run script with simple reservation conf code.
Not sure what exactly is failing, but looks like webdriver initialization run into issues.

[john@fedora auto-southwest-check-in]$ python3 southwest.py -v [SW Conf Code] [First Name] [Last Name]

Output

2023-04-28 13:04:02 DEBUG MainProcess[log]: Initialized the application
2023-04-28 13:04:02 DEBUG MainProcess[main]: Called with 3 arguments
2023-04-28 13:04:02 DEBUG MainProcess[config]: Reading the configuration file
2023-04-28 13:04:02 DEBUG MainProcess[config]: No configuration file found. Using defaults
2023-04-28 13:04:02 DEBUG MainProcess[main]: Flight added through CLI arguments
2023-04-28 13:04:02 DEBUG MainProcess[main]: Monitoring 0 accounts and 1 flights
2023-04-28 13:04:02 DEBUG Process-1[flight_retriever]: Scheduling reservations for 1 flights
2023-04-28 13:04:02 DEBUG Process-1[checkin_scheduler]: No headers set. Refreshing...
2023-04-28 13:04:02 DEBUG Process-1[checkin_scheduler]: Refreshing headers for current session
2023-04-28 13:04:02 DEBUG Process-1[webdriver]: Starting webdriver for current session
Process Process-1:
Traceback (most recent call last):
File "/usr/lib64/python3.10/multiprocessing/process.py", line 314, in _bootstrap
self.run()
File "/usr/lib64/python3.10/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "/home/john/source/auto-southwest-check-in/lib/flight_retriever.py", line 37, in schedule_reservations
self.checkin_scheduler.schedule(confirmation_numbers)
File "/home/john/source/auto-southwest-check-in/lib/checkin_scheduler.py", line 36, in schedule
self.refresh_headers()
File "/home/john/source/auto-southwest-check-in/lib/checkin_scheduler.py", line 48, in refresh_headers
webdriver.set_headers()
File "/home/john/source/auto-southwest-check-in/lib/webdriver.py", line 60, in set_headers
driver = self._get_driver()
File "/home/john/source/auto-southwest-check-in/lib/webdriver.py", line 140, in _get_driver
driver = Chrome(
File "/home/john/.local/lib/python3.10/site-packages/seleniumwire/undetected_chromedriver/webdriver.py", line 61, in init
super().init(*args, **kwargs)
File "/home/john/.local/lib/python3.10/site-packages/undetected_chromedriver/init.py", line 409, in init
browser = subprocess.Popen(
File "/usr/lib64/python3.10/subprocess.py", line 971, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib64/python3.10/subprocess.py", line 1722, in _execute_child
and os.path.dirname(executable)
File "/usr/lib64/python3.10/posixpath.py", line 152, in dirname
p = os.fspath(p)
TypeError: expected str, bytes or os.PathLike object, not NoneType

Here is my pip freeze output
[john@fedora auto-southwest-check-in]$ pip freeze

Output

aiohttp==3.8.1
aiorpcX==0.22.1
aiosignal==1.2.0
apprise==1.3.0
argcomplete==2.0.0
asn1crypto==1.5.1
async==0.6.2
async-generator==1.10
async-mixin==0.0.3
async-timeout==4.0.2
asyncio-throttle==1.0.2
attr==0.3.2
attrs==21.4.0
base58==2.1.1
Beaker==1.10.0
beautifulsoup4==4.11.0
bidict==0.22.0
bitstring==3.1.9
blinker==1.6.2
blivet==3.4.4
blivet-gui==2.3.0
Brlapi==0.8.4
Brotli==1.0.9
build==0.8.0
CacheControl==0.12.11
cachy==0.3.0
certifi==2022.12.7
cffi==1.15.0
chardet==4.0.0
charset-normalizer==2.0.11
chicken==0.1.0
cleo==0.8.1
click==8.0.4
clikit==0.6.2
coincurve==17.0.0
colorama==0.4.5
coverage==7.2.4
crashtest==0.3.1
cryptography==40.0.2
cupshelpers==1.0
dasbus==1.6
DateTime==5.1
dbus-python==1.2.18
distlib==0.3.4
distro==1.6.0
dnspython==2.2.0
docopt==0.6.1
docopts==0.6.1
e-x==1.16.0
exceptiongroup==1.1.1
fail2ban==1.0.1
fedora-third-party==0.10
fido2==0.9.3
filelock==3.3.1
Flask==2.0.3
Flask-SocketIO==5.3.1
fros==1.1
frozenlist==1.3.0
gpg==1.17.0
h11==0.14.0
h2==4.1.0
hpack==4.0.0
html5lib==1.1
humanize==3.13.1
hyperframe==6.0.1
idna==3.3
iniconfig==2.0.0
itsdangerous==2.0.1
jeepney==0.8.0
Jinja2==3.0.3
kaitaistruct==0.10
keyring==23.7.0
langtable==0.0.60
libcomps==0.1.18
lockfile==0.12.2
lxml==4.7.1
Mako==1.1.4
Markdown==3.4.3
MarkupSafe==2.1.1
msgpack==1.0.4
multidict==6.0.2
nftables==0.1
oauthlib==3.2.2
olefile==0.46
onionshare==2.5
onionshare-cli==2.5
outcome==1.2.0
packaging==20.9
Paste==3.5.0
pastel==0.2.1
pep517==0.12.0
pexpect==4.8.0
pid==2.2.3
Pillow==9.1.0
pkginfo==1.8.3
platformdirs==2.3.0
pluggy==1.0.0
ply==3.11
plyvel==1.4.0
poetry==1.1.14
poetry-core==1.0.8
productmd==1.33
psutil==5.9.1
psycopg2-binary==2.9.3
ptyprocess==0.6.0
pwquality==1.4.4
pyasn1==0.5.0
pycairo==1.21.0
pycodestyle==2.10.0
pycparser==2.20
pycrypto==2.6.1
pycups==2.0.1
pycurl==7.45.1
pyenchant==3.2.2
PyGObject==3.42.1
pykickstart==3.36
pylev==1.4.0
pyln-bolt1==1.0.1.187.post0
pyln-bolt2==1.0.2.187.post0
pyln-bolt4==1.0.2.187.post0
pyln-bolt7==1.0.2.186.post0
pyln-client==0.11.1
pyln-proto==0.11.1
pylru==1.2.1
PyNaCl==1.5.0
pyOpenSSL==23.1.1
pyparsing==2.4.7
pyparted==3.12.0
PyQt5==5.12.2
PyQt5-sip==12.11.0
pyscard==1.9.7
PySide2==5.15.2.1
PySocks==1.7.1
pytest==7.3.1
pytest-cov==4.0.0
pytest-mock==3.10.0
python-augeas==1.1.0
python-dateutil==2.8.1
python-engineio==4.3.4
python-meh==0.50
python-socketio==5.7.1
pytz==2022.7.1
pyudev==0.22.0
pyxdg==0.27
PyYAML==6.0
qrcode==7.3.1
regex==2022.9.13
requests==2.28.2
requests-file==1.5.1
requests-ftp==0.3.1
requests-mock==1.10.0
requests-oauthlib==1.3.1
requests-toolbelt==0.9.1
rpm==4.17.1
SecretStorage==3.3.2
selenium==4.8.0
selenium-wire==5.1.0
selinux==3.3
sepolicy==3.3
setools==4.4.0
shellingham==1.4.0
shiboken2==5.15.2.1
simpleaudio==1.0.4
simpleline==1.9.0
six==1.16.0
sniffio==1.3.0
sortedcontainers==2.4.0
sos==4.3
soupsieve==2.3.1
stem==1.8.0
systemd-python==234
Tempita==0.5.2
tomli==2.0.1
tomlkit==0.11.1
tqdm==4.64.0
trio==0.22.0
trio-websocket==0.10.2
undetected-chromedriver==3.1.7
Unidecode==1.3.6
urllib3==1.26.12
uuid==1.30
vcrpy==4.2.1
virtualenv==20.13.4
webencodings==0.5.1
websockets==10.3
Werkzeug==2.0.3
wrapt==1.15.0
wsproto==1.2.0
yarl==1.7.2
yubikey-manager==4.0.9
zope.interface==6.0
zstandard==0.21.0

To Reproduce

$python3 southwest.py -v [SW Conf Code] [First Name] [Last Name]

Expected Behavior

expecting script to run without any errors

Version

Auto-Southwest Check-In v3.1

Additional context

No response

Clarify editing notifications in docker

I was taking the leap that if I made a config.json before I did the docker build it would pull it in, but maybe that's not the case? Suggested method for adjusting the notifications for a docker run?

Bad Request 400

Hey, hopefully you are able to help! Our flight is 5:30AM on Saturday, so looking to check-in at 5:30AM on Friday. Any ideas what this issue could be? Flight hasn't departed or anything and the info I put in is correct. Any help would be greatly appreciated :)

image

Sleep Length too Large

Description

Successfully scheduled the following flights to check in for FIRST LAST:
Flight from ORIGIN to DESTINATION at 2023-04-02 19:45:00 UTC
Flight from ORIGIN to DESTINATION at 2023-04-29 12:45:00 UTC

Process Process-1:2:
Traceback (most recent call last):
File "C:\Users\ctkub\AppData\Local\Programs\Python\Python38\lib\multiprocessing\process.py", line 315, in _bootstrap
self.run()
File "C:\Users\ctkub\AppData\Local\Programs\Python\Python38\lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\ctkub\Desktop\Southwest Checkin\lib\checkin_handler.py", line 40, in _set_check_in
self._wait_for_check_in(checkin_time)
File "C:\Users\ctkub\Desktop\Southwest Checkin\lib\checkin_handler.py", line 53, in _wait_for_check_in
time.sleep(sleep_time)
OverflowError: sleep length is too large

To Reproduce

Log into an account with a future flight a few months out

Expected Behavior

No response

Version

No response

Additional context

No response

Password Containing Special Characters Causes Logging In To Fail

I am getting a stack trace when I try to use the check-in by account log-in method. I have no issues when I schedule the check-in by confirmation number and first name / last name. Could this possibly have something to do with one of the people on the flight have a lap child associated with them?

python3 southwest.py USERNAME PASSWORD

  File "/home/uig/auto-southwest-check-in/southwest.py", line 41, in <module>
    set_up(arguments)
  File "/home/uig/auto-southwest-check-in/southwest.py", line 24, in set_up
    flight_retriever.monitor_account()
  File "/home/uig/auto-southwest-check-in/lib/flight_retriever.py", line 53, in monitor_account
    flights = self._get_flights()
  File "/home/uig/auto-southwest-check-in/lib/flight_retriever.py", line 65, in _get_flights
    flights = webdriver.get_flights(self)
  File "/home/uig/auto-southwest-check-in/lib/webdriver.py", line 113, in get_flights
    self._set_account_name(flight_retriever, response)
  File "/home/uig/auto-southwest-check-in/lib/webdriver.py", line 149, in _set_account_name
    flight_retriever.first_name = response["customers.userInformation.firstName"]
KeyError: 'customers.userInformation.firstName'

Would new flights be added automatically?

Hi @jdholtz, just curious, if I use the script to sign in my account and left it running, let's say later I booked some new flights , would the new flights be scheduled for check-ins automatically, or I have to kill and restart?

Error in Readme for getting --help

Description

The following line should be python3 versus python for getting the help information.

python southwest.py --help

Should be

python3 southwest.py --help

Screenshot 2023-03-19 at 5 21 01 PM

To Reproduce

Run from a command prompt

python southwest.py --help

Error:

Traceback (most recent call last):
File "southwest.py", line 6, in
from lib.main import main
File "/home/joe/apps/auto-southwest-check-in/lib/main.py", line 36
def print_version() -> None:
^
SyntaxError: invalid syntax

Expected Behavior

Auto-Southwest Check-In v3.0

Schedule a check-in:
python3 southwest.py CONFIRMATION_NUMBER FIRST_NAME LAST_NAME

Log into your account:
python3 southwest.py USERNAME PASSWORD

Options:
--test-notifications Test the notification URLs configuration and exit
-v, --verbose Emit debug messages to stderr
-h, --help Display this help and exit
-V, --version Display version information and exit

For more information, check out https://github.com/jdholtz/auto-southwest-check-in#readme

Version

Auto-Southwest Check-In v3.0

Additional context

I will submit a pull request with the fix...

OpenSSL.SSL' has no attribute

Issue came in:

File "C:\Python310\lib\site-packages\seleniumwire\thirdparty\mitmproxy\net\tls.py", line 43, in
"SSLv2": (SSL.SSLv2_METHOD, BASIC_OPTIONS),
AttributeError: module 'OpenSSL.SSL' has no attribute 'SSLv2_METHOD'. Did you mean: 'SSLv23_METHOD'

Solved with: pip install pyopenssl==22.0.0

ElementClickInterceptedException when logging in (but not failing)

Description

I'm running Chrome v111 on an m1 Macbook Air. I cloned the repo, set up the config file, and ran the script. I noticed a selenium ElementClickInterceptedException, but it didn't seem to really break anything. Here is what showed in the console after running the script (names changed):

Process Process-1:
Traceback (most recent call last):
  File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py", line 315, in _bootstrap
    self.run()
  File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/Users/johndoe/Desktop/auto-southwest-check-in/lib/flight_retriever.py", line 64, in monitor_account
    flights = self._get_flights()
  File "/Users/johndoe/Desktop/auto-southwest-check-in/lib/flight_retriever.py", line 85, in _get_flights
    flights = webdriver.get_flights(self)
  File "/Users/johndoe/Desktop/auto-southwest-check-in/lib/webdriver.py", line 94, in get_flights
    WebDriverWait(driver, 30).until(
  File "/Users/johndoe/Library/Python/3.9/lib/python/site-packages/selenium/webdriver/remote/webelement.py", line 93, in click
    self._execute(Command.CLICK_ELEMENT)
  File "/Users/johndoe/Library/Python/3.9/lib/python/site-packages/selenium/webdriver/remote/webelement.py", line 403, in _execute
    return self._parent.execute(command, params)
  File "/Users/johndoe/Library/Python/3.9/lib/python/site-packages/selenium/webdriver/remote/webdriver.py", line 440, in execute
    self.error_handler.check_response(response)
  File "/Users/johndoe/Library/Python/3.9/lib/python/site-packages/selenium/webdriver/remote/errorhandler.py", line 245, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <span class="login-button--box">...</span> is not clickable at point (1146, 27). Other element would receive the click: <div class="dimmer" data-qa="loading spinner">...</div>
  (Session info: chrome=111.0.5563.64)
Stacktrace:
0   6c449b3dfb737173_chromedriver       0x00000001009c2428 6c449b3dfb737173_chromedriver + 4899880
1   6c449b3dfb737173_chromedriver       0x000000010093fa23 6c449b3dfb737173_chromedriver + 4364835
2   6c449b3dfb737173_chromedriver       0x0000000100589bf6 6c449b3dfb737173_chromedriver + 474102
3   6c449b3dfb737173_chromedriver       0x00000001005d6d81 6c449b3dfb737173_chromedriver + 789889
4   6c449b3dfb737173_chromedriver       0x00000001005d3dde 6c449b3dfb737173_chromedriver + 777694
5   6c449b3dfb737173_chromedriver       0x00000001005d0a54 6c449b3dfb737173_chromedriver + 764500
6   6c449b3dfb737173_chromedriver       0x00000001005cf43f 6c449b3dfb737173_chromedriver + 758847
7   6c449b3dfb737173_chromedriver       0x00000001005bfcf3 6c449b3dfb737173_chromedriver + 695539
8   6c449b3dfb737173_chromedriver       0x00000001005f3562 6c449b3dfb737173_chromedriver + 906594
9   6c449b3dfb737173_chromedriver       0x00000001005bf361 6c449b3dfb737173_chromedriver + 693089
10  6c449b3dfb737173_chromedriver       0x00000001005f371e 6c449b3dfb737173_chromedriver + 907038
11  6c449b3dfb737173_chromedriver       0x000000010060eb5b 6c449b3dfb737173_chromedriver + 1018715
12  6c449b3dfb737173_chromedriver       0x00000001005f3333 6c449b3dfb737173_chromedriver + 906035
13  6c449b3dfb737173_chromedriver       0x00000001005bd55f 6c449b3dfb737173_chromedriver + 685407
14  6c449b3dfb737173_chromedriver       0x00000001005bea7e 6c449b3dfb737173_chromedriver + 690814
15  6c449b3dfb737173_chromedriver       0x000000010098f79e 6c449b3dfb737173_chromedriver + 4691870
16  6c449b3dfb737173_chromedriver       0x0000000100994961 6c449b3dfb737173_chromedriver + 4712801
17  6c449b3dfb737173_chromedriver       0x000000010099b2ff 6c449b3dfb737173_chromedriver + 4739839
18  6c449b3dfb737173_chromedriver       0x000000010099585a 6c449b3dfb737173_chromedriver + 4716634
19  6c449b3dfb737173_chromedriver       0x0000000100967fce 6c449b3dfb737173_chromedriver + 4530126
20  6c449b3dfb737173_chromedriver       0x00000001009b55c8 6c449b3dfb737173_chromedriver + 4847048
21  6c449b3dfb737173_chromedriver       0x00000001009b5747 6c449b3dfb737173_chromedriver + 4847431
22  6c449b3dfb737173_chromedriver       0x00000001009ca87f 6c449b3dfb737173_chromedriver + 4933759
23  libsystem_pthread.dylib             0x00007ff80b0c5259 _pthread_start + 125
24  libsystem_pthread.dylib             0x00007ff80b0c0c7b thread_start + 15

Successfully scheduled the following flights to check in for John Doe:
Flight from Dallas (Love Field) to Chicago (O’Hare-Terminal 5) at 2023-03-16 23:35:00 UTC
Flight from Chicago (O’Hare-Terminal 5) to Dallas (Love Field) at 2023-03-20 01:25:00 UTC

Successfully scheduled the following flights to check in for Jane Doe:
Flight from Dallas (Love Field) to Chicago (O’Hare-Terminal 5) at 2023-03-16 23:35:00 UTC
Flight from Chicago (O’Hare-Terminal 5) to Dallas (Love Field) at 2023-03-20 01:25:00 UTC

To Reproduce

  1. git clone https://github.com/jdholtz/auto-southwest-check-in.git
  2. cd auto-southwest-check-in
  3. python3 -m pip install -r requirements.txt
  4. python3 southwest.py --version
  5. cp config.example.json config.json (and add account and flight into to config)
  6. python3 southwest.py

Exception and stacktrace are logged on screen. Logs indicate script was successful.

Expected Behavior

I wouldn't expect to see a stacktrace or exception if the script was successful.

Version

Auto-Southwest Check-In v3.0

Additional context

Here is the auto-southwest-check-in.log:

2023-03-14 09:26:45 DEBUG MainProcess[log]: Initialized the application
2023-03-14 09:26:45 DEBUG MainProcess[main]: Called with 0 arguments
2023-03-14 09:26:46 DEBUG MainProcess[config]: Reading the configuration file
2023-03-14 09:26:46 DEBUG MainProcess[config]: Adding 1 accounts from configuration file
2023-03-14 09:26:46 DEBUG MainProcess[config]: Adding 2 flights from configuration file
2023-03-14 09:26:46 DEBUG MainProcess[config]: Setting notification level to 1
2023-03-14 09:26:46 DEBUG MainProcess[config]: Using 1 notification services
2023-03-14 09:26:46 DEBUG MainProcess[config]: Setting retrieval interval to 24 hours
2023-03-14 09:26:46 DEBUG MainProcess[main]: Monitoring 1 accounts and 2 flights
2023-03-14 09:26:46 DEBUG Process-1[flight_retriever]: Retrieving flights for account
2023-03-14 09:26:46 DEBUG Process-3[flight_retriever]: Scheduling reservations for 1 flights
2023-03-14 09:26:46 DEBUG Process-2[flight_retriever]: Scheduling reservations for 1 flights
2023-03-14 09:26:46 DEBUG Process-1[webdriver]: Starting webdriver for current session
2023-03-14 09:26:46 DEBUG Process-3[checkin_scheduler]: No headers set. Refreshing...
2023-03-14 09:26:46 DEBUG Process-2[checkin_scheduler]: No headers set. Refreshing...
2023-03-14 09:26:46 DEBUG Process-3[checkin_scheduler]: Refreshing headers for current session
2023-03-14 09:26:46 DEBUG Process-2[checkin_scheduler]: Refreshing headers for current session
2023-03-14 09:26:46 DEBUG Process-3[webdriver]: Starting webdriver for current session
2023-03-14 09:26:46 DEBUG Process-2[webdriver]: Starting webdriver for current session
2023-03-14 09:26:51 DEBUG Process-2[webdriver]: Loading Southwest Check-In page
2023-03-14 09:26:55 DEBUG Process-1[webdriver]: Loading Southwest Check-In page
2023-03-14 09:26:55 DEBUG Process-3[webdriver]: Loading Southwest Check-In page
2023-03-14 09:26:59 DEBUG Process-2[webdriver]: Filling out a check-in form to get valid headers
2023-03-14 09:27:02 DEBUG Process-1[webdriver]: Logging into Southwest account to get scheduled flights and valid headers
2023-03-14 09:27:03 DEBUG Process-3[webdriver]: Filling out a check-in form to get valid headers
2023-03-14 09:27:12 DEBUG Process-2[webdriver]: Setting valid headers from previous request
2023-03-14 09:27:12 DEBUG Process-2[checkin_scheduler]: Retrieving reservation info from confirmation number
2023-03-14 09:27:13 DEBUG Process-2[checkin_scheduler]: Successfully retrieved reservation info
2023-03-14 09:27:13 DEBUG Process-2[checkin_scheduler]: 2 flights found under current reservation
2023-03-14 09:27:13 DEBUG Process-2[checkin_scheduler]: New flight found. Handling check-in
2023-03-14 09:27:13 DEBUG Process-2[checkin_handler]: Scheduling check-in for current flight
2023-03-14 09:27:13 DEBUG Process-2[checkin_scheduler]: New flight found. Handling check-in
2023-03-14 09:27:13 DEBUG Process-2[checkin_handler]: Scheduling check-in for current flight
2023-03-14 09:27:13 DEBUG Process-2[notification_handler]: Sending new flights notification
2023-03-14 09:27:14 DEBUG Process-2:1[checkin_handler]: Sleeping until ten minutes before check-in...
2023-03-14 09:27:14 DEBUG Process-2:2[checkin_handler]: Sleeping until ten minutes before check-in...
2023-03-14 09:27:15 DEBUG Process-3[webdriver]: Setting valid headers from previous request
2023-03-14 09:27:15 DEBUG Process-3[checkin_scheduler]: Retrieving reservation info from confirmation number
2023-03-14 09:27:17 DEBUG Process-3[checkin_scheduler]: Successfully retrieved reservation info
2023-03-14 09:27:17 DEBUG Process-3[checkin_scheduler]: 2 flights found under current reservation
2023-03-14 09:27:17 DEBUG Process-3[checkin_scheduler]: New flight found. Handling check-in
2023-03-14 09:27:17 DEBUG Process-3[checkin_handler]: Scheduling check-in for current flight
2023-03-14 09:27:17 DEBUG Process-3[checkin_scheduler]: New flight found. Handling check-in
2023-03-14 09:27:17 DEBUG Process-3[checkin_handler]: Scheduling check-in for current flight
2023-03-14 09:27:17 DEBUG Process-3[notification_handler]: Sending new flights notification
2023-03-14 09:27:18 DEBUG Process-3:2[checkin_handler]: Sleeping until ten minutes before check-in...
2023-03-14 09:27:18 DEBUG Process-3:1[checkin_handler]: Sleeping until ten minutes before check-in...

Error When Google Chrome Is Not Found

I'm getting the follow error when trying to run the script:

Traceback (most recent call last):
File "/root/auto-southwest-check-in/southwest.py", line 41, in
set_up(arguments)
File "/root/auto-southwest-check-in/southwest.py", line 31, in set_up
flight_retriever.checkin_scheduler.refresh_headers()
File "/root/auto-southwest-check-in/lib/checkin_scheduler.py", line 81, in refresh_headers
webdriver.set_headers()
File "/root/auto-southwest-check-in/lib/webdriver.py", line 61, in set_headers
driver = self._get_driver()
File "/root/auto-southwest-check-in/lib/webdriver.py", line 44, in _get_driver
driver = Chrome(options=self.options, seleniumwire_options=self.seleniumwire_options)
File "/usr/local/lib/python3.10/dist-packages/seleniumwire/undetected_chromedriver/webdriver.py", line 61, in init
super().init(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/undetected_chromedriver/init.py", line 409, in init
browser = subprocess.Popen(
File "/usr/lib/python3.10/subprocess.py", line 969, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.10/subprocess.py", line 1720, in _execute_child
and os.path.dirname(executable)
File "/usr/lib/python3.10/posixpath.py", line 152, in dirname
p = os.fspath(p)
TypeError: expected str, bytes or os.PathLike object, not NoneType

Everything was updated before I ran it. Thanks!

Check In Fails With An International Flight

I got a failure last night attempting to try this project for the first time using Docker. FWIW this was an international flight and it required our passport information when checking in manually.

$ docker logs 1234
Scheduling checkin to flight from 'X' to 'Y' for John Smith at 2022-11-11 12:59:55 UTC

Scheduling checkin to flight from 'Y' to 'X' for John Smith at 2022-11-15 21:59:55 UTC

Checking in to flight from 'X' to 'Y' for John Smith

Failed to check in to flight FOOBAR for John Smith. Reason: Too Many Requests 429.
Check in at this url: https://mobile.southwest.com/check-in

v3.1: Timed out receiving message from renderer from Docker

Description

When attempting to run v3.1 version of the docker, I am presented with the following stack trace:

2023-03-26 10:55:52 DEBUG MainProcess[log]: Initialized the application
2023-03-26 10:55:52 DEBUG MainProcess[main]: Called with 1 arguments
2023-03-26 10:55:53 DEBUG MainProcess[config]: Reading the configuration file
2023-03-26 10:55:53 DEBUG MainProcess[config]: Adding 0 accounts from configuration file
2023-03-26 10:55:53 DEBUG MainProcess[config]: Adding 1 flights from configuration file
2023-03-26 10:55:53 DEBUG MainProcess[config]: Setting notification level to 1
2023-03-26 10:55:53 DEBUG MainProcess[config]: Using 1 notification services
2023-03-26 10:55:53 DEBUG MainProcess[config]: Setting retrieval interval to 24 hours
2023-03-26 10:55:53 DEBUG MainProcess[main]: Monitoring 0 accounts and 1 flights
2023-03-26 10:55:53 DEBUG Process-1[flight_retriever]: Scheduling reservations for 1 flights
2023-03-26 10:55:53 DEBUG Process-1[checkin_scheduler]: No headers set. Refreshing...
2023-03-26 10:55:53 DEBUG Process-1[checkin_scheduler]: Refreshing headers for current session
2023-03-26 10:55:53 DEBUG Process-1[webdriver]: Starting webdriver for current session
2023-03-26 10:55:54 DEBUG Process-1[webdriver]: Loading Southwest Check-In page
Process Process-1:
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/usr/local/lib/python3.11/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/app/lib/flight_retriever.py", line 37, in schedule_reservations
    self.checkin_scheduler.schedule(confirmation_numbers)
  File "/app/lib/checkin_scheduler.py", line 36, in schedule
    self.refresh_headers()
  File "/app/lib/checkin_scheduler.py", line 48, in refresh_headers
    webdriver.set_headers()
  File "/app/lib/webdriver.py", line 60, in set_headers
    driver = self._get_driver()
             ^^^^^^^^^^^^^^^^^^
  File "/app/lib/webdriver.py", line 149, in _get_driver
    driver.get(CHECKIN_URL)
  File "/usr/local/lib/python3.11/site-packages/undetected_chromedriver/__init__.py", line 656, in get
    return super().get(url)
           ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/selenium/webdriver/remote/webdriver.py", line 449, in get
    self.execute(Command.GET, {"url": url})
  File "/usr/local/lib/python3.11/site-packages/selenium/webdriver/remote/webdriver.py", line 440, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.11/site-packages/selenium/webdriver/remote/errorhandler.py", line 245, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: timeout: Timed out receiving message from renderer: -0.000
  (Session info: chrome=110.0.5481.177)

I have seen it work once for one flight, so it seems to be an intermittent issue. But with multiple flights, it seems to happen consistently. Going back to v3.0 works fine.

To Reproduce

  1. Set a config file with multiple flight confirmationNumber/firstName/lastName entries
  2. Run docker run --volume /.../config.json:/app/config.json jdholtz/auto-southwest-check-in:v3.1 -- --verbose

Expected Behavior

The embedded browser able to get to the check-in page.

Version

v3.1

Additional context

No response

Ability to run multiple instances of the script

Description

I travel for business and I bring along my significant other. However, I need to book my flights via our company's travel tool and my SO's flights via some other means.
I tried to run the script again but this time with her information, but was met with an error about the log file already being open.

It would be awesome if we can either run multiple instances of it (maybe as simple as adding some type of random characters at the end of the log file name) or list multiple confirmation numbers and names in the same script call.

What alternatives have you considered?

Creating a second VM to run the other instance of the script.

Time Seems off in logs

Description

image

I believe the times it says in the logs are incorrect because the UTC time and date are wrong for my flights.

To Reproduce

run script passing confirmation first last

Expected Behavior

Date/time to be correct

Version

No response

Additional context

No response

ARM7 Docker Support

Description

Would like to get this deployed on a Raspberry Pi via Portainer but getting the following error

no matching manifest for linux/arm/v7 in the manifest list entries

Any way to include an ARM7 image for those who want to push to their local RPI servers?

What alternatives have you considered?

No response

Docker selenium issue?

Description

logs:

causefx@docker:/opt/docker$ docker logs southwest -f
Successfully logged in to *******s account

Successfully scheduled the following flights to check in for ******:
Flight from ***** to ****** at 2023-05-12 17:30:00 UTC
Flight from *****  to ******* at 2023-05-15 17:10:00 UTC

Successfully scheduled the following flights to check in for ******:
Flight from ****** to ******** at 2023-06-02 00:15:00 UTC
Flight from ******* to ******** at 2023-06-05 01:00:00 UTC

Process Process-1:1:
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/usr/local/lib/python3.11/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/app/lib/checkin_handler.py", line 44, in _set_check_in
    self._wait_for_check_in(checkin_time)
  File "/app/lib/checkin_handler.py", line 60, in _wait_for_check_in
    self.checkin_scheduler.refresh_headers()
  File "/app/lib/checkin_scheduler.py", line 48, in refresh_headers
    webdriver.set_headers()
  File "/app/lib/webdriver.py", line 59, in set_headers
    driver = self._get_driver()
             ^^^^^^^^^^^^^^^^^^
  File "/app/lib/webdriver.py", line 142, in _get_driver
    driver = Chrome(
             ^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/seleniumwire/undetected_chromedriver/webdriver.py", line 61, in __init__
    super().__init__(*args, **kwargs)
  File "/usr/local/lib/python3.11/site-packages/undetected_chromedriver/__init__.py", line 429, in __init__
    super(Chrome, self).__init__(
  File "/usr/local/lib/python3.11/site-packages/selenium/webdriver/chrome/webdriver.py", line 84, in __init__
    super().__init__(
  File "/usr/local/lib/python3.11/site-packages/selenium/webdriver/chromium/webdriver.py", line 104, in __init__
    super().__init__(
  File "/usr/local/lib/python3.11/site-packages/selenium/webdriver/remote/webdriver.py", line 286, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python3.11/site-packages/undetected_chromedriver/__init__.py", line 715, in start_session
    super(selenium.webdriver.chrome.webdriver.WebDriver, self).start_session(
  File "/usr/local/lib/python3.11/site-packages/selenium/webdriver/remote/webdriver.py", line 378, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/selenium/webdriver/remote/webdriver.py", line 440, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.11/site-packages/selenium/webdriver/remote/errorhandler.py", line 245, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: timeout: Timed out receiving message from renderer: 600.000
  (Session info: chrome=112.0.5615.165)

To Reproduce

Pull container and setup the config file

Expected Behavior

To check in for flight

Version

5.0

Additional context

Docker-Compose:

    southwest:
        container_name: southwest
        image: jdholtz/auto-southwest-check-in
        volumes:
          - ${DATADIR}/southwest/config/config.json:/app/config.json
        environment:
            - TZ=${TZ}
            - PUID=${PUID}
            - PGID=${PGID}
          

Config:

{
    "check_fares": true,
    "notification_urls": "mailtos://smtp.zoho.com/?from=smtp@*********&subject=Southwest&to=***********&user=************&pass=*********,
    "notification_level": 1,
    "retrieval_interval": 24,
    "accounts": [{"username": "***********", "password": "*********"}],
    "flights": []
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.