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.

You might also like...
Python Bot that attends classes, answers polls, and then again waits for classes to start.
Python Bot that attends classes, answers polls, and then again waits for classes to start.

LPU_myclass_Bot LPU_myclass_Bot is a Python bot that waits for class to start, attends class, answers polls, and then again waits for another class to

Launched in 2018 Actively developed and supported. Supports tkinter, Qt, WxPython, Remi (in browser). Create custom layout GUI's simply.  Python 2.7 & 3 Support. 200+ Demo programs & Cookbook for rapid start. Extensive documentation.  Examples using Machine Learning(GUI, OpenCV Integration,  Chatterbot), Floating Desktop Widgets, Matplotlib + Pyplot integration, add GUI to command line scripts, PDF & Image Viewer. For both beginning and advanced programmers . You cant check for conflicts until course enrolment actually opens. I wanted to do it earlier.
You cant check for conflicts until course enrolment actually opens. I wanted to do it earlier.

AcornICS I noticed that Acorn it does not let you check if a timetable is valid based on the enrollment cart, it also does not let you visualize it ea

A simple Python Module for sending cross-platform desktop notifications on Windows, macOS and Linux
A simple Python Module for sending cross-platform desktop notifications on Windows, macOS and Linux

notify.py Cross platform desktop notifications for Python scripts and applications. Docs You can read the docs on this Git's Wiki, or here Supported P

A Python library that provides an easy way to identify devices like mobile phones, tablets and their capabilities by parsing (browser) user agent strings.

Python User Agents user_agents is a Python library that provides an easy way to identify/detect devices like mobile phones, tablets and their capabili

A self-bot for discord, written in Python, which will send you notifications to your desktop if it detects an intruder on your discord server

A self-bot for discord, written in Python, which will send you notifications to your desktop if it detects an intruder on your discord server

A Python Oriented tool to Scrap WhatsApp Group Link using Google Dork it Scraps Whatsapp Group Links From Google Results And Gives Working Links.

WaGpScraper A Python Oriented tool to Scrap WhatsApp Group Link using Google Dork it Scraps Whatsapp Group Links From Google Results And Gives Working

Automatic class scheduler for Texas A&M written with Python+Django and React+Typescript
Automatic class scheduler for Texas A&M written with Python+Django and React+Typescript

Rev Registration Description Rev Registration is an automatic class scheduler for Texas A&M, aimed at easing the process of course registration by gen

A tool programmed to shorten links/mask links

A tool programmed to shorten links/mask links

A Python application that helps users determine their calorie intake, and automatically generates customized weekly meal and workout plans based on metrics computed using their physical parameters

A Python application that helps users determine their calorie intake, and automatically generates customized weekly meal and workout plans based on metrics computed using their physical parameters

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

A program that takes Python classes and turns them into CSS classes.
A program that takes Python classes and turns them into CSS classes.

PyCSS What is it? PyCSS is a micro-framework to speed up the process of writing bulk CSS classes. How does it do it? With Python!!! First download the

Broken Link Finder is a Burp Extension to detect broken links for a passive scanning domains and links.
Broken Link Finder is a Burp Extension to detect broken links for a passive scanning domains and links.

Broken Link Finder Broken Link Finder is a Burp Extension to detect broken links for a passive scanning domains and links. Inspired by InitRoot's link

Angular & Electron desktop UI framework. Angular components for native looking and behaving macOS desktop UI (Electron/Web)
Angular & Electron desktop UI framework. Angular components for native looking and behaving macOS desktop UI (Electron/Web)

Angular Desktop UI This is a collection for native desktop like user interface components in Angular, especially useful for Electron apps. It starts w

Dot Browser is a privacy-conscious web browser with smarts built-in for protection against trackers and advertisments online.
Dot Browser is a privacy-conscious web browser with smarts built-in for protection against trackers and advertisments online.

🌍 Take back your privacy with Dot Browser, the privacy-conscious web browser that protects you from being tracked and monitored online.

A template that everyone can use for the start of their discord bot

Python Discord Bot Template This repository is a template that everyone can use for the start of their discord bot. When I first started creating my d

edgedressing leverages a Windows "feature" in order to force a target's Edge browser to open. This browser is then directed to a URL of choice.

edgedressing One day while experimenting with airpwn-ng, I noticed unexpected GET requests on the target node. The node in question happened to be a W

Comments
  • 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 ghost 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
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
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 7, 2022
A task scheduler with task scheduling, timing and task completion time tracking functions

A task scheduler with task scheduling, timing and task completion time tracking functions. Could be helpful for time management in daily life.

ArthurLCW 0 Jan 15, 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
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
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 9, 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
Aiorq is a distributed task queue with asyncio and redis

Aiorq is a distributed task queue with asyncio and redis, which rewrite from arq to make improvement and include web interface.

PY-GZKY 5 Mar 18, 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
An attendance bot that joins google meet automatically according to schedule and marks present in the google meet.

Google-meet-self-attendance-bot An attendance bot which joins google meet automatically according to schedule and marks present in the google meet. I

Sarvesh Wadi 12 Sep 20, 2022