A simple scheduler tool that provides desktop notifications about classes and opens their meet links in the browser automatically at the start of the class.

Overview

Online Class Automation

This application provides desktop notifications about classes and opens their meet links in browser automatically at the start of the class.

It works both in windows and linux. But runs better in linux when used with cron.

Code Overview

  • class-data.json: Stores the timetable in simple json format. Specify the name and meet link of classes with their timings according to your timetable. The time of a class is specified by day and hour. Day ranges from 0 for Monday to 6 for Sunday. And hour ranges from 0 to 23.

  • main.py: It loads the timetable and checks if there is a class now. In case there is a class it shows a desktop notification with sound and then opens its meet link in the browser.

    Creating a cron job to run this file at the start of every hour is enough to achieve the goal of this program.

  • scheduler.py: This is a custom scheduler which may be used in case cron is not available (in case of windows).

Installation

  • Install the dependencies

    pipenv install --system
    
  • In case of windows, also install win10toast

    pip install win10toast
    
  • The class-data.json file by default has 2nd year CSE B.Tech timetable. Edit this as per your timetable.

  • The last step is setting up the scheduler. Follow one of the following methods.

Using Cron

This methods works in linux and macOS.

  • Run this command to setup cron job

    crontab -e
    
  • If this is the first time you are setting a cron job, you'll be prompted to select an editor. Choose nano to keep it simple.

  • At the end of file that opens, append this line

    1 * * * * export DISPLAY=:0; XDG_RUNTIME_DIR=/run/user/$(id -u) cd ~//online-class-automation && python3 main.py
    

    This command is run at :01 every hour.

    Make sure to change the

    You may add >>debug.log 2>&1 at the end of this line to create a log file to keep log of this programs activity.

Set as startup app for windows

  • Create a shortcut of start-class-scheduler.bat

  • Open the startup apps folder. Press Windows logo key + R, then enter shell:startup to open it.

  • Move the shortcut of start-class-scheduler.bat to the startup apps folder.

This method will keep a command prompt window always open, which may be annoying :/

You may explore others methods such as Windows Task Scheduler or creating a background process. All you need to do is run the this command at startup.

python scheduler.py

Contributing to this project

This is a simple project. It can be easily customized to perform other scheduling tasks with minor changes in code.

If you have any query regarding this project, or want to add any feature to it, feel free to open an issue.

Issues
  • Some minor changes

    Some minor changes

    Added the dynamic path so that we can run the script from anywhere in our os.

    opened by raman08 2
  • timetable.py

    timetable.py

    this is my first ever pull request and my first ever development project , i would really like it to get accepted and if not would really like some guidance into it, i really want to this project. as i am from non cs this would really boost my confidence. Thank you.

    opened by Ktmenduro690 1
  • Add timetables of different classes

    Add timetables of different classes

    If you are using this tool and have made a timetable for your class yourself, please do share it by adding it to this repo. So that other people from your class can reuse it!

    enhancement help wanted good first issue 
    opened by Anshit01 0
Owner
Anshit
B.tech CSE student at NIT Hamirpur | Executive Member at @CSEC-NITH | @appteam-nith | @Teamexe
Anshit
The easiest way to automate your data

Hello, world! ?? We've rebuilt data engineering for the data science era. Prefect is a new workflow management system, designed for modern infrastruct

Prefect 7.6k Oct 23, 2021
Remote task execution tool

Gunnery Gunnery is a multipurpose task execution tool for distributed systems with web-based interface. If your application is divided into multiple s

Gunnery 730 Oct 16, 2021
Python job scheduling for humans.

schedule Python job scheduling for humans. Run Python functions (or any other callable) periodically using a friendly syntax. A simple to use API for

Dan Bader 9.1k Oct 23, 2021
CoSA: Scheduling by Constrained Optimization for Spatial Accelerators

CoSA is a scheduler for spatial DNN accelerators that generate high-performance schedules in one shot using mixed integer programming

UC Berkeley Architecture Research 20 Sep 22, 2021
A powerful workflow engine implemented in pure Python

Spiff Workflow Summary Spiff Workflow is a workflow engine implemented in pure Python. It is based on the excellent work of the Workflow Patterns init

Samuel 1k Oct 20, 2021
Python-Repeated-Timer is an open-source & highly performing timer using only standard-libraries.

Python Repeated Timer Python-Repeated-Timer is an open-source & highly performing timer using only standard-libraries.

TACKHYUN JUNG 3 Sep 8, 2021
A calendaring app for Django. It is now stable, Please feel free to use it now. Active development has been taken over by bartekgorny.

Django-schedule A calendaring/scheduling application, featuring: one-time and recurring events calendar exceptions (occurrences changed or cancelled)

Tony Hauber 796 Oct 21, 2021
Crontab jobs management in Python

Plan Plan is a Python package for writing and deploying cron jobs. Plan will convert Python code to cron syntax. You can easily manage you

Shipeng Feng 1.1k Aug 22, 2021