Facebook da gruba dosya yüklemek için selenium ile yaptığım basit bir kod. Facebook dilini ingilizce yapın, windows da chrome ile sıkıntısız 100 den fazla partı yükledi.
"pip install selenium" ile selenium modülünü yükledikten sonra, bu scriptin olduğu klasöre http://chromedriver.chromium.org/downloads buradaki chromedriver.exe dosyasını eklemeyi unutmayın.
"pip install selenium" ile selenium modülünü yükledikten sonra, bu scriptin olduğu klasöre http://chromedriver.chromium.org/downloads buradaki chromedriver.exe dosyasını eklemeyi unutmayın.
PHP Kod:
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import time, os, sys
print(
"""
############################################################
#- Facebook Dosya Yukleme
#- windows-chrome icin
############################################################
""")
reload(sys)
sys.setdefaultencoding('utf8')
yer = str(os.path.dirname(os.path.abspath(sys.argv[0])))+str(os.sep)
#Selenium Ayarlari, Ubuntu da kullanacaksaniz burayi mutlaka degistirin
chrome_options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications" : 2} #chrome da bildirim engellemek icin
chrome_options.add_experimental_option("prefs",prefs)
chrome_options.add_argument("--incognito") #gizli sekmede islem yapmak icin
driver =webdriver.Chrome(yer+"chromedriver.exe",chrome_options=chrome_options)
print driver.session_id
def giris(username,password):
driver.get("https://en-gb.facebook.com/")
driver.find_element_by_id("email").click()
driver.find_element_by_id("email").clear()
time.sleep(1)
driver.find_element_by_id("email").send_keys(username)
driver.find_element_by_id("pass").click()
driver.find_element_by_id("pass").clear()
time.sleep(1)
driver.find_element_by_id("pass").send_keys(password)
try:
driver.find_element_by_id("pass").send_keys(Keys.ENTER)
except:
driver.find_element_by_id("u_0_2").click()
time.sleep(5)
def yukle(sira,gkod):
driver.get("https://www.facebook.com/groups/"+str(gkod)+"/files/")
for i in sira:
#print i.split(os.sep)[-1]
try:
driver.find_element_by_link_text("Upload FileUpload File").click()
time.sleep(2)
except:
driver.find_element_by_xpath("(.//*[normalize-space(text()) and normalize-space(.)='Create Doc'])[1]/following::i[1]").click()
time.sleep(2)
sec=driver.find_element_by_name("file1").send_keys(i)
time.sleep(2)
try:
driver.find_element_by_xpath("(.//*[normalize-space(text()) and normalize-space(.)='Select a file on your computer (Max size 100 MB)'])[1]/following::button[1]").click()
time.sleep(2)
except:
sec.send_keys(Keys.TAB)
time.sleep(0.5)
sec.send_keys(Keys.ENTER)
time.sleep(int(os.path.getsize(i))/(1024**2)) #her 1mb yukleme icin 1sn bekleyecek
while True:
tag=driver.find_element_by_xpath('//*[@id="group_files_'+str(gkod)+'"]/li[1]').text
if str(tag).find(i.split(os.sep)[-1]) == -1:
print "Dosya henuz yuklenmemis, biraz daha bekleyelim."
time.sleep(10)
else:
os.remove(yer+i) #yuklenen partlari silmek icin
break
print str(i.split(os.sep)[-1])+" yuklendi."
print "Tum partlar yuklendi."
partlar=raw_input("Yuklenecek dosyalarin oldugu dizin,\nubuntu icin '/root/film/'\nwindows icin 'c:\\user\\desktop\\film\\' \nseklinde girin:\n")
username=raw_input("kullanici adi:\n")
password=raw_input("Sifre:\n")
gkod=raw_input("Grubun web sayfasinda 'https://www.facebook.com/groups/<kod veya isim>/files/' kod veya ismi lazim:\n")
giris(username,password)
#time.sleep(10)
sira=[]
for i in os.listdir(partlar):
sira.append(partlar+i)
yukle(sira,gkod)