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
SMALL

안녕하세요. salzzak 입니다!

 

저번에는 스팀 간단한 예제만 확인해봤는데,

https://github.com/steemit/steem-js 에 있는 함수들을 써보려고 합니다.

 

우선 첫번째로 steem.api.getTrendingTags 를 사용해보겠습니다.

 

steem.api.getTrendingTags(afterTag, limit, function(err, result) { console.log(err, result); });

 

제가 잘못찾는건지 모르겠지만, 함수 안에 들어가 있는 인자에 대한 설명이 따로 없어서 ㅠㅠ 단어만 보고 유추를 해야했습니다.

 

afterTag 는 들어가는 태그 이하로 인기있는 (영향력있는) 태그를 보여줍니다.

limit 는 몇 개 까지 보여주는지 설정값입니다.

 

afterTag 를 '' 로 입력 시 가장 영향력 있는 Tag 1위부터 보여주게 됩니다.

 

afterTag를 '' 로 입력
6위에 kr 이 당당히 자리매김하고 있네요.

dtube가 현재 가장 영향력있는 Tag 인가보네요!

이어서 afterTag 를 'kr' 로 입력시에는 ...

 

아까 전 결과에서 kr 부터 노출

 아까 전 결과의 kr 부터 Tag 랭킹 리스트가 노출되고 있습니다.!

 

 

두번째로 steem.api.getDiscussionsByBlog 를 사용해보겠습니다.

steem.api.getDiscussionsByBlog(query, function(err, result) { console.log(err, result); });

역시나 query 에 대한 설명이 없어서, 구글링을 하던 도중,

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

 

위와 같은 형태로 query를 입력해야 된다는 걸 알았습니다.

(@morning 님 스팀잇 참고했습니다. 감사합니다.)

 

제 아아디 salzzakart를 넣어봤습니다.

위와 같이 입력 후 실행 시...

 

제가 최근에 포스트한 글 내역이 10개 노출되고 있습니다! (리스팀한 글도 포함되네요.)

첫번째 글 ▶를 눌러서 자세히 봐보겠습니다.

 

하나의 글을 펼쳐보았을 때의 모습

여러가지 항목들로 나누어져있는데요, 필요한 정보만 빼서 확인하고 싶었습니다.

 

함수 내에 

 

for( n in result ){

console.log(err, result[n]."원하는 항목");

}

 

형식으로 입력하면 원하는 정보만 추출할수 있다는걸 알았습니다. 저같은 경우는 title을 넣어봤습니다.

(@codingman 님 스팀잇 참고했습니다. 감사합니다.)

 

result 안에 담겨지는 모든 정보들

 

제가 최근에 올린 글 10개 제목만 노출이 되고 있습니다.

 

 

이제 제가 원하는 항목을 뽑아낼수 있다는 걸 알게되어서 속이 후련하네요 ㅎㅎ

다른 분들은 너무 쉽게 하셨겠지만 ㅠㅠ 저는 여기까지도 꽤 시간이 걸렸네요.

 

다음에는 각 항목들이 무엇을 뜻하고 어떻게 매칭 되는지 더 알아보겠습니다!

 

 

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

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

 

 

 

 
LIST

+ Recent posts