2017-02-09 2 views
1

Для назначения класса мне необходимо создать программу Siri, которая принимает команду и аргумент и возвращает некоторые данные из API или в одном конкретном случае, читает из текстового файла и выполняет команду в этом файле для получения данных по определенной песне. Я понимаю, как читать файлы с помощью модуля FS, но я не понимаю, как заставить его фактически использовать то, что возвращается, чтобы сделать его командой и выполнить (что по сути является myPlayList (я хочу, чтобы это так). код до сих пор разделен на «Выбрать случаи и функции», а также на то, что находится в текстовом файле. Это мой первый пост, и я понял, что весь код лучше даст контекст того, что происходит. Спасибо за ваше время и помощь .Использование Node.JS для выдачи команды из текстового файла

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-это песня, "I Want It That Way"

ответ

0

Хм .. странно assignm инструкции - чтение из текстового файла, где текстовый файл является только «командой» и параметром. это то, что запрашивалось задание, или то, как вы интерпретировали? мне кажется, что это приложение будет иметь больше смысла в качестве интерфейса командной строки, где вы можете просто подписать его имена песен, а не обновлять TXT-файл, а затем вызвать приложение.

в любом случае, если предположить you want it that way, что вы описали, ваш вызов функции фактически никогда не передавая название песни - обратите внимание, что функция срабатывает вызов myPlaylist() без аргументов:

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

и myPlaylist не принимать какие-либо аргументы:

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

это if утверждение всегда будет оценивать истинно, так как вы н когда-либо проходите в searchTitle. обратите внимание, что вверху, где вы определяете var searchTitle = process.argv[3];, возможно, указывает, что приложение должно быть спроектировано как интерфейс командной строки.

+0

Да, первоначальная функция myPlayList - это взять аргумент командной строки того, какой трек вы хотите искать в Spotify API. Если команда выдается без названия песни, по умолчанию выполняется поиск знака. Последний случай - это мое внимание. Когда это вызывается, он должен заглянуть в текстовый файл и выпустить команду, которая находится там, где должен быть поиск трека, который я хочу так. Я не хотел публиковать фактические инструкции по назначению, но может, если это сделает вещи более ясными. – Matthew

+0

вправо - см. Мой предыдущий комментарий - ваша функция myPlayList не может принимать параметр, отличный от аргумента командной строки. поэтому ваше решение состоит в том, чтобы изменить его, чтобы сделать это – Conan

+0

, если это так, чем мне кажется, что он все еще пытается вернуться к этому файлу и выдает команду внутри. Вот инструкции о том, что должно быть сделано ... node liri.js spotify-this-song '<название песни здесь>' * Приведенная ниже информация о песне в вашем окне terminal/bash * Исполнитель (ы) * Название песни * Если песня не указана, ваша программа по умолчанию будет * «Знак» от Ace of Base – Matthew

Смежные вопросы