steemit DB를 이용하여 Cash out에 임박한 포스트 조회하기steemCreated with Sketch.

in #kr7 years ago

안녕하세요.
오늘은 steemit DB를 활용하여 원하는 글을 조회하는 방법을 포스팅하겠습니다.

설명을 위하여 아래의 요구를 예시로 정하겠습니다.

"나는 메인 태그가 KR인 포스트 중에서 Cash out에 임박한 글을 확인하고 싶다.
왜냐하면 좋은 글임에도 불구하고 보상이 낮은 글을 확인하고 보팅할 것이다."

상기 요구에서 원하는 포스트는 다음과 같습니다.

메인 태그가 KR이다.
Cash out에 임박하다.

여기서 "Cash out에 임박하다."는 명확하지 않습니다. 임박하다에 제 임의로 명확성을 부여하겠습니다.

임박한 글은 Cash out 시간이 12시간 이내에 완료된다.

자, 그럼 아래와 같이 정리될 수 있습니다.

메인 태그가 KR이다.
Cash out이 12시간 이내에 완료된다.

즉, 메인 태그가 KR인 포스트에서 Cash out이 12시간 내에 완료되는 글을 찾으면 됩니다.
코드로 설명드리면 다음과 같습니다.

1:  var MongoClient = require('mongodb').MongoClient;
2:  var url = 'mongodb://steemit:[email protected]:27017/SteemData'
3:  var now = new Date();
4:  var max = new Date(); 
5:  max.setHours(now.getHours()+12);
6:
7:  MongoClient.connect(url, function(err, db) {
8:  if (err) throw err;
9:  var query = { category: "kr",
10:      cashout_time: {$gt:now, $lt:max}
11:  }
12:    
13:  db.collection("Posts").find(query).sort({created:-1}).toArray(function(err, result) {
14:    if (err) throw err;
15:    console.log(result.length);
16:    console.log(result[0]);
17:    console.log(result[result.length -1]);
18:    db.close();
19:  });
20: });

라인 1. node에서 mongoDB를 위한 mongodb 모듈을 로드합니다.
라인 2. steemit mongoDB 연결 URL을 입력합니다. 자세한 내용은 클릭
라인 3. 현재 시간을 저장한다.
라인 5. 12 시간 후의 시간을 저장한다.
라인 7. DB와 연결한다.
라인 8. 연결에 문제가 발생하면, 에러를 반환한다.
라인 9~10. DB로 전송할 query 를 정의한다. query는 다음과 같다.

메인 태그가 KR이다.
Cash out이 12시간 이내에 완료된다.

라인 15. 조건에 해당하는 글이 몇개인지 출력한다.
라인 16. 조건에 해당하는 첫 번째 글을 출력한다.
라인 17. 조건에 해당하는 마지막 글을 출력한다.
라인 18. DB 연결을 종료한다.

이상으로 steemit DB를 활용하여 원하는 글을 조회하는 방법에 대한 포스팅을 마치겠습니다.
나중에 시간되면 재미난 보팅 봇을 또 만들어보겠습니다.
만들고 난 후엔 많은 분들이 이용할 수 있도록 공개하겠습니다.

Sort:  

db 연결 말고는 web api 로 block 에 연결할 수 있는 방법은 없을까요?

확인을 안해봤습니다, 찾아보고 기회 되면 포스팅하겠습니다.

네 수고 많으십니다 ㅎㅎ 감사합니다.

웹사이트에 바로 적용 가능할것 같습니다.^^ 좋은정보 감사드립니다~

봇을 node.js 로 만드는군요! api 레퍼런스를 어디서 찾을수 있나요? ^^;

Coin Marketplace

STEEM 0.20
TRX 0.14
JST 0.030
BTC 67629.79
ETH 3231.81
USDT 1.00
SBD 2.65