【Python】TinderのAPI使って、遠隔ナンパしてみた

はじめに

今回の制作物は、TinderのAPIを使って、緯度経度を指定するとその付近にいる異性のニックネーム・学校名・指定したエリアからどれくらい離れた場所にいるか・Instagramのアカウント名・共通のFacebookフレンドを表示するスクリプトを制作します。

完成コード

import pynder
session = pynder.Session('Facebookのアクセストークン')
friends = session.get_fb_friends()
#緯度と経度を指定
#Yokohama Station
LAT = 35.465786
LON = 139.622313
session.update_location(LAT, LON)
session.profile
users = session.nearby_users()
for user in users:
print(user.name)
print(user.schools)
print(user.distance_km)
print(user.instagram_username)
print(user.common_connections)
print("============")

環境構築

Pythonは3系を使用しています。
また、環境構築に関してはPyenvとHomebrewでゴニョゴニョしています。 < p class=”st-share”>Macと環境構築メモ【2018/04更新】
とか Mac(Homebrew)でPython(pyenv/virtualenv)開発環境を作る を参考にしてください。

Pynderをインストール

PynderをいうモジュールがTinderのAPIをいじる際に必要なので、導入します。
sudo pip install pynder
python -m pip freeze
pynder==0.0.13
と表示されれば問題なくPynderがインストールされています。

TinderAPIをいじるソースをまずはコピー

大まかとなるソースをGitHubから引っ張ってくる。
https://github.com/charliewolf/pynder
そうすると、コメント読めばわかるとおり自分で変更する部分がいくつかあります。 ただ、2行目のsession変数に入れる、facebook_idは不要なので、facebook_id,は消しておきましょう。

facebook_auth_tokenをぶち込む

ここが一番苦労しました。 普通にデベロッパーとして、ゴニョゴニョしても動かない・・・。
というところで、かれこれ3時間以上躓く。
https://tinderface.herokuapp.com/
ここにいって、手順に沿ってやる・・・。ということだが、ここでもまた躓いたので、詳細を書いておきます。

tinderfaceを使ってやるが、最後の最後で・・・

まず、https://tinderface.herokuapp.com/に飛ぶと、こんなページに飛びます。
tinderface_top
そしたら、下部のGET STARTEDをクリック。 次に、下記のイメージにあるOPEN FB AUTH DIALOGをクリック。青緑のボタンですね。
tinderface_02
そうすると、Facebookに飛びTinderとの連携が始まるので、ページが開いた瞬間にCmd + Option + I on Mac or F12, Ctrl + Shift + I on Windowsとあるように、デベロッパーツールを開きます。 僕の場合Macですが、Cmd + Shift + Cで開きます。 開いたらNetowrkタブをクリックして、ページをリロード。Cmd + R or F5ですね。そうすると、Fileみたいなのがぶわーっと一覧で出てきます。 その中から、confirm?dpr=2というファイル名のモノを検索でフィルタリングして出します。 一覧に出せたら、そのファイル名の上で右クリック⇒Copy⇒Copy Responseの順にコピーしたら、そのままhttps://tinderface.herokuapp.com/に戻ってくると、先ほどのイメージの下部にある
Tinderface paste
ピンク色の線で囲まれた、中にそのまま貼り付けます。 そして、SUBMITをクリック! だがしかし・・・Your Facebook Access Token is invalidと出てきてしまう・・・。 よく見てみると、余計なコードが残ったままだったので、そこを消してあげるとSUBMIT出来ます。 &expires_inという箇所があるので、それ以降を&expires_in含めた右側をすべて消してあげます。 そして、SUBMITしません!!ここ重要!! 上記の&expires_in含めた右側をすべて消したコードをそのままコピーして、 この中の、Facebookのアクセストークンという文字と入れ替えてあげます。 そうすると・・・。

スクリプト実行

今回は、横浜駅周辺という大変ローカルネタで攻めています。そして、リアリティ溢れるエリアですね。
ドが付く変態なので、そこら辺許容してください。
python tinder_location.py
と走らせます。 どうでしょうか?わんさかわんさか、といってもあまり数出てこないときもあります。 何度かコマンド
python tinder_location.py
を叩いていると、異性のニックネーム・学校名・指定したエリアからどれくらい離れた場所にいるか・Instagramのアカウント名・共通のFacebookフレンドが出てくるかと思います。 ただ、悪用は厳禁ですので、あしからず。

まとめ

今回はPython使って何してんだ!?という感じのモノですが、こういう興味とか好奇心のある分野から攻めるのは悪いことではないので、(悪用さえしなければ!)、どんどんやっていきたいですね! こちらが完成コードです。Facebookのアクセストークンの部分はセッションが切れるのか、たまにhttps://tinderface.herokuapp.com/にて、同じ手順を踏まないといけないのが面倒ですが、その際は同じ手順を踏めば動きます。 素敵なPythonハックライフを!

完成コード最後にバッ!

import pynder
session = pynder.Session('Facebookのアクセストークン')
friends = session.get_fb_friends()
#緯度と経度を指定
#Yokohama Station
LAT = 35.465786
LON = 139.622313
session.update_location(LAT, LON)
session.profile
users = session.nearby_users()
for user in users:
print(user.name)
print(user.schools)
print(user.distance_km)
print(user.instagram_username)
print(user.common_connections)
print("============")

緯度経度はここから入手できます

http://www.geocoding.jp/