无法使用Nodejs从服务器下载.mp3音频文件

时间:2016-08-03 06:55:16

标签: javascript node.js express mean-stack

我正在尝试为字典中的每个单词下载.mp3文件。我从unix机器的/usr/share/dict/words文件中获取了479831个单词。对于没有音频发音的单词,响应是404页面;对于正确单词,它是响应代码为200的.mp3文件。我可以下载一些文件,但没有适当的蒸汽。我尝试使用下面的代码下载的那些文件中没有音频,但我在两个不同的时间收到2个不同的错误。

第一个错误:

 events.js:160
          throw er; // Unhandled 'error' event
          ^
    Error: socket hang up
        at TLSSocket.onHangUp (_tls_wrap.js:1092:19)
        at TLSSocket.g (events.js:286:16)
        at emitNone (events.js:91:20)
        at TLSSocket.emit (events.js:185:7)
        at endReadableNT (_stream_readable.js:975:12)
        at _combinedTickCallback (internal/process/next_tick.js:74:11)
        at process._tickCallback (internal/process/next_tick.js:98:9)
     PS E:\Development\Node\webscraping>

第二个错误:有时Javascript堆内存不足。

var http=require('https');
        var fs = require('fs');
        var express = require('express');
        var app = express();
        var dir='./AudioPronunciationOfWords'
        if (!fs.existsSync(dir))
            fs.mkdirSync(dir);
        fs.readFile('./wordsList.txt','utf8',function(error,content){
            var listOfWords=content.split('\n');
            var subList=listOfWords.slice(0,1000)       
            var baseUrl='https://ssl.gstatic.com/dictionary/static/sounds/de/0/';   
            subList.forEach(function(word){         
                var url=baseUrl;    
                url+=word+'.mp3';       
                setTimeout(function () {
                    var req=http.get(url, function(res) {
                        var status=res.statusCode;
                        console.log(status)
                        if (status===200) {
                            var filename=word+'.mp3';
                            var file = fs.createWriteStream(dir +'/'+ filename);
                            res.on('data', function(data) {
                                    file.write(data);
                            })
                            .on('end', function() {
                                    file.end();              
                                })
                            .on('error',function(err){
                                console.log(err)
                            })
                        }
                        else
                            return;                 
                    });
                    req.end();
                },10000)

    app.listen('8081')
    console.log('Magic happens on port 8081');
    exports = module.exports = app;

我哪里错了?我应该这样做吗?我可以使用此脚本下载但不正确的一些单词。

0 个答案:

没有答案