Node.js 스터디 #5 - 보팅 대상 계정 리스트를 만들고, 각 계정의 최근 포스트에 보팅하기 (BLURT 버전)
지난 포스트(#4)에서 구현한 것을 이번 포스트에서는 BLURT 버전으로 구현해 보았습니다. 당분간 아래 코드를 활용하여 매일 블러트 보팅을 실시할 예정입니다. 블러트 자동 포스팅이 필요하신 분들께서는 아래 코드를 참고하셔도 좋습니다.
var blurt = require("@blurtfoundation/blurtjs");
// 보팅할 계정 데이터
var voter = "dorian-lee"
var wif = "포스팅키"
// 보팅 대상 계정 리스트
var authors = [
"dorian-lee",
"dorian-dev",
"jini-zzang"
]
// 포스트 로딩에 활용할 쿼리
var query = {
"tag": authors[0], // 보팅 대상 계정
"limit": 5 // 읽을 포스트 최대 개수
}
// account 계정의 블로그 포스트들을 구하는 함수.
// callback 파라메터는 아래의 getDiscussionsByBlogCallback 함수를 대입한다.
function getDiscussions(account, callback) {
query.tag = account
blurt.api.getDiscussionsByBlog(query, function (err, data) {
callback(err, data, account)
})
}
// 블로그의 1번째 포스트에 보팅 실행
// 보팅 실패하면 그걸로 끝.
// 향후 추가 과제: 보팅 실패시 다음 포스트에 보팅
function getDiscussionsByBlogCallback(err, posts, account) {
if (err != null) {
console.log(`@${account} 블로그를 로딩할 수 없습니다.`)
return
}
else if (posts.length == 0) {
console.log(`@${account} 블로그에 포스트가 없습니다.`)
return
}
for (let i = 0; i < posts.length; i++) {
if (query.tag != posts[i].author) { // 리스팀 포스트는 패스!
continue
}
vote(posts[i].author, posts[i].permlink, 10000, voteCallback)
return
}
console.log(`@${account} 블로그에 보팅 가능한 포스트가 없습니다.`)
}
// 보팅 실행
// callback 파라메터는 아래의 voteCallback 함수를 대입한다.
function vote(author, permlink, weight, callback) {
blurt.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} 보팅 실패`)
console.log(err)
return
}
console.log(`@${author}/${permlink} 보팅 성공`)
}
// 보팅은 이 함수로 시작
function runVoting() {
for (let i = 0; i < authors.length; i++) {
setTimeout(
() => {
getDiscussions(authors[i], getDiscussionsByBlogCallback)
},
5000 * (i + 1)
)
}
}
function main() {
runVoting()
}
main()
마치며...
내일은 2개 이상의 계정으로 스팀 보팅할 수 있는 코드를 만들어볼까 합니다. 코드가 좀 더 복잡해지겠지요... ^^
지난 포스트
- #4 - 보팅 대상 계정 리스트를 만들고, 각 계정의 최근 포스트에 보팅하기
- #3 - 특정 스팀잇 계정의 블로그 포스트 로딩
- #2 - 스팀잇 포스트 올려보기
- #1 - 스팀 보팅 해보기
참고 포스트 - @ayogom
- Nodejs 가 무엇인지 그리고 어떻게 설치 하는지?
- [NodeJS] API 사용 법 1편 스팀 라이브러리 설치
- [NodeJS] API 사용 법 2편 보팅을 해볼까?
- [NodeJS] API 사용 법 3편 포스팅을 해볼테다!
You got Lottery 1st prize STEEM! Thanks for your upvoting. We are gathering STEEM delegation. You receive additional rewards for your delegation.http://steemit.email/
You got Lottery 2nd prize STEEM! Thanks for your upvoting. We are gathering STEEM delegation. You receive additional rewards for your delegation.http://steemit.email/
You got Lottery 2nd prize STEEM! Thanks for your upvoting. We are gathering STEEM delegation. You receive additional rewards for your delegation.http://steemit.email/