使用Node.JS从文本文件

时间:2017-02-09 17:58:41

标签: node.js command-line-interface fs

对于类赋值,我需要创建一个类似Siri的程序,该程序接受命令和参数并从API返回一些数据,或者在一个特定情况下,从文本文件中读取并在该文件中执行命令获取特定歌曲的数据。我理解如何使用FS模块读取文件,但我不理解如何让它实际使用返回的内容使其成为命令和执行(本质上是myPlayList(我想要那样)。下面是到目前为止的代码,分为选择案例和函数以及文本文件中的内容。这是我的第一篇文章,并认为整个代码更好地给出了关于发生了什么的背景。谢谢你的时间和帮助。

var keys = require("./keys.js") 
var twitter = require("twitter");
var omdb = require("request");
var spotify = require("spotify");
var fs = require("fs");

var liriCommand = process.argv[2];
var searchTitle = process.argv[3];

var twitterKeys = keys.twitterKeys;

var twitterUser = new twitter({
    consumer_key: twitterKeys.consumer_key,
    consumer_secret: twitterKeys.consumer_secret,
    access_token_key: twitterKeys.access_token_key,
    access_token_secret: twitterKeys.access_token_secret
});
//console.log(twitterUser); okay keys working

//Switch cases to call function based on liriCommand entered.
switch(liriCommand) {
    case "my-tweets":
    myTweets();
    break;

    case "spotify-this-song":
    myPlayList();
    break;

    case "movie-this":
    myMovie();
    break;

    case "do-what-it-says":
    randomPick();
    break;
}

//Function for pulling in last 20 tweets

function myTweets(){
    twitterUser.get('search/tweets', {q: 'burgeoningbaker', count: 20}, function(error, tweet, response) {
        if(error){
            console.log(error);
        }else{
            console.log(tweet);
        }
    });
};

//Function for pulling in artist, song name, link to song and album with song via Spotify
function myPlayList(){
    if (!searchTitle){
        searchTitle = 'The Sign';
    }

    spotify.search({type: 'track', query: searchTitle}, function(err, data){
        if (err){
            console.log('Error occurred: ' + err);
            return;
        }
        //Handle Data
        var albumTrack = data.tracks.items;

        for (i=0; i < albumTrack.length; i++){
        console.log("Artist: " + albumTrack[i].artists[i].name);
        console.log("Album Title: " + albumTrack[i].album.name);
        console.log("Spotify Link: " + albumTrack[i].preview_url);
        console.log("Track Title: " + albumTrack[i].name);
        // } else if (!data && !err){
        // myPlaylist('The Sign');
        }
    };

};

//Function for using request to get OMDB movie information from movie object
// Move Title, Year of release, Rating, Country, Language, Plot, Actors, Rotten Tomato Rating, URL

function myMovie(){};

// Function to fire off if typed do what it says

function randomPick(){
    fs.readFile("random.txt", "UTF-8", function(error, data){
        if (error){
            console.log(error);
        }
            console.log(data);

    });
};

这是文本文件内容

spotify-this-song,&#34;我想要那样&#34;

1 个答案:

答案 0 :(得分:0)

嗯..奇怪的赋值指令 - 从文本文件中读取文本文件只是一个'命令'和一个参数。这是作业所要求的,还是您解释的方式?在我看来,这个应用程序作为一个命令行界面更有意义,你可以在其中提供歌曲名称,而不是更新.txt文件,然后调用应用程序。

无论如何,假设您描述的you want it that way,您的函数调用实际上从未传递歌曲名称 - 请注意您的函数调用不带参数触发myPlaylist():

case "spotify-this-song": myPlayList(); break;

和myPlaylist不带任何参数:

function myPlayList(){ if (!searchTitle){ searchTitle = 'The Sign'; }

if语句将始终评估为true,因为您从未传入searchTitle。请注意,您定义var searchTitle = process.argv[3];的顶部可能表示该应用程序应设计为命令行界面。