Node.js 스터디 #4 - 보팅 대상 계정 리스트를 만들고, 각 계정의 최근 포스트에 보팅하기
오늘은 보팅 대상 계정 리스트를 만들고, 각 계정의 최근 포스트에 보팅하는 프로그램을 만들어 보았습니다. 저는 주로 자바, 코틀린 언어를 사용하는데, 자바스크립트는 여전히 낯선 언어지요. 약간의 적응이 필요했지만, 그리 어렵지 않게 코드를 만들어볼 수 있었습니다. 내일부터는 이 프로그램으로 자동 보팅을 시도해볼 수 있을 거 같습니다.
vote_authors.js
오늘 작성한 코드를 아래와 같이 공유합니다.
var steem = require('steem');
var voter = "hive-131263";
var wif = "포스팅키를 여기에 복사하세요."
var limit = 3 // 읽을 포스트 최대 개수
var authors = [
"dorian-lee",
"dorian-dev",
"dorian-mobileapp",
"jini-zzang"
]
// account 계정의 블로그 포스트들을 구하는 함수.
// callback 파라메터는 아래의 getBlogCallback 함수를 대입한다.
function getBlog(account, entryId, limit, callback) {
steem.api.getBlog(account, entryId, limit, function (err, data) {
callback(err, data, account)
})
}
// 블로그의 1번째 포스트에 보팅 실행
// 보팅 실패하면 그걸로 끝.
// 향후 추가 과제: 보팅 실패시 다음 포스트에 보팅
function getBlogCallback(err, posts, account) {
if (err != null) {
console.log(`@${account} 블로그를 로딩할 수 없습니다.`)
return
}
else if (posts.length == 0) {
return
}
for (let i = 0; i < posts.length; i++) {
if (posts[i].blog != posts[i].comment.author) { // 리스팀 포스트는 패스!
continue
}
vote(posts[i].blog, posts[i].comment.permlink, 10000, voteCallback)
break
}
}
// 보팅 실행
// callback 파라메터는 아래의 voteCallback 함수를 대입한다.
function vote(author, permlink, weight, callback) {
steem.broadcast.vote(
wif,
voter,
author,
permlink,
weight,
function (err, data) {
callback(err, author, permlink)
}
)
}
// 보팅 실행 결과를 콘솔에 출력 (성공 또는 실패)
function voteCallback(err, author, permlink) {
if (err != null) {
console.log(`@${author}/${permlink} 보팅 실패`)
return
}
console.log(`@${author}/${permlink} 보팅 성공`)
}
// 보팅은 이 함수로 시작
function runVoting() {
for (let i = 0; i < authors.length; i++) {
setTimeout(
() => {
getBlog(authors[i], 0, 10, getBlogCallback)
},
5000 * (i + 1)
)
}
}
function main() {
runVoting()
}
main()
지난 포스트
참고 포스트
Sort: Trending
[-]
successgr.with (74) 3 years ago