gbf-raiderの劣化版をpythonで作ってみた話
グラブルにあらゆる時間を奪われ,グラブルが生活の中心になっている鈴瑚です.グラブルを始めるならこちら→
www.andapp.jp
グラブルにはマルチシステムがありtwitterを介して他の人の救援に入れるようになっています.そうなれば当然twitterのAPIを用いた救援に入るのを援助するアプリケーションも存在します.自分も今の今までそのアプリケーションに頼っていたのですが,サイトが閉鎖されることになりこのままでは生活に支障が生じそうだったので自分で作ることにしました.Mac専用
準備
まずpythonでtwitterAPIを使えるようにTwythonを導入します.やり方などはググってくださればすぐに出てくると思います.
TwitterのAPIを使うためにキーを取得します.これも検索すれば簡単です.
コード
#!/usr/bin/env python from twython import Twython, TwythonError from twython import TwythonStreamer import sys from multiprocessing import Pool import time import subprocess global CONSUMER_KEY global CONSUMER_SECRET global ACCESS_KEY global ACCESS_SECRET #twitter_api_key CONSUMER_KEY = '' CONSUMER_SECRET = '' ACCESS_KEY = '' ACCESS_SECRET = '' argvs = sys.argv del argvs[0] argc = len(argvs) #ヘルプオブション,適宜足してください if argvs[0] == '-h': print ("1:Lv50 ティアマト・マグナ\n\ 2:Lv70 コロッサス・マグナ\n\ 3:Lv60 リヴァイアサン・マグナ\n\ 4:Lv60 ユグドラシル・マグナ\n\ 5:Lv75 シュヴァリエ・マグナ\n\ 6:Lv75 セレスト・マグナ\n\ ") exit() #敵の名前を正確に打ち込む,英語名を調べるのがめんどくさければ空欄で enemy_info_dict = {\ "1":["Lv50 ティアマト・マグナ","Lv50 Tiamat Omega"],\ "2":["Lv70 コロッサス・マグナ","Lv70 Colossus Omega"],\ "3":["Lv60 リヴァイアサン・マグナ","Lv60 Leviathan Omega"],\ "4":["Lv60 ユグドラシル・マグナ","Lv60 Yggdrasil Omega"],\ "5":["Lv75 シュヴァリエ・マグナ","Lv75 Luminiera Omega"],\ "6":["Lv75 セレスト・マグナ","Lv75 Celeste Omega"],\ "7":["Lv75 スーペルヒガンテ"," "]\ } class MyStreamer(TwythonStreamer): def on_success(self, data): if 'text' in data: if (u'参加者募集' in data['text']): tweet_id = data['id'] text = data['text'] text = text.split(u':',1) text = text[1].split("L",1) #idだけにする,text[0]はid battle_id = text[0].strip() print(battle_id) process = subprocess.Popen('pbcopy', env={'LANG': 'en_US.UTF-8'}, stdin=subprocess.PIPE) process.communicate(battle_id.encode('utf-8')) def on_error(self, status_code, data): print (status_code, data) def write_to_clipboard(self,output): process = subprocess.Popen('pbcopy', env={'LANG': 'en_US.UTF-8'}, stdin=subprocess.PIPE) process.communicate(output.encode('utf-8')) for x in (argvs): print (enemy_info_dict[x][0]) stream = MyStreamer(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_KEY,ACCESS_SECRET) #stream.statuses.filter(track= n) def serch(enemy_name): stream.statuses.filter(track = (enemy_name[0] or enemy_name[1])) pool = Pool(4) for x in (argvs): result = pool.apply_async(serch, (enemy_info_dict[x], )) result.wait()
使い方
1.適当な名前で保存する.(ここではgbf-raider.py)
2terminalでgbf-raider.py 1 (1だとティアマト,2だとコロッサスと番号で管理)
3terminalの画面に敵の名前とidが表示される
4クリップボードにidがコピーされるのであとは貼り付けるだけ