Skip to main content

OmitMe - Your Privacy-Centric, Easily Extendable Data Deletion Solution

Project description

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()

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

omitme-0.0.9.tar.gz (557.3 kB view details)

Uploaded Source

Built Distribution

omitme-0.0.9-py3-none-any.whl (573.3 kB view details)

Uploaded Python 3

File details

Details for the file omitme-0.0.9.tar.gz.

File metadata

  • Download URL: omitme-0.0.9.tar.gz
  • Upload date:
  • Size: 557.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.11.9 Linux/6.5.0-1017-azure

File hashes

Hashes for omitme-0.0.9.tar.gz
Algorithm Hash digest
SHA256 838fce0f690c16dbeda5a82b672b3648948d26960bf9920db11902f049309742
MD5 e41a71ed1cbe3beece352476201bda19
BLAKE2b-256 6e269952e21159324733fcdb1bdf16d5e817c937d8ca50b3f03edd92d7a98354

See more details on using hashes here.

File details

Details for the file omitme-0.0.9-py3-none-any.whl.

File metadata

  • Download URL: omitme-0.0.9-py3-none-any.whl
  • Upload date:
  • Size: 573.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.11.9 Linux/6.5.0-1017-azure

File hashes

Hashes for omitme-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 b481f7ac954734d4a83f50f5ac7fe8db90183b25f22d7e920931ae3a4283569d
MD5 18480e923150b15ae0b77827b7196c38
BLAKE2b-256 596de1369d8432d9a16fb766a93e914a26dba42a8c398c75814d1d6309152e96

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