fantom_zona’s diary

Impact the world!!!

Tinderで遊ぶ

こんにちは。
色々辛いことがあって、むしゃくしゃしたのでTinderで色々遊んでみました。
とりあえず今回はTinderAPIを使って見ました。

Pynderの取得

pynderというものを使用しました。

git clone https://github.com/charliewolf/pynder
cd pynder 
python setup.py install

実は、pipでも入れることが可能なのですが、こちらのライブラリでは色々エラーが出てきてしまいます。どうやらgit cloneの方ではそれらのエラーは出てこないようなので、こちらで入れるようにしましょう。

トークンの取得

次に、facebookトークンを取得します。
https://tinderface.herokuapp.com/に取得方法が記載されているとの情報が多かったのですが、リンク先がメンテナンス中でした。
8月時点でもメンテナンス中との情報があったので、諦めて別の方法を模索しました。
まず、web版のTinderにログインし、左クリックで検証を選択。Networkのタブを選択し、Nameのやつを色々選択していくとX-Auth-Tokenというのがあります。これがトークンですが、2時間で変更されてしまうので注意しましょう。

やっとTinderで遊べる

import pynder
token="先ほどのトークン"
session=pynder.Session(XAuth_token=token)

helpでみてみるとこんな感じです。

"""
class Session(builtins.object)
 |  Methods defined here:
 |  
 |  __init__(self, facebook_token=None, XAuthToken=None, proxies=None, facebook_id=None)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |  
 |  get_fb_friends(self)
 |      Returns array of all friends using Tinder Social.
 |      :return: Array of friends.
 |      :rtype: Friend[]
 |  
 |  matches(self, since=None)
 |  
 |  nearby_users(self, limit=10)
 |  
 |  profile = <cached_property.cached_property object>
 |  update_location(self, latitude, longitude)
 |  
 |  update_profile(self, profile)
 |  
 |  updates(self, since=None)
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |  
 |  __dict__
 |      dictionary for instance variables (if defined)
 |  
 |  __weakref__
 |      list of weak references to the object (if defined)
 |  
 |  banned
 |  
 |  can_like_in
 |      Return the number of seconds before being allowed to issue likes
 |  
 |  likes_remaining
 |  
 |  super_likes_remaining
"""

get_fb_friendsというmethodは、facebook上の友達でtinderをしているユーザーを出すmethodのようですが何も出てきませんでした。(facebookではTinderを使用していることが秘匿される様配慮されているはずだが......。)1年ほど前まで使えていたようですが、APIの仕様が変更したらしく現在は使用できません(https://github.com/fbessez/Tinder)。少し残念な気持ちになりました。
nearby_usersは近隣のユーザーを出してくれます。defaultの数が10になっていますが、なぜか無限に出てきてしまいます。カウンタを付けて適度に出しましょう。そうしないと、429 Too Many Requestsとなってしまいます。リクエスト拒否のペナルティが12時間ほどあるので気をつけましょう。表示条件は、Session.profileのmethodから色々みることが可能です。

me=Session.profile
print(me.distance_filter) #指定距離
print(me.age_filter_min) #表示するユーザーの年齢下限
print(me.age_filter_max) #表示するユーザーの年齢上限

他にもsession.update_locationで自分の位置を自由に変更することが可能です。使い方としては特定の大学の位置を指定するとかですかね。丸の内OLや港区女子を狙ったりすることも出来るかもしれません。
短いですが、とりあえずPynderの使い方としてはこれくらいで。もし続編があるとしたら画像処理とテキスト解析でしょうかね。