Skip to main content

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.

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.
  • 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

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


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.3.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

ionical-0.4.3-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

File details

Details for the file ionical-0.4.3.tar.gz.

File metadata

  • Download URL: ionical-0.4.3.tar.gz
  • Upload date:
  • Size: 19.2 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

Hashes for ionical-0.4.3.tar.gz
Algorithm Hash digest
SHA256 3018fdbb97dc32879206b976cb68034e1d6636f3d953b6242138653d93397af8
MD5 46b0a7721627a632611ed9dbd485182f
BLAKE2b-256 a93ba6ea3902d320572ad696472b7c18b19aca5df7dd9506a57f2b4c7f839ce7

See more details on using hashes here.

File details

Details for the file ionical-0.4.3-py3-none-any.whl.

File metadata

  • Download URL: ionical-0.4.3-py3-none-any.whl
  • Upload date:
  • Size: 19.1 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

Hashes for ionical-0.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 bf2e4a2aa7f57685efbe5de442bfcdc5cb1ed8acb841757948363d01dcb4ed83
MD5 6c2a44c274a3d0e83ad674608b5ddeb8
BLAKE2b-256 7040be1261b7b9e5286ea9c1b1de03982ac520a6dadf06ee1e502b994cf729df

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page