Automate Scrubbing your Facebook Presence
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

143 lines
3.4 KiB

#!/usr/bin/env python
from .tools.common import logger
from .tools.config import settings
from .tools.likes import unlike_pages
from .tools.login import login
from .tools.wall import delete_posts
from .tools.conversations import traverse_conversations
from .tools.comments import delete_comments
from .quit_driver import quit_driver_and_reap_children
import argparse
import getpass
import sys
LOG = logger("deletefb")
def run_delete():
parser = argparse.ArgumentParser()
parser.add_argument(
"-M",
"--mode",
required=False,
default="wall",
dest="mode",
type=str,
choices=["wall", "unlike_pages", "conversations"],
help="The mode you want to run in. Default is `wall' which deletes wall posts"
)
parser.add_argument(
"-E",
"--email",
required=True,
dest="email",
type=str,
help="Your email address associated with the account"
)
parser.add_argument(
"-P",
"--password",
required=False,
dest="password",
type=str,
help="Your Facebook password"
)
parser.add_argument(
"-U",
"--profile-url",
required=True,
dest="profile_url",
type=str,
help="The link to your Facebook profile, e.g. https://www.facebook.com/your.name"
)
parser.add_argument(
"-F",
"--two-factor",
required=False,
dest="two_factor_token",
type=str,
help="The code generated by your 2FA device for Facebook"
)
parser.add_argument(
"-H",
"--headless",
action="store_true",
dest="is_headless",
default=False,
help="Run browser in headless mode (no gui)"
)
parser.add_argument(
"--no-archive",
action="store_true",
dest="archive_off",
default=False,
help="Turn off archiving (on by default)"
)
parser.add_argument(
"-Y",
"--year",
required=False,
dest="year",
type=str,
help="The year(s) you want posts deleted."
)
parser.add_argument(
"-B",
"--chromebin",
required=False,
default=False,
dest="chromebin",
type=str,
help="Optional path to the Google Chrome (or Chromium) binary"
)
args = parser.parse_args()
settings["ARCHIVE"] = not args.archive_off
if args.year and args.mode not in ("wall", "conversations"):
parser.error("The --year option is not supported in this mode")
args_user_password = args.password or getpass.getpass('Enter your password: ')
driver = login(
user_email_address=args.email,
user_password=args_user_password,
is_headless=args.is_headless,
two_factor_token=args.two_factor_token,
chrome_binary_path=args.chromebin
)
try:
if args.mode == "wall":
delete_posts(
driver,
args.profile_url,
year=args.year
)
elif args.mode == "unlike_pages":
unlike_pages(driver, args.profile_url)
elif args.mode == "conversations":
traverse_conversations(driver, year=args.year)
else:
print("Please enter a valid mode")
sys.exit(1)
except BaseException as e:
print(e)
if driver:
quit_driver_and_reap_children(driver)
if __name__ == "__main__":
run_delete()