2017-02-09 4 views
1

クラスの割り当てでは、コマンドと引数をとり、APIからデータを返すSiriのようなプログラムを作成する必要があります。テキストファイルから読み込み、そのファイル内のコマンドを実行して特定の曲のデータを取得します。私はFSモジュールを使ってファイルを読み込む方法を理解していますが、実際にはコマンドを実行して実行する方法を理解することはできません。これまでのコードをSelect CasesとFunctionsに分割し、テキストファイルに何が入っているのかを知ることができました。これは私の最初の投稿であり、全体のコードが何が起こっているのかをよりよく理解できると思っていました。 。 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); 

    }); 
}; 

この

答えて

0

うーん...奇妙なassignm "私はそのようにしたい"、テキストファイルの内容

Spotifyは、この曲ですent命令 - テキストファイルが「コマンド」とパラメータだけであるテキストファイルからの読み取り。これは、割り当てが要求したもの、またはあなたが解釈した方法ですか?このアプリケーションは、.txtファイルを更新してアプリケーションを呼び出すのではなく、曲名を入力するだけのコマンドラインインターフェイスとしては理にかなっているようです。とにかく

、あなたが説明you want it that wayを想定して、あなたの関数の呼び出しは、実際に曲の名前渡すことはありません - 引数なしであなたの関数呼び出しはmyPlaylistを(発射ことに気づくの):

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

とmyPlaylistにはありません任意の引数を取る:

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

このif文は常にN君以来、trueに評価されますこれまでにsearchTitleを通過します。おそらくvar searchTitle = process.argv[3];を定義する上の部分は、アプリケーションがコマンドラインインターフェイスとして設計されていることを示している可能性があります。

+0

はいmyPlayListの初期機能は、Spotify APIで検索するトラックのコマンドライン引数を取ることです。コマンドが曲のタイトルなしで発行された場合は、デフォルトでThe Signを検索します。最後のケースは私の焦点です。それが呼び出されると、テキストファイルを調べてそこにあるコマンドを発行し、私がそれを望むトラックを検索する必要があります。 私は実際の割り当て手順を掲載したくありませんでしたが、事態をより明確にすることができます。 – Matthew

+0

right - 私の前のコメントを参照してください - あなたのmyPlayList関数は、コマンドライン引数以外のパラメータを取ることができません。あなたの解決策は、そのようにするために修正することです。 – Conan

+0

これが当てはまる場合は、そのファイルにアクセスしてコマンドを発行することに戻ります。ここでは何をすべきかに関する指示があります... node liri.js spotify-this-song '<曲名はここ>' *端末/ bashウィンドウの曲に関する次の情報が表示されます *アーティスト *曲の名前 *曲が指定されていない場合は、プログラムはデフォルトで * Ace of Base – Matthew

関連する問題