Last active
December 26, 2015 07:09
-
-
Save saiten/7113103 to your computer and use it in GitHub Desktop.
destiny公式のアカウントを監視して、ベータコードっぽいものをtweetしたら登録してみるスクリプト
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# destiny beta code getter | |
twitter = require 'ntwitter' | |
Spooky = require 'spooky' | |
async = require 'async' | |
# | |
# config | |
# | |
twitterToken = | |
consumer_key: 'CONSUMER_KEY' | |
consumer_secret: 'CONSUMER_SECRET' | |
access_token_key: 'ACCESS_TOKEN' | |
access_token_secret: 'ACCESS_TOKEN_SECRET' | |
psnAccount = | |
username: 'USERNAME' | |
password: 'PASSWORD' | |
targetScreenName = "DestinyTheGame" | |
# | |
# challenge redeem | |
# | |
challengeRedeem = (account, code, callback) -> | |
console.log "challenge code : #{code}" | |
config = | |
child: | |
transport: 'http' | |
casper: | |
pageSetting: | |
loadImages: false | |
loadPlugins: false | |
userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5)' | |
logLevel: 'debug' | |
verbose: true | |
waitTimeout: 10000 | |
spooky = new Spooky config, (err) -> | |
throw err if err? | |
# access bungie site | |
spooky.start 'http://www.bungie.net/en/User/coderedemption', -> | |
loggedIn = @evaluate -> $("input#text_code:visible").length > 0 | |
if loggedIn | |
@echo "already logged in" | |
@click "div#alert" | |
@bypass 6 | |
# psn login | |
spooky.then -> @clickLabel "Sign In" | |
spooky.then -> @clickLabel "PlayStation Network" | |
spooky.waitForPopup 'Psnid' | |
spooky.withPopup 'Psnid', [{ account: account }, -> | |
@fill 'form#mainform', { | |
j_username: account.username | |
j_password: account.password | |
}, true | |
] | |
# input code | |
spooky.waitUntilVisible 'input#text_code' | |
spooky.then [{ code: code }, -> @sendKeys 'input#text_code', code ] | |
spooky.then -> @click "a.btn_submitCode" | |
spooky.then [{ code: code }, -> @wait 1000, => @capture code + '.png' ] | |
spooky.run -> @emit 'finish' | |
spooky.on 'error', (err, stack) -> | |
console.log err | |
spooky.on 'console', (line) -> | |
console.log line | |
spooky.on 'finish', -> | |
callback() | |
# | |
# watch timeline | |
# | |
watchTimeline = (twitterToken, account, targetScreenName) -> | |
twit = new twitter twitterToken | |
twit.stream 'user', (stream) -> | |
stream.on 'data', (data) -> | |
if data?.text? and data?.user?.screen_name is targetScreenName | |
console.log "#{data.user.screen_name} : #{data.text}" | |
if codes = data.text.match /[A-Z0-9]{3}-[A-Z0-9]{3}-[A-Z0-9]{3}/g | |
# shuffle codes | |
random = codes.map Math.random | |
codes.sort (a,b) -> random[a] - random[b] | |
console.log "codes : #{codes}" | |
async.eachSeries codes, (code, callback) -> | |
challengeRedeem account, code, callback | |
stream.on 'end', (response) -> | |
console.log response | |
stream.on 'destroy', (response) -> | |
console.log response | |
# | |
# start | |
# | |
watchTimeline twitterToken, psnAccount, targetScreenName |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
わー、見過ごしてました。すいません。
もしかしたらnodeのバージョンが少し古いのかもしれないですね。
参考までに自分の環境は↓の感じです。
またbetaコード配布されるかもしれないので参考までに。