Skip to content

Buy parking permits for the Orinda BART parking lot programmatically.

License

Notifications You must be signed in to change notification settings

vermont42/Permitter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Permitter

GitHub Stars GitHub closed issues Twitter license cat


Introduction

Parking permits for the Orinda BART parking lot sell out sixty days in advance, by 7:00 AM. In early 2018, I developed Permitter on a now-retired MacBook Pro to automate parking-permit purchases for my wife. From then until March, 2020, I ran Permitter daily on my Windows PC using Task Scheduler. Five days a week, new permits magically appeared in my wife's Select-a-Spot account.

The Permitter stack includes Java, IntelliJ, Selenium WebDriver, and Firefox. I used Katalon Automation Recorder to observe interactions with the parking-website DOM. I strongly endorse that product.

Enjoy a video of Permitter in action.

Use

Permitter requires a credentials file called credentials by default. This file should have a BART-parking username and password with the format username,password.

Permitter can exclude holidays, vacations, and particular days of the week from purchase. See exclude.xml for how. (Though I am comfortable with JSON, I prefer the verbosity of XML.) You should modify or delete that file before running Permitter, as you probably don't want the exclusions currently in exclude.xml.

Permitter has three optional launch arguments:

  • credentialsFile=VALUE: the file to get credentials from; default value: credentials
  • logFile=VALUE: the file to log output to; default value: logfile.txt
  • excludeFile=VALUE: the file to get exclusions from; default value: exclusions.xml

Permitter's repo has the MacOS Firefox Selenium WebDriver, geckodriver, but for other operating systems or browsers, use the appropriate driver. For example, if you are running Firefox on Windows, replace the string geckodriver in Permitter.java with geckodriver.exe.

As of April 6, 2019, Permitter worked with the following versions:

  • IntelliJ IDEA: 2019.1
  • JDK: 8, Update 201
  • Selenium WebDriver for Java: 3.141.59
  • geckodriver: 0.24.0
  • MacOS: 10.14.4
  • Windows: 10.0.17763.404
  • Firefox: 66.0.2

Technical Notes

Permitter.java has the main method.

The Safari and Chrome Selenium WebDrivers did not work for me, which is why I used the Firefox Selenium WebDriver. YMMV.

In my initial efforts to solve the purchasing problem, I tried Permitter, a Ruby app. I ultimately decided to implement something else because I am not fond of Ruby's unless keyword. That said, I thank Permitter's developer, Jeff Kowalski, for demonstrating that this automation is possible.

As a Swift developer, I was inclined to use WKZombie, but I could not get forms to work, perhaps because of this issue.

About

Buy parking permits for the Orinda BART parking lot programmatically.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages