对于类作业,我需要创建一个类似 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-这首歌,“我想要那样”
最佳答案
嗯..奇怪的赋值指令 - 从文本文件中读取,其中文本文件只是一个“命令”和一个参数。这是作业所要求的,还是你解释的方式?在我看来,这个应用程序作为命令行界面更有意义,您可以只向它提供歌曲名称,而不是更新 .txt 文件然后调用该应用程序。
无论如何,假设您想要这样
,就像您所描述的那样,您的函数调用实际上永远不会传递歌曲名称 - 请注意,您的函数调用会在不带参数的情况下触发 myPlaylist() :
案例“spotify-this-song”:
myPlayList();
中断;
并且 myPlaylist 不接受任何参数:
函数 myPlayList(){
如果(!搜索标题){
searchTitle = '标志';
}
这个 if
语句将始终评估为 true,因为您从未传入 searchTitle。请注意,您定义的顶部 var searchTitle = process.argv[3];
可能表明该应用程序应该设计为命令行界面。
关于node.js - 使用 Node.JS 从文本文件发出命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42143726/