Node.js로 스티밋에서 할 수 있는 것(6): tag에 맞는 최신 글 찾기

in #kr7 years ago

tag에 따른 글을 시간 순으로 찾을 수 있는 방법을 알아보자.

1. tag에 맞는 최신 글 찾는 함수

이것을 하기 위한 함수는 다음과 같다.

steem.api.getDiscussionsByCreated({
  tag: 'jjangjjangman'
  limit: 10,
  start_author: '',
  start_permlink: '',
}, function(err, result) {
    console.log(err, result);
});

이 함수의 인자는 아래와 같다.

  • tag : 찾고자 하는 tag 문자열
  • limit : 찾고자 하는 글의 최대 수
  • start_author : 최초 limit 만큼 찾은 후 다음 글을 연속해서 찾을 때 사용함. 최근에 찾은 마지막 저자
  • start_permlink : 최초 limit 만큼 찾은 후 다음 글을 연속해서 찾을 때 사용함. 최근에 찾은 마지막 글의 링크

최초에 검색을 할때는 start_author와 permlink 값은 필요가 없다. 다만 연속해서 다음 글을 찾고 싶을 때는 마지막 글의 저자와 링크를 넣어주면 된다.

함수의 인자로 길게 쓰면 보기가 좋지 않으므로 이 함수의 인자를 모아서 변수를 정의해보자.

var query = {
    "tag": "jjangjjangman",
    "limit": 10
}
steem.api.getDiscussionsByCreated( query, function (err, posts) {

코드 읽기가 한결 편해진다. 이렇게 정리한 코드는 아래와 같다.

var query = {
    "tag": "jjangjjangman",
    "limit": 10
}
steem.api.getDiscussionsByCreated( query, function (err, posts) {
    if (err == null) {
        for (var i = 0; i < posts.length; i++) {
            var str = "[" + (i + 1) + "] " + posts[i].created + ' ; ' + posts[i].author + ' ; '
                      + posts[i].permlink + ' ; ' + posts[i].title + ' ; ' + posts[i].pending_payout_value
            console.log(str)
        }
    }
    else {
        console.log(err.message.split("{}")[0])
    }
});

요즘 대세인 "jjangjjangman" 태크로 검색한 최근 글들이다.

image.png

소스코드는 아래 github 사이트에 있다.
https://github.com/multiwhs/steem-js/blob/master/app_get_new_post_with_tag.js

2. tag에 맞는 인기글(Hot), 대세글(Trend) 찾는 함수

steemit에서 볼 수 있는 Hot(인기글), Trend(대세글)를 볼 수 있는 함수도 있다. getDiscussionsByCreated와 같은 인자를 갖는다.

  • steem.api.getDiscussionsByHot(tag, limit) // Hot (인기글)
  • steem.api.getDiscussionsByTrending(tag, limit) // Trending(대세글)

3. 응용해 보기

예를들어 5일이 지났는데 보팅 받은 금액이 $1.00이하인 글 리스트를 찾는다고 가정하자. 대략적인 코드는 이렇게 구성될 것이다.

while(!end) {
   글 목록을 가져온다.
    for ( 글 목록 수만큼 ) {
          if ( (현재 일자 - 생성일자) > 5and  (현재 일자 - 생성일자) < 6.5일 ) {
                 if  (payout 예정 값  < 1 ) 
                       해당 글 출력
           if  (현재 일자 - 생성일자) >  6.5일 )  // 더 이상 보팅을 할 수 없다.
                      end = true   // while 종료
    }
     query.start_author = 마지막 글 저자
     query.start_permlink= 마지막 글 링크
}

이전 글 보기

Node.js로 ..(1) :원하는 작가들의 최신 글 리스트 받기

Node.js로 ..(2): 디버깅 방법 및 excel로 활용하기

Node.js로 ..(3) : 보팅한 이웃과 금액 보기

Node.js로 ..(4): 보팅하기

Node.js로 ..(5): 댓글달기 그리고 댓글에 보팅하기

Sort:  

정말 감사합니다! 사실 준비해서 짱짱맨 태그에 자동 보팅 해보려고 했던건데 어떻게 딱 예제를...!!! 잘 활용하겠습니다!

짱짱맨을 찾으시는 구나 하고 느낌이 딱하고 왔어요. 뉴비들 신경써 주셔서 감사합니다. 필요하신 것 있으면 함께 만들어가시지요.

오. 이런 것도 할 수 있다니. 하지만 뭔가 외계어가 나열되있는 느낌ㅜㅜ

굉장히 유용한 팁 같아요~^^
잘 사용하겠습니다!
감사합니다 :)

헉 감사합니다!!! ㅠㅠㅠㅠㅠ 진짜진짜 감사해용 ㅠㅠㅠㅠㅠ 저 완전 필요했었거든여... 히히..ㅎㅎㅎㅎ

도움이 되셨다니 다행이네요.

아. . 함수는 넘나 어려워요. . . ㄷㄷ

사실 수익이 얼마 안돼는 글에 보팅하는 걸 구현해 보고 싶었는데 이렇게 미리 예제를 보여주시니 많은 도움이 됩니다.^^