レベルが上がると自動でTwitterにツイート
レベルが上がると自動でツイートする.新たに覚えた呪文がある場合はそれも含める.
ふくばや は 僧侶 レベル16に あがった! ズッシード をおぼえた! @ガタラ原野 #dq10 #dqx
— Yuichiro Fukubayashiさん (@fukubaya) 8月 11, 2012
仕組み
今回のドラクエは,オンラインになったのでインターネットとの連携もあり, プレイヤー専用のサイトとして,「目覚めし冒険者の広場」が用意されている.
目覚めし冒険者の広場-ドラゴンクエストⅩプレイヤー専用サイト
このサイトでログインすると, プレイヤー同志の交流ができたり,自分のキャラの状況を確認できるようになっている. このサイトで公開の設定をすると,自分のキャラのステータスをログインしていないユーザにも公開できるようになっている.
ふくばやのTOP|目覚めし冒険者の広場
僕のキャラの公開ページ.TOPとステータスはインターネットから誰でも見られる.各種SNSボタンで共有も可能.
要はこのページを15分ごとにチェックし,レベルが上がっていたらツイートする,というだけ. ただし,転職をするとレベルが下がったり上がったりする (レベルは職業ごとに違う) ので, 職業が変わっていないかはチェックしておかないといけない (転職した場合もツイートするようにしたけど,まだ転職していないのでツイートされてはいない).
実装
実装には,Google App Engine (Python) を使った.特に難しいことはしていない.
ステータス情報を取得するモジュール: python-dqx
上記「目覚めし冒険者の広場」からステータス情報を取得してくるPythonモジュールを作った.
fukubaya/python-dqx · GitHub
github
使い方
>>> from dqx import dqx >>> dqx_user = dqx.User('499148186426') # http://hiroba.dqx.jp/sc/character/XXXXXXXXXXXX の XXXXXXXXX を文字列で指定 >>> print dqx_user.name None # オブジェクト作成直後は情報なし >>> dqx_user.retrieve_and_update() # サイトから情報を取得しオブジェクトを更新. >>> print dqx_user.uid 499148186426 # サイトでのID >>> print dqx_user.title 初心者 # かたがき >>> print dqx_user.name ふくばや # なまえ >>> print dqx_user.cid XH349-176 # キャラID >>> print dqx_user.race ドワーフ # 種族 >>> print dqx_user.sex 男 # 性別 >>> print dqx_user.job 僧侶 # 職業 >>> print dqx_user.level 17 # レベル >>> print dqx_user.imglastupdate 2012-08-12 06:11:00 # 画像の最終更新日 >>> print dqx_user.welcomefriend ヤリ装備で攻撃力+10です。おはらい可。 # サポート仲間とうろく状況のメッセージ.とうろくしていない場合はNone >>> print dqx_user.message みせってい # メッセージ >>> print dqx_user.equipment みぎて:せいどうのやり, ひだりて:(せいどうのやり), アタマ:せいどうのかぶと, からだ上:うろこのよろい上+1, からだ下:うろこのよろい下, ウデ:せいどうのこて, 足:うろこのブーツ, 顔アクセ:そうびなし, 首アクセ:そうびなし, 指アクセ:そうびなし, 他アクセ:そうびなし, しょくにん:銅の錬金ランプ☆☆☆ # そうび >>> print dqx_user.equipment.rhand せいどうのやり # そうびのみぎて >>> print dqx_user.equipment.lhand (せいどうのやり) # そうびにひだりて # 他は head, ubody, lbody, arm, foot, faceacc, neckacc, fingacc, othacc, art >>> print dqx_user.location サーバー:サーバー16, フィールド:岳都ガタラ # いる場所 >>> print dqx_user.location.server サーバー16 # いる場所のサーバー >>> print dqx_user.location.field 岳都ガタラ # いる場所のフィールド >>> print dqx_user.parameter さいだいHP:66, さいだいMP:38, こうげき力:57, しゅび力:59, こうげき魔力:5, かいふく魔力:48, ちから:36, すばやさ:43, みのまもり:37, きようさ:34, みりょく:23, おしゃれさ:31, おもさ:133 # パラメータ >>> print dqx_user.parameter.maxhp 66 # さいだいHP # 他は maxmp, attack, defend, mattack, mhealing, power, speed, guard, dext, charm, appearance, weight >>> print dqx_user.skillpoint {u'\u30e4\u30ea': 3, u'\u30b9\u30c6\u30a3\u30c3\u30af': 3, u'\u68cd': 3, u'\u3057\u3093\u3053\u3046\u5fc3': 12, u'\u76fe': 0} # スキルポイント.辞書形式. >>> print dqx_user.skillpoint[u'ヤリ'] 3 >>> print dqx_user.skills[u'しんこう心'] [u'\u304a\u306f\u3089\u3044'] # とくぎ.辞書形式で中身はリスト. >>> print dqx_user.skills[u'しんこう心'][0] おはらい >>> print dqx_user.skilleffects {u'\u30e4\u30ea': [u'\u3053\u3046\u3052\u304d\u529b+10']} # スキル効果.辞書形式で中身はリスト. >>> print dqx_user.skilleffects[u'ヤリ'][0] こうげき力+10 >>> print dqx_user.spells [u'\u30db\u30a4\u30df', u'\u30ad\u30a2\u30ea\u30fc', u'\u30ea\u30db\u30a4\u30df', u'\u30b6\u30e1\u30cf', u'\u30b6\u30aa', u'\u30de\u30db\u30ea\u30fc', u'\u30ba\u30c3\u30b7\u30fc\u30c9'] # じゅもん.リスト形式. >>> print dqx_user.spells[0] ホイミ
存在しないユーザの情報を取得しようとした場合はエラーを返す.
>>> from dqx import dqx >>> noexistent_user = dqx.User('000000') # 存在しないユーザ >>> noexistent_user.retrieve_and_update() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "dqx/dqx.py", line 54, in retrieve_and_update self.update_profile(profile_res.read()) File "dqx/dqx.py", line 66, in update_profile checkErrorPage(soup) File "dqx/dqx.py", line 295, in checkErrorPage raise ParseError('%s' % (getErrorMessage(error[0]))) dqx.dqx.ParseError: キャラクターが存在しません。 >>>
ログインユーザのみに公開のユーザの場合は,ログインページにリダイレクトされるので, エラーを返す.
>>> from dqx import dqx >>> hidden_user = dqx.User('XXXXXX') # 非公開のユーザ >>> hidden_user.retrieve_and_update() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "dqx/dqx.py", line 52, in retrieve_and_update raise RetrieveError(u'redirected from %s to %s' % (self.url_profile, profile_res.geturl())) dqx.dqx.RetrieveError: redirected from http://hiroba.dqx.jp/sc/character/XXXXXX/ to https://secure.square-enix.com/account/app/svc/login?... >>>
利用例:サポート仲間とうろく状況のツイート
このモジュールを利用して,サポート仲間にとうろくしている間は自分の状況をキッズタイムの15分前 (平日は15:45,土日は12:45) にツイートするようにした.よかったらやとってやってください.
【DQX】サポート仲間とうろく中! "ヤリ装備で攻撃力+10です。おはらい可。"from ふくばや[XH349-176] ドワーフの僧侶(Lv.17) 岳都ガタラ@サーバー16 #dq10 #dqx
— Yuichiro Fukubayashiさん (@fukubaya) 8月 12, 2012
サービス化したいんだけど...
自動ツイート機能は,一応,自分以外の誰でも使えるように実装してあるけど, 今のところDQXのユーザとツイッターアカウントが同じ人のものであると確認するうまい方法がない (他人のキャラのステータスを自分のものとして勝手にツイートしたりできてしまう) ので一般公開ができていない. 「あしあと伝言板」にツイッターアカウントを申告してもらうようにして,利用開始時に確認させれば可能かもしれないけど,登録がちょっと面倒だな... あとGoogle App Engineの無料枠だとそれほど収容できないかも.
売り上げランキング: 7