SMALL

출처 :

https://steemit.com/kr-dev/@codingman/steem-js-post

https://steemit.com/kr-dev/@morning/steem-js-api

 

안녕하세요, salzzak 입니다!

 

저번에는 getDiscussionsByBlog 함수를 이용해서, 그 블로그에 대한 정보들을 추출하는 걸 확인해봤는데요.

그 정보들이 어떤걸 의미하는지 좀 더 자세히 살펴보겠습니다. 

 

사실 제가 스팀잇 활동을 하면서 불편했던것이

오늘 스팀파워 & SBD로 얼마가 들어올지, 그 동안 어느정도 양의 보팅을 받았는지, 일주일동안 쌓인 보팅금액은 어느 정도인지, 지난 날동안 받은 스팀파워 & SBD 등이 잘 계산이 안되더라구요.

 

왜 주는지조차 모르겠다.

 

이미 https://steemworld.org 에서 너무 잘만들어놨지만,

이왕 관심이 생긴 거, 직접 만들어서 써보기로 했습니다.

 

사실 그림만 올리다가 뜬금없이 steem.js 라이브러리 공부 포스팅을 하는 이유입니다. ㅎㅎ;

 

댓글을 통해서도 voting을 받을 수 있지만, 우선 순수하게 내가 올린 블로그에서 받은 보팅금액만 계산 해보겠습니다!

 

steem.api.getDiscussionsByBlog

지난번에 위 함수를 통해서 여러가지 항목들을 받아올 수 있었는데요.

 

일주일이 안 지난 글과 지난 글을 각각 따왔습니다.

 

위 정보에서 내가 필요한 정보만 빼서 설명을 간단히 적어보겠습니다.

제가 이해한 토대로 적기 때문에 혹시 틀린게 있으면 알려주심 감사하겠습니다.

 

1) author & permlink : 해당 블로그의 저자와 좌표(?) 인데요.

앞으로 쓰게 될 재귀함수에서 들어가는 인자 query내에 넣어줘야 하는 값입니다.

또한 리스팀되는 글도 author를 이용하여 걸러줄 수 있습니다.

 

2) curator_payout_value : 해당 글에 보팅을 해준 사람이 "받은" 금액입니다. 

"받은" 금액이기 때문이기 때문에 일주일 지나지 않은 글에는 모두 0.000 SBD로 노출됩니다.

 

3) pending_payout_value : 저자와 큐레이터가 보상 "받을" 금액 

"받을" 금액이기 때문이기 때문에 일주일 지난 글에는 모두 0.000 SBD로 노출됩니다.

실제 글에 표시되는 보팅금액 이기도 합니다.

 

4) total_payout_value : 저자가 보상 "받은" 금액 

"받은" 금액이기 때문이기 때문에 일주일 지나지 않은 글에는 모두 0.000 SBD로 노출됩니다.

 

그래서 간단한 연관 관계를 표현하자면,

(보상을 받기 전) pending_payout_value = (보상을 받은 후) curator_payout_value + total_payout_value

이렇게 됩니다.

 

steem.api.getDiscussionsByBlog 함수 내 limit 값은 고정적으로 넣을 수 밖에 없기 때문에, 유동적인 블로그 갯수를 모두 불러오기는 어렵습니다. 그래서 어쩔수 없이 재귀함수를 써야하는데요!

 

이 부분은 스팀잇 @codingman 님께서 쓰신 글

https://steemit.com/kr-dev/@codingman/steem-js-post

을 따라하면서 구현했습니다 ㅠ 감사합니다.

 

지난 블로그에서 

query = {"tag": "블로그 계정 명", "limit": 결과 노출 갯수}

이렇게 쓰인다고 말씀드렸었는데, "start_author"과 "start_permlink" 인자를 더 추가 해줄 수 있었습니다.

 

steem.api.getDiscussionsByBlog로 읽어온 마지막 글의 author & permlink 를 각각 "start_author"과 "start_permlink" 에 넣어주면, 해당 글을 기준으로 다시 limit 설정 값만큼 읽어 올 수 있게 됩니다!

 

재귀함수 구현 부분은 @codingman님께서 너무 잘 써주셨기 때문에... 위 URL에서 보시는 것이 더 좋을 것 같습니다.

아래는 이름만 바꾼 @codingman님 코드 입니다.

 

Ctrl C / V

 

실행해보니 정상적으로 제가 쓴 글들을 가지고 오고 있습니다.

 

생각보다 엄청 많진 않네요

 

 

저 같은 경우는 위 코드 출력 부분에 제가 알고 싶은 payout_value들을 추가해봤습니다. 

 

for (var i = 0; i < result.length - 1; i++) { 

console.log(err, result[i].title);

console.log(err, result[i].pending_payout_value);

console.log(err, result[i].curator_payout_value);

console.log(err, result[i].total_payout_value);

}

 

payout_value 들이 잘 노출되고 있네요.

 

어차피 html에 직접 노출시킬 생각이기 때문에, 웹페이지에 이 정보들을 직접 띄워보겠습니다.

 

for (var i = 0; i < result.length - 1; i++) { //10개의 post중 마지막 post는 출력 안함

document.write("<b>Title : " + result[i].title + "<br> </b>");

document.write("pending_payout_value : " + result[i].pending_payout_value + "<br>");

document.write("curator_payout_value : " + result[i].curator_payout_value + "<br>");

document.write("total_payout_value : " + result[i].total_payout_value + "<br>");

document.write("<br>");

 

}

 

웹 상에도 잘 노출되고 있습니다!

 

지금까지는 제 계정 중심으로 썼는데요, 처음 웹페이지 접근 시 사용자 계정을 입력받은 뒤, 해당 계정의 정보들을 노출시켜 보겠습니다.

 

var tag = prompt("확인하고 싶으신 계정을 입력해주세요!");

query.tag = tag;

 

prompt 명령어를 이용해 입력값을 account에 받은 뒤, query.tag에 넣어줍니다.

위 코드를 함수를 직접 실행 시키는 allBlog(); 위에 추가해줍니다.

 

이제 실행을 시켜보면

계정명을 입력해봅니당

 

@june0620 님의 아이디를 무단으로 넣어보겠습니다.

 

june0620님의 글들

 

다행히 잘 노출되고 있습니다! 가독성이 엄청 떨어지지만...!

다음에는 이 값들을 이용해서 좀 더 의미있는 정보들로 만들어보겠습니다! 

 

 

지금 만든 페이지는 http://www.salzzakart.com/steem/test_1.html 에서 확인 가능하십니다!

 

인스타그램 : https://www.instagram.com/salzzak_art/

스팀잇 : https://steemit.com/@salzzakart

 

 

LIST

+ Recent posts