Whatsapp-automated-echo/echo.py

129 lines
3.3 KiB
Python
Raw Normal View History

2017-10-26 23:30:40 +02:00
# 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)