🐲
【ドラゴンクエストXオンライン】Misskey の表示名に現在の職業とレベルを反映する
仕組みは単純でマイページに相当するキャラクター ID 入りのページから情報を取得して
Misskey.py
で API を叩いて反映しているだけです。
情報取得の準備
キャラクター ID 入りのページはどこ?
マイページをログインしていない状態で開くとログインへと促すリダイレクトページ
$ curl -I https://hiroba.dqx.jp/sc/home/
HTTP/1.1 302
Date: Fri, 20 Sep 2024 03:06:00 GMT
Server: Apache
X-Frame-Options: SAMEORIGIN
Expires: Wed, 31 Dec 1969 23:59:59 GMT
Pragma: no-cache
Cache-Control: no-cache
Location: https://hiroba.dqx.jp/sc/login/
Content-Type: text/html
が開いてしまう状態になってしまうので、マイページにログインした状態でマイページのソースをブラウザなどで表示して meta property="og:url"
のところに記述されている URL がキャラクター ID 入りのページになります。
数字の部分がキャラクター ID ですね。
<meta property="og:url" content="https://hiroba.dqx.jp/sc/character/667538238772/"></meta>
マイページの公開範囲を設定する
マイページの情報を取得するためにはマイページ設定の「マイページ全体の公開」が「制限なしで公開」に設定されている必要があります。
情報を取得してみる
この辺のソースから取得すればよさそうです。
ブラウザの開発者ツールなどで調べると <div id="myCharacterRadius">
にありそうです。
$ curl -s https://hiroba.dqx.jp/sc/character/667538238772/ | pup "div#myCharacterRadius"
<div id="myCharacterRadius">
<p id="myCharacterTitle">
ぷるぷるネコ
</p>
<p id="myCharacterImg">
<a href="/sc/character/667538238772/">
<img src="https://hiroba.dqx.jp/sc/character/667538238772/img/bup/" alt="おるどら">
</a>
</p>
<div id="myCharacterStatus">
<h2 id="myCharacterName">
[おるどら]
</h2>
<div id="myCharacterStatusList">
<dl>
<dt>
キャラID
</dt>
<dd>
: XO331-433
</dd>
<dt>
種 族
</dt>
<dd>
: エルフ
</dd>
<dt>
性 別
</dt>
<dd>
: 女
</dd>
<dt>
職 業
</dt>
<dd>
: レンジャー
</dd>
<dt>
レベル
</dt>
<dd>
: 131
</dd>
</dl>
</div>
<!-- /#myCharacterStatusList -->
</div>
<!-- /#myCharacterStatus -->
</div>
ここから職業とレベルを取得すればよさそうです。
$ curl -s https://hiroba.dqx.jp/sc/character/667538238772/ | pup "div#myCharacterRadius text{}" | tr -d '\t\n' | sed -e 's/\xc2\xa0/ /g' -e 's/^.*職 業: \(.*\)レベル: \(.*\)/\1\2/'
レンジャー131
情報が取得できれば、いろいろなことに利用できそうです。
【今日の豆】pup って何
CSS セレクタを指定して簡単にスクレイピングできるツールです。
先人が詳しい説明を書いてくれています。助かります。
Misskey のアクセストークンを取得する
やはり先人の素晴らしい記事がありますので、参考にして取得してください。
必要な権限の種類は アカウントの情報を変更する write:account
のみです。
リポジトリ
姉妹品に
もあります。
Discussion