« CD-R簡易分光器の限界は? - 「イラストレイテッド光の実験」 | トップページ | Showroom - イベントの獲得ポイント数を取得して記録するツール »

2018年8月 7日 (火)

Showroom - 自動三周ツール(もう一つの自動星集め・星投げ・カウントツール)

以前書いた記事 「Showroomでひたすらリスナーレベルを上げるための星集めツール(Go/Agouti)をご覧になったあしかっぴ(@pf_ashika)さんが独自に自動3周ツールを作られたそうです。実行環境も Go/agouti+ChromeDriver+Google Chrome とのことでしたのでお願いしたら快くソースを提供していただきました。そこでこの“3周ツール”を紹介させていただきたいと思います。

私がShowroom - 自動星集め・星投げ・カウントツール)の記事で紹介した(=ダウンロードできる)ツールとはかなり違いがあります。

あしかっぴさんのツール Showroom - 自動星集め・星投げ・カウントツール)
目的・使い方 簡単・確実に3周を行う

一つのコマンドラインで最初の操作の開始時刻と星投げ・種投げの対象ルームを指定するだけで星集め・種集め、(いわゆる)捨て星、星投げ・種投げ、カウントが進んで自動的に3周できる

まず指定した時刻に星集め・種集めを行います。
指定した時刻の61分後にいわゆる捨て星を行います。
さらにその50分後に星投げ・種投げを行い、星集め・種集めを行ったあと、再度星投げ・種投げを行います。
そのまた10分後に星集め・種集めを行ってそれを投げます。
Showroomのリスナー活動に必要な機能を一つ一つ用意しそれを組み合わせて使う

3周には星集め・種集めのための3つのコマンドラインと星投げ・種投げ、カウントの対象ルームを指定するための一つのコマンドラインが必要
構成 コマンドの内容にしたがってGetStars()を繰り返し呼び出す。GetStars()は星集め・種集め、(いわゆる)捨て星、星投げ・種投げ、カウントの機能を全て含む。 複数の星投げ・種投げのためのThrowStars()と星集め・種集めのためのGetStars()をGoroutineとして非同期で動かす。
(コメント(カウント)は排他処理が必要で完全に非同期で動作するわけではない)
動作環境 Go/agouti + Google 最新版
(特にChromeDriverが最新であること。またShowroom Toolboxは使用しないこと)
 同左
実装の違い 星集め・種集めはいわゆる“ツイボ”による
----------
“ツイボ”のとき送信内容をタイムスタンプ+URLに書き換えます。これによって「同じ文面は連続で投稿できません」のエラーの発生を回避できます。
------
以下略(余裕ができたら書きます)
星集め・種集めは30秒ウェイトと“ツイボ”から選択
-------
“ツイボ”は表示されたものをそのまま送信します。
------
以下略(余裕ができたら書きます)

----------------------

追記(2018年9月6日、26日)

2018年9月1日(おそらく9時頃)予告されていたとおりスポーツ枠がなくなりました。
このため下記のソースでは種集めのとき配信ルーム一覧への移行で(スポーツ枠の次にある)アマチュア枠への移行が行われないなど正常に機能しなくなります。
9月3日版のソースではこの点は対応済だそうです。

旧版ではこの問題についてはソースの1,312行にある

status = GetStars(9, 9, OThrow, TCount_1, URL1)



status = GetStars(8, 8, OThrow, TCount_1, URL1)

と修正することによって対応可能です。


この件に関しては近々記事を書く予定です。


 ==> Showroomの仕様変更とその対応の履歴

---------

さて肝心のソースですが、

  ダウンロード sh-871_20180907.zip (9.8K)

    ダウンロード sh-871.go (47.4K)  こちらは旧版(2018年8月3日)のソースです。

にあります。

いただいたソースのログ保存先、(旧版はChromeの作業フォルダも)についてだけは修正していますが、それ以外はいただいたままのものです。

私のもそうですが、使用する場合はソースを読み込んで自分のものとしてから利用してください。何かトラブルがあって「どうしてくれる!」とねじ込まれても困りますから。同様にShowroomの規約が気になる方はご自身で規約を読んで判断してください。

-------

あしかっぴさんのものはstarttime1.txtというデータファイルが必要でその内容は

17 21 3 0 0 https://www.showroom-live.com/account

というようなものになります。

最初の2フィールドがアクションを開始する時刻です(3周するのであればこれは配信開始時刻の1時間45分くらい前の時刻になります。とうぜんこの指定した時刻に星(あるいは種)を集めることができるか、すでに集め終わっていることが前提です)

そのあとの2つはソースを見てほしいのですが、3周するのであれば 3 0 とします。そしてその次が公式枠(“0” 星を集める)かアマ枠(“1” 種を集める)を示します。最後のフィールドは星投げ・種投げの対象ルームのURLです。

2019.09.26 追記

9月3日版についてはあしかっぴさんから次のようなメッセージをいただいています。

  今回は

    「スポーツ枠廃止に伴う修正」
    「福引機能の追加」
  が修正点です.

  福引は starttime.txt において アマ枠 1 か オフィシャル 0 か 
  の選択の部分を 負の数にすれば良いです.

-------------------------

参考

  「Showroom - 自動星集め・星投げ・カウントツール)」 (使用法とソースつき
 Showroom - 自動三周ツール(もう一つの自動星集め・星投げ・カウントツール) 
  「Showroom - イベントの獲得ポイント数を取得して記録するツール

  「Showroom - 福引するプログラムとその結果 (1)


  「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 使い方まとめ

« CD-R簡易分光器の限界は? - 「イラストレイテッド光の実験」 | トップページ | Showroom - イベントの獲得ポイント数を取得して記録するツール »

パソコン・インターネット」カテゴリの記事

コメント

こんにちは。

2018年12月にオンライブの”人気”枠と”アイドル”枠の間に”カラオケ”枠が出来ました。あしかっぴさんのコードでは、星集めが”カラオケ”枠から始まります。”アイドル”枠から星集めするために変更すべき箇所はどこになるのか教えて頂けませんでしょうか。

自分なりにコードを読んだのですが分かりませんでした。

コメントありがとうございます m(._.)m
あしかっぴさんのコード(sh-871_20180907.zip)についてはこれから確認してお答えしたいと思います。
じつはソースは見始めたのですが、確実に修正しなければならない場所(例えば1655行"2, 6"から"3, 7"と1657行"8, 8"から"9, 9")以外にどこを修正しなければならないか未確認です。できればあしかっぴさん御本人にも連絡をとってみたいと思います。
ご期待に沿う回答になってなくて申し訳ないのですが、以上取り急ぎお知らせいたします。

早速のご回答ありがとうございました。

急いではおりませんので、お時間の合うときに何か進展があればと思っております。私もセッピーナさんの書かれている箇所は修正してみたのですが、どうしてもカラオケ枠から始まってしまうのでご相談致した次第です。

お忙しいところ、すみません。

あごさん、その後音沙汰なしになってしまい申し訳ありませんでした。
じつはインフルエンザで寝込んでしまいました。
ソースを見ながら考えたのですが、今後も枠の変更が頻繁に行われそうな雰囲気も
あるので、枠の変更に即応できるように(あるいはさらに自動的に対応できるように)
ソースを改修しよう思います(すでに作業は始めています)
どこまでやるかで必要な時間が変わってくるのですが、16日からはじまるSHOWROOM
イベントの応援に使おうと思っているのでそれまでにできる範囲のものを直前に公開する予定です(コメントも可能な限り追加するつもりです)
以上ひとまずお知らせいたします。

セッピーナさん、こんにちは。お返事ありがとうございました。新しいプログラムが完成することを願っております。私はあしかっぴさんのコードを7割くらい理解したところで以下の行を変更すれば3周出来ることが分かりました。あしかっぴさんのコードを使わせて頂いている理由は、私の理解力不足のせいでセッピーナさんのコードを一度も上手く動かせられなかったというものです(涙)。

sh-871_20180907のコードを以下のように変更しました。

1651行目
変更前:status = GetStars(2, 6, OThrow, TCount_1, URL1)
変更後:status = GetStars(3, 7, OThrow, TCount_1, URL1)

1653行目
変更前:status = GetStars(8, 8, OThrow, TCount_1, URL1)
変更後:status = GetStars(9, 9, OThrow, TCount_1, URL1)

それから、721行から735行の「k2 == 2から9」の番号を「k == 3から9」に変えます。その際「スポーツ」の行を削除しました。

コードの変更箇所が理解出来たので今後Onlive枠の変更が生じても対応出来そうです!半月ほど色々なイベントに参加した結果、3周+50カウント(1810 pt)の成功率は大体70%くらいでした。3周+50カウントが失敗する(コード進行がストップする)ケースとしては、以下の3つがありました。

(1)星集めの時、3回続けて星数の増加が無い
(2)星集めの時、ツイボした瞬間に配信が終了する
(3)配信リスト作成に失敗する(Chromeが起動した瞬間に強制終了する)

(1)はコードの仕様ですが、その他のケースはまだ解決法が良く分かりません。現在プログラムを動かしているのは、Windows10のノートパソコンです。しかし、別のパソコン(Windows8からWindows10にアップデート)で同じ環境(Go言語+セレニウム+Chromedriver)を作って移植したところ、星投げのセレクターを押す動作が出来ないようで上手く動きません。環境のいずれかのバージョンが古いのかもしれません。もしこれらと似たような現象をご存知でしたら、教えて頂けると幸いです。長文になりすみませんでしたm(_ _)m

その後何もアクションを起こしておらず申し訳ありませんでした m(._.)m
にもかかわらずソースの修正箇所をご教示いただきありがとうございます。
三周が失敗する三点につきましては
(1) 実際には星をゲットできているのに表示が更新されないという問題ですね。これはウェイトして表示が更新するのを待つという対策があるのですが、これをやってしまうと、あとの処理に影響を与えることがあって、なかなか対応が難しかったです。プログラムもやたら複雑になります。
SHOWROOMの中の人が書いた資料を見ると、負荷がかかったときに意図的に処理を省略するというようなことをやっているようで、もしそれが原因だと完全に対応するのはそうとうに面倒なことになりそうです。
(2)、(3)についてはなんとも言えませんが、私の経験では、Google Chromeのバージョンが上がったとき正常に動作しなくなるということがよくありました。そのときは最新のChrome Driverをインストールという対応でクリアできていましたが、おっしゃっている現象がこれに該当するかはわかりません。
以上わかる範囲でお答えします。
迷惑をおかけしてしまったのに、ほんとうにありがとうございました m(._.)m

セッピーナさん、お返事ありがとうございます。情報を交換して頂きとても嬉しく思っております。また新しい情報が得られたら投稿させて頂きますね。

それから私の2月13日の投稿に誤字がありましたので、訂正いたします。
誤:「k == 3から9」
正:「k2 == 3から9」

加えて補足をします。1651行目のGetStars中は3(アイドル)から8(バーチャル)にするのが正しそうなのですが、実際にプログラムを動かすと3から7(お笑い・トーク)の配信リストを取得しにいきます。今のところ原因が不明なので8(バーチャル)は飛ばしております。

今後もよろしくお願いいたします。それではm(_ _)m

あごさん、わざわざ返信をいただきありがとうございます。
バーチャル枠って独立した枠でしたっけ? 私は各ジャンルの中のバーチャル配信を集めたものだと思いこんでいたので8は最初から除外してました (^^;;
ところでまたジャンル変更ありましたね。
2019年2月22日現在
  公式枠 3~7  アマチュア枠 10
ということになりますね。
あごさんも今回はスムーズに対応されたんじゃないでしょうか。

これからもよろしくお願いいたします m(._.)m

セッピーナさん、こんにちは。

ジャンル変更がありましたね。アマチュアのセレクターナンバーを10へ変更しただけですが、今のところ上手く動作しています!

バーチャル枠って独立枠かと思っていました^^; 
それはまたm(_ _)m

さいきん,修正もせず,ごぶさたしておりました!

近日中に修正版をお送りします....m(__)m

おみくじ機能付きで修正中です.

お久しぶりです。こんにちは~
コメントにあるようにあごさんが独自に修正して利用されているとのことです。
私は現在(最新の記事にあるように)パフォーマンスを重視する方向で基本になる関数を作っているところです。ずいぶん時間がかかってますが (^^;;
修正版をご提供いただければありがたいです。期待しています (^^)

コメントを書く

(ウェブ上には掲載しません)

トラックバック

« CD-R簡易分光器の限界は? - 「イラストレイテッド光の実験」 | トップページ | Showroom - イベントの獲得ポイント数を取得して記録するツール »

フォト

サイト内検索

  • 記事を探されるんでしたらこれがいちばん早くて確実です。私も使ってます (^^;; 検索窓が表示されるのにちょっと時間がかかるのはどうにかしてほしいです。

新着記事

リンク元別アクセス数

  • (アクセス元≒リンク元、原則PCのみ・ドメイン別、サイト内等除く)

人気記事ランキング

  • (原則PCのみ、直近2週間)
無料ブログはココログ