Effiziente Netzaufnahme mit Python

Überblick

Für diejenigen, die sie wollen, aber keine Zeit haben, möchte ich + alpha den passenden App-Zunder automatisieren, der kostenlos und einfach zu bedienen ist.

Vorbereitung

・ Facebook-Konto ・ Zunder-Konto Bitte benutzen Sie Facebook für die Zunderregistrierung für die Automatisierung. Für diejenigen, die verwirrt sind, empfehlen wir, ein neues Konto zu erstellen, um Kahlheit zu verhindern (lacht).

Zugriffstoken erhalten

Sie müssen ein Zugriffstoken erhalten, um sich mit der API bei tinder anzumelden. Bitte beachten Sie, dass sich die Methode zum Abrufen von Zugriffstoken aufgrund von Änderungen der Site-Spezifikationen usw. sofort ändert. Daher besteht die Möglichkeit, dass Sie die Methode, die Sie jetzt ausführen können, nicht verwenden können. Ich stecke hier ziemlich fest. Legen Sie zuerst die Bibliothek ab, die den Zunder-Token erhält. (Referenz: https://pypi.org/project/tinder-token/)

pip install tinder-token

Versuchen Sie einmal, das folgende Programm zu erstellen und auszuführen. Wenn Sie nicht über die erforderliche Bibliothek verfügen, fügen Sie diese bitte entsprechend hinzu.

get_token.py


from tinder_token.facebook import TinderTokenFacebookV2
mail = "E-Mail-Adresse für Facebook-Login"
password = "Facebook Passwort"
facebook = TinderTokenFacebookV2()
def sample_email_password(email: str, password: str) -> (str, str):
    return facebook.get_tinder_token(fb_email=email, fb_password=password)

api_token = sample_email_password(mail,password)[0]
print(api_token)

Wenn Sie dies ausführen und eine lange Zeichenfolge angezeigt wird, ist die Erfassung erfolgreich.

Melden Sie sich bei tinder an

Nachdem Sie den API-Code mit dem vorherigen Code haben, können Sie sich endlich anmelden.

import requests
s = requests.Session()

#Melden Sie sich bei Tinder an
headers = {"X-Auth-Token": api_token, "Content-type": "application/json",
           "User-agent": "Tinder/10.1.0 (iPhone; iOS 12.1; Scale/2.00)"}
s.headers.update(headers)
meta = s.get("https://api.gotinder.com/meta")
print(meta.text)

Fügen Sie das zuvor erhaltene API-Token in die Variable api_token ein. Es ist einfacher, die Kabel anzuschließen, daher empfehlen wir, sie anzuschließen. Es ist in Ordnung, wenn Ihre Informationen hintereinander ausgegeben werden.

Benutzer abrufen

Sie können Benutzerinformationen in der Nähe Ihrer Lieblingspunkte sammeln, indem Sie die Breiten- und Längengrade im Beitrag übergeben. In der Benutzervariablen werden verschiedene Informationen wie der Name des Benutzers und das ID-Foto gespeichert. Da dieses Programm den Namen erhält, sollte der Name reibungslos ausgegeben werden.

url = "https://api.gotinder.com/" + endpoint
latitude = "Breite"
longitude = "Längengrad"
params = {"lat": latitude, "lon": longitude}
response = s.post(url, data=json.dumps(params))
limit = 10
params = {"limit": limit}
for i in range(3):
    users = s.post("https://api.gotinder.com/user/recs", data=json.dumps(params))
    content = users.content
    if len(content) > 0:
        content = content.decode("utf-8")
        content = json.loads(content)
    else:
        break
        #print(content)
    
    for user in content["results"]:
        #print(user)
        print(user["name"])

Vollautomatisch wie

Es ist möglich, jede ID zu mögen, indem Sie / get / {id} mit get drücken.

url = "https://api.gotinder.com/" + endpoint
latitude = "Breite"
longitude = "Längengrad"
params = {"lat": latitude, "lon": longitude}
response = s.post(url, data=json.dumps(params))
limit = 10
params = {"limit": limit}
for i in range(3):
    users = s.post("https://api.gotinder.com/user/recs", data=json.dumps(params))
    content = users.content
    if len(content) > 0:
        content = content.decode("utf-8")
        content = json.loads(content)
    else:
        break
        #print(content)
    
    for user in content["results"]:
        #print(user)
        print(user["name"])

        id = user["_id"]
        #Wische nach rechts
        s.get("https://api.gotinder.com/like/{}".format(id))

Für diejenigen, die nicht an den Machtfähigkeiten interessiert sind, wie jeder ist

Es ist wahr, dass die Anzahl der Begegnungen wichtig ist, aber ich dachte an eine Option für diejenigen, die immer noch Qualität wollen. Kennen Sie die Face ++ API? FaceAPI wurde von einem chinesischen Unternehmen entwickelt und ist eine erschreckende API, die die Schönheit des Gesichts, den sogenannten Gesichtsabweichungswert, bewertet. Das Tolle an dieser API ist, dass sie kostenlos verwendet werden kann.

face ++ Registrierung

Registrieren Sie sich unter der folgenden URL. https://console.faceplusplus.com/register Sehen Sie sich nach dem Anmelden die Seite API-Schlüssel an und notieren Sie sich den API-Schlüssel und das API-Geheimnis. image.png

Bewerte dein Gesicht mit face ++

Es wird zu einer Klasse gemacht, die die Zusammenarbeit mit Zunder in Betracht zieht. Platzieren Sie das Foto, das Sie beurteilen möchten, im selben Verzeichnis wie das Programm und setzen Sie test.jpeg auf den Dateinamen des Bildes, das Sie beurteilen möchten. Die Punktzahl wird ausgegeben. Herr Shin 〇〇 war übrigens 88,74 Punkte. Es ist eine wirklich hohe Punktzahl. Ich denke, es ist eine gute Idee, einige davon selbst auszuprobieren und die Marktansicht zu sehen.

faceplus


import requests
import base64

class FacePlus:
    def __init__(self,key,secret):
        self.key = key
        self.secret = secret
        self.endpoint = 'https://api-us.faceplusplus.com'
        
    def judge_face(self,path):
        img_file = base64.encodestring(open(path, 'rb').read())
        response = requests.post(
            self.endpoint + '/facepp/v3/detect',
            {
        'Content-Type': 'multipart/form-data',
        'api_key': self.key,
        'api_secret': self.secret,
        'image_base64': img_file,
        'return_attributes': 'gender,age,headpose,facequality,eyestatus,emotion,ethnicity,beauty,mouthstatus'
        }
        )
        result = response.json()
        return result["faces"][0]["attributes"]["beauty"]["female_score"]
if __name__ == '__main__':
    key = "API token"
    secret = "API secret"
       
    fp = FacePlus(key, secret)  
    print(fp.judge_face("test.jpeg ")) 

#Funktioniert mit Zunder automatisch Vorsichtsmaßnahmen ・ Für diejenigen, die mehrere Fotos haben, beziehen Sie sich auf das erste. -Es ist notwendig, einen tmp-Ordner zu erstellen, und Fotodaten werden im tmp-Ordner gespeichert.

import requests
import json
import os
from tinder_token.facebook import TinderTokenFacebookV2
import urllib.error
import urllib.request
import faceplus
facebook = TinderTokenFacebookV2()
key = "face++_api"
secret = "face++_api_secret"

mail = "facebook_mail"
password = "facebook_password"

border = 75
fp = faceplus.FacePlus(key,secret)

def sample_email_password(email: str, password: str) -> (str, str):
    return facebook.get_tinder_token(fb_email=email, fb_password=password)



def download_file(url, dst_path):
    try:
        with urllib.request.urlopen(url) as web_file:
            data = web_file.read()
            with open(dst_path, mode='wb') as local_file:
                local_file.write(data)
    except urllib.error.URLError as e:
        print(e)
def download_file_to_dir(url, dst_dir):
    download_file(url, os.path.join(dst_dir, os.path.basename(url)))


# Holen Sie sich Zunder Token

api_token = sample_email_password(mail,password)[0]


s = requests.Session()
# Melden Sie sich bei Tinder an
headers = {"X-Auth-Token": api_token, "Content-type": "application/json",
           "User-agent": "Tinder/10.1.0 (iPhone; iOS 12.1; Scale/2.00)"}
s.headers.update(headers)
meta = s.get("https://api.gotinder.com/meta")
print(meta.text)

endpoint = "v2/meta"
# Shibuya Breiten- und Längengrad
latitude = 35.658034
longitude = 139.701636
params = {"lat": latitude, "lon": longitude}
url = "https://api.gotinder.com/" + endpoint
response = s.post(url, data=json.dumps(params))


limit = 10
params = {"limit": limit}
name_list = []

for i in range(3):
    users=s.post("https://api.gotinder.com/user/recs", data=json.dumps(params))
    content = users.content
    if len(content) > 0:
        content = content.decode("utf-8")
        content = json.loads(content)
    else:
        break
    #print(content)

    for user in content["results"]:
        #print(user)
        print(user["name"])
        id = user["_id"]

        name_list.append(user["name"])
        
        photo = user['photos'][0]

 Erstellen Sie eine # tmp-Datei
        dst_dir = 'tmp/'
        print(photo['url'])
 #Datei speichern
        download_file_to_dir(photo['url'], dst_dir)
            
        f_name = photo['url'].split('/')[-1]
        print(f_name)
        try:
            score = fp.judge_face("./tmp/"+f_name)
            print(score)
            if(score >= border):
 #Rechts Wischen
                s.get("https://api.gotinder.com/like/{}".format(id))
        except:
            print("error")

#Zusammenfassung Obwohl es gut zu machen war, war ich zufrieden, als es fertig war und ich konnte das Demonstrationsexperiment doch nicht durchführen. Es ist eine schlechte Sache bei Ingenieuren, deren Zweck sich unterwegs ändert.(Lol)。

Befolgen Sie die Regeln und haben Sie ein lustiges Zunderleben!

#Verweise

[1]https://qiita.com/Fulltea/items/fe4d4214552476c28e88 [2]https://note.com/ryohei55/n/n72084219f751

Recommended Posts

Effiziente Netzaufnahme mit Python
Python-Datenstruktur mit Chemoinfomatik gelernt
1. Mit Python 1-1 gelernte Statistiken. Grundlegende Statistiken (Pandas)
[Python] Mit RxPY (3.0.1) gelernte reaktive Erweiterungen [Rx]
1. Mit Python 1-3 gelernte Statistiken. Berechnung verschiedener Statistiken (Statistiken)
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
1. Mit Python 1-2 gelernte Statistiken. Berechnung verschiedener Statistiken (Numpy)
Verwenden Sie Python und word2vec (gelernt) mit Azure Databricks
1. Mit Python 2-1 gelernte Statistiken. Wahrscheinlichkeitsverteilung [diskrete Variable]
Lernen Sie langsam mit Python "Prinzip der Abhängigkeitsumkehr"
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Scraping in Python (Vorbereitung)
Ich habe Python mit einem schönen Mädchen in Paiza # 02 gelernt
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
Führen Sie Python mit VBA aus
Umgang mit Yaml mit Python
Löse AtCoder 167 mit Python
Serielle Kommunikation mit Python
[Python] Verwenden Sie JSON mit Python
Python lernen mit ChemTHEATER 05-1
Lerne Python mit ChemTHEATER
Führen Sie prepDE.py mit python3 aus
1.1 Erste Schritte mit Python