Skip to main content

A Tool for Exporting TimeTree Calendar and Convert to iCal format(.ics)

Project description

TimeTree Exporter

PyPI Python 3.x License Downloads Buy Me A Coffee

A Tool for Exporting TimeTree Calendar and Convert to iCal format(.ics)
This script works by scraping the TimeTree web app and converting the data to iCal format. (The .ics file can then be imported into other calendar apps such as Google Calendar, Apple Calendar, Outlook Calendar, etc.)

[!Warning] This is an independent, community-built project and is not affiliated with or endorsed by TimeTree, Inc. It uses unofficial, reverse-engineered TimeTree web APIs, which may change or stop working at any time without notice. As a result, the tool could break unexpectedly. Please use it responsibly—sending too many requests in a short period may lead to rate limiting, temporary blocks, or other restrictions from TimeTree.

Installation

[!Note] Timetree Exporter requires Python 3.10 or later.

If you are on mac, you can install it using brew:

brew install eoleedi/tap/timetree-exporter

You can also install it using uvx, pip, or pipx:

pip install timetree-exporter

Usage

timetree-exporter -o path/to/output.ics

This will prompt you to enter your TimeTree email and password and select the calendar you want to export.

Then, you can import the ics file to your calendar app.

[!Note] 💡 You are advised to import the ICS file into a separate calendar (e.g., Google Calendar) so that if anything goes wrong, you can simply delete the calendar and reimport it.

Advanced Usage

  • Specify your email address using the -e option.

    timetree-exporter -e email@example.com
    
  • Specify the calendar code using the -c or --calendar_code option.

    timetree-exporter -c calendar_code
    

    Note: Find the calendar code in the URL of the calendar page or when running the script without the -c option.

  • You can pass your email address and password with environment variables. (usually for automation purposes)

    export TIMETREE_EMAIL=email@example.com
    export TIMETREE_PASSWORD=password
    
  • Create separate ICS files for each label with a custom output directory.

    timetree-exporter --split-by-label
    

    This creates individual ICS files for each label (e.g., timetree_work.ics, timetree_personal.ics).

Limitations

Alarms(Alerts) can't be imported to Google Calendar through iCal format due to Google's bug.

Development

This project uses uv for dependency management.

Setup

  1. Install uv:

    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  2. Clone the repository and install dependencies:

    git clone https://github.com/eoleedi/TimeTree-Exporter.git
    cd TimeTree-Exporter
    uv sync
    
  3. Install pre-commit hooks:

    uv run pre-commit install
    

Run Tests

uv run pytest tests

Run Linter

uv run ruff check --fix .

Run Formatter

uv run ruff format .

Support

If you think it's helpful, kindly support me!

"Buy Me A Coffee"

Roadmap of the properties mapping to iCal

  • ID
  • Primary ID
  • Calendar ID
  • UUID
  • Category
  • Type
  • Author ID
  • Author Type
  • Title
  • All Day
  • Start At
  • Start Timezone
  • End At
  • End Timezone
  • Label ID
  • Location
  • Location Latitude
  • Location Longitude
  • URL
  • Note
  • Lunar
  • Attendees
  • Recurrences
  • Recurring UUID
  • Alerts
  • Parent ID
  • Link Object ID
  • Link Object ID String
  • Row Order (Ignore since it's a property for timetree notes)
  • Attachment
  • Like Count
  • Files
  • Deactivated At
  • Pinned At
  • Updated At
  • Created At

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

timetree_exporter-0.7.0.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

timetree_exporter-0.7.0-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file timetree_exporter-0.7.0.tar.gz.

File metadata

  • Download URL: timetree_exporter-0.7.0.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for timetree_exporter-0.7.0.tar.gz
Algorithm Hash digest
SHA256 2a468543c23321fa360979c08b534bacaf74202cb377ecab0942dc7c0ac26864
MD5 8d9b1fd75a022e712fa4c503184a79f4
BLAKE2b-256 42cd53b1895da5774df9939e4cdb49f213d8a9fa4218b54797d5a1784fd8f75e

See more details on using hashes here.

File details

Details for the file timetree_exporter-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: timetree_exporter-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 15.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for timetree_exporter-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7b69656947cdd459b9482b9663f35011e0eba3ae07a5a7fd38d2d2bc0adac567
MD5 8dfb56739f34b3cc355c15561f9b6cf6
BLAKE2b-256 d1b0a68a8f58b8fb44f6312519de7d626efcbb9e95a8b9840a616f0137027591

See more details on using hashes here.

Supported by

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