チラ裏!

にわかのオタクがアニメを観て色々思ったこと考えたことを徒然なるままに書き連ねるチラシの裏系ブログ

なにがクリスマスじゃあい!

皆さんこんにちは.もう12月ですね.学生の皆さんは卒論修論でクソ忙しい時期だと思います.社会人の皆さんは忘年会ラッシュで肝臓がやられ始める時期でしょうか.僕は修論書かなきゃいけないのでチマチマ実験しながら必要なデータを取ってます.

さて,それはさておき12月といえばクリスマス.クリスマスといえばリア充の皆さんが親しい異性と聖夜を満喫する時期ですが,キモオタ理系院生の僕には彼女が出来たことないのでそういうイベントは毎年無縁なものです.とはいえ20ウン年間クリスマスデートすらほぼしたことが無いのはオタクとしてはともかく人としてどうなんだろう…と思ったので最近余り触って無かったTinderとかいうアプリに手を伸ばし始めました.

Tinderではユーザの写真とbioを見て基本的にはLike(右スワイプ)とNope(左スワイプ)で延々と仕分けていくのですが,やってる途中で何だかめんどくさくなってくる上,公共の場でスワイプした場合「あ,こいつ終わってそうなオタクの癖にTinderやってんな……」と思われそうでつらい(自意識過剰のオタク)

f:id:healuniv:20171205205722j:plain 図:公共の場で右スワイプするオタク(画像はイメージです)

そんな訳でせめて右スワイプだけは自動化して,手動で右スワイプしなくていい様に出来ないものか……と考えてたのですが,どうやらpynder( https://github.com/charliewolf/pynder )というPythonでTinder API叩けるパッケージがあるようなので簡単なコードを書いてみました.なお,ここではテキトウなFacebookアカウントを使ってTinderアカウントを作成してあるものとして話を進めます.

実行環境

pynderのインストール

以下をターミナル上で実行するだけ.

pip install pynder

ただし, https://github.com/charliewolf/pynder/issues/152 で報告されてるように,周辺のユーザ情報を取得する際エラーを吐くのでpynder/modules/user.pyの27行目辺りを次の様に書き換えておきましょう.

# 変更前
self.schools_id.extend([school["id"] for school in data['schools']])
# 変更後
self.schools_id.extend([school["id"] for school in data['schools'] if hasattr(school, 'id')])

(2018/1/27修正) pip経由でインストールすると上記の修正を加えても上手く動きません.このため,githubから落としたpynderをsetup.pyでインストールする必要があります.

pip uninstall pynder # インストール済みのpynderを削除
git clone https://github.com/charliewolf/pynder # github経由でpynderを落とす
cd pynder
python setup.py install # pynderパッケージをインストール

Facebook IDとトークンの取得

Facebook IDの取得

https://findmyfbid.com/ を使ってFacebook IDを取得しておきましょう.

トークンの取得

Tinderの仕様変更の影響か何かのせいで既存のドキュメントが殆ど使えなかったので困り果てていましたが,ダメ元でググり直してみたところtinder_auth_fetcherなるライブラリ( https://github.com/shuheiktgw/tinder_auth_fetcher/ )を発見.早速使ってみることにしました.

sudo gem install tinder_auth_fetcher

でインストールした後は以下のコードを実行.

require "tinder_auth_fetcher"
token = TinderAuthFetcher.fetch_token("email@address", "your password") # Facebookのログインに使うメアドとログインパスワードを入力

これでアクセストークンを取得出来ます.

自動右スワイプ

ここまで来たら以下のコードを使うだけで自動で右スワイプが出来ます.

# -*- coding: utf-8 -*-
import pynder
import sys

usrid = "your_fb_id" #FacebookのID(findmyfbid.comで取得)
token = "your_fb_token" # アクセストークン(tinder_auth_fetcherで取得)

session = pynder.Session(facebook_id = usrid, facebook_token = token) # Tinderアカウントへのログイン
users = session.nearby_users() #近くに居るユーザの情報を取得

counter = 0
limit = 100 #無課金ユーザなら100,課金ユーザならテキトウな値に設定しておく

for usr in users:
    if counter == limit:
        print "右スワイプ終わり!"
        sys.exit()
    usr.like() # 右スワイプ
    counter += 1

まとめ

彼女がほしいです……