|
@@ -1,84 +1,63 @@
|
|
|
-from selenium import webdriver
|
|
|
-from selenium.webdriver.common.by import By
|
|
|
-from time import sleep as tsleep
|
|
|
-import configparser
|
|
|
-import traceback
|
|
|
-import sys
|
|
|
-import dataset
|
|
|
-import os
|
|
|
-import random
|
|
|
-from datetime import *
|
|
|
-
|
|
|
-db = dataset.connect('mysql://vincent:vipAsw0_69d@db.ptt.cx:3306/vincent?charset=utf8mb4')
|
|
|
-
|
|
|
-def restart_browser(userdatadir, userlist):
|
|
|
- options = webdriver.ChromeOptions()
|
|
|
-# options.add_argument("start-maximized")
|
|
|
-# options.add_argument("--headless")
|
|
|
- fullpath='user-data-dir='+userdatadir
|
|
|
-# options.add_argument('user-data-dir=C:/Users/XXXXXXXXX/AppData/Local/Google/Chrome/User Data/') # replace XXXXXXXXX with your own username
|
|
|
- options.add_argument(fullpath) # replace XXXXXXXXX with your own username
|
|
|
- print(fullpath)
|
|
|
- '''
|
|
|
- for i in os.listdir(userdatadir):
|
|
|
- if "Profile" in i and "Guest" not in i and "System" not in i: #only takes "Profile ___"
|
|
|
- userlist.append(i)
|
|
|
-
|
|
|
- print(userlist)
|
|
|
- '''
|
|
|
-
|
|
|
-# options.add_argument('--profile-directory=Default')
|
|
|
- selecteduser = random.choice(userlist)
|
|
|
+from setup import *
|
|
|
+
|
|
|
+programname = 'FRIENDREQUESTS'
|
|
|
+userdatadir, userlist, config, minimize, approval = setup(programname)
|
|
|
+
|
|
|
+def execute():
|
|
|
+ try:
|
|
|
+ maxrequests = int(config[programname]['maxrequests'])
|
|
|
+ print("Handling up to "+ str(maxrequests) + " requests")
|
|
|
+ tsleep(5)
|
|
|
+ except:
|
|
|
+ print("Invalid settings. Please check settings and try again.")
|
|
|
+ tsleep(5)
|
|
|
+ return 0
|
|
|
+
|
|
|
+ driver, selecteduser=restart_browser(userdatadir, userlist)
|
|
|
+
|
|
|
+ # ANY RETURN 0 AFTER THIS POINT WILL REQUIRE DRIVER.QUIT TO BE CALLED FIRST BEFORE PROCEEDING, TO PREVENT POSSIBLE MEMORY LEAK
|
|
|
+ if minimize == 1:
|
|
|
+ driver.minimize_window()
|
|
|
+
|
|
|
print(selecteduser)
|
|
|
- options.add_argument('--profile-directory=' + selecteduser)
|
|
|
-
|
|
|
- driver=webdriver.Chrome(chrome_options=options)
|
|
|
-# driver.set_window_size(1400,1000)
|
|
|
- return driver, selecteduser
|
|
|
-
|
|
|
-config = configparser.ConfigParser()
|
|
|
-#config.sections()
|
|
|
-config.read('C:/Users/XXXXXXXXXX/Desktop/choozmo/vincentfriendreq.ini')
|
|
|
-userdatadir = config['DEFAULT']['userdatadir']
|
|
|
-userlist = config['DEFAULT']['userlist'].split(',')
|
|
|
-serverid = config['DEFAULT']['serverid']
|
|
|
-maxrequests = int(config['DEFAULT']['maxrequests'])
|
|
|
-#for k,v in config['DEFAULT'].items():
|
|
|
-# print(k)
|
|
|
-#sys.exit()
|
|
|
-
|
|
|
-for i in range(0, len(userlist)): # removes spaces at beginning
|
|
|
- userlist[i] = userlist[i].lstrip(' ')
|
|
|
-
|
|
|
-print("Selecting from profiles", userlist)
|
|
|
-print("Server ID is "+ str(serverid))
|
|
|
-print("Accepting up to "+ str(maxrequests) + " requests")
|
|
|
-
|
|
|
-tsleep(5)
|
|
|
-
|
|
|
-driver, selecteduser=restart_browser(userdatadir, userlist)
|
|
|
-driver.minimize_window()
|
|
|
-print(selecteduser)
|
|
|
-try:
|
|
|
- driver.get('https://www.facebook.com/friends/requests')
|
|
|
-except:
|
|
|
- traceback.print_exc()
|
|
|
-
|
|
|
-if "login" in driver.current_url:
|
|
|
- print("Not logged in. Please make sure you are logged in.")
|
|
|
- tsleep(10)
|
|
|
-else:
|
|
|
- #friend request confirm
|
|
|
- reqs = driver.find_elements(By.XPATH, "//*[contains(@class,'l9j0dhe7 du4w35lb j83agx80 pfnyh3mw taijpn5t bp9cbjyn owycx6da btwxx1t3 kt9q3ron ak7q8e6j isp2s0ed ri5dt5u2 rt8b4zig n8ej3o3l agehan2d sk4xxmp2 rq0escxv d1544ag0 tw6a2znq s1i5eluu tv7at329')]")
|
|
|
-
|
|
|
- #friend request reject -- just in case if needed
|
|
|
- #reqs = driver.find_elements(By.XPATH, "//*[contains(@class,'l9j0dhe7 du4w35lb j83agx80 pfnyh3mw taijpn5t bp9cbjyn owycx6da btwxx1t3 kt9q3ron ak7q8e6j isp2s0ed ri5dt5u2 rt8b4zig n8ej3o3l agehan2d sk4xxmp2 rq0escxv d1544ag0 tw6a2znq tdjehn4e tv7at329')]")
|
|
|
+ try:
|
|
|
+ driver.get('https://www.facebook.com/friends/requests')
|
|
|
+ except:
|
|
|
+ traceback.print_exc()
|
|
|
+
|
|
|
+ # CHECK IF YOU ARE LOGGED IN
|
|
|
+ if "login" in driver.current_url:
|
|
|
+ print("Not logged in. Please make sure you are logged in.")
|
|
|
+ tsleep(5)
|
|
|
+ driver.quit()
|
|
|
+ return 0
|
|
|
+
|
|
|
+ # YOU HAVE LOGGED IN AT THIS POINT -- MAIN PROGRAM EXECUTION STARTS HERE
|
|
|
+
|
|
|
+ try:
|
|
|
+ action = int(config[programname]["action"])
|
|
|
+ except:
|
|
|
+ action = 0
|
|
|
+
|
|
|
+ # CHOOSE: ACCEPT OR REJECT REQUEST?
|
|
|
+ reqs = ''
|
|
|
+ if action == 1:
|
|
|
+ print("Accepting friend requests")
|
|
|
+ reqs = driver.find_elements(By.XPATH, "//*[contains(@class,'om3e55n1 g4tp4svg alzwoclg jez8cy9q jcxyg2ei i85zmo3j sr926ui1 jl2a5g8c k7n6ui8p b41d885q hmqrhxox got7tec9 frfouenu bonavkto djs4p424 r7bn319e bdao358l aesu6q9g e4ay1f3w n75z76so ed17d2qt')]")
|
|
|
+ elif action == 2:
|
|
|
+ print("Rejecting friend requests")
|
|
|
+ reqs = driver.find_elements(By.XPATH, "//*[contains(@class,'om3e55n1 g4tp4svg alzwoclg jez8cy9q jcxyg2ei i85zmo3j sr926ui1 jl2a5g8c k7n6ui8p b41d885q hmqrhxox got7tec9 frfouenu bonavkto djs4p424 r7bn319e bdao358l aesu6q9g e4ay1f3w a5wdgl2o ed17d2qt')]")
|
|
|
+ else:
|
|
|
+ print("Invalid settings. Please check settings and try again.")
|
|
|
+ tsleep(5)
|
|
|
+ driver.quit()
|
|
|
+ return 0
|
|
|
|
|
|
print(reqs)
|
|
|
|
|
|
- links = driver.find_elements(By.XPATH, "//*[contains(@class,'oajrlxb2 gs1a9yip g5ia77u1 mtkw9kbi tlpljxtp qensuy8j ppp5ayq2 goun2846 ccm00jje s44p3ltw mk2mc5f4 rt8b4zig n8ej3o3l agehan2d sk4xxmp2 rq0escxv nhd2j8a9 mg4g778l pfnyh3mw p7hjln8o kvgmc6g5 cxmmr5t8 oygrvhab hcukyx3x tgvbjcpo hpfvmrgz jb3vyjys rz4wbd8a qt6c0cv9 a8nywdso l9j0dhe7 i1ao9s8h esuyzwwr f1sip0of du4w35lb btwxx1t3 abiwlrkh p8dawk7l lzcic4wl ue3kfks5 pw54ja7n uo3d90p7 l82x9zwi a8c37x1j')]")
|
|
|
+ links = driver.find_elements(By.XPATH, "//*[contains(@class,'qi72231t o9w3sbdw nu7423ey tav9wjvu flwp5yud tghlliq5 gkg15gwv s9ok87oh s9ljgwtm lxqftegz bf1zulr9 frfouenu bonavkto djs4p424 r7bn319e bdao358l fsf7x5fv tgm57n0e jez8cy9q s5oniofx m8h3af8h l7ghb35v kjdc1dyq kmwttqpk dnr7xe2t aeinzg81 srn514ro oxkhqvkx rl78xhln nch0832m om3e55n1 cr00lzj9 rn8ck1ys s3jn8y49 g4tp4svg jl2a5g8c f14ij5to l3ldwz01 icdlwmnq h8391g91 m0cukt09 kpwa50dg ta68dy8c b6ax4al1')]")
|
|
|
|
|
|
- count = 0 #maximum friend requests accepted at a time specified in ini
|
|
|
+ count = 0 # maximum friend requests accepted at a time specified in ini
|
|
|
|
|
|
for req, link in zip(reqs, links):
|
|
|
count += 1
|
|
@@ -93,6 +72,8 @@ else:
|
|
|
print(lines)
|
|
|
# print(elmt.text)
|
|
|
|
|
|
+ serverid = config['DEFAULT']['serverid']
|
|
|
+
|
|
|
tsleep(15) #just in case you want to change your mind...
|
|
|
webdriver.ActionChains(driver).move_to_element(req).perform()
|
|
|
webdriver.ActionChains(driver).move_to_element(req).click().perform()
|
|
@@ -104,8 +85,9 @@ else:
|
|
|
if count == maxrequests:
|
|
|
break
|
|
|
|
|
|
- #tsleep(10)
|
|
|
+ print("Program has completed execution")
|
|
|
+ tsleep(5)
|
|
|
+ driver.quit()
|
|
|
|
|
|
-print("Program has completed execution")
|
|
|
-tsleep(5)
|
|
|
-driver.quit()
|
|
|
+if approval == 1:
|
|
|
+ execute()
|