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.

Owner
Anshit
B.tech CSE student at NIT Hamirpur | Executive Member at @CSEC-NITH | @appteam-nith | @Teamexe
Anshit
generate HPC scheduler systems jobs input scripts and submit these scripts to HPC systems and poke until they finish

DPDispatcher DPDispatcher is a python package used to generate HPC(High Performance Computing) scheduler systems (Slurm/PBS/LSF/dpcloudserver) jobs in

DeepModeling 23 Nov 30, 2022
A Lightweight Cluster/Cloud VM Job Management Tool 🚀

Lightweight Cluster/Cloud VM Job Management 🚀 Are you looking for a tool to manage your training runs locally, on Slurm/Open Grid Engine clusters, SS

29 Dec 12, 2022
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.2k Dec 28, 2022
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 10.9k Jan 04, 2023
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 44 Dec 13, 2022
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 10.4k Jan 02, 2023
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 Oct 09, 2022
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 747 Nov 09, 2022
dragonscales is a highly customizable asynchronous job-scheduler framework

dragonscales 🐉 dragonscales is a highly customizable asynchronous job-scheduler framework. This framework is used to scale the execution of multiple

Sorcero 2 May 16, 2022
Here is the live demonstration of endpoints and celery worker along with RabbitMQ

whelp-task Here is the live demonstration of endpoints and celery worker along with RabbitMQ Before running the application make sure that you have yo

Yalchin403 0 Nov 14, 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 814 Dec 26, 2022
Automate SQL Jobs Monitoring with python

Automate_SQLJobsMonitoring_python Using python 3rd party modules we can automate

Aejaz Ayaz 1 Dec 27, 2021
Another Scheduler is a Kubernetes controller that automatically starts, stops, or restarts pods from a deployment at a specified time using a cron annotation.

Another Scheduler Another Scheduler is a Kubernetes controller that automatically starts, stops, or restarts pods from a deployment at a specified tim

Diego Najar 66 Nov 19, 2022
Clepsydra is a mini framework for task scheduling

Intro Clepsydra is a mini framework for task scheduling All parts are designed to be replaceable. Main ideas are: No pickle! Tasks are stored in reada

Andrey Tikhonov 15 Nov 04, 2022
A flexible python library for building your own cron-like system, with REST APIs and a Web UI.

Nextdoor Scheduler ndscheduler is a flexible python library for building your own cron-like system to schedule jobs, which is to run a tornado process

1k Dec 15, 2022
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 1.3k Jan 08, 2023
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.

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

Anshit 14 Jun 29, 2022
Ffxiv-blended-job-icons - All action icons for each class/job are blended together to create new backgrounds for each job/class icon!

ffxiv-blended-job-icons All action icons for each class/job are blended together to create new backgrounds for each job/class icon! I used python to c

Jon Strutz 2 Jul 07, 2022
A Python concurrency scheduling library, compatible with asyncio and trio.

aiometer aiometer is a Python 3.6+ concurrency scheduling library compatible with asyncio and trio and inspired by Trimeter. It makes it easier to exe

Florimond Manca 182 Dec 26, 2022
Vertigo is an application used to schedule @code4tomorrow classes.

Vertigo Vertigo is an application used to schedule @code4tomorrow classes. It uses the Google Sheets API and is deployed using AWS. Documentation Lear

Ben Nguyen 4 Feb 10, 2022