Skip to content

Scrapes all weather data from Enviroment Canada in under 30s*

License

Notifications You must be signed in to change notification settings

tadghh/python-weather-app

Repository files navigation

Weather Scraper Apprentice

A Python application that scapes historical weather data from Enviroment Canada. This was the final submission for my college's Python course.

Preview

Building

  • Install Python 3.12
  • Create a virtual environment
  • Run BuildMe.ps1

Download and Build

⚠️ The following script will prompt you to temporarily bypass powershell's execution policy

BuildMe.ps1 Is responsible for the creation of the applications executable file

The Inno Script.iss file can be used with Inno Setup to create an installer

⚠️ The below command is designed for windows

git clone git@github.com:tadghh/PythonWeatherApp.git
cd .\PythonWeatherApp\
python -m venv venv
venv\Scripts\activate
pip install -r '.\Weather Processing\requirements.txt'
powershell -ExecutionPolicy Bypass -File .\BuildMe.ps1

Build output location

After running the above commands you will find an executable file inside the dist directory of the downloaded python-weather-app repository.

Libraries used

  • pylint
  • contourpy
  • kiwisolver
  • lxml
  • matplotlib
  • numpy
  • Pillow
  • pyinstaller
  • pyinstaller-hooks-contrib
  • Menu
  • tqdm

Features

  • PEP8 Compliant
  • Multithreaded data scraping
    • 27 years worth of tempertaure data can be processed, saved and formatted in under 30 seconds
  • Uses SQLite to store weather info
    • Index used to quickly update with distinct data
  • Error handling
  • UX focused menu
    • If the range of years was put in backwards a prompt appears offering to swap the dates
    • Explanations for incorrect input
  • Data visualization
    • Box plot that displays the min, avg, max temperatures for each month across a range of years
    • Line graph, used to show the temperature across of a specific month and year
  • Error logging, to assist trouble shooting

Code quality

Our code quality is currently...

Pylint

Here are the linting recommendations

------------------------------------
Your code has been rated at 10.00/10