command line tool for tracking ical changes
Project description
ionical: Keep an eye on icals!
- ionical is a command line tool for icalendar management:
- Download icalendar files.
- View schedules, optionally filtered by start date or event
summary text. - Compare sets of icalendar files obtained on different dates
to generate changelogs showing added/removed events.
- Limitations:
- At present, ionical only compares and displays event
start times and summary text. Other fields are ignored.
While adequate for certain basic use cases (e.g., it was
designed to track changes to employee schedules on
Amion, and has worked well for that), it cannot
handle more sophisticated workflows.
- At present, ionical only compares and displays event
Installing via pip:
$ pip install ionical
Installing from repository:
$ git clone https://github.com/danyul/ionical
$ cd ionical
$ python -m venv env
$ source env/bin/activate
$ pip install -e ".[test]"
If on Windows, replace 'source env/bin/activate' with:
$ .\env\Scripts\activate
Command line usage:
Usage: ionical [-v] [-h]
[-g] [-s] [-l [#_COMPARISONS]]
[-i NAME [NAME ...]]
[-a DATE_OR_NUMBER] [-b DATE_OR_NUMBER]
[-t TEXT [TEXT ...]]
[-f CONFIG_DIRECTORY] [-d ICS_DIR]
[--verbose] [-e ARG [ARG ...]]
Help/About:
-v, --version Print version, then exit.
-h, --help Print help message, then exit.
Primary Options:
One or more primary options MUST be specified.
-g, --get_today Download current .ics files and label them with today's
date. This will be done prior to other actions.
(If this is left unspecified, operations will only use
.ics files that have been previously downloaded.)
-s, --schedule Display events from most recent ical file version for
each calendar.
-l [#_COMPARISONS] Show changelogs comparing calendar versions from
multiple dates. Optionally, specify the number of
prior versions (per each calendar) for which to show
comparison changelogs.
(If left unspecified, #_COMPARISONS default is 2.)
Calendar Filters:
Restrict all actions to a subset of calendars.
-i NAME [NAME ...] Only operate on calendars with a specified NAME.
(If -i not specified, operate on every calendar
listed in ionical_config.toml.)
Event Filters:
Filter events shown in changelogs, schedule displays
-a DATE_OR_NUMBER Only include events that start AFTER a specified date.
(I.e., exclude events starting before the date.)
Value must be EITHER a date in format YYYY-MM-DD, or
a positive integer representing # of days in the past.
(If option unspecified, default behavior is to exclude
any events starting prior to 1 day ago.)
-b DATE_OR_NUMBER Only include events that start BEFORE a specified date.
(I.e., exclude events starting on or after the date.)
Value must be EITHER a date in format YYYY-MM-DD, or
a positive integer representing # of days in the future.
(If option unspecified, default behavior is to
have no upper limit on event dates.)
-t TEXT [TEXT ...] Only include events whose summary text includes words
that match a TEXT item.
(If option not specified, no text filters are applied.)
File Locations:
Specify expected locations for config files and calendar downloads.
-f CONFIG_DIRECTORY Directory where config file located.
The primary config file, ionical_config.toml, should
contain a list of calendar names, URLs, and timezones.
See README for config file format info.
(Default config directory is user's current directory.)
-d ICS_DIR Directory for downloading or accessing .ics files.
Experimental:
--verbose Verbose mode.
-e ARG [ARG ...] Pass experimental arguments.
If installing from repository, replace 'ionical' with 'python -m ionical' in the above usage example.
File format for ionical_config.toml:
# ionical configuration file
title = "ionical configuration"
[calendars]
[calendars.CAL1_NAME]
description = "CAL1_LONG_NAME"
url = "http://url_to_ics_download_for_CAL_1.ics"
tz = "Timezone_in_pytz_format_for_CAL_1"
[calendars.CAL2_NAME]
description = "CAL2_LONG_NAME"
url = "http://url_to_ics_download_for_CAL_2.ics"
tz = "Timezone_in_pytz_format_for_CAL_2"
Etc...
- Timezones are in pytz format, e.g., "US/Eastern".
Listing of pytz timezones can be found here. - The calendar NAME:
- Serves as an ID when asking ionical (via -i option)
to restrict actions to a subset of calendars. - Serves as the leftmost part of the filename for
downloaded ics files. - Shouldn't have spaces or non-alphanumeric characters.
- Serves as an ID when asking ionical (via -i option)
- The calendar LONG NAME:
- Is used for display purposes.
Note on filename format for downloaded ics files:
Downloaded .ics files have a filename format of
ABC123__20200314.ics, where "ABC123" is a name
identifier. (A reasonable name for a calendar
which tracks an employee's work schedule might
be a last name or an employee ID number.) Names
should contain only alphanumeric characters.
"20200314" indicates that this particular version
of the calendar was downloaded on March 14, 2020.
Libraries used
- icalendar
- pytz
- recurring_ical_events (which, in turn, uses python-dateutil)
Similar projects
0.1.0
Initial release
0.2.0 (12/8/2020)
- Substantial help message cleanup
- Changed/renamed multiple CLI options
0.2.5 (12/9/2020)
- Google Calendar event viewing working
0.3.0
- Removed hacky csv functionality for now
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ionical-0.4.5.tar.gz
(19.7 kB
view details)
Built Distribution
ionical-0.4.5-py3-none-any.whl
(18.8 kB
view details)
File details
Details for the file ionical-0.4.5.tar.gz
.
File metadata
- Download URL: ionical-0.4.5.tar.gz
- Upload date:
- Size: 19.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 993dd59a40279f4d4a8863636c22d7b58b8090cbf6ba1053669492cc619519bf |
|
MD5 | 77ba895abd9d78ce4088b199eb8abe24 |
|
BLAKE2b-256 | cb964bda5f1c0e122bcb70c91423485a5a13b7c5798ad7b16b4b9f3813a4c6f0 |
File details
Details for the file ionical-0.4.5-py3-none-any.whl
.
File metadata
- Download URL: ionical-0.4.5-py3-none-any.whl
- Upload date:
- Size: 18.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3cc14517995811c60388912be4f5eb6f5fe80746040911ee3504f3429297464e |
|
MD5 | 47d33e02aa79788bd76e346a615c892c |
|
BLAKE2b-256 | ddda08fdd6a94eb0820ae4fb9dc9fe48a5d6852b1ad6de6b5fb97fae30300a88 |