SteamアイドルマシンとしてのRaspberry Pi

Raspberry Piの所有者と所有者の多くがSteamのアカウントを持っていることは確かです。Steamのライブラリには、このSteamで販売されているかなりの数のゲームが購入されています。 しかし、時々、これらの同じゲームをプレイする時間や欲求がないことがありますが、ゲームのリストに美しいゲームアイコンが存在すること以外は、少なくともそれらから利益を得たいと思います。







これは何のためですか?





Steamカードとバッジの詳細については、 こちらをご覧ください



そして、Raspberry Piはどこにありますか?



Steamカードをアイドル状態にする方法はたくさんあります。 各メソッドには長所と短所があります。 ただし、それらのほとんどすべてに一定のSteamクライアントが必要であるため、稼働時間の問題に不便が生じます。 また、一部のアイドル方式では、ユーザーがカードを当てるゲームを切り替える必要があります。 ここでは、大きな計算能力を必要とせず、すべてのカードが落ちるまで24時間365日動作する完全に自動化された方法を検討します。 このため、ラズベリーパイは私たちにとって素晴らしいです! さらに、これはミニコンピューターからほこりを払い落とし、私たちのために働く機会を与えるもう一つの理由です。



この方法の利点と可能性について少し説明します。





準備する



Raspberry PiでOSをインストールして構成していること、およびそれを操作するために必要なすべてのものを想定しています。 ハブには、Raspberry Piの詳細な準備について説明した十分な記事が既にあるため、ここでは分析しません。



Raspberry Piの構成に役立つ記事の一部:





node.jsとそのコンポーネントをインストールします



Steamアイドルマシンには、node.jsと、そのためのnode-steamrequestforeverなどのいくつかのモジュールが必要です 。 しかし、まず最初に。



まず、node.jsの最新バージョンをコンパイルしてインストールする必要があります。



wget http://nodejs.org/dist/v0.12.5/node-v0.12.5.tar.gz tar xvf node-v0.12.5.tar.gz cd node-v0.12.5 ./configure make sudo make install
      
      





コンパイルには時間がかかります。 Raspberry Pi 2では、オーバークロックなしで、コンパイルに約4〜5時間かかりました。

次に、すべてがうまく機能しているかどうかを確認します。



 node -v npm -v
      
      





node.jsの正常なインストールの確認



次に、必要なnode.jsモジュールをインストールします。



 sudo npm install steam@0.6.8 -g sudo npm install request -g sudo npm install forever -g
      
      





やった! Node.jsの準備が整いました。



スクリプトをインストールして実行する



プロジェクトのフォルダーを作成し、シンボリックリンクとスクリプト自体をそこに配置します。



 cd ~ sudo mkdir steamidle cd steamidle sudo ln -s /usr/local/lib/node_modules ~/steamidle sudo nano steamidle.js
      
      





そしてそこに挿入します:



 var args = process.argv.slice(2); var fs = require('fs'); var steam = require('steam'); var request = require('request'); var sentryFile = 'sentryfile'; var sentry = undefined; if (fs.existsSync(sentryFile)) { sentry = fs.readFileSync(sentryFile); } function updateSentry (buffer) { console.log(buffer); fs.writeFile(sentryFile, buffer); } function createIdler(userinfo, timer){ var bot = new steam.SteamClient(); userinfo.bot = bot; bot.on('loggedOn', function() { canTrade = false; console.log('Logged in ' + userinfo.username); }); bot.on('sentry', updateSentry); bot.on('error', function(e) { console.log(userinfo); console.log(e); }); function startIdle(){ var req = request.defaults({jar: userinfo.jar}); req.get('http://steamcommunity.com/my/badges/', function (error, response, body) { if (body) { var b = body.match(/<a class="btn_green_white_innerfade btn_small_thin" href="steam:\/\/run\/(\d+)">/); if (b) { console.log(userinfo.username); console.log("Idling game " + b[1]); bot.gamesPlayed([b[1]]); } } var now = new Date(); console.log(now.getHours()+':'+now.getMinutes()+':'+now.getSeconds()); }); } bot.on('webSessionID', function (sessionID) { userinfo.jar = request.jar(), userinfo.sessionID = sessionID; bot.webLogOn(function(cookies) { cookies.forEach(function(cookie) { userinfo.jar.setCookie(request.cookie(cookie), 'http://steamcommunity.com'); userinfo.jar.setCookie(request.cookie(cookie), 'http://store.steampowered.com'); userinfo.jar.setCookie(request.cookie(cookie), 'https://store.steampowered.com'); }); userinfo.jar.setCookie(request.cookie("Steam_Language=english"), 'http://steamcommunity.com'); startIdle(); setInterval(function(){startIdle();}, timer); }); }); bot.logOn({ accountName: userinfo.username, password: userinfo.password, authCode: userinfo.authCode, shaSentryfile: sentry }); } createIdler({ username: ' ', // password: ' '//, // //authCode: ' ' //  }, (10*60*1000));
      
      





コードの最後の行に注意してください。 ここにSteamアカウントの詳細を入力する必要があります。 最初に、ユーザー名とパスワードのみを入力する必要があります。 次に、ファイルを保存して実行します。



 node steamidle.js
      
      





プログラムはログインしようとしますが、成功しません。SteamGuardのためauthCodeが必要だからです。 authCodeなしでログインしようとすると、Steamはそれを受信ボックスに送信します。 メールにコードが記載された手紙を見つけて、スクリプトにコードを書きます。 以下のコンマと行のコメントを外し、ファイルを保存して、スクリプトを再度実行します。



スクリプトが正常に実行された結果



すべて正しく行った場合、上の画像とほぼ同じことがわかります。 おめでとうございます! Steamアイドルマシンは正常に機能しています。 次に、スクリプトファイルを再度開いて、それがどのようになっていたか、カンマとauthCode行をコメントアウトします。 次回の開始時にそれらは必要なくなります。 アカウントデータは、 sentryfileファイルのプロジェクトと共にフォルダーに保存されます。



ところで、スクリプトを実行するには、foreverモジュールを使用するのが最善です。

 forever start steamidle.js
      
      







もう一つあります...



残念ながら、スクリプトにバグがあり、修正できませんでした。 数時間後、スクリプトが続行され、ゲームの切り替えが突然停止します。 これの原因-私は理解していませんでした。 この問題に対する非常に野barな解決策を思いつきました。 2時間ごとにスクリプトを再起動するようにcronを設定します。



 crontab -e
      
      





そこに行を入力してください:



 0 */2 * * * /usr/local/bin/node /usr/local/bin/forever restart ~/steamidle/steamidle.js
      
      





おわりに



最後に、この方法は他の方法と同様に安全であると言いたいと思います。 もちろん、可能性のあるリスクを否定するのは愚かなことですが、それにもかかわらず、アカウントブロッキングの単一のケースが理由により記録されていません。 私の記事への貴重な追加や、もしあれば間違いの指摘にとても満足しています。



ご清聴ありがとうございました!



All Articles