Skip to content

Commit

Permalink
Merge pull request #340 from heysagnik/patch-1
Browse files Browse the repository at this point in the history
Task Scheduler for Awesome-Python-Scripts
  • Loading branch information
hastagAB authored Oct 13, 2023
2 parents 9d8cb79 + 7a89f5f commit 8aa865c
Show file tree
Hide file tree
Showing 4 changed files with 161 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ So far, the following projects have been integrated to this repo:
|[Youtube video downloader](Youtube_Video_Downloader)|[Christopher He](https://github.com/hecris)|
|[Zabbix API](zabbix_api)|[msg4sunny](https://github.com/msg4sunny)|
|[Zip password cracker](zip_password_cracker)|[umar abdullahi](https://github.com/umarbrowser)|
|[Task Scheduler](Task-Scheduler)|[heysagnik](https://github.com/heysagnik)|

## How to use:
- Clone/Download the directory and navigate to each folder. Or...
Expand Down
85 changes: 85 additions & 0 deletions Task-Scheduler/Readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Task Scheduler

This Python script, `task_scheduler.py`, is a simple command-line task management application that allows users to add, view, and delete tasks with due dates. The application stores task data in a JSON file.

## How to Use

1. **Installation**:

- Make sure you have Python installed on your system.

2. **Run the Application**:

- Open a terminal or command prompt.
- Navigate to the directory where `task_scheduler.py` is located.

```
$ cd /path/to/directory
```

- Run the script:

```
$ python task_scheduler.py
```

3. **Menu Options**:

- The application provides the following menu options:

- **Add Task**: Allows you to add a new task with a name and due date (in YYYY-MM-DD format).

- **View Tasks**: Displays a list of tasks with their names and due dates.

- **Delete Task**: Lets you delete a task by specifying its number in the list.

- **Quit**: Exits the application.

4. **Data Storage**:

- The tasks are stored in a JSON file named `tasks.json` in the same directory as the script.

5. **Error Handling**:

- The application handles various errors, such as invalid date format or task numbers.

## Example Usage

1. **Add Task**:

- Choose option 1.
- Enter a task name.
- Enter the due date in YYYY-MM-DD format.

2. **View Tasks**:

- Choose option 2 to see a list of added tasks with their due dates.

3. **Delete Task**:

- Choose option 3.
- Enter the number of the task you want to delete.

4. **Quit**:

- Choose option 4 to exit the application.

## Data Persistence

The application loads tasks from the `tasks.json` file when it starts and saves tasks back to the file after any additions or deletions. This ensures that your tasks are retained even when the application is closed and reopened.

## Error Handling

The application checks for invalid date formats and incorrect task numbers, providing appropriate error messages to guide the user.

## Important Notes

- Please ensure that you have Python installed on your system.
- Make sure to provide dates in the specified format (YYYY-MM-DD).
- Be cautious when deleting tasks, as this action is irreversible.

## Author

This Python Task Scheduler was created by Sagnik Sahoo.

Feel free to customize and extend this application to suit your needs. Enjoy managing your tasks!
1 change: 1 addition & 0 deletions Task-Scheduler/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pytz==2021.3
74 changes: 74 additions & 0 deletions Task-Scheduler/scheduler.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
import json
import os
import datetime

# Define the data file to store tasks
TASKS_FILE = "tasks.json"

# Load tasks from the data file (if it exists)
tasks = []

if os.path.exists(TASKS_FILE):
with open(TASKS_FILE, "r") as file:
tasks = json.load(file)

def save_tasks():
# Save tasks to the data file
with open(TASKS_FILE, "w") as file:
json.dump(tasks, file)

def add_task():
task_name = input("Enter the task name: ")
due_date = input("Enter the due date (YYYY-MM-DD): ")

try:
due_date = datetime.datetime.strptime(due_date, "%Y-%m-%d").date()
except ValueError:
print("Invalid date format. Please use YYYY-MM-DD.")
return

tasks.append({"name": task_name, "due_date": due_date})
save_tasks()
print(f"Task '{task_name}' added successfully!")

def view_tasks():
print("Tasks:")
for idx, task in enumerate(tasks, start=1):
print(f"{idx}. {task['name']} (Due: {task['due_date']})")

def delete_task():
view_tasks()
task_index = input("Enter the task number to delete: ")

try:
task_index = int(task_index)
if 1 <= task_index <= len(tasks):
deleted_task = tasks.pop(task_index - 1)
save_tasks()
print(f"Task '{deleted_task['name']}' deleted successfully!")
else:
print("Invalid task number.")
except ValueError:
print("Invalid input. Please enter a valid task number.")

while True:
print("\nTask Scheduler Menu:")
print("1. Add Task")
print("2. View Tasks")
print("3. Delete Task")
print("4. Quit")

choice = input("Enter your choice: ")

if choice == "1":
add_task()
elif choice == "2":
view_tasks()
elif choice == "3":
delete_task()
elif choice == "4":
break
else:
print("Invalid choice. Please choose a valid option.")

print("Goodbye!")

0 comments on commit 8aa865c

Please sign in to comment.