Zeit richtig nutzen: Prozessautomatisierung in Tinder


Ich denke, viele Leute lernen gerne soziale Kontakte kennen. Netzwerke und verwenden Anwendungen (zum Beispiel Tinder),
aber oft dauert es viel Zeit, um erste
Nachrichten zu mögen und zu senden . Ich glaube, dass dies monotone Handlungen sind, die nur
Kommunikation und Datierung abwehren . Wenn Sie ein Programmierer sind, warum sollten Sie wie alle anderen sein, lassen Sie uns
den Prozess monotoner Aktionen mit mir automatisieren und unsere Aufmerksamkeit nur
für eine angenehme Kommunikation, aber für alles in Ordnung lassen.

Ausbildung


In diesem Artikel werde ich den Chrome-Browser verwenden .
  1. Erstellen Sie einen Ordner mit dem Projekt bot_tinder .
  2. bot_tinder chromedriver_for_win chromedriver_for_mac, chromedriver_for_lin (.. 3 Windows, macOS, Linux).
  3. webdriver ( Chrome, Firefox ), .
  4. chromedriver_for_win, chromedriver_for_mac, chromedriver_for_lin.
    , , .. .
  5. Erstellen Sie im Ordner bot_tinder eine Datei mit dem Namen log.txt (wir notieren die Telefonnummer, unter der sie an Tinder gesendet wird). Format ohne Acht: 9851234567
  6. Erstellen Sie im Ordner bot_tinder die Dateien tinder.py , function.py .

Daher sollten Sie Folgendes haben:



Jeder Ordner sollte die zuvor heruntergeladene Webdriver- Datei enthalten .
Wenn Sie es nur für Ihr Betriebssystem implementieren , sollte sich die Webdriver- Datei nur in einem der Ordner mit dem Namen Ihres Betriebssystems "chromedriver_for_your OS " befinden .

Implementierung


Importieren Sie in der Datei tinder.py die Bibliothek:

# -*- coding: utf-8-*-
from selenium import webdriver


Importieren Sie in der Datei function.py die Bibliotheken:

from selenium.common.exceptions import NoSuchElementException, ElementNotInteractableException
from sys import platform
from time import sleep
import datetime

Als Nächstes erstellen wir in der Datei function.py die Variablen, die wir später benötigen:

error = ''
warning = ''
ok = ''
oc = ''
like = ''
all_sleep = 3
like_sleep = 2
Die Symbole wurden vom Habr-Interpreter gelöscht, aber es sollte so aussehen:



Sie können die Symbole von der Site kopieren oder die Emoji- Bibliothek verwenden .
Die Variablen all_sleep , like_sleep geben die Verzögerungszeit in Sekunden an.

Nachdem wir die Funktionen in der Datei function.py erstellt haben :


  • Die erste Funktion bestimmt Datum und Uhrzeit:
    def get_data_time():
        time_now = datetime.datetime.now()
        return time_now.strftime("%d-%m-%Y %H:%M")

  • Die zweite Funktion bestimmt Ihr Betriebssystem und greift auf den gewünschten Web-Treiber zu :

    def get_OC():
        """
        Define OS.
        :return: OS information and path to chromedriver.exe
        """
        if platform == "linux" or platform == "linux2":
            time_now = datetime.datetime.now()
            information = "[" + get_data_time() + '] {}   Linux'.format(oc)
            put = "chromedriver_for_lin/** webdriver**"
            return information, put
    
        elif platform == "darwin":
            time_now = datetime.datetime.now()
            information = "[" + get_data_time() + '] {}   Mac'.format(oc)
            put = "chromedriver_for_mac/** webdriver**"
            return information, put
    
        elif platform == "win32":
            time_now = datetime.datetime.now()
            information = "[" + get_data_time() + '] {}   Windows'.format(oc)
            put = "chromedriver_for_win/chromedriver.exe"
            return information, put

    Denken Sie daran, den Pfad zum Webdriver in die Variable put zu schreiben .

  • Die dritte Funktion liest die Telefonnummer aus der Datei log.txt :

    def information_from_txt_files():
        """
        Read the .txt files
        :return: Information. Login.
        """
        information = ''
        with open('log.txt', 'r') as file:
            log = file.read()
            information += "[" + get_data_time() + \
                           '] {}      Tinder: {}'.format(ok, log) 
        return information, log

  • Die vierte Funktion schließt das Popup auf der Tinder-Website:

    def close_start_popups(browser):
        """
        Close the popup.
        :param browser: parameter of the running browser.
        :return: information.
        """
        sleep(all_sleep)
        try:
            browser.find_element_by_xpath('//button[@aria-label=""]').click()
            return "[" + get_data_time() + "] {}   .".format(ok)
        except ElementNotInteractableException as err:
            return "[" + get_data_time() + '] {} ' + err + ''.format(error)
        except NoSuchElementException as err:
            return "[" + get_data_time() + '] {}    .'.format(error)

  • Die fünfte Funktion drückt die Taste "Anmelden mit Telefonnummer" :

    def log_in_using_your_phone(browser):
        """
        Click the Login button using the phone number.
        :param browser: parameter of the running browser.
        :return: information
        """
        sleep(all_sleep)
        try:
            browser.find_element_by_xpath('//div[@id="modal-manager"]').find_element_by_xpath('//button[@aria-label="    "]').click()
            return "[" + get_data_time() + "] {}     .".format(ok)
        except ElementNotInteractableException as err:
            return "[" + get_data_time() + '] {} ' + err + ''.format(error)
        except NoSuchElementException as err:
            browser.find_element_by_xpath('//button[text()=" "]').click()
            return log_in_using_your_phone(browser)

  • Die sechste Funktion gibt die Telefonnummer ein:

    def input_number_phone(browser, log):
        """
        Enter the phone number.
        :param browser: parameter of the running browser.
        :param log: phone number.
        :return: information.
        """
        sleep(all_sleep)
        try:
            browser.find_element_by_name('phone_number').send_keys(log)
            return "[" + get_data_time() + '] {}    {}'.format(ok, log)
        except NoSuchElementException:
            return "[" + get_data_time() + '] {}      .'.format(error)

  • Die siebte Funktion drückt die Weiter- Taste :

    def go_on(browser):
        """
        Click the Continue button.
        :param browser: parameter of the running browser.
        :return: information
        """
        sleep(all_sleep)
        try:
            browser.find_element_by_xpath('//span[text()=""]').click()
            return "[" + get_data_time() + '] {}   '.format(ok)
        except NoSuchElementException:
            return "[" + get_data_time() + '] {}    .'.format(error)

  • Die achte Funktion fordert Sie auf, den Code einzugeben, der auf Ihr Telefon kommt:

    def code_check():
        """
        Entering a code and checking the entered code.
        :return: entered code
        """
        kod_numbers = input("[" + get_data_time() + "] {}  : ".format(warning))
        if len(kod_numbers) != 6:
            print("[" + get_data_time() + '] {}   .'.format(error))
            return code_check()
        else:
            print("[" + get_data_time() + '] {}   .'.format(ok))
            return kod_numbers

    Die Funktion überprüft auch die Anzahl der eingegebenen Ziffern.
  • Die neunte Funktion gibt den Code ein:

    def input_cod(browser):
        """
        Code entry.
        :param browser: parameter of the running browser.
        :return: information.
        """
        try:
            kod_numbers = code_check()
            kod = browser.find_elements_by_xpath('//input[@type="tel"]')
            n = 0
            for i in kod:
                i.send_keys(kod_numbers[n])
                n += 1
            return "[" + get_data_time() + '] {}  .'.format(ok)
        except NoSuchElementException:
            return "[" + get_data_time() + '] {}      .'.format(error)

  • Die zehnte Funktion ermöglicht die Definition der Geolokalisierung:

    def geolocation_ok(browser):
        """
        We allow geolocation.
        :param browser: parameter of the running browser.
        :return: information.
        """
        sleep(all_sleep)
        try:
            browser_button = browser.find_elements_by_tag_name("button")
            button_list = {i.text: i for i in browser_button}
            if "" in button_list.keys():
                button = [value for key, value in button_list.items() if key == ""]
                button[0].click()
                return "[" + get_data_time() + '] {}  .'.format(ok)
            else:
                return "[" + get_data_time() + '] {}      .'.format(error)
        except NoSuchElementException:
            return "[" + get_data_time() + '] {}      .'.format(error)

  • Die elfte Funktion schaltet den Alarm aus:

    def notice_off(browser):
        """
        Turn off notifications.
        :param browser: parameter of the running browser.
        :return: information.
        """
        sleep(all_sleep)
        try:
            browser_button = browser.find_elements_by_tag_name("button")
            button_list = {i.text: i for i in browser_button}
            if "" in button_list.keys():
                button = [value for key, value in button_list.items() if key == ""]
                button[0].click()
                return "[" + get_data_time() + '] {}  .'.format(ok)
            else:
                return "[" + get_data_time() + '] {}      .'.format(error)
        except NoSuchElementException:
            return "[" + get_data_time() + '] {}      .'.format(error)

  • Die zwölfte Funktion schließt Popups:

    def popup_windows_off(browser):
        """
        Close popups.
        :param browser: parameter of the running browser
        :return: information
        """
        sleep(like_sleep)
        try:
            browser_button = browser.find_elements_by_tag_name("button")
            button_list = {i.text: i for i in browser_button}
            if "" in button_list.keys():
                button = [value for key, value in button_list.items() if key == ""]
                button[0].click()
                print("[" + get_data_time() + '] {}  .'.format(ok))
        except NoSuchElementException:
            pass

  • Die dreizehnte Funktion setzt Like:

    def click_like(browser):
        """
        Click LIKE.
        :param browser: parameter of the running browser
        :return: information
        """
        sum_like = 0
        while True:
            try:
                popup_windows_off(browser)
                browser.find_element_by_xpath('//button[@aria-label=""]').click()
                sum_like += 1
                print("[" + get_data_time() + '] {} - {}'.format(like, str(sum_like)))
            except NoSuchElementException:
                print("[" + get_data_time() + '] {}    .'.format(error))


Gehen Sie nun zur Datei tinder.py und registrieren Sie den Import aller Funktionen:

from function import get_OC, information_from_txt_files, close_start_popups, notice_off, click_like, log_in_using_your_phone, input_number_phone, go_on, input_cod, geolocation_ok

Definieren Sie das Betriebssystem:
#  
info, put = get_OC()
print(info)

Browseroptionen festlegen:

#    chrome
chromedriver = put
options = webdriver.ChromeOptions()
options.add_argument('--start-minimize')
browser = webdriver.Chrome(executable_path=chromedriver, chrome_options=options)

Wenn Sie mit der Arbeit Firefox dann lesen wie man mit der Arbeit selenium.webdriver Bibliothek .

Der Browser wird gestartet und wechselt zur Zunder-Seite:

#        
browser.get('https://tinder.com/app/recs')

Jetzt beginnen wir, die zuvor vorbereiteten Funktionen zu verwenden:

#  txt   
info_txt, log = information_from_txt_files()
print(info_txt)
#     
print(close_start_popups(browser))
#     
print(log_in_using_your_phone(browser))
#   
print(input_number_phone(browser, log))
#   
print(go_on(browser))
#  
print(input_cod(browser))
#   
print(go_on(browser))
#     
print(geolocation_ok(browser))
#   
print(notice_off(browser))
#  
click_like(browser)

Fazit


Holen Sie sich am Ende einen Bot, der auf die Tinder-Website geht und auf Like klickt.

Sie müssen nur in ein paar Stunden in die Bewerbung gehen und mit bereits gegenseitigen
Sympathien sprechen .
Automatisierung ist die Anstrengung von Männern, die Arbeit zu vereinfachen, damit Frauen sie tun können.
Im nächsten Artikel werden wir die Möglichkeit implementieren, Nachrichten für gegenseitige Likes zu senden.

All Articles