Skip to main content

OmitMe

Your Privacy-Centric, Easily Extendable Data Deletion Solution.

gif of cli

Install

pip install omitme

May need to have chrome installed to function.

Usage

omitme-cli --help

Example

omitme-cli discord login
omitme-cli discord accounts
omitme-cli discord target messages-delete-all --account account_name

Tested on

  • Linux ✅
  • Windows ❌
  • MacOS ❌

Supported platforms

Working

  • Discord
  • Reddit

Planned

  • Matrix
  • Twitter

In-progress

  • Work in progress GUI for Linux, MacOS & Windows. GUI

Contributing

Omitme is built to be expandable to other platforms.

See an example here

The Platform class

Each new platform, show inherit from Platform.

class Discord(Platform):

Each platform class requires some metadata. icon should be stored in omitme/resources/platforms

class Discord(Platform):
    api_url = "https://discord.com/api/v9"
    login_url = "https://discord.com/login"
    alias = "discord"
    icon = "discord.png"
    description = "Manage your discord data"

Login

Each platform requires a login handler like so.

driver is a instance of seleniumwire's webdriver

@login
async def handle_login(
    self, driver: webdriver.Chrome, accounts: Accounts
) -> httpx.AsyncClient:
    pass

Once login is successful, the account should be stored safely using accounts.add & your custom HTTPX session should be returned.

@login
async def handle_login(
    self, driver: webdriver.Chrome, accounts: Accounts
) -> httpx.AsyncClient:
    driver.get(self.login_url)

    ...

    await accounts.add(resp.json()["username"], session={"headers": headers})

    return session

Targets

Targets are the methods called when a user wants to omit something, e.g. omitme-cli reddit target posts-delete-all, posts-delete-all would be our target.

Events

  • CheckingEvent, API call in progress.
  • OmittedEvent, data has been omitted.
  • CompletedEvent, the omitting process is complete.
@target("posts delete all", description="Delete all reddit posts")
async def handle_delete_posts(
    self, session: httpx.AsyncClient
) -> AsyncIterator[OmittedEvent | CheckingEvent | FailEvent | CompletedEvent]:
    resp = await session.get(
        f"/user/{await self._get_username(session)}/submitted",
        params={"timeframe": "all", "limit": "100"},
    )

    for post in resp.json()["data"]["children"]:
        await self._delete_post(session, post["kind"], post["data"]["id"])

        yield OmittedEvent(
            channel=post["data"]["subreddit"], content=post["data"]["selftext"]
        )

    yield CompletedEvent()

Metadata

Release files for omitme 0.0.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for omitme 0.0.9
File Size Uploaded Provenance Actions
omitme-0.0.9.tar.gz 557.3 kB Without provenance Details for omitme-0.0.9.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for omitme 0.0.9
File Interpreter ABI Platform Actions
omitme-0.0.9-py3-none-any.whl Python 3 none any Details for omitme-0.0.9-py3-none-any.whl

Total release size: 1.1 MB

Release files / omitme-0.0.9.tar.gz

Download URL omitme-0.0.9.tar.gz
Size 557.3 kB
Tags Source
SHA-256 checksum
How to use checksums
838fce0f690c16dbeda5a82b672b3648948d26960bf9920db11902f049309742
BLAKE2b-256 checksum
How to use checksums
6e269952e21159324733fcdb1bdf16d5e817c937d8ca50b3f03edd92d7a98354
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.2 CPython/3.11.9 Linux/6.5.0-1017-azure

Release files / omitme-0.0.9-py3-none-any.whl

Download URL omitme-0.0.9-py3-none-any.whl
Size 573.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b481f7ac954734d4a83f50f5ac7fe8db90183b25f22d7e920931ae3a4283569d
BLAKE2b-256 checksum
How to use checksums
596de1369d8432d9a16fb766a93e914a26dba42a8c398c75814d1d6309152e96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.2 CPython/3.11.9 Linux/6.5.0-1017-azure

Security for omitme 0.0.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page