2016-02-20 66 views
0

在我的流星應用程序中,我使用youtube-dl從YouTube和其他網站下載視頻; 實際上,我可以得到關於使用代碼從服務器端的視頻下方如何使用python youtube-dl和meteorjs執行客戶端視頻下載

var exec = Meteor.npmRequire('child_process').exec; 
    var Future = Meteor.npmRequire("fibers/future"); 

Meteor.methods({ 
    'comman': function(url){ 
     this.unblock(); 
     var future = new Future(); 

     exec("youtube-dl -F " + url, function(error, stdout, stderr) { 

     future.return({stdout: stdout, stderr: stderr}); 
     }); 

     return future.wait(); 
    } 
}); 

和呼叫客戶

Meteor.call('comman', url, function(error, result){ 
     if (result.stdout) { 
      console.log('output:' + result.stdout); 

     } else { 
      console.log('error:'+ result.stderr); 
     } 
     }); 

下一個步驟是,用戶可以看到視頻的縮略圖信息,可用格式列表,能夠從客戶端下載並保存他想要的格式;

我該怎麼做? 任何想法?

感謝的對你有所幫助

回答

3

你有這個包https://atmospherejs.com/meteorhacks/npm添加到您的流星應用能夠使用NPM包。

然後使用https://www.npmjs.com/package/ytdl-core而不是使用youtube-dl的exec命令,這很容易。爲了使用它,你必須添加到packages.json在您的主文件夾:

{ 
    "ytdl-core":"0.7.9", 
} 

現在在server.js創建使用ydtl核心例子的方法。您需要使用期貨來等待響應,然後返回給客戶端:

// load future from fibers 
var Future = Meteor.npmRequire("fibers/future"); 

// load ytdl-core 
var ytdl = Meteor.npmRequire('ytdl-core'); 

Meteor.methods({ 
    // Get info from Youtube video 
    'getVideoInfo':function(videoUrl) { 
    this.unblock(); 
    var future = new Future(); 

    ytdl.getInfo(videoUrl, function(err, result) { 
     future.return(result) 
    }); 
    return future.wait(); 
    }, 
}); 

在client.js:

var videoUrl = "http://youtube.com/watch?v=I8qtzxpDM4k"; 

Meteor.call('getVideoInfo', videoUrl, function(err, result) { 
    console.log(result); 
    console.log (result.thumbnail_url); 
} 

編輯:要下載的視頻,你可以創建一個鏈接,點擊它使用JavaScript的。你必須選擇你想下載的格式。在這個例子中,我正在下載第一種可用格式。

上client.js

var videoUrl = "http://youtube.com/watch?v=I8qtzxpDM4k"; 

Meteor.call('getVideoInfo', videoUrl, function(err, result) { 
    console.log(result); 
    console.log (result.thumbnail_url); 
    downloadLink(result.formats[0].url); 
} 

downloadLink = function(link) { 
    //Create url to download from 
    var url = document.createElement('a'); 
    // Add direct video link to a clickable link 
    url.setAttribute('href', link); 
    // Add download attribute to initiate download 
    url.setAttribute('download', 'filename.mp4'); 
    // Click to start download 
    url.click(); 
} 
+0

感謝對答案;正是我正在尋找的東西。怎麼樣從客戶端下載?獲取網址後我怎麼做? – abdou

+0

,因爲你正在返回格式[0] - 這意味着格式數組中的第一個鏈接。在開始使用流星之前,您可能會想要基本的JavaScript – mhlavacka