OmitMe
Your Privacy-Centric, Easily Extendable Data Deletion Solution.
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
Planned
- Matrix
In-progress
- Work in progress GUI for Linux, MacOS & Windows.
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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.