-
-
Save rtt/5a2e0cfa638c938cca59 to your computer and use it in GitHub Desktop.
# encoding: utf8 1,1 Top# encoding: utf8 | |
import argparse | |
from datetime import datetime | |
import json | |
from random import randint | |
import requests | |
import sys | |
from time import sleep | |
headers = { | |
'app_version': '3', | |
'platform': 'ios', | |
} | |
fb_id = '{ your fb user id here }' | |
fb_auth_token = '{ your fb auth token here }' | |
class User(object): | |
def __init__(self, data_dict): | |
self.d = data_dict | |
@property | |
def user_id(self): | |
return self.d['_id'] | |
@property | |
def ago(self): | |
raw = self.d.get('ping_time') | |
if raw: | |
d = datetime.strptime(raw, '%Y-%m-%dT%H:%M:%S.%fZ') | |
secs_ago = int(datetime.now().strftime("%s")) - int(d.strftime("%s")) | |
if secs_ago > 86400: | |
return u'{days} days ago'.format(days=secs_ago / 86400) | |
elif secs_ago < 3600: | |
return u'{mins} mins ago'.format(mins=secs_ago / 60) | |
else: | |
return u'{hours} hours ago'.format(hours=secs_ago / 3600) | |
return '[unknown]' | |
@property | |
def bio(self): | |
try: | |
x = self.d['bio'].encode('ascii', 'ignore').replace('\n', '')[:50].strip() | |
except (UnicodeError, UnicodeEncodeError, UnicodeDecodeError): | |
return '[garbled]' | |
else: | |
return x | |
@property | |
def age(self): | |
raw = self.d.get('birth_date') | |
if raw: | |
d = datetime.strptime(raw, '%Y-%m-%dT%H:%M:%S.%fZ') | |
return datetime.now().year - int(d.strftime('%Y')) | |
return 0 | |
def __unicode__(self): | |
return u'{name} ({age}), {distance}km, {ago}'.format( | |
name=self.d['name'], | |
age=self.age, | |
distance=self.d['distance_mi'], | |
ago=self.ago | |
) | |
def auth_token(fb_auth_token, fb_user_id): | |
h = headers | |
h.update({'content-type': 'application/json'}) | |
req = requests.post( | |
'https://api.gotinder.com/auth', | |
headers=h, | |
data=json.dumps({'facebook_token': fb_auth_token, 'facebook_id': fb_user_id}) | |
) | |
try: | |
return req.json()['token'] | |
except: | |
return None | |
def recommendations(auth_token): | |
h = headers | |
h.update({'X-Auth-Token': auth_token}) | |
r = requests.get('https://api.gotinder.com/user/recs', headers=h) | |
if r.status_code == 401 or r.status_code == 504: | |
raise Exception('Invalid code') | |
print r.content | |
if not 'results' in r.json(): | |
print r.json() | |
for result in r.json()['results']: | |
yield User(result) | |
def like(user_id): | |
try: | |
u = 'https://api.gotinder.com/like/%s' % user_id | |
d = requests.get(u, headers=headers, timeout=0.7).json() | |
except KeyError: | |
raise | |
else: | |
return d['match'] | |
def nope(user_id): | |
try: | |
u = 'https://api.gotinder.com/pass/%s' % user_id | |
requests.get(u, headers=headers, timeout=0.7).json() | |
except KeyError: | |
raise | |
def like_or_nope(): | |
return 'nope' if randint(1, 100) == 31 else 'like' | |
if __name__ == '__main__': | |
parser = argparse.ArgumentParser(description='Tinder automated bot') | |
parser.add_argument('-l', '--log', type=str, default='activity.log', help='Log file destination') | |
args = parser.parse_args() | |
print 'Tinder bot' | |
print '----------' | |
matches = 0 | |
liked = 0 | |
nopes = 0 | |
while True: | |
token = auth_token(fb_auth_token, fb_id) | |
if not token: | |
print 'could not get token' | |
sys.exit(0) | |
for user in recommendations(token): | |
if not user: | |
break | |
print unicode(user) | |
try: | |
action = like_or_nope() | |
if action == 'like': | |
print ' -> Like' | |
match = like(user.user_id) | |
if match: | |
print ' -> Match!' | |
with open('./liked.txt', 'a') as f: | |
f.write(user.user_id + u'\n') | |
else: | |
print ' -> random nope :(' | |
nope(user.user_id) | |
except: | |
print 'networking error %s' % user.user_id | |
s = float(randint(250, 2500) / 1000) | |
sleep(s) |
Just tried now again and got it working :-)
My FB_ID is extactly like this (untouched) > fb_id = '{ 12***91520 }'
and in the fb_auth_token I removed the { } from both sides, so it looks like that:
fb_auth_token = 'EAAGm0PX4ZCpsBADOHTeqmo5XQXLeQ73dDcHfZABUVqN14AmxmXHnNFEn5juZC1qynrInx9UpZAi5v0zrRn2ZArEZCUuiARwGIuMzmFaPvV5C114BuxhxqBinOuqHJtZBB*********************************************************************XsxnR3N8IonsOItFvHFuq9usZD'
networking error tinder_rate_limited_id_1482280511118_0
Tinder Team (25), 1km, -301 mins ago
-> Like
networking error tinder_rate_limited_id_1482280511118_1
Tinder Team (25), 1km, -300 mins ago
-> Like
networking error tinder_rate_limited_id_1482280511118_2
Tinder Team (25), 1km, -300 mins ago
-> Like
networking error tinder_rate_limited_id_1482280511118_3
Tinder Team (25), 1km, -300 mins ago
-> Like
networking error tinder_rate_limited_id_1482280511118_4
Tinder Team (25), 1km, -300 mins ago
-> Like
networking error tinder_rate_limited_id_1482280511118_5
Got this after like 2-3 minutes, how can I fix the script by adding some kind of sleep time ?
Edit: It's because it's a free user so the likes are limited, nothing to do with the script
hi i want to tinder boot
Why after a few minutes I get an error "could not get token" ?
and sometimes I get an error after a few minutes
{u'status': 500, u'error': u''}
Traceback (most recent call last):
File "gistfile1.py", line 141, in
for user in recommendations(token):
File "gistfile1.py", line 95, in recommendations
for result in r.json()['results']:
KeyError: 'results'
I m trying this code but compiler giving me error in user_id. Help me
It doesn't work for me, why?
root@kali:~# ./gistfile1.py
from: can't read /var/mail/datetime
from: can't read /var/mail/random
from: can't read /var/mail/time
./gistfile1.py: line 11: headers: command not found
./gistfile1.py: line 12: app_version:: command not found
./gistfile1.py: line 13: platform:: command not found
./gistfile1.py: line 14: syntax error near unexpected token
}' ./gistfile1.py: line 14:
}'Facebook ID and auth key is correct