zhuheyang
10/4/2017 - 10:19 AM

创见tweets命令,该命令接受一个搜索参数,然后将最近的相关话题的推文展示出来

创见tweets命令,该命令接受一个搜索参数,然后将最近的相关话题的推文展示出来

//NodeJS为此提供了request.get方法,调用TwitterAPI(使用http.request)可将以上代码重写为如下形式:
//最直观的改变是最后不用调用end方法了,并且从语义上更能看出这是要获取数据
//因为这里的API是要接收一个method参数,其默认值为GET,所以这种方法更简单有效.
http.get({
  host: 'search.twitter.com',
  path: '/search.json?' + qs.stringify({ q: search})
}, function(res){
  var body = '';
  res.setEncoding('utf8');
  res.on('data', function(chunk) {
    body += chunk;
  });
  res.on('end', function() {
    var obj = JSON.parse(body);
    obj.results.forEach(function (tweet) {
      console.log('  \033[90m' + tweet.txt + '\033[90m');
      console.log('  \033[94m' + tweet.from_user + '\033[39m');
      console.log('--');
    });
  });
})
var qs = require('querystring')
  , http = require('http');

var search = process.argv.slice(2).join(' ').trim()

if(!search.length) {
  return console.log('\n  Usage: node tweets <search term>\n');
}

console.log('\n searching for: \033[96m' + search + '\033[39m');

http.request({
  host: 'search.twitter.com',
  path: '/search.json?' + qs.stringify({ q: search})
}, function(res){
  var body = '';
  res.setEncoding('utf8');
  res.on('data', function(chunk) {
    body += chunk;
  });
  
  res.on('end', function() {
    var obj = JSON.parse(body);
    obj.results.forEach(function (tweet) {
      console.log('  \033[90m' + tweet.txt + '\033[90m');
      console.log('  \033[94m' + tweet.from_user + '\033[39m');
      console.log('--');
    });
  });
}).end()

//首先检查是否提供了搜索关键字,如果没有提供会显示帮助信息
//之后会执行搜索操作
//Twitter会响应对应的JSON数据,再end事件处理器中会对该数据进行迭代,并将结果显示给用户