todoist-digest


Nametodoist-digest JSON
Version 0.8.2 PyPI version JSON
download
home_pageNone
SummaryGenerate a digest of comments that occured since the last checked in date. Useful for including in an email.
upload_time2024-04-08 15:38:41
maintainerNone
docs_urlNone
authorMichael Bianco
requires_python<4.0,>=3.11
licenseMIT
keywords todoist digest task management
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![Release Notes](https://img.shields.io/github/release/iloveitaly/todoist-digest)](https://github.com/iloveitaly/todoist-digest/releases) [![Downloads](https://static.pepy.tech/badge/todoist-digest/month)](https://pepy.tech/project/todoist-digest) [![Python Versions](https://img.shields.io/pypi/pyversions/todoist-digest)](https://pypi.org/project/todoist-digest) ![GitHub CI Status](https://github.com/iloveitaly/todoist-digest/actions/workflows/build_and_publish.yml/badge.svg) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

# Todoist Project Digest

[Todoist](https://mikebian.co/todoist) doesn't have a way to generate a digest of all recent comments in a project created by a specific user. This makes it challenging to see what changed and what requires your action if you are collaborating with someone on a project.

This is a simple project which generates a digest of all comments by a particular user on a particular project.

This project was also a good excuse to play around and test some functional programming/data manipulation tooling I've been messing with ([funcy](https://github.com/Suor/funcy), [funcy-pipe](https://github.com/iloveitaly/funcy-pipe), and [whatever](https://github.com/Suor/whatever)).

## Features

* Can send an email digest if auth is provided
* Retrieves comments on completed tasks
* Target projects by ID or name

## Usage

### Docker

```shell
docker pull ghcr.io/iloveitaly/todoist-digest:latest
docker run --env-file .env ghcr.io/iloveitaly/todoist-digest:latest
```

Want to run a one off execution?

```shell
docker run --env-file .env ghcr.io/iloveitaly/todoist-digest:latest todoist-digest --help
```

Want to inspect the docker container?

```shell
docker run -it ghcr.io/iloveitaly/todoist-digest:latest bash
```

Or, just use the [docker compose file](docker-compose.yml).

### Locally


Run this locally using:

```shell
bin/local-digest-html
```

Or run directly:

```shell
poetry run todoist-digest \
  --last-synced "2023-12-04T15:52:48Z" \
  --target-user user@gmail.com \
  --target-project ProjectName
```

Or, email yourself the digest:

```shell
poetry run todoist-digest \
  --last-synced $LAST_SYNC \
  --target-user $TARGET_USER \
  --target-project $TARGET_PROJECT \
  --email-auth $EMAIL_AUTH \
  --email-to $EMAIL_TO
```

## Development

### Docker Build

This repo uses [nixpacks](https://nixpacks.com/docs/getting-started) for building a Dockerfile. Why? Because I like trying new things.

Until [asdf support](https://github.com/railwayapp/nixpacks/pull/1026) is built into nixpacks, you'll have to do something like:

```shell
export NIXPACKS_POETRY_VERSION=$(asdf-current-version poetry)
export NIXPACKS_PYTHON_VERSION=$(asdf-current-version python)
```

(asdf-current-version is a function [I have in my shell](https://github.com/iloveitaly/dotfiles/blob/d597a90cd84fb4c5c47efa78255e45a537f1155c/.functions#L17-L21) which returns the current version of a tool)

In order to pass the py + poetry versions properly to nixpacks:

```shell
nixpacks build . --name todoist-digest --env NIXPACKS_PYTHON_VERSION --env NIXPACKS_POETRY_VERSION --start-cmd bin/cron-digest
```

### Playground

ipython shell with some helpful variables defined:

```shell
./playground.py
```

### Run with ipdb

Open up an exception when there's an exception:

```shell
ipdb3 $(which todoist-digest) --last-synced 2023-12-14T13:38:25Z ...
```

## Related

* https://www.smashlists.com ([discovered here](https://www.reddit.com/r/todoist/comments/l7mhfq/how_to_track_weekly_goals/))
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "todoist-digest",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.11",
    "maintainer_email": null,
    "keywords": "todoist, digest, task, management",
    "author": "Michael Bianco",
    "author_email": "mike@mikebian.co",
    "download_url": "https://files.pythonhosted.org/packages/6d/f5/4eccceddc7f4c014174554350bf02ab22a9e9c7ed94d205e0a985f18ac4a/todoist_digest-0.8.2.tar.gz",
    "platform": null,
    "description": "[![Release Notes](https://img.shields.io/github/release/iloveitaly/todoist-digest)](https://github.com/iloveitaly/todoist-digest/releases) [![Downloads](https://static.pepy.tech/badge/todoist-digest/month)](https://pepy.tech/project/todoist-digest) [![Python Versions](https://img.shields.io/pypi/pyversions/todoist-digest)](https://pypi.org/project/todoist-digest) ![GitHub CI Status](https://github.com/iloveitaly/todoist-digest/actions/workflows/build_and_publish.yml/badge.svg) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n# Todoist Project Digest\n\n[Todoist](https://mikebian.co/todoist) doesn't have a way to generate a digest of all recent comments in a project created by a specific user. This makes it challenging to see what changed and what requires your action if you are collaborating with someone on a project.\n\nThis is a simple project which generates a digest of all comments by a particular user on a particular project.\n\nThis project was also a good excuse to play around and test some functional programming/data manipulation tooling I've been messing with ([funcy](https://github.com/Suor/funcy), [funcy-pipe](https://github.com/iloveitaly/funcy-pipe), and [whatever](https://github.com/Suor/whatever)).\n\n## Features\n\n* Can send an email digest if auth is provided\n* Retrieves comments on completed tasks\n* Target projects by ID or name\n\n## Usage\n\n### Docker\n\n```shell\ndocker pull ghcr.io/iloveitaly/todoist-digest:latest\ndocker run --env-file .env ghcr.io/iloveitaly/todoist-digest:latest\n```\n\nWant to run a one off execution?\n\n```shell\ndocker run --env-file .env ghcr.io/iloveitaly/todoist-digest:latest todoist-digest --help\n```\n\nWant to inspect the docker container?\n\n```shell\ndocker run -it ghcr.io/iloveitaly/todoist-digest:latest bash\n```\n\nOr, just use the [docker compose file](docker-compose.yml).\n\n### Locally\n\n\nRun this locally using:\n\n```shell\nbin/local-digest-html\n```\n\nOr run directly:\n\n```shell\npoetry run todoist-digest \\\n  --last-synced \"2023-12-04T15:52:48Z\" \\\n  --target-user user@gmail.com \\\n  --target-project ProjectName\n```\n\nOr, email yourself the digest:\n\n```shell\npoetry run todoist-digest \\\n  --last-synced $LAST_SYNC \\\n  --target-user $TARGET_USER \\\n  --target-project $TARGET_PROJECT \\\n  --email-auth $EMAIL_AUTH \\\n  --email-to $EMAIL_TO\n```\n\n## Development\n\n### Docker Build\n\nThis repo uses [nixpacks](https://nixpacks.com/docs/getting-started) for building a Dockerfile. Why? Because I like trying new things.\n\nUntil [asdf support](https://github.com/railwayapp/nixpacks/pull/1026) is built into nixpacks, you'll have to do something like:\n\n```shell\nexport NIXPACKS_POETRY_VERSION=$(asdf-current-version poetry)\nexport NIXPACKS_PYTHON_VERSION=$(asdf-current-version python)\n```\n\n(asdf-current-version is a function [I have in my shell](https://github.com/iloveitaly/dotfiles/blob/d597a90cd84fb4c5c47efa78255e45a537f1155c/.functions#L17-L21) which returns the current version of a tool)\n\nIn order to pass the py + poetry versions properly to nixpacks:\n\n```shell\nnixpacks build . --name todoist-digest --env NIXPACKS_PYTHON_VERSION --env NIXPACKS_POETRY_VERSION --start-cmd bin/cron-digest\n```\n\n### Playground\n\nipython shell with some helpful variables defined:\n\n```shell\n./playground.py\n```\n\n### Run with ipdb\n\nOpen up an exception when there's an exception:\n\n```shell\nipdb3 $(which todoist-digest) --last-synced 2023-12-14T13:38:25Z ...\n```\n\n## Related\n\n* https://www.smashlists.com ([discovered here](https://www.reddit.com/r/todoist/comments/l7mhfq/how_to_track_weekly_goals/))",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Generate a digest of comments that occured since the last checked in date. Useful for including in an email.",
    "version": "0.8.2",
    "project_urls": null,
    "split_keywords": [
        "todoist",
        " digest",
        " task",
        " management"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7e45611f60291b7e6a246ad3e1b00b129d11d71f376cf877b1ce36d5fd702e63",
                "md5": "d24cdccc073a0c3f1bcfff2a10e7b1a5",
                "sha256": "ca1eb79209729e6f605427d93afaa5a47693efd335dbb22186537ce80723e675"
            },
            "downloads": -1,
            "filename": "todoist_digest-0.8.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "d24cdccc073a0c3f1bcfff2a10e7b1a5",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.11",
            "size": 10237,
            "upload_time": "2024-04-08T15:38:39",
            "upload_time_iso_8601": "2024-04-08T15:38:39.885525Z",
            "url": "https://files.pythonhosted.org/packages/7e/45/611f60291b7e6a246ad3e1b00b129d11d71f376cf877b1ce36d5fd702e63/todoist_digest-0.8.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6df54eccceddc7f4c014174554350bf02ab22a9e9c7ed94d205e0a985f18ac4a",
                "md5": "549787d7772eebfd3c5477079ca17b1f",
                "sha256": "82fdcb8023fe5188a4f1f2cf680c375cb83c5c4893de7e6f524a4acd6339fbfa"
            },
            "downloads": -1,
            "filename": "todoist_digest-0.8.2.tar.gz",
            "has_sig": false,
            "md5_digest": "549787d7772eebfd3c5477079ca17b1f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.11",
            "size": 10261,
            "upload_time": "2024-04-08T15:38:41",
            "upload_time_iso_8601": "2024-04-08T15:38:41.077563Z",
            "url": "https://files.pythonhosted.org/packages/6d/f5/4eccceddc7f4c014174554350bf02ab22a9e9c7ed94d205e0a985f18ac4a/todoist_digest-0.8.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-08 15:38:41",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "todoist-digest"
}
        
Elapsed time: 0.21072s