diff --git a/echo.py b/echo.py new file mode 100644 index 0000000..7a0adfc --- /dev/null +++ b/echo.py @@ -0,0 +1,129 @@ +# coding=utf-8 + +import os +from selenium import webdriver +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.common.keys import Keys +import time +import os +from googletrans import Translator + +def getfile_local(name1): # just a functions that finds the path to files in the same directory as this one. + name = os.path.basename(__file__) + path = os.path.abspath(__file__) + print path + for i in range(len(name)): + path = path[:len(path)-1] + print path + for i in range(len(name1)): + path = path + name1[i] + print path + return path + +def backw(strng): + return strng[::-1] + +def translate(text): + translator = Translator() + return translator.translate(text).text + +def sqr(strng): + out = "" + for i in range(len(strng)): + out += strng[i:] + strng[:i] + "\n" + return out + +def noFucks(text): + if text == text[:]: + return "ok." + +def playInterested(text): + newText = text.replace(".","").replace(",","").replace("!","").replace("?","").replace(";","").replace(":","").replace("(","").replace(")","") + while newText[-1] == " ": + newText = newText[:-1] + return "Jaja, " + newText.split(" ")[-1] + ", interessant." + +def isThere(name): + try: + title = driver.find_element_by_class_name("pane-chat-header") + if name in title.text: + return True + else: + return False + except: + return False + +def boot_driver(): + os.environ['MOZ_HEADLESS'] = '1' + path_to_firefox = getfile_local("geckodriver.exe") + path_to_profile = getfile_local("profile") + profile = webdriver.FirefoxProfile(path_to_profile) + driver = webdriver.Firefox(executable_path=path_to_firefox, firefox_profile = profile) + return driver + +def boot_whatsapp_interface(): + driver = boot_driver() + driver.get("https://web.whatsapp.com/") + WebDriverWait(driver, 60) + return driver + +def process_messages(driver, botVar, spareList, lastText): + + try: + unread = driver.find_element_by_class_name("unread") + unread.click() + + except: + isSpared = False + for name in spareList: + if isThere(name): + isSpared = True + + if not isSpared: + + try: + in_messages = driver.find_elements_by_class_name("message-in") + last_message = in_messages[-1].find_element_by_class_name("selectable-text") + + if last_message.text == "": + last_message = in_messages[-1].find_element_by_class_name("large-emoji-container") + + text = last_message.text#.encode('utf-8') + + if text != lastText: # this is the echo. + input_box = driver.find_element_by_class_name("pluggable-input-body") + input_box.click() + input_box.send_keys(( + botVar(text) + ) + Keys.ENTER) # this actually types the echo. + lastText = text + return lastText + + else: + return lastText + except: + pass + + return lastText + +def manage_whatsapp(maxWaitTime, botVar, spareList): + driver = boot_whatsapp_interface() + waitTime = 1 + lastText = "" + secondToLastText = "" + + while True: + print waitTime + time.sleep(waitTime) + lastText = process_messages(driver, botVar, spareList, lastText) + + if not secondToLastText == lastText: + waitTime = 1 + elif not waitTime > maxWaitTime: + waitTime += waitTime + + secondToLastText = lastText + +if __name__ == '__main__': + spareList = ["Geburtstagsfeier 30.10.", "MSS 13", "KMV Ober-Flörsheim"] + manage_whatsapp(15, backw, spareList) \ No newline at end of file diff --git a/geckodriver.exe b/geckodriver.exe new file mode 100644 index 0000000..3196be2 Binary files /dev/null and b/geckodriver.exe differ