Skip to main content

ntfy_csv_reminders

A Python tool that sends random-timing phone notifications for recurring tasks by using daily probability checks based on CSV-defined frequencies.

Simple phone notifications with random timing. Just write a csv file like:

n, do something

And get reminded with 1/n probability each day. Perfect for those "should do this sometime this week" tasks!

Run it daily (via cron) and it uses probability to make reminders feel spontaneous rather than predictable. Great for avoiding notification fatigue while still keeping tasks on your radar.

Getting started

  • From pypi:
    • As a tool: uvx ntfy_csv_reminders@latest --help
    • Via uv: uv pip install ntfy_csv_reminders
    • Via pip: pip install ntfy_csv_reminders
  • From github:
    • Clone this repo then pip install .

Example Input CSV

Create a file named inputs.csv with entries in this format:

5, Remember to water the plants
7, Time to clean the fish tank
3, Check the mail

Each line has two parts:

  1. A number (X) representing "every X days" - this also determines the daily probability (1/X)
  2. The reminder message

For example, with 5, Remember to water the plants:

  • If it's been 5+ days since the last reminder, it will definitely send
  • Otherwise, each day there's a 1/5 (20%) chance to send the reminder

Usage

ntfy_csv_reminders --ntfy_topic=your_topic [OPTIONS]

Required:

  • --ntfy_topic: Your ntfy.sh topic for receiving notifications
  • --input_csv: Path to your CSV file (default: "inputs.csv")
  • --states_path: Path to save reminder states (default: "states.json")

Optional:

  • --delay: Random delay between 0-N seconds before checking reminders (default: 0)
  • --verbose: Show probability details in notifications (default: False)

The delay parameter is particularly useful when running via cron. Instead of getting all reminders at exactly midnight (or whenever cron runs), adding something like --delay=3600 will spread them randomly across the first hour. This makes the reminders feel even more natural and unexpected.

Example:

ntfy_csv_reminders --ntfy_topic=my_reminders --delay=1800 --input_csv=my_tasks.csv

CalDAV Integration (Optional)

You can also automatically add your CSV reminders as tasks to a CalDAV-compatible task management system (like Nextcloud Tasks, Apple Reminders, etc.).

To enable CalDAV integration:

  1. Install the optional dependency: pip install caldav_tasks_api
  2. Set up environment variables for your CalDAV server:
    export CALDAV_TASKS_API_URL="https://your-server.com/remote.php/dav/"
    export CALDAV_TASKS_API_USERNAME="your_username"
    export CALDAV_TASKS_API_PASSWORD="your_password"
    export CALDAV_TASKS_API_DEFAULT_LIST_UID="your_task_list_uid"  # Optional, uses first available if not set
    
  3. Add the --also_add_to_caldav flag when running:
    ntfy_csv_reminders --ntfy_topic=my_reminders --also_add_to_caldav
    

Each CSV reminder will be created as a separate task in your CalDAV task list, with notes indicating the original frequency and source. This allows you to manage reminders both through notifications and your preferred task management app.

Note: Both this package and caldav_tasks_api are created by the same author for seamless integration.

Release files for ntfy-csv-reminders 0.1.14

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ntfy-csv-reminders 0.1.14
File Size Uploaded
ntfy_csv_reminders-0.1.14.tar.gz 18.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ntfy-csv-reminders 0.1.14
File Interpreter ABI Platform
ntfy_csv_reminders-0.1.14-py3-none-any.whl Python 3 none any Details

Total release size: 37.8 kB

Release files / ntfy_csv_reminders-0.1.14.tar.gz

Download URL ntfy_csv_reminders-0.1.14.tar.gz
Size 18.4 kB
Tags Source
SHA-256 checksum
How to use checksums
8e5a11536df386ae5acfa5d70e09907f9ea215706fd6b5468dd725223ea1bf1c
BLAKE2b-256 checksum
How to use checksums
7448974952f06b8ef9f6520c928c8229955c3cb38bc3b766b66c4002d47523a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.7

Release files / ntfy_csv_reminders-0.1.14-py3-none-any.whl

Download URL ntfy_csv_reminders-0.1.14-py3-none-any.whl
Size 19.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4488670dd5dad25744c1711f599f18783eec40f8ea9169c3464234a5d2c28ff7
BLAKE2b-256 checksum
How to use checksums
c29ee6a2a2fd58fe0ee8d7ef312706897a4497a962f460f7a9d2847d33ae2490
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.7

Release history Release notifications | RSS feed

This release

0.1.14 This release

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page