Wenn Sie TinderBot in Python schreiben, kann sie das tun

Einführung

Es gab so ein Bash-Skript im Kern. Wenn Sie Tinder unter Android starten und ausführen, können Sie anscheinend weiter nach rechts wischen (: heart :).

while true; do
    ./adb shell input swipe 100 400 4000 400 400;
done

https://gist.github.com/lawloretienne/4f044bde3eb8de67e2ae

Wie einfach es ist! bewegt sein. Ich beschloss, Tinder sofort zu starten. Aber Zunder hat ein Schlaglimit, sagte er. Wenn ein freier Benutzer ungefähr 120 Mal wischt, kann er für einen bestimmten Zeitraum nicht wischen. Es scheint, dass diese Einschränkung aufgehoben wird, wenn Sie sich für bezahlten Geschlechtsverkehr registrieren. Etwa 1000 Yen pro Monat. Morgen ist ein zierliches Fasten.

TinderBot

Das Wesentliche oben ist einfach und wunderbar. Niemand denkt, dass Sie, selbst wenn Sie dies bei der Arbeit spielen, mit Tinder herumspielen. Genau wie ein Ninja.

Dies misst jedoch nicht, welche Art von Menschen in Tinder sind und welche Art von Menschen: Herz :. Es ist Tom Demarcos Spruch: "Ich kann nicht kontrollieren, was ich nicht messen kann", und es ist keine Übertreibung zu sagen, dass es eine Schande für einen Mann ist, wenn Sie die Frauen, die zu mir strömen, nicht kontrollieren können (natürlich, stimmt das?). Was sollen wir dann tun?

Drücken Sie einfach die API. Es war einfach, als ich darauf kam. Es ist alles andere als einfach, aber ich habe einen Client für Python gefunden, mit dem ich vertraut bin. Deshalb habe ich zuerst einen Bot geschrieben, der die Informationen der Person speichert, die 10.000 Mal in SQLite gewischt hat.

Vorbereitende Bewegung

Die Umgebung des Autors ist Ubuntu 14.04 LTS, daher gibt es eine kleine Vorbereitung. Was für eine große Sache.

$ sudo apt-get install build-essential python-dev libffi-dev libssl-dev
$ pip install pyopenssl ndg-httpsclient pyasn1 requests[security] python-datetimeutil SQLAlchemy

Als nächstes erhalten Sie Ihre Facebook-Benutzer-ID und Ihr Zugriffstoken.

Benutzer-ID ist diese Site http://findmyfbid.com/

Das Zugriffstoken kann jetzt ausgestellt werden. Sie müssen nur die URL aus der Adressleiste kopieren, bevor Sie umgeleitet werden. Das Zugriffstoken ist in den GET-Parameter der URL eingebettet. Dieser Token verschwindet in kurzer Zeit (1 bis 2 Stunden). https://www.facebook.com/dialog/oauth?client_id=464891386855067&redirect_uri=https://www.facebook.com/connect/login_success.html&scope=basic_info,email,public_profile,user_about_me,user_activities,user_birthday,user_education_history,user_friends,user_interests,user_likes,user_location,user_photos,user_relationship_details&response_type=token

: heart: => 10.000 Mädchen

Wenn es real ist, kann sogar eine Person: Herz: mit beträchtlicher Bereitschaft, aber mit Zunder kann es tun: Herz: für 10.000 Menschen. Übrigens berechnen und beseitigen wir derzeit die Beschränkungen für die Region und das Alter. Entfernung und Altersunterschied hängen nicht mit Liebe zusammen. Übrigens dauert es bisher am längsten, über den Profilsatz nachzudenken.

from __future__ import unicode_literals
from datetime import datetime

from sqlalchemy import Column
from sqlalchemy import create_engine
from sqlalchemy import Date, DateTime
from sqlalchemy import Float, ForeignKey
from sqlalchemy import Integer
from sqlalchemy import SmallInteger
from sqlalchemy import String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
from sqlalchemy.orm import sessionmaker

import pynder

FBTOKEN = 'Facebook-Token habe ich bekommen'
FBID = 'Ich habe meine Facebook-ID erhalten'

engine = create_engine('sqlite:///tinder.sqlite3', echo=True)
Session = sessionmaker(bind=engine)
Base = declarative_base()


class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    bio = Column(String)
    age = Column(SmallInteger)
    birth_date = Column(Date)
    ping_time = Column(DateTime)
    distance_km = Column(Float)
    get_photos = relationship('Photo')
    schools = relationship('School')
    jobs = relationship('Job')


class Photo(Base):
    __tablename__ = 'photos'

    id = Column(Integer, primary_key=True)
    user_id = Column(Integer, ForeignKey('users.id'))
    url = Column(String)


class School(Base):
    __tablename__ = 'schools'

    id = Column(Integer, primary_key=True)
    user_id = Column(Integer, ForeignKey('users.id'))
    name = Column(String)


class Job(Base):
    __tablename__ = 'jobs'

    id = Column(Integer, primary_key=True)
    user_id = Column(Integer, ForeignKey('users.id'))
    name = Column(String)


def like_tinder_users(limit):
    sql_session = Session()

    session = pynder.Session(FBID, FBTOKEN)
    nearby_users = session.nearby_users(limit)[:limit]

    for user in nearby_users:
        photos = [Photo(url=url) for url in user.get_photos(width='640')]
        schools = [School(name=name) for name in user.schools]
        jobs = [Job(name=name) for name in user.jobs]

        sql_user = User(
            name=user.name,
            bio=user.bio,
            age=user.age,
            birth_date=user.birth_date,
            ping_time=datetime.strptime(user.ping_time, '%Y-%m-%dT%H:%M:%S.%fZ'),
            distance_km=user.distance_km,
            get_photos=photos,
            schools=schools,
            jobs=jobs,
        )
        sql_session.add(sql_user)
        user.like()

    sql_session.commit()
    sql_session.close()

if __name__ == '__main__':
    Base.metadata.create_all(engine)
    for i in range(1, 1001):
        like_tinder_users(10)
        print('I liked {} women xD'.format(i * 10))

Eigentlich habe ich den Code geschrieben, um die Authentifizierung mit Selenium + phantomjs zu automatisieren, daher habe ich den Vorgang nicht bestätigt, aber es scheint so.

Column-Desktop-Version von Tinder

Ich bin der Meinung, dass die Geschwindigkeit der Zeicheneingabe von Android nur etwa 10% schneller ist als die der Tastatur. Mit anderen Worten, wenn Sie mit vielen Frauen übereinstimmen, kann die Eingabe von Charakteren zu einem Engpass werden. Viele Dating-Dienste haben eine Webversion, daher ist dies kein Problem, aber Tinder hat keine Webversion. Also beschloss ich, wieder die Hilfe meines Vorgängers zu bekommen.

Es ist eine inoffizielle Desktop-Version. Es wird mit NW.js anstelle des kürzlich beliebten Electron hergestellt. Aber es gibt keine Linux-Version? Mach dir keine Sorgen. Ich werde nur die Build-Datei ändern. Glücklicherweise gab es eine Person, die [diesen Patch] erstellt hat (https://github.com/afarah1/tinderplusplus/commit/615e862609c44e0540a1bdd7ff89f1fb481fae86). Ich habe jeden Master geklont und entsprechend dem Diff umgeschrieben, und es hat perfekt mit Trusty funktioniert. Es ist egoistisch und ich bin bereit es zu tun.

Visualisierung

Unabhängig davon, wie viele Daten in die Datenbank eingegeben werden, ist dies völlig bedeutungslos, es sei denn, die Aufschlüsselung ist bekannt. Ich möchte mit [seaborn] schnell schöne Daten anzeigen (https://stanford.edu/~mwaskom/software/seaborn/). Aber im Moment ist das Match 0,15% (immer noch 0,05% besser als beim ersten Posten), und als ich dachte, die Frau hätte mit mir gesprochen, war es Amway (), also werde ich etwas länger schlafen. An Wochenenden möchte ich mich der Herausforderung der Visualisierung stellen, während ich mit einem Rundgang durch Einrichtungen aufstrebender Religionen und einer Einweisung in Amway / antike Kunst beschäftigt bin.

Recommended Posts

Wenn Sie TinderBot in Python schreiben, kann sie das tun
Wenn ihr in der Scope-Küche das mit einem Rand machen könnt ~ ♪
Warum ist Pythons main () -if-Anweisung angehängt?
Python | Was Sie mit Python machen können
Schreiben Sie Python nicht, wenn Sie es mit Python beschleunigen möchten
Was tun, wenn in Python minus Null angezeigt wird?
Überprüfen Sie, ob Sie in Python eine Verbindung zu einem TCP-Port herstellen können
Wenn Sie einen go table-gesteuerten Test in Python schreiben, ist es möglicherweise besser, subTest zu verwenden
Was tun, wenn Sie die Rastersuche von sklearn in Python nicht verwenden können?
Sie können es mit Python tun! Strukturanalyse zweidimensionaler kolloidaler Kristalle
Was passiert, wenn Sie in Python "A, B als C importieren"?
Sie werden in 100 Tagen Ingenieur - Tag 35 - Python - Was Sie mit Python tun können
Wenn Sie so viel wissen, können Sie Python-Testcode schreiben! ~ Super Einführungsausgabe ~
Was tun, wenn "Python nicht konfiguriert" angezeigt wird? Verwenden von PyDev in Eclipse
Ist die parallele Programmierung schwierig, und wenn ja, was können Sie dagegen tun?
Schreiben Sie Python in MySQL
% Und str.format () in Python. Welches benutzt du?
Wenn in Python ein "Unicode-Dekodierungsfehler" auftritt
Überlegen Sie, wann Sie mit Python3 und Scala3 in 10 Jahren gute Arbeit leisten können.
Was tun, wenn in Hydrogen "Kein Kernel für Sprachpython gefunden" angezeigt wird?
Was tun, wenn beim Importieren von matplotlib in Python (Mac) eine Fehlermeldung angezeigt wird?
Sie können es in 3 Minuten tun! So erstellen Sie einen funktionierenden QR-Code (GIF)!
Python-Ertrag verstehen Wenn Sie Ertrag in eine Funktion einfügen, wird dieser in einen Generator geändert
Was tun, wenn Sie Python auf IntelliJ ausführen und mit einem Fehler beenden?
[Für Anfänger] Sie können es von Grund auf neu machen! Erstellen von APIs mit AWS SAM und Ausgeben von Open API-Dokumenten in Python
Wenn Sie die mathematischen Symbole nicht verstehen, können Sie ein Programm schreiben.
Schreiben Sie Pandec-Filter in Python
Empfehlen wir Malbolge denen, die sagen: "Wenn Sie eine Programmiersprache verwenden, können Sie dies tun."
[Python-Version] Warum können Sie mit Java keine objektorientierte Entwicklung durchführen?
Schreiben Sie die Beta-Distribution in Python
Schreiben Sie Python in Rstudio (reticulate)
[Python] Wie schreibe ich eine if-Anweisung in einen Satz?
Was können Sie mit den Standardstatistiken der Python-Bibliothek tun?
Was tun, wenn Overalls "Abdeckung unbekannt" werden?
Was tun, wenn Swagger-Codegen mit Python und Importfehler ausgeführt wird? Es wird kein Modul mit dem Namen angezeigt
Was tun, wenn Sie sich nicht als root anmelden können?
Hier sind einige Grammatiken, für die Sie möglicherweise einen Slapstick erhalten, wenn Sie Python kennen
Möchten Sie mit Python Selenium auf allgemeine Zwecke warten?
Es scheint, dass Sie jetzt mit blueqat Torbücher schreiben können
Wenn Sie nicht weiterkommen, können Sie mkl_intel_thread.dll in Python unter Windows nicht laden
Was tun, wenn Sie pyaudio nicht mit pip #Python installieren können?
Löschen Sie ein bestimmtes Zeichen in Python, wenn es das letzte ist
Überlegen Sie im Qiita-Artikel, was Sie mit Python tun können
Wenn Sie einer Variablen in Python einen CSV-Export zuweisen möchten
Was tun, wenn Sie den Papierkorb in Lubuntu 18.04 nicht verwenden können?
[Python] Wie man PCA mit Python macht
Schreiben Sie ein JSON-Schema mit Python DSL
Benötigen Sie Python re.compile?
Schreiben Sie einen HTTP / 2-Server in Python
Bis Sie Python in Docker einfügen
Schreiben Sie die AWS Lambda-Funktion in Python
Schreiben Sie A * (A-Stern) -Algorithmen in Python
Schreiben Sie Selentestcode in Python
Schreiben Sie ein Kreisdiagramm in Python
Schreiben Sie das Vim-Plugin in Python
Schreiben Sie eine Suche mit Tiefenpriorität in Python
Schreiben Sie einen C-Sprach-Unit-Test in Python
Was tun, wenn Sie sich über "Wertefehler: unbekannt lokal: UTF-8" in python manage.py syncdb ärgern?