gpt4 book ai didi

node.js - 使用 Express API 和 ytdl 下载音频文件

转载 作者:行者123 更新时间:2023-12-02 18:42:51 25 4
gpt4 key购买 nike

我正在尝试使用 ytdl-core 模块 ( https://github.com/fent/node-ytdl-core ) 下载 Youtube 视频音频。

我使用 Express 编写了一个 API,它可以让我通过 URL 下载音频:

app.get('/api/downloadYoutubeVideo', function (req, res) {
res.set('Content-Type', 'audio/mpeg');

var videoUrl = req.query.videoUrl;
var videoName;

ytdl.getInfo(videoUrl, function(err, info){
videoName = info.title.replace('|','').toString('ascii');
res.set('Content-Disposition', 'attachment; filename=' + videoName + '.mp3');
});

var videoWritableStream = fs.createWriteStream('C:\\test' + '\\' + videoName); // some path on my computer (exists!)
var videoReadableStream = ytdl(videoUrl, { filter: 'audioonly'});

var stream = videoReadableStream.pipe(videoWritableStream);

});

问题是,当我调用此 API 时,我从服务器收到 504 错误。

我希望能够将此下载的音频保存在我的本地磁盘上。

如果有帮助,我们将不胜感激。谢谢

最佳答案

由于某种原因,videoName 未定义,所以它弄乱了我的功能......这是经过一些更改并将目标路径添加为查询变量后的正确代码。

app.get('/api/downloadYoutubeVideo', function (req, res) {  
var videoUrl = req.query.videoUrl;
var destDir = req.query.destDir;

var videoReadableStream = ytdl(videoUrl, { filter: 'audioonly'});

ytdl.getInfo(videoUrl, function(err, info){
var videoName = info.title.replace('|','').toString('ascii');

var videoWritableStream = fs.createWriteStream(destDir + '\\' + videoName + '.mp3');

var stream = videoReadableStream.pipe(videoWritableStream);

stream.on('finish', function() {
res.writeHead(204);
res.end();
});
});
});

关于node.js - 使用 Express API 和 ytdl 下载音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41092293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com