- Notifications
You must be signed in to change notification settings - Fork0
OmitMe - Your Privacy-Centric, Easily Extendable Data Deletion Solution.
License
WardPearce/omitme
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Your Privacy-Centric, Easily Extendable Data Deletion Solution.
pip install omitme
May need to have chrome installed to function.
omitme-cli --help
omitme-cli discord loginomitme-cli discord accountsomitme-cli discord target messages-delete-all --account account_name
- Linux ✅
- Windows ❌
- MacOS ❌
- Discord
- Matrix
Omitme is built to be expandable to other platforms.
See an examplehere
Each new platform, show inherit fromPlatform
.
classDiscord(Platform):
Each platform class requires some metadata.icon
should be stored inomitme/resources/platforms
classDiscord(Platform):api_url="https://discord.com/api/v9"login_url="https://discord.com/login"alias="discord"icon="discord.png"description="Manage your discord data"
Each platform requires a login handler like so.
driver
is a instance ofseleniumwire's webdriver
@loginasyncdefhandle_login(self,driver:webdriver.Chrome,accounts:Accounts)->httpx.AsyncClient:pass
Once login is successful, the account should be stored safely usingaccounts.add
& your custom HTTPX session should be returned.
@loginasyncdefhandle_login(self,driver:webdriver.Chrome,accounts:Accounts)->httpx.AsyncClient:driver.get(self.login_url) ...awaitaccounts.add(resp.json()["username"],session={"headers":headers})returnsession
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.
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")asyncdefhandle_delete_posts(self,session:httpx.AsyncClient)->AsyncIterator[OmittedEvent|CheckingEvent|FailEvent|CompletedEvent]:resp=awaitsession.get(f"/user/{awaitself._get_username(session)}/submitted",params={"timeframe":"all","limit":"100"}, )forpostinresp.json()["data"]["children"]:awaitself._delete_post(session,post["kind"],post["data"]["id"])yieldOmittedEvent(channel=post["data"]["subreddit"],content=post["data"]["selftext"] )yieldCompletedEvent()