This application helps you find an available appointment in New Jersey Motor Vehicle Commission (NJ-MVC) appointment wizard.
This is a python-based CLI application that continuously monitors and notifies users of available appointments within a specified date range.The project uses web scraping to retrieve real-time appointment data from a government website and filters the results based on user-defined parameters
- Scrapes appointment data from a website using
BeautifulSoup
andrequests
. - Filters appointments based on user-defined date ranges.
- Sends desktop notifications for available appointments using
plyer
- Command-line interface for easy configuration
- Python 3.8+
- BeautifulSoup for web scraping
- Requests for HTTP requests
- Plyer for desktop notifications
- Argparse for CLI interface
-
Clone the repository:
git clone https://github.com/yourusername/MVC-Appointment-Finder.git cd MVC-Appointment-Finder
-
Create and activate a virtual environment (optional but recommended):
python -m venv venv source venv/bin/activate # Linux/Mac .\venv\Scripts\activate # Windows
-
Install dependencies:
pip install -r requirements.txt
-
Run the application:
python main.py --days 10 --interval 15
The application takes two command-line arguments:
--days
: Number of days to search for available appointments (required).--interval
: Time in seconds between each check (default is 10 seconds).
python main.py --days 5 --interval 20
This will check for appointments within the next 5 days and notify you every 20 seconds if new slots are found
main.py
: CLI interface that starts the continuous search processmodel.py
: Defined theLocation
class and handles data validationlocationRetriever.py
: Contains theLocationRetriever
class for scraping and parsing data andFilter
class for filtering the available locations found in the previous class based on specified day rangesearcher.py
: Implements the continuous search logic and sends desktop notificationsrequirements.txt
: List of project dependencies
This project includes unit tests for key components to ensure reliability and correct functionality.
To run the tests, execute the following command:
python -m unittest discover tests
This project is licensed under the MIT License. See the LICENSE file for details.
Developed by Arthur(https://github.com/ArthurCRodrigues). Feel free to reach out for collaboration or questions.