Javascript Node.js缩短的url

Javascript Node.js缩短的url,javascript,node.js,npm,Javascript,Node.js,Npm,大约5天前,我刚刚开始学习编写代码,我正在努力实现的是一个rssfeed-to-twitter脚本,它可以发布一个缩短的url,而不是完整的网站/文章提要url。我发现一个名为TinyURL的node.js模块可以做到这一点,但我很难让它正常工作。以下是完整的脚本: var simpleTwitter = require('simple-twitter'); var fs = require('fs'); var http = require('http'); http.createServe

大约5天前,我刚刚开始学习编写代码,我正在努力实现的是一个rssfeed-to-twitter脚本,它可以发布一个缩短的url,而不是完整的网站/文章提要url。我发现一个名为TinyURL的node.js模块可以做到这一点,但我很难让它正常工作。以下是完整的脚本:

var simpleTwitter = require('simple-twitter');
var fs = require('fs');
var http = require('http');

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type' : 'text/plain'});
    res.end('RSS Twitter Bot\n');
}).listen(5693);

var timeInterval = 300000; // run every 30m
var timerVar = setInterval (function () {runBot()}, timeInterval); 

function runBot(){
    var lastCompleted = Date.parse(new Date(0));
    console.log(lastCompleted);

    try {
        var lastcompletedData = fs.readFileSync('./lastCompleted.json', 'utf8');
        var timeData = JSON.parse(lastcompletedData);

        var lastCompletedFromFile = Date.parse(new Date(timeData.lastCompleted));
        if ( isNaN(lastCompletedFromFile) == false ) {
            lastCompleted = lastCompletedFromFile;
        }

    } catch (e) {
        console.log(e);
    }

    fs.readFile('./config.json', 'utf8', function (err, data) {
        if (err) console.log(err); // we'll not consider error handling for now
        var configData = JSON.parse(data);

        console.log(configData);

        var twitter = new simpleTwitter( configData.consumerKey //consumer key from twitter api
                                 , configData.consumerSecret //consumer secret key from twitter api
                                 , configData.accessToken //access token from twitter api 
                                 , configData.accessTokenSecret //access token secret from twitter api 
                                 , 3600); 

        var dateNow = Date.parse(new Date());
        var FeedParser = require('feedparser');
        var request = require('request');

        var req = request(configData.feedUrl);
        var feedparser = new FeedParser();

        req.on('error', function (error) {
            console.log(error);
        });

        req.on('response', function (res){
            var stream = this;

            if (res.statusCode != 200 ) return this.emit('error', new Error('Bad status code'));
            stream.pipe(feedparser);
        });

        feedparser.on('error', function(error) {  
            console.log(error);
        });

        feedparser.on('readable', function() { 
            var stream = this;
            var meta = this.meta;

            var item;

            while (item = stream.read()) {
                var itemDate = Date.parse(item.date);

                //check to not publish older articles
                if (itemDate > lastCompleted){
                    var titleLength = item.title.length;
                    var itemTitle = item.title;
                    var itemLink = item.link;

                    if (titleLength > 100) {
                        itemTitle = itemTitle.substring(0, 100);
                    }

                    twitter.post('statuses/update'
                                , {'status' : itemTitle + ' ' + itemLink + " " + configData.tags}
                                , function (error, data) {
                                    console.dir(data);
                                });

                    console.log(itemTitle + ' ' + item.link + configData.tags);
                }
            }

            //TO KNOW WHEN FROM TO START POSTING
            var dateCompleted = new Date();
            console.log('loop completed at ' + dateCompleted);

            var outputData = {
              lastCompleted : dateCompleted
            }

            var outputFilename = './lastCompleted.json';

            fs.writeFile(outputFilename, JSON.stringify(outputData, null, 4), function(err) {
                if(err) {
                  console.log(err);
                } else {
                  console.log("JSON saved to " + outputFilename);
                }
            }); 
        });
    });
}
这是TinyURL node.js模块

var TinyURL = require('tinyurl');

TinyURL.shorten('http://google.com', function(res) {
    console.log(res); //Returns a tinyurl 
});
更改<代码>'http://google.com“string to
itemLink var
工作正常,并按预期在终端中打印

TinyURL.shorten(itemLink, function(res) {
    console.log(res); //Returns a tinyurl 
});
我想要实现的是:

twitter.post('statuses/update', {'status' : itemTitle + ' ' + tinyurlLink + " " + configData.tags}

如何将响应转换为例如
var tinyurlLink
以替换
itemLink
var?任何帮助都将不胜感激

正如@zerkms从
TinyURL内部发送tweet所建议的那样。缩短
成功了

更好。。也可以接受这个建议,我现在就试试看。顺便说一句,演示被破坏了。它更好,因为它是你写的,对吧…@Pewpew你不能“替换”一个变量,你需要在回调中发送一个tweet请求到
TinyURL。缩短
@zerkms知道我该怎么做吗?我试过别人的建议,但这不是我真正需要的。我已经在这上面花了两天时间,但还没有放弃!