Showroom - イベントの獲得ポイント数を取得して記録するツール
この記事で紹介したツール(とそのソース)には
パフォーマンスがあまりよろしくない
一部のイベントで獲得ポイントを取得できないことがある
という問題がありましたので、改良版を作成してあります。
「SHOWROOM - イベントでの配信者の獲得ポイント数を取得する(改良版)」
ただし、こちらの方にはイベント貢献ランキングリストの取得は含んでいませんので、
貢献ポイントランキングが必要な場合は
「SHOWROOM - イベント貢献ランキング(貢献ポイント)を取得する関数(ソース)」
を御覧ください。これもパフォーマンス改善版です。
--------------------------------------------------
これまでShowroom関連のツールをいくつか紹介しましたが、今回は何か操作するというのではなく、イベントで参加者(配信者)の獲得ポイント数を定期的に取得しファイルに記録していくツールです(イベント貢献ランキングリストの取得もできます)
「Showroom - イベント結果データ」 にあるグラフやExcelファイルはこれを利用して作ったものです。例えばこんなグラフを作るのに使います。
このツールには次のような特徴があります。
1. テストツール(go/agouti)による実装。
テストツールを星集め・星投げツールに使うのはあんまりいいやり方じゃないなという反省があったのですが、こういう定期的にデータを取得するというような目的だったらあんまり問題なく使えます。
指定したGoogle Chromeの作業フォルダではすでにChromeやShowroomの設定が終わっていることが必要です。ただ星集めや星投げと違いログインしておく必要はありません。
2. ログイン不要
Showroomでツールを使うことに(心理的な?)抵抗がある方もいらっしゃると思います。このツールはログインせずに使えるので(=規約の適用を受けるとは思えないので)安心して使えます。
ログインしてなければ、またあいつ偵察に来たな、と思われる心配がありません。
もちろんログインした状態でも使えます。
3. 複数イベント対応
どのイベントの誰のデータの記録を行うかは毎回入力データファイルを読んで決めます。ツール実行中であってもデータをとるイベントを増減したり配信者を増減することができます(まあ再起動してもたいした手間ではありませんが....)
4. タブ区切りデータの出力
そのままExcelで読み込めます。とうぜんイベントごとに別ファイルになります。
上のようなグラフを作りやすいような形式で出力されます。
5. イベントの最高レベルのポイント数を越えたときの対策
“目標支援ポイント”の数値から“目標達成まであと...”の数値を引いたものを獲得ポイント数としています。イベントの最高レベルを越えるとこれができなくなるので、下位の配信者の獲得ポイント数に“次の順位まであと...”の数値を足して(あるいはこの操作を繰り返して)獲得ポイント数を求めています(したがって獲得ポイント数自体は必要がなくても下位の配信者の獲得ポイントを得ることが必要になることがあります)
また、この操作のためには具体的に何人の配信者の獲得ポイントを求め上位何名までこの計算方法を使うかを指示する必要があります(ここは自動的に行えるように改善すべきでどうすればいいか検討中です)
ソースは以下からダウンロードできます。
ダウンロード EvalPoints.zip (3.8K)
ZIPファイルには二つのソースがありますが、
src---+--- EvalPoints---EvalPoints.go
+--- showroom ---showroom.go
のような位置関係におきます。
=================================
使い方
まず入力データファイルを作ります。これは階層構造になっています。イベントごとの配信者リストを作ります。そしてそのファイル名を RoomList.txt に記します。上に書いたようにいずれも実行中に書き換えても問題ありません。
イベントごとの配信者リストは次のような内容です。
// RoomList.txt 統計情報を得るルームのリスト
//
// 1行目 イベントに設定された最高レベルを達成した場合獲得ポイントが取得できなくなる問題への対応です。
// 同一イベントの配信者をグループ化し下位の配信者のポイントから上位の配信者のポイントを求めます。
// この機能が必要がなければ三つのフィールドをすべて0にしておきます。
// この機能を使うためにはポイントの算出に必要な配信者すべてのポイントを取得する必要があります。
// つまり 第2フィールド - 第1フィールド >= 第3フィールド であり
// かつ 第1フィールド~第2フィールドで示す配信者が上位(第2フィールド - 第1フィールド + 1)名
// であることが必要です。ただし順位の順に並んでいる必要はありません。
// 第1フィールド
// グループ化する最初の配信者(最初の配信者を0とします)
// 第2フィールド
// グループ化する最後の配信者
// 第3フィールド
// 下位の配信者の獲得ポイントをもとにポイントを算出する配信者の人数
//
// 2行目以降
// 第1フィールド
// 配信者ニックネーム
// 第2フィールド
// 配信者URLの最後の部分
// この文字列の先頭に”https://www.showroom-live.com/"を追加したものを
// 配信者URLとします。
// 第3フィールド
// イベントURLの最後の部分
// この文字列の先頭に”https://www.showroom-live.com/event/"を追加したものを
// イベントURLとします。
// 第4フィールド
// イベント貢献ランキングURLの最後の部分(ID:6桁以下の整数)
// イベント貢献ランキングが不要な場合は0としておけばいいです。
// 第5フィールド
// true: イベント貢献ランキングを取得する
// false: イベント貢献ランキングを取得しない
//
// 第6フィールド 貢献ポイントランキングの取得方法
// 1: 通常
// 2: Singing Boys and Girlsなどの場合(セレクターが違う)
//
// 第7フィールド 獲得ポイントの取得方法
// 2: イベントダイアログに獲得ポイントがある
// 1: イベント詳細ページに獲得ポイントがある(Singing Boys and Girlsなどの場合)
具体的には次のようなファイルです。これは上のグラフに相当するもので、最後の方では最高レベルを越えた配信者さんが5人いたため、6位の獲得ポイントから、5位~1位の順位を順番に求める方法をとっています。
0 5 5
H!Na____ taira_0507 beginner_women_official_vol75 192118 false 1 2
sakura__ sakuraroom beginner_women_official_vol75 199384 false 1 2
僕のClove the_clove_is_mine beginner_women_official_vol75 198468 false 1 2
小宮山姫菜 hinachi- beginner_women_official_vol75 198915 false 1 2
すいみー suimi beginner_women_official_vol75 198458 false 1 2
星宮れな hoshimiya_rena beginner_women_official_vol75 0 false 1 2
滝沢歩美 aaa0004 beginner_women_official_vol75 199987 false 1 2
梨乃______ sbt_0102 beginner_women_official_vol75 195775 false 1 2
きの______ yoani-x3brbG5n09rrM beginner_women_official_vol75 190682 false 1 2
日高まお mao_hikigataru beginner_women_official_vol75 199888 false 1 2
福島あかり obpplus-akari beginner_women_official_vol75 199384 false 1 2
森田しおり morita-shiori beginner_women_official_vol75 172744 false 1 2
最後の二つのフィールドはこのまま(つまり “1 2” で)ほとんどのイベントで使えますが、ごく一部のイベントでは“2 1”とする必要がありました。
入力データファイルができたら次のように実行します。
c:\Users\Seppina\go\src\EvalPoints>EvalPoints.exe 6 30 0 0
次の“30”はデータの取得間隔です。30は30分起きという意味です。間隔の終わりから3分前にデータ取得が行われます。30分おきであれば27分、57分にデータを集めに行きます。
ただこの“3分前”が適切なのか自信がないです。
またとうぜんこの数値を5より小さくするのは意味ないです。データの更新は5分おきに行われますので。
次の二つは時間間隔を“0”としたときに意味をもちます。
c:\Users\Seppina\go\src\EvalPoints>EvalPoints.exe 6 0 1 0
であれば配信者名の一覧を出力ファイルに書き出します。また
c:\Users\Seppina\go\src\EvalPoints>EvalPoints.exe 6 0 0 1
であれば(配信者リストで第5フィールドが“true”になっている配信者に限って)イベント貢献ランキングを取得します。
時刻間隔が指定されている場合はこの二つは意味がなく、起動直後に1回配信者名のリストを出力し、毎日午前4時台の最初のデータ取得時にイベント貢献ランキングを取得します。
-------------------------
参考
「Showroom - 自動星集め・星投げ・カウントツール)」 (使用法とソースつき)
「Showroom - 自動三周ツール(もう一つの自動星集め・星投げ・カウントツール)」
「Showroom - イベントの獲得ポイント数を取得して記録するツール」
「Showroom - 福引するプログラムとその結果 (1)」
「Showroom - イベント結果データ」
「Showroomの複数アカウント(複アカ、複垢)について考えてみた(1)」
「Showroom - 複数アカウント(複垢)問題の真実 - 実験計画」
「Showroomの重複アカウント(複垢)減算はこうして起きる」
「Showroomでの自動星集めの試み (3) ガチイベ、最後の5分間
「Showroom ラスカルイベの最後の5分間」
「Showroomでの自動星集めの試み (1)」
「Showroomでの自動星集めの試み (2) 配信ルームの一覧を作る」
「Showroomでの自動星集めの試み (4) 星集めツール」
「Showroomでひたすらリスナーレベルを上げるための星集めツール(Go/Agouti)」
「超初心者のGo言語/agouti - ブラウザ操作の基本の基本」
「超初心者のGo言語 - 複数の戻り値をもつ関数」
「超初心者のGo言語 - もっとも簡単なGoroutine(並列処理)」
---------------------
「GoDoc - package agouti」
「Qiita @0829 - Goではじめてみたブラウザの自動操作」
「Qiita @tenten0213 - agoutiというWebDriverクライアントを使って面倒な作業を自動化する」
「Qiita @masaru_b_cl - Windows上でGo言語初心者向け学習環境を作る」
「はじめてのGo言語」
「天才まくまくノート - まくまく Hugo/Go ノート - 関数を定義する (func)」
「Qiita @TakaakiFuruse - Golang Goの並列処理を学ぶ(goroutine, channel)」
「Qiita @To_BB - Rubyエンジニアがゴルーチン(Go言語)を学んでみた【初心者向け】」
「Qiita @fukumone - goroutine 使い方まとめ」
« Showroom - 自動三周ツール(もう一つの自動星集め・星投げ・カウントツール) | トップページ | 水深2mのプールの見かけの水深は? 屈折と光線追跡 »
「パソコン・インターネット」カテゴリの記事
- さくらインターネットのレンタルサーバーでGOで書いたCGIを動かした(苦労)話(2021.04.19)
- SHOWROOMのAPI - 「ライブ情報」の取得(GO言語のソースつき)(2019.10.26)
- SHOWROOM 星集め・星投げツール スケジュールの詳細化 BreakDownSchedule() (三周のやり方を例に)(2019.09.25)
- SHOWROOM 新・自動三周ツール -- GO言語によるブラウザ制御 (1) main()(2019.09.17)
この記事へのコメントは終了しました。
« Showroom - 自動三周ツール(もう一つの自動星集め・星投げ・カウントツール) | トップページ | 水深2mのプールの見かけの水深は? 屈折と光線追跡 »
コメント