jason 2 years ago
parent
commit
a99fb24b33
1 changed files with 83 additions and 26 deletions
  1. 83 26
      friend_request.py

+ 83 - 26
friend_request.py

@@ -1,54 +1,111 @@
 from selenium import webdriver
 from selenium.webdriver.common.by import By
-import time
+from time import sleep as tsleep
 import configparser
+import traceback
 import sys
+import dataset
+import os
+import random
+from datetime import *
 
-def restart_browser(userdatadir):
+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("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)
-    options.add_argument('--profile-directory=Default')
-#    options.add_argument('--profile-directory="Profile 1"')
+    '''
+    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)
 
-    driver=webdriver.Chrome(chrome_options=options)
-    driver.set_window_size(1400,1000)
-    return driver
+    print(userlist)
+    '''
 
+#    options.add_argument('--profile-directory=Default')
+    selecteduser = random.choice(userlist)
+    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:/portable/choozmo.ini')
-userdatadir=config['DEFAULT']['userdatadir']
+config.read('C:/Users/ASUS ROG/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')]")
+
+    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')]")
 
-driver=restart_browser(userdatadir)
-driver.get('https://www.facebook.com/friends/requests')
+    count = 0 #maximum friend requests accepted at a time specified in ini
 
-#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')]")
+    for req, link in zip(reqs, links):
+        count += 1
+        print("Friend request!")
+        print(req)
+        print(req.text)
+        url = link.get_attribute('href')
+        print(url)
+        elmt=req.find_element(By.XPATH, "./../../../../../..")
+        txt=elmt.text
+        lines=txt.split('\n')
+        print(lines)
+    #    print(elmt.text)
 
-#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')]")
+        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() 
 
+        #db['friend_requests'].insert({"datetime":datetime.now(), "name": lines[0], "page_link": url, "request_age": lines[1], "server_ID": serverid, "profile": selecteduser})
 
+        print("Completed")
 
+        if count == maxrequests:
+            break
 
-print(reqs)
+        #tsleep(10)
 
-for req in reqs:
-    print("Friend request!")
-    time.sleep(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() 
-    time.sleep(15)
-print("Completed")
-time.sleep(500)
-driver.quit()
+print("Program has completed execution")
+tsleep(5)
+driver.quit()