Facebook
From Gray Pelican, 4 Years ago, written in Python.
Embed
Download Paste or View Raw
Hits: 103
  1. from selenium import webdriver
  2. from selenium.webdriver.common.keys import Keys
  3. import selenium.common.exceptions
  4. import time
  5.  
  6. url = "https://6obcy.org"
  7.  
  8.  
  9. def send_text(browser, text, css_selector="#box-interface-input"):  # wysyła wiadomość do podanego obcego
  10.         try:
  11.                 textbox = browser.find_element_by_css_selector(css_selector)
  12.                 textbox.send_keys(text)
  13.                 textbox.send_keys(Keys.RETURN)
  14.         except selenium.common.exceptions.ElementNotInteractableException:
  15.                 try:
  16.                         time.sleep(1)
  17.                         textbox = browser.find_element_by_css_selector(css_selector)
  18.                         textbox.send_keys(text)
  19.                         textbox.send_keys(Keys.RETURN)
  20.                 except selenium.common.exceptions.ElementNotInteractableException:
  21.                         return
  22.  
  23.  
  24. def start_conversation(browser):  # zaczyna konwersacje
  25.         try:
  26.                 start = browser.find_element_by_css_selector("#intro-start")  # szuka przycisku "Połącz z obcym"
  27.                 start.click()
  28.         except selenium.common.exceptions.NoSuchElementException:
  29.                 retry = browser.find_element_by_css_selector("#ov-new-talk")  # szuka przycisku "Nowa rozmowa"
  30.                 retry.click()
  31.  
  32.  
  33. def read_last_stranger_message(browser):
  34.         message_log = browser.find_element_by_css_selector("#log-dynamic")  # wczytuje wszystkie wiadomości
  35.         log_obcy = message_log.find_elements_by_class_name("log-stranger")  # wybiera tylko wiadomości obcego
  36.         if len(log_obcy) == 0:
  37.                 return "", 0
  38.         else:
  39.                 return log_obcy[-1].text, len(log_obcy)  # zwraca ostatnią wiadomość obcego
  40.  
  41.  
  42. def disconnect(browser):  # rozłącza rozmowę
  43.         try:
  44.                 button = browser.find_element_by_css_selector("#ov-disconnect-me")
  45.                 button.click()
  46.                 button = browser.find_element_by_css_selector("#ov-are-you-sure")
  47.                 button.click()
  48.         except selenium.common.exceptions.ElementNotInteractableException:
  49.                 return
  50.  
  51.  
  52. def is_disconnected(browser):  # sprawdza czy obcy się rozłączył
  53.         element = browser.find_element_by_css_selector(
  54.                 "#log-static-end-talk > p:nth-child(1) > span:nth-child(1) > span:nth-child(2)")  # szuka elementu odpowiedzialnego za za rozłączenie obcego
  55.         if element.is_displayed():
  56.                 return True
  57.         else:
  58.                 return False
  59.  
  60.  
  61. def main():
  62.         print("to do dzieła")
  63.         obcy1 = webdriver.Firefox()
  64.         obcy1.get(url)
  65.         print("pierwsza przeglądarka gotowa")
  66.         obcy2 = webdriver.Firefox()
  67.         obcy2.get(url)
  68.         print("druga przeglądarka gotowa")
  69.         while True:
  70.                 obcy1_message_count = 0
  71.                 obcy2_message_count = 0
  72.                 time.sleep(3)
  73.                 print("bob budowniczy")
  74.                 start_conversation(obcy1)
  75.                 start_conversation(obcy2)
  76.                 while True:
  77.                         message, count = read_last_stranger_message(obcy1)
  78.                         if count > obcy1_message_count:
  79.                                 send_text(obcy2, message[5:])  # [5:] bo wysyłało też "Obcy: "
  80.                                 obcy1_message_count = count
  81.                         message, count = read_last_stranger_message(obcy2)
  82.                         if count > obcy2_message_count:
  83.                                 send_text(obcy1, message[5:])
  84.                                 obcy2_message_count = count
  85.                         if is_disconnected(obcy1):
  86.                                 disconnect(obcy2)
  87.                                 break
  88.                         if is_disconnected(obcy2):
  89.                                 disconnect(obcy1)
  90.                                 break
  91.                 continue
  92.         obcy1.quit()
  93.         obcy2.quit()
  94.  
  95.  
  96. if __name__ == "__main__":
  97.         main()
  98.