Skip to main content

A simple Python 3 library to read your Things app data.

Project description

Things Python API

things.py is a simple Python 3 library to read data from your Things app.

GitHub Release Build Status Coverage Status Maintainability Rating GitHub Issues License PyPI - Downloads GitHub Download Count

Table of Contents

Install

$ pip3 install things.py
# or
$ git clone https://github.com/thingsapi/things.py && cd things.py && make install

Examples

>>> import things
>>> things.todos()
[{'uuid': '2Ukg8I2nLukhyEM7wYiBeb',
  'type': 'to-do',
  'title': 'Make reservation for dinner',
  'project': 'bNj6TPdKYhY6fScvXWVRDX',
  ...},
 {'uuid': 'RLZroza3jz0XPs3uAlynS7',
  'type': 'to-do',
  'title': 'Buy a whiteboard and accessories',
  'project': 'w8oSP1HjWstPin8RMaJOtB',
  'notes': "Something around 4' x 3' that's free-standing, two-sided, and magnetic.",
  'checklist': True,
  ...
>>> things.todos('RLZroza3jz0XPs3uAlynS7')
{'uuid': 'RLZroza3jz0XPs3uAlynS7',
 'type': 'to-do',
 'title': 'Buy a whiteboard and accessories',
 ...
 'checklist': [
     {'title': 'Cleaning Spray', 'status': 'completed', ...},
     {'title': 'Magnetic Eraser', 'status': 'incomplete', ...},
     {'title': 'Round magnets', 'status': 'incomplete', ...}
 ]
 ...
}

>>> things.projects()
[{'uuid': 'bNj6TPdKYhY6fScvXWVRDX',
  'type': 'project',
  'title': 'Throw Birthday Party',
  'area': 'bNj6TPdKYhY6fScvXWVRDX',
  ...},
 {'uuid': 'w8oSP1HjWstPin8RMaJOtB',
  'type': 'project',
  'title': 'Set Up Home Office',
  'area': 'Gw9QefIdgR6nPEoY5hBNSh',
  ...

>>> things.areas()
[{'uuid': 'ToLxnnBrWkfHC3tkx4vxdV',
  'type': 'area',
  'title': 'Family',
  ...},
 {'uuid': 'Gw9QefIdgR6nPEoY5hBNSh',
  'type': 'area',
  'title': 'Apartment',
  ...

>>> things.tags()
[{'uuid': 'CKILg3kKF2jlCRisNFcqOj',
  'type': 'tag',
  'title': 'Home',
  'shortcut': None},
 {'uuid': 'gfmpz8zxnyfqMDvRi3E8vo',
  'type': 'tag',
  'title': 'Office',
  'shortcut': None},
 ...

>>> things.get('CKILg3kKF2jlCRisNFcqOj')
{'uuid': 'CKILg3kKF2jlCRisNFcqOj',
  'type': 'tag',
  'title': 'Home',
  'shortcut': None}

Background

The task management app Things stores all your to-dos in a SQLite database file (details here). This format is intended to be machine-readable, not human-readable. The aim of this project is to let you access all your Things data in a human-readable way. We thereby stay as true to the database as possible while doing SQL joins and transformations to aid understanding of the data. Note that you can print the SQL used by adding the parameter print_sql=True to most API calls.

If any aspect of the API seems overly complex or doesn't meet your needs, please don't hesitate to add a new issue here.

Terminology

Here are the core technical terms used involving the database:

  • area
  • tag
  • task
    • type
      • 'to-do': can have checklists;
      • 'project': can have to-dos and headings;
      • 'heading': part of a project; groups to-dos.
    • status: 'incomplete', 'canceled', or 'completed'
    • trashed: True or False
    • start: 'Inbox', 'Anytime', or 'Someday'
  • checklist item (contained within a to-do)

Documentation

The full documentation for this library can be found here: https://thingsapi.github.io/things.py/things/api.html

Things URL Scheme

You can make good use of the uuid to link to to-dos, areas, tags, and more from other apps. Also updates are possible. Read an introduction here and see the documentation here.

Used By

The following open-source projects make use of this library:

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

things.py-0.0.15.tar.gz (27.5 kB view details)

Uploaded Source

Built Distribution

things.py-0.0.15-py3-none-any.whl (26.7 kB view details)

Uploaded Python 3

File details

Details for the file things.py-0.0.15.tar.gz.

File metadata

  • Download URL: things.py-0.0.15.tar.gz
  • Upload date:
  • Size: 27.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for things.py-0.0.15.tar.gz
Algorithm Hash digest
SHA256 95ee8602083cf8b9fde59f64486fa6f3d13b1f84bd565c60dd77599c07e7ea16
MD5 2a4cda544d4e89aec7b4ea83d148dc80
BLAKE2b-256 09bfdbba75d9a4e38de0d91dff8b1d0aacd754df4080d7c17eae3a1640a4d17f

See more details on using hashes here.

File details

Details for the file things.py-0.0.15-py3-none-any.whl.

File metadata

  • Download URL: things.py-0.0.15-py3-none-any.whl
  • Upload date:
  • Size: 26.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for things.py-0.0.15-py3-none-any.whl
Algorithm Hash digest
SHA256 5c75e7f35eb6e9558fa937bfa0b7563f5dc3b726adade836131e572a15c47a0d
MD5 a67172f235bcc5e8a3e0ff7432bec004
BLAKE2b-256 b4a397c7e8a2b9ab527cef9c31b74d88d730e4ba539bf6e9743522f9b7584122

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