以下からダウンロード可能です。」ソースの使い方はプログラム冒頭のコメントを御覧ください。//Sep.環境に依存するするものはプログラム冒頭のconstで定義しました。**重要**//Sep.特にUser_Data_Dirについてはプログラムを起動する前に--user-data-dirオプションで指定して//Sep.Chromeを起動して、SHOWROOMにログインしてSHOWROOMにの視聴環境を整えておくことが必要です。ところに注意していただければと思います。方はその後大幅に改良を行ってリス活に活用中ですが、現在「初心に戻って」一から書き直しているところです。最近書いている一連の記事をご覧になればなんとなくわかっていただけると思いますが、1.機能ごとに関数を作って提供し、どなたでも自分の必要とする機能をもったプログラムを容易に構成できるようにする。2.ハードコーディングは極力避ける(といっても相手がSHOWROOMという生きたシステムなので限度がありますが)3.agoutiを使う必然性がない部分はgoquery(やencoding/jason)を利用して負荷軽減を図る。4.GOの言語仕様の特性を活用し、またできるだけパッケージを利用した作りとする。5.機能の使いやすさ・わかりやすさを優先し、星集め・星投げを非同期で動作させるような作りはいったん排除する。いうような方針でやってます。配信ルームリストの取得(ソース)現在、SHOWROOMでの自動星集め/種集め、さらには自動星投げ/種投げツール(両方合わせれば自動三周ツール)の作成に必要な要素について記事を書いています。公式、アマチュアそれぞれのジャンルの求め方について書いたので、今回はそれぞれのジャンルにある配信ルームのリストを作ることになります。ようにブラウザを開かずJSONあるいはHTMLをスクレイピングする方法に比較すると若干パフォーマンス的に劣る方法になります。ポイント遷移グラフ公開所)からONLIVEのリストを取得するだけであれば、SRのトップページが開かれた瞬間にhttps://t.co/vZMxQaHTouから全ジャンルのONLIVEルームリスト(UPCOMINGリストは除く)を取得しているようですので、この返りのJSONをごにょごにょすればブラウザ要らず、かもです。2019というご指摘をいただいています。要するにこの配信ルームのリストを作る機能もブラウザを開かずに(つまりgo/agoutiではなくJSONのパースだけで)作れるということです。そちらの方がパフォーマンス的に有利かと思いますが、すでにこの関数を作りかけていたのでひとまずこちらから公開することにします。JSON版もそのうち作って公開したいと思います。プログラム自体それほど大きなものではありませんし、コメントも入れてあるので記事の最後にそのまま公開することにします。ShowroomLibを作ってそれにおさめています(パッケージはビルドしたあとインストールが必要です。GetCategoryList(...とします。最近多少はGO言語やagoutiの使い方がわかってきたので、今までよりはだいぶマシなプログラムになっていると思います(あくまで"今までより"ですが)セレクターはこれまでブラウザの開発ツールでCSSセレクターをコピーしてきてそれを使っていたのですが、かならずしも意図したものにならない場合があり、今回はhtmlの構造を考えながらセレクターを作っています。)個別に取得するのとたいして違いはないのですが、今回は後ろからデータを取得しなければならないケースがあり最初に個数が必要なので。)していますが、機能ごとにソースを分けてない上にふつうは必要にならないような機能を盛り込んだこともあってソースの可読性がよろしくないです。ハードコーティングされた部分もありますし、コメントの位置や量にムラがあります。そこでそのあたりを改善して自分の目的にあったプログラムを作っていただけるようにしようと、機能ごとに関数を分けて一つずつ記事にしている次第です。方もすでにあしかっぴ(@pf_ashika)さんから視聴ボーナス対応版のソースをいただいているので、公開予定ですが、私のソースをベースにされているため同じ課題が残っています。自動星集め・星投げ・カウントツール」など)公式枠はジャンルの3番目から7番目、アマチュア枠は10番目というようなハードコーディングをやってるからそうなるわけで、今回はオンライブ画面から公式枠とアマチュア枠のジャンルがどこにあるか調べてジャンル位置のリストを作る関数を作ってみました。ジャンルの追加、削除、位置の変更に対し、何もしなくてもあるいはデータファイルを変更するだけで対応できるようになります。記事の最後にソースをおいておきます。利用法を含めかなり細かい説明を入れたつもりなので、記事での説明は省略します。それからいつジャンルのリストを作業をするかが問題です。星集めのプログラムの中で一日に一回やっておけばじゅうぶんみたいに思えるのですが、これまでの仕様変更(ジャンル枠の変更)は16時とかずいぶん思い切った(?)時間に行われたことがありましたから星集めの都度やっておいた方が無難かも....なお、こういうをやってると規約上どうなんだろう、という問題が発生するわけですが、それはご自身で考えてください。すべてアウト(にできるぞ!)、とも受け取れる規約ですが、私の場合は、ここまではセーフ、ここから先はグレー、という線を自分なりに想定してやってます。「Librahack」SHOWROOMのエンジニアさんは優秀そうだから、こんなことはないと思いますが、お互い気をつけましょう。イベントでの配信者の獲得ポイント数を取得する(改良版)」と同じように書き直してみました。結果がリストの場合はSliceとして受け渡すという方針にしました。ソースはそれほど長くないのでこの記事の最後にそのまま掲載します。関数のインターフェースやサンプルプログラムの実行方法についてはコメントにあります。wもっとも貢献ポイントランキングがあればかならず原因アカウントを特定できるわけでもありませんが。ポイント遷移グラフ公開所)によれば実際はもっと"複雑怪奇"なケースもあるようです。サンプルプログラムの実行結果じつはさらに(もうちょっとだけ)パフォーマンスがいい方法があるようです。公開に問題なさそうであれば、そのうち記事にします。イベントの獲得ポイント数を取得して記録するツール」に書いたのですが、いろいろと問題がありました。問題なのはパフォーマンスの悪さです。いちいちブラウザで画面を開きそこからデータを読み取っているわけですから、手間(時間)がかかりますし、負荷も大きくなるからとうぜんです。(おそらくこれに関連して)長時間動作させると不安定になってくるという問題もありました。スクレイピング)」に書いたような方法があります。ブラウザを使わないので動作がかなり軽くなるはずです。当初この方法で動作を改善しようと思っていたのですが、じつはもっと効果的な方法があります。SHOWROOMには配信者の情報を得るためのAPIが提供されているようです。★1289」に紹介されています(紹介と言ってもAPIだけがぽつんと書かれているだけです)このAPIは配信者のID(room_id)を指定して実行すると参加イベントや獲得ポイント数、順位などの配信者の情報がJSONで取得できます。GO言語にはJSONをパースするためのライブラリーがありますのでそれを使えば比較的簡単に必要な情報を得ることができます。Go言語でJSONに泣かないためのコーディングパターン」の記事を参考にさせていただきました。--------ソースはこの記事の末尾に添付します。このプログラムはRoomList.txtにリストされたファイル群から配信者さんのリストを読み込み各々の配信者についてイベントでの獲得ポイントや順位を取得して配信者リスト単位で結果をファイルに追記するということを指定された時間間隔で行うというものです。ところで、それほど大きな処理ではないです。一点注意すべき点があります。使用しているSHOWROOMのAPIから戻されるJSONの構造は(少なくとも)二種類あることです。これはレベルイベントとランキングイベントで結果の構造が異なるためです。ソースではランキングイベントの構造を想定して対象データを取得しに行き、もしデータを取得できなければ、レベルイベントの構造を想定して取得する、ということをやっています。スクレイピング)」を参考にしていただければと思います(配信者の情報はどちらも同じ型(slice)にしてあるのでそのまま組み込めるはず)取得した獲得ポイントデータをデータベースに格納して保存するような場合は毎回イベント参加者リストを取得した方が合理的でしょう。(2)SHOWROOMの特定イベントの(一部)配信者さんの獲得ポイントの推移、配信者さん間の差、日々の獲得ポイント等をグラフにしたものです。この記事にあるデータやそれから作成したグラフは自由に使っていただいてかまいません。グラフをダウンロードしてツィートするとか、Excelのシート(もとデータ)をダウンロードして分析し、それを公開する等です。連絡していただく必要もありません。獲得ポイント等のデータの記録・提供、グラフの作成等のご要望があれば御相談に応じます。イベント名(必要なデータによっては配信者さんのルーム名)をお知らせください。グラフは不要、獲得ポイントの数値データだけほしい、とか、グラフをカスタマイズしてほしい、というようなご要望にもできるだけおこたえしたいと思います。イベントでの配信者の獲得ポイント数を取得する(改良版)」で取得したものです。記事を探されるんでしたらこれがいちばん早くて確実です。検索窓が表示されるのにちょっと時間がかかるのはどうにかしてほしいです。駒田京伽さんリンク元別アクセス数(アクセス元≒リンク元、原則PCのみ・ドメイン別、サイト内等除く)パーツを表示するにはJavaScriptを有効にして下さい。Seppina1@niftyが提供する無料ブログはココログ!プロフィール携帯URL携帯にURLを送るRSSを表示する。