All Projects → bergercookie → taskwarrior-syncall

bergercookie / taskwarrior-syncall

Licence: MIT license
Synchronization between Taskwarrior tasks and services such as Google Calendar, Notion and Google Keep. Formerly taskw_gcal_sync

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to taskwarrior-syncall

Notion-GCal-Sync
A Python script to automate the syncing of tasks between Google Calendar and the all-in-one productivity workspace, Notion. It utilizes API and is customizable for your own needs. Free to use.
Stars: ✭ 120 (-20.53%)
Mutual labels:  sync, google-calendar, notion
Add Event To Calendar Docs
📅 Docs how to generate links to add events to online calendar services
Stars: ✭ 193 (+27.81%)
Mutual labels:  calendar, google-calendar
Alfred Gcal
View Google Calendar events in Alfred
Stars: ✭ 147 (-2.65%)
Mutual labels:  calendar, google-calendar
Outlookgooglecalendarsync
Sync your Outlook and Google calendars
Stars: ✭ 1,113 (+637.09%)
Mutual labels:  sync, calendar
Phpcalfeed
A simple PHP script for providing calendar feeds for your website in a variety of different formats including iCalendar, RSS, JSON and XML.
Stars: ✭ 31 (-79.47%)
Mutual labels:  calendar, google-calendar
I3 Agenda
Show your next google calendar event in polybar or i3-bar
Stars: ✭ 62 (-58.94%)
Mutual labels:  calendar, google-calendar
Vdirsyncer
📇 Synchronize calendars and contacts.
Stars: ✭ 872 (+477.48%)
Mutual labels:  sync, calendar
calendar-link
📅 Calendar link generator for popular services
Stars: ✭ 193 (+27.81%)
Mutual labels:  calendar, google-calendar
Easyappointments
Easy!Appointments is a highly customizable web application that allows customers to book appointments with you via a sophisticated web interface. Moreover, it provides the ability to sync your data with Google Calendar so you can use them with other services. It is an open source project that you can download and install even for commercial use. Easy!Appointments will run smoothly with your existing website as it can be installed in a single folder of the server and of course share an existing database.
Stars: ✭ 2,013 (+1233.11%)
Mutual labels:  sync, google-calendar
Daylight-Calendar-ICS
Daylight Calendar is a dynamically generated .ics calendar that you can host and subscribe to in Google Calendar, iCal, or other calendar software.
Stars: ✭ 22 (-85.43%)
Mutual labels:  calendar, google-calendar
infocenter
Raspberry Pi weather, calendar, and internet radio with graphical, touch-based interface.
Stars: ✭ 18 (-88.08%)
Mutual labels:  calendar, google-calendar
Laravel Google Calendar
Manage events on a Google Calendar
Stars: ✭ 787 (+421.19%)
Mutual labels:  calendar, google-calendar
Outlookcaldavsynchronizer
Sync Outlook with Google, SOGo, Nextcloud or any other CalDAV/CardDAV server
Stars: ✭ 560 (+270.86%)
Mutual labels:  calendar, google-calendar
Calendar.vim
A calendar application for Vim
Stars: ✭ 1,675 (+1009.27%)
Mutual labels:  calendar, google-calendar
Fb2cal
Fetch Facebook Birthdays events and create an ICS file for use with calendar apps
Stars: ✭ 335 (+121.85%)
Mutual labels:  calendar, google-calendar
tsdav
WebDAV, CALDAV, and CARDDAV client for Nodejs and the Browser
Stars: ✭ 33 (-78.15%)
Mutual labels:  sync, calendar
google-calendar-api
Demo Project for Google Calendar API Using Spring Boot Rest API with OAuth2
Stars: ✭ 25 (-83.44%)
Mutual labels:  calendar, google-calendar
weather-calendar-feed
Display yr.no weather (supports the entire Earth) forecasts with highly customizable Event titles in your Google Calendar, Android phone, iPhone, Outlook or other iCalendar app
Stars: ✭ 16 (-89.4%)
Mutual labels:  calendar, google-calendar
Calendarsyncplus
This utility synchronizes Calendar entries between different calendar providers (Apps like Outlook,Services EWS/Google/Live).
Stars: ✭ 80 (-47.02%)
Mutual labels:  sync, calendar
aircal
Visualize Airflow's schedule by exporting future DAG runs as events to Google Calendar.
Stars: ✭ 66 (-56.29%)
Mutual labels:  calendar, google-calendar

taskwarrior-syncall

master devel
Coverage Status pre-commit PyPI version Downloads Code style: black

Description

taskwarrior-syncall is your one-stop software to bi-directionally synchronize a variety of services with taskwarrior. Each synchronization comes with its own executable which handles the synchronization between that particular service and taskwarrior. Note that the name is taskwarrior-specific but it's not tied to taskwarrior; You can synchronize items/tasks etc. from two arbitrary sides, given that you implement the corresponding synchronization sides.

At the moment the list of supported synchronization combinations is the following:

Description Executable
README TaskwarriorGoogle Calendar tw-gcal-sync
README TaskwarriorNotion Checkboxes tw-notion-sync
README TaskwarriorGoogle Keep Checkboxes tw-gkeep-sync

Overall, each of the above should support bi-directional synchronization between the said services. This means that on an addition, modification, or deletion of an item on one side, a corresponding addition, modification or deletion of the counterpart item will occur on the other side so that the two sides are eventually in sync. All services also support dependency resolution and a few different synchronization strategies so that, on conflict, the user can specify whether to always select the change from side A (AlwaysFirstRS), the change from side B (AlwaysSecondRS), the most recent change of the two (MostRecentRS), or the least (LeastRecentRS).

By the end of the run, it should show you a summary of what's been done, like the following.

Google Keep
-----------
        * Items created: 3
        * Items updated: 2
        * Items deleted: 1

Taskwarrior
-----------
        * Items created: 1
        * Items updated: 2
        * Items deleted: 0

Refer to the corresponding README for the list above for instructions specific to the synchronization with that particular service. Before jumping to that though, please complete the installation instructions below.

Sample Usage Instructions

Here's the CLI help page for the synchronizations available. Run with --help to get the most updated instructions

tw_gcal_sync
tw_gcal_sync --help
Usage: tw_gcal_sync [OPTIONS]

  Synchronize calendars from your Google Calendar with filters from
  Taskwarrior.

  The list of TW tasks is determined by a combination of TW tags and a TW
  project while the calendar in GCal should be provided by their name. if it
  doesn't exist it will be crated

Options:
  -c, --gcal-calendar TEXT        Name of the Google Calendar to sync (will be
                                  created if not there)
  --google-secret FILE            Override the client secret used for the
                                  communication with the Google APIs
  --oauth-port INTEGER            Port to use for OAuth Authentication with
                                  Google Applications
  -t, --taskwarrior-tags TEXT     Taskwarrior tags to sync
  -p, --tw-project TEXT           Taskwarrior project to sync
  --list-configs                  List the available named TW<->Google
                                  Calendar combinations
  -r, --resolution_strategy [MostRecentRS|LeastRecentRS|AlwaysFirstRS|AlwaysSecondRS]
                                  Resolution strategy to use during conflicts
  -b, --combination TEXT          Name of an already saved TW<->Google
                                  Calendar combination
  -s, --save-as TEXT              Save the given TW<->Google Calendar filters
                                  combination using a specified custom name.
  -v, --verbose
  --version                       Show the version and exit.
  --help                          Show this message and exit.
tw_notion_sync
$ tw_notion_sync --help
Usage: tw_notion_sync [OPTIONS]

  Synchronise filters of TW tasks with the to_do items of Notion pages

  The list of TW tasks is determined by a combination of TW tags and TW
  project while the notion pages should be provided by their URLs.

Options:
  -n, --notion-page TEXT          Page ID of the Notion page to sync
  --token, --token-pass-path TEXT
                                  Path in the UNIX password manager to fetch
  -t, --taskwarrior-tags TEXT     Taskwarrior tags to sync
  -p, --tw-project TEXT           Taskwarrior project to sync
  -r, --resolution_strategy [MostRecentRS|LeastRecentRS|AlwaysFirstRS|AlwaysSecondRS]
                                  Resolution strategy to use during conflicts
  -b, --combination TEXT          Name of an already saved TW<->Notion
                                  combination
  --list-configs                  List the available named TW<->Notion
                                  combinations
  -s, --save-as TEXT              Save the given TW<->Notion filters
                                  combination using a specified custom name.
  -v, --verbose
  --version                       Show the version and exit.
  --help                          Show this message and exit.
tw_gkeep_sync
tw_gkeep_sync --help
Usage: tw_gkeep_sync [OPTIONS]

  Synchronize Notes from your Google Keep with filters from Taskwarrior.

  The list of TW tasks is determined by a combination of TW tags and a TW
  project while the note in GKeep should be specified using their full name.
  if it doesn't exist it will be created.

  This service will create TaskWarrior tasks with the specified filter for
  each one of the checkboxed items in the specified Google Keep note and will
  create Google Keep items for each one of the tasks in the Taskwarrior
  filter. You have to first "Show checkboxes" in the Google Keep Note in order
  to use it with this service.

Options:
  -k, --gkeep-note TEXT           Full title of the Google Keep Note to
                                  synchronize - Make sure you enable the
                                  checkboxes
  --user, --user-pass-path TEXT   Path in the UNIX password manager to fetch
                                  the Google username from
  --passwd, --passwd-pass-path TEXT
                                  Path in the UNIX password manager to fetch
                                  the Google password from
  -t, --taskwarrior-tags TEXT     Taskwarrior tags to sync
  -p, --tw-project TEXT           Taskwarrior project to sync
  --list-configs                  List the available named TW<->Google Keep
                                  combinations
  -r, --resolution_strategy [MostRecentRS|LeastRecentRS|AlwaysFirstRS|AlwaysSecondRS]
                                  Resolution strategy to use during conflicts
  -b, --combination TEXT          Name of an already saved TW<->Google Keep
                                  combination
  -s, --save-as TEXT              Save the given TW<->Google Keep filters
                                  combination using a specified custom name.
  -v, --verbose
  --version                       Show the version and exit.
  --help                          Show this message and exit.

Installation instructions

Requirements

Installation Options

You have to specify at least one extra. To do so use the [] syntax in pip:

# for installing integration with google (e.g. Google Keep / Calendar) and Notion
pip3 install taskwarrior-syncall[notion,google]
  • PyPI (may not contain latest version): pip3 install --user --upgrade taskwarrior-syncall[notion,google,gkeep]

  • Github: pip3 install --user "taskwarrior-syncall[google] @ git+https://github.com/bergercookie/taskwarrior-syncall"

  • Download and install devel branch locally - bleeding edge

    git clone https://github.com/bergercookie/taskwarrior-syncall
    cd taskwarrior-syncall
    git checkout devel
    pip3 install --user --upgrade .
  • Setup using poetry - handy for local development and for isolation of dependencies:

    git clone https://github.com/bergercookie/taskwarrior-syncall
    poetry install
    # get an interactive shell
    poetry shell
    
    # now the executables of all the services should be in your PATH for the
    # current shell and you can also edit the source code without further
    # re-installation ...

Mechanics / Automatic synchronization

To achieve synchronization between two arbitrary services, we use a push-pull mechanism which is far easier and less troublesome than an automatic synchronization solution. This means that you have to explicitly call the executable for the synchronization you want to achieve. If you want to automate this, consider adding a cron job or a systemd timer.

crontab -e
...

# Add the following to sync every 10' - modify the arguments according to your
# preferences and according to the instructions of the corresponding executable
# for example for `tw_gcal_sync`:
#
# See output and potential errors in your system logs (e.g., `/var/log/syslog`)
*/10 * * * * tw_gcal_sync -c "TW Reminders" -t "remindme"

FAQ

How do I reset the synchronization and start it from scratch?
  1. Remove the combination file that corresponds to your synchronization. For example, if you're executing synchronization of Google Keep with Taskwarrior, like the following, your combination name is testnote__None__test_tag.

    tw_gkeep_sync -t test_tag -k "testnote"

    The executable also mentions the combination name at the end of the run.

    ...
    14:00:03.41 | INFO      | Flushing data to remote Google Keep...
    14:00:04.32 | SUCCESS   | Sync completed successfully. You can now use the -b/--combination option to refer to this particular combination
    
      tw_gkeep_sync --combination testnote__None__test_tag
    

    For this combination, on Linux, remove ~/.config/taskwarrior_syncall/testnote__None__test_tag.yaml.

  2. Remove the section for your combination in the <sideA_sideB_configs.yaml> configuration file under the ~/.config/taskwarrior_syncall/ directory.

    This section will have the same name as the combination file deleted in the earlier step and will look like this:

    ---
    testnote__None__test_tag:
      gkeep_note: testnote
      tw_project: null
      tw_tags: !!python/tuple
        - test_tag
  3. Remove the items of one of the sides. Keep e.g. the items from the Google Keep note and delete the tasks of the tag/project you are using for synchronization.

  4. Rerun synchronization from scratch to populate the one side with the items of the other side.

I want to synchronize more than a single (Notion page / TW filter), (Google Calendar / TW filter) etc. combination.

See combinations.md.

Tab Completion

All synchronization executables support tab auto-completion for their options for bash, zsh and fish. You can find them under completions/

Miscellaneous

Self Promotion

If you find this tool useful, please star it on Github

TODO List

See ISSUES list for the things that I'm currently either working on or interested in implementing in the near future. In case there's something you are interesting in working on, don't hesitate to either ask for clarifications or just do it and directly make a PR.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].