Skip to content
This repository has been archived by the owner on Oct 28, 2020. It is now read-only.
/ StarGarner Public archive

あのサイトのアレを集めるWindowsアプリ

Notifications You must be signed in to change notification settings

stargarner/StarGarner

Repository files navigation

StarGarner

あのサイトのアレを集めるアプリです。 アプリ内ブラウザ(CefSharp)でサイトを開き、HTTP要求/応答を傍受して状況を判断し、自動で部屋を開いたり閉じたりします。


免責事項

アプリを利用した事によるいかなる損害も作者は一切の責任を負いません。 自己の責任の上で使用して下さい。

動作環境

  • Windows 10 64bit
  • .NET Core 3.1 Desktop Runtime (v3.1.3以降) (Windows x64)

注意事項

  • このアプリはときどき音が出ます。OSの音量ミキサーでボリュームを適時調整してください。
  • このアプリはOSのスリープやディスプレイ消灯やスクリーンセーバー起動を抑止します。

インストール手順

ログイン

起動するとあのサイトが表示されるのでログインしてください。 パスワード認証のみ対応してます。TwitterやFacebookでのログインはできません(ポップアップの親子間でJavaScriptがうまく働いてないらしい)。 まだの人は普段お使いのブラウザであのサイトに行ってパスワードを設定してからこのアプリでログインを試してください。

ログインが終わったら自動で星集めを開始します。

配信開始時刻の設定

画面上部の「配信開始時刻と3周目までの分」のところに AA:BB+CC の形式で配信開始の時(A)、分(B)、3周目開始までの分の数(C)を指定します。 たとえば 12:30+15 と書くと、配信開始が12時30分、その15分後に3周目開始というふうに解釈されます。

一日に配信が複数ある場合はカンマ区切りで複数書けます。例:0:30+15, 3:30+15, 6:30+15, 9:30+15, 12:30+15, 15:30+15, 18:30+15, 21:30+15

空欄にすると「2-3分ごとに所持数をチェックして、450未満なら部屋を開く」動作になります。


取得ロジック

250ミリ秒ごとに部屋を開く/閉じるの判断を行います。

現時点では状況判断ロジックは固定です。

条件と行動を優先度の高い順に書くとこんな感じです。

部屋を開く条件

「最近1分間に3回以上部屋を開いた」
→マッチする間は部屋を開きません。
実装ミスによる過度なアクセスを防ぐための安全装置です。
 
「オンライブ部屋一覧の情報がない」
→マッチする間は部屋を開きません。
 
「強制的に開くが押された」
→部屋を開きます。部屋を閉じた時にフラグ解除されます。
 
「制限エラーに遭遇した」
→制限解除まで取得しません。所持数調査もしません。
 
「10回取得済み」
→解除予測まで取得しません。
 
「配信予定がない」
→所持数450未満ならギフトを取得します。
 
「配信開始後(3周目後)」
→所持数450未満ならギフトを取得します。
→または次の配信が4時間以内ならなるべく早く初回取得を狙います。
 
「配信開始後(3周目前)」
→所持数450未満ならギフトを取得します。
(配信が始まってギフトを投げた後、「強制的に開く」を押すとすぐに再取得できます。)
(押さなくても最大3分まてばギフト所持数の調査と取得が行われます。)
 
「配信前1時間以内(初回取得前)」
→3周目開始まで57分以上あるなら初回取得します。(捨て星)
→上記以外で、所持数450以上なら初回取得しません。
→上記以外の場合、初回取得します。タイミングも所持数も悪いので戦略がありません。
 
「配信前1時間以内(初回取得後)」
→配信開始より次の解除予測が前なら、495まで取ります。
→配信開始より次の解除予測が後なら、450まで取ります。
(最大99まで取るより、90で止めて実際の配信開始後に10投げる方が1だけ得します。)
 
「配信前1時間以上2時間未満(初回取得後)」
→所持数450未満ならギフトを取得します。
 
「配信前1時間以上2時間未満(初回取得前)」
→タイミングが前に0-29分までずれているなら少し待って微調整してから初回取得します。
→上記以外ならタイミングが後に3分までずれているなら初回取得します。
→上記以外なら所持数450以上なら初回取得しません。
→上記以外ならタイミング調整を諦めて初回取得します。
 
「配信前2時間以上」
→所持数450未満ならギフトを取得します。
 

補足説明

  • ※実際には予定時刻より29秒前倒しで部屋を開きます。(制限解除判定のサーバ側の精度が秒程度なので、きっちり30秒ではなく1秒のマージンが必要です。)
  • ※3周目開始から10分でフォーカスが次の配信に移ります。
  • ※上記のどの状況でも、たまにギフト所持数を調べるために部屋を開きます。調査だけが目的の場合はすぐ閉じます。

部屋を閉じる条件

  • ギフトを取得した
  • 制限エラーに遭遇した
  • 3秒以上アプリ内ブラウザからのHTTPリクエストがなかった(配信してない)
  • 33秒経過した(取得済みの部屋を開いてしまった、その他)
  • 「強制的に開く」がオフで、なおかつ部屋を開くべきでない状況だった。  (たとえば部屋を開いたらその時得られた情報で495取得済みが判明した、等。)

その他

バックグラウンドでのAPIの使用

アプリ内ブラウザとは別にバックグラウンドで定期的に以下のAPIを呼び出します。

  • /api/live/onlives ライブ中の部屋の一覧
  • /api/live/current_user ギフト所持数の調査

実行中に作成するファイル/フォルダ

起動したフォルダの下に以下のファイル/フォルダを作ります。

UI.json
画面上部の設定項目が保存されます。
 
star.json
seed.json
制限解除時刻や取得履歴が保存されます。
 
StarGarner.log
もし動作に問題があったら、このファイルを作者に提供いただけると問題解決の参考になるかもしれません。 削除しても特に動作には影響ありません。
 
cache/
アプリ内ブラウザがクッキーやキャッシュデータを保存します。 削除すると再ログインが必要になります。
 
jsonLog/
設定の「API応答をファイルに保存」を有効にすると、API応答が記録されます。 開発者以外には必要ないと思います。
 
debug.log
アプリ内ブラウザがログを出力します。 削除して構いません。
 

StarGarnerCon

PCで動かしてるStarGarnerを外部から制御するAndroidアプリです。

  • アプリの画面にStarGarnerのステータスが表示されます。
  • 配信時刻の変更や強制的に開くなどの操作が可能です。

導入手順

  • PCで動かしてるStarGarnerの「設定/他」を開いて「内蔵HTTPサーバ」を有効にして待機アドレスと待機ポートを適当に指定して「適用」を押します。 良くわからない場合、待機アドレスは 0.0.0.0 ポートは 8485 あたりを指定するとよいでしょう。
  • 「listening {addr} port {port}」が表示されなかったら、エラー表示を見て適当になんとかしてください。
  • 「maybe your adresses are…」が表示されたら、そのアドレス達をメモしておいてください。
  • リリースに同梱されている「StarGarnerCon-{…}.apk」をAndroidスマホに転送してスマホから開いてインストールします。
  • AndroidスマホでStarGarnerConアプリを開いて、接続先の編集ボタンを押して、アドレスとポートを半角文字のコロン :で区切って入力します。 アドレスは 0.0.0.0 ではなく、先ほどメモしたアドレスのどれかを試してください。
  • 接続に成功したらアプリの画面にStarGarnerのステータスが表示されます。

※ LANの外側から接続したい場合、ご自宅のブロードバンドルーター等に外部から内部への接続を許可する等の設定が必要になります。 詳しくはお使いのブロードバンドルーター等の取扱説明書をご確認ください。