レベルが上がると自動でTwitterにツイート
レベルが上がると自動でツイートする.新たに覚えた呪文がある場合はそれも含める.
仕組み
今回のドラクエは,オンラインになったのでインターネットとの連携もあり,
プレイヤー専用のサイトとして,「目覚めし冒険者の広場」が用意されている.
目覚めし冒険者の広場-ドラゴンクエストⅩプレイヤー専用サイト
このサイトでログインすると,
プレイヤー同志の交流ができたり,自分のキャラの状況を確認できるようになっている.
このサイトで公開の設定をすると,自分のキャラのステータスをログインしていないユーザにも公開できるようになっている.
ふくばやの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のユーザとツイッターアカウントが同じ人のものであると確認するうまい方法がない
(他人のキャラのステータスを自分のものとして勝手にツイートしたりできてしまう) ので一般公開ができていない.
「あしあと伝言板」にツイッターアカウントを申告してもらうようにして,利用開始時に確認させれば可能かもしれないけど,登録がちょっと面倒だな...
あとGoogle App Engineの無料枠だとそれほど収容できないかも.
スクウェア・エニックス (2012-08-02)
売り上げランキング: 7