Ramassage efficace du réseau avec Python

Aperçu

Pour ceux qui la veulent mais qui n'ont pas le temps, j'aimerais automatiser + alpha l'application correspondante Tinder, qui est gratuite et facile à utiliser.

Préparation

· Compte Facebook ・ Compte Tinder Veuillez utiliser Facebook pour l'enregistrement de Tinder pour l'automatisation. Pour ceux qui sont confus, nous vous recommandons de créer un nouveau compte pour éviter la calvitie (rires).

Obtention du jeton d'accès

Vous devez obtenir un jeton d'accès pour vous connecter à Tinder à l'aide de l'api. Veuillez noter que la méthode d'obtention des jetons d'accès changera immédiatement en raison de changements dans les spécifications du site, etc., il est donc possible que vous ne puissiez pas utiliser la méthode que vous pouvez faire maintenant. Je suis assez coincé ici. Tout d'abord, mettez dans la bibliothèque qui reçoit le jeton amadou. (Référence: https://pypi.org/project/tinder-token/)

pip install tinder-token

Une fois dedans, essayez de créer et d'exécuter le programme suivant. Si vous ne disposez pas de la bibliothèque requise, veuillez l'ajouter si nécessaire.

get_token.py


from tinder_token.facebook import TinderTokenFacebookV2
mail = "Adresse e-mail pour la connexion Facebook"
password = "mot de passe facebook"
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)

Si vous exécutez cette opération et qu'une longue chaîne de caractères s'affiche, l'acquisition est réussie.

Connectez-vous à Tinder

Maintenant que vous avez le code api avec le code précédent, vous pouvez enfin vous connecter.

import requests
s = requests.Session()

#Connectez-vous à Tinder
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)

Placez le jeton api que vous avez obtenu précédemment dans la variable api_token. Il est plus facile de connecter les cordons, nous vous recommandons donc de les connecter. Ce n'est pas grave si vos informations sont publiées dans une rangée.

Obtenir l'utilisateur

Vous pouvez collecter des informations utilisateur à proximité de vos points préférés en transmettant les informations de latitude et de longitude dans le message. Diverses informations telles que le nom de l'utilisateur et la photo d'identité sont stockées dans la variable utilisateur. Puisque ce programme obtient le nom, le nom doit être sorti de manière fluide.

url = "https://api.gotinder.com/" + endpoint
latitude = "latitude"
longitude = "longitude"
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"])

Entièrement automatique comme

Il est possible d'aimer n'importe quel identifiant en appuyant sur / like / {id} avec get.

url = "https://api.gotinder.com/" + endpoint
latitude = "latitude"
longitude = "longitude"
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"]
        #Balayez vers la droite
        s.get("https://api.gotinder.com/like/{}".format(id))

Pour ceux qui ne sont pas intéressés par les compétences de puissance que tout le monde ressemble

C'est vrai que le nombre de rencontres est important, mais j'ai pensé à une option pour ceux qui veulent encore de la qualité. Connaissez-vous l'API Face ++? FaceAPI a été développé par une société chinoise et est une API terrifiante qui marque la beauté du visage, ce que l'on appelle la valeur de déviation faciale. L'avantage de cette API est qu'elle peut être utilisée gratuitement.

enregistrement face ++

Inscrivez-vous à partir de l'URL suivante. https://console.faceplusplus.com/register Une fois connecté, consultez la page Clé API et notez la clé API et le secret API. image.png

Marquez votre visage avec le visage ++

Il est transformé en une classe considérant la coopération avec l'amadou. Placez la photo que vous souhaitez juger dans le même répertoire que le programme, et définissez test.jpeg sur le nom de fichier de l'image que vous souhaitez juger, et le score sera affiché. À propos, M. Shin 〇〇 était de 88,74 points. C'est un score vraiment élevé. Je pense que c'est une bonne idée d'essayer certains d'entre eux vous-même et de voir la vue du marché.

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 ")) 

#Fonctionne avec le type automatique de Tinder Remarques ・ Pour ceux qui ont plusieurs photos, reportez-vous à la première. -Il est nécessaire de créer un dossier tmp, et les données photo seront enregistrées dans le dossier tmp. -Ajustez le même seuil en modifiant le score de l'énoncé de score if. ・ Essayez,Utilisez la phrase except pour repousser les photos qui n'ont pas de photo de visage.

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)))


# Obtenez un jeton Tinder

api_token = sample_email_password(mail,password)[0]


s = requests.Session()
# Connectez-vous à Tinder
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"
# Latitude et longitude de Shibuya
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]

 Créer un fichier #tmp
        dst_dir = 'tmp/'
        print(photo['url'])
 #Save file
        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):
 # Balayer à droite
                s.get("https://api.gotinder.com/like/{}".format(id))
        except:
            print("error")

#Résumé Même si c'était bon à faire, j'étais satisfait quand il a été terminé et je n'ai pas pu faire l'expérience de démonstration après tout. C'est une mauvaise chose pour les ingénieurs dont le but change en cours de route.(Lol)。

Suivez les règles et ayez une vie d'amadou amusante!

#Les références

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

Recommended Posts

Ramassage efficace du réseau avec Python
Structure de données Python apprise avec la chimioinfomatique
1. Statistiques apprises avec Python 1-1. Statistiques de base (Pandas)
[Python] Extensions réactives apprises avec RxPY (3.0.1) [Rx]
1. Statistiques apprises avec Python 1-3. Calcul de diverses statistiques (statistiques)
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Grattage avec Python
Python avec Go
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
1. Statistiques apprises avec Python 1-2. Calcul de diverses statistiques (Numpy)
Utiliser Python et word2vec (appris) avec Azure Databricks
1. Statistiques apprises avec Python 2-1. Distribution de probabilité [variable discrète]
Apprenez lentement avec Python "Principe de l'inversion des dépendances"
Communication série avec Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Grattage en Python (préparation)
J'ai appris Python avec une belle fille à Paiza # 02
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
Exécutez Python avec VBA
Manipuler yaml avec python
Résolvez AtCoder 167 avec python
Communication série avec python
[Python] Utiliser JSON avec Python
Apprendre Python avec ChemTHEATER 05-1
Apprenez Python avec ChemTHEATER
Exécutez prepDE.py avec python3
1.1 Premiers pas avec Python