Skip to content

Commit 9710db6

Browse files
committed
downloader update
1 parent af66da2 commit 9710db6

File tree

4 files changed

+153
-21
lines changed

4 files changed

+153
-21
lines changed

audio_data_analyzer.js

Lines changed: 0 additions & 11 deletions
This file was deleted.

bootstrap.js

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,23 @@ var audioDataAnalyzer = new AudioDataAnalyzer();
66

77
var trackDownloader = new TrackDownloader();
88

9-
trackDownloader.writeTrackToDisc(415208);
109

1110

12-
13-
var values = audioDataAnalyzer.getValues();
14-
15-
console.log(values);
11+
var temporaryTracksDirecotry = './downloaded_tracks';
12+
var format = 'ogg';
13+
14+
trackDownloader.writeTrackToDisc(415208, function writeTrackCallback(error) {
15+
16+
if (!error) {
17+
18+
var values = audioDataAnalyzer.getValues();
19+
20+
console.log(values);
21+
22+
} else {
23+
24+
console.log(error);
25+
26+
}
27+
28+
}, temporaryTracksDirecotry, format);

library/directoryManager.js

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
// nodejs fs
2+
var fs = require('fs');
3+
4+
/**
5+
*
6+
* @returns {directoryManagerConstructor}
7+
*/
8+
var directoryManager = function directoryManagerConstructor() {
9+
10+
};
11+
12+
/**
13+
*
14+
* @param {type} directory
15+
* @param {type} callback
16+
* @returns {undefined}
17+
*/
18+
directoryManager.prototype.exists = function directoryExistsFunction(directory, callback) {
19+
20+
console.log('directoryExists: ' + directory);
21+
22+
if (callback !== undefined) {
23+
24+
// async exists
25+
fs.exists(directory, function(exists) {
26+
27+
callback(false, exists);
28+
29+
});
30+
31+
} else {
32+
33+
fs.existsSync(directory);
34+
35+
}
36+
37+
};
38+
39+
/**
40+
*
41+
* @param {type} directory
42+
* @param {type} callback
43+
* @returns {undefined}
44+
*/
45+
directoryManager.prototype.create = function createDirectoryFunction(directory, callback) {
46+
47+
console.log('createDirectory: ' + directory);
48+
49+
if (callback !== undefined) {
50+
51+
fs.mkdir(directory, 0666, function(error) {
52+
53+
if (!error) {
54+
55+
callback(false);
56+
57+
} else {
58+
59+
callback(error);
60+
61+
}
62+
63+
});
64+
65+
} else {
66+
67+
fs.mkdirSync(directory, 0666);
68+
69+
}
70+
71+
};
72+
73+
module.exports.directoryManager = directoryManager;

library/track_downloader.js

Lines changed: 62 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
// nodejs fs
2+
var fs = require('fs');
3+
4+
// nodejs http
5+
var http = require('http');
6+
7+
var DirectoryManager = require('./directoryManager').directoryManager;
8+
9+
var directoryManager = new DirectoryManager();
10+
111
/**
212
*
313
* @returns {downloaderConstructor}
@@ -12,18 +22,59 @@ var downloader = function downloaderConstructor() {
1222
* on disc
1323
*
1424
* @param {type} trackId
25+
* @param {type} callback
1526
* @param {type} temporaryTracksDirecotry
1627
* @param {type} format
1728
* @returns {undefined}
1829
*/
19-
downloader.prototype.writeTrackToDisc = function(trackId, temporaryTracksDirecotry, format) {
30+
downloader.prototype.writeTrackToDisc = function(trackId, callback, temporaryTracksDirecotry, format) {
2031

2132
if (temporaryTracksDirecotry === undefined) {
2233

23-
temporaryTracksDirecotry = '';
34+
temporaryTracksDirecotry = './downloaded_tracks';
2435

2536
}
2637

38+
directoryManager.exists(temporaryTracksDirecotry, function directoryExistsCallback(error, exists) {
39+
40+
if (!error) {
41+
42+
if (!exists) {
43+
44+
directoryManager.create(temporaryTracksDirecotry, createDirectoryCallback = function(error) {
45+
46+
if (!error) {
47+
48+
downloadFile(trackId, callback, temporaryTracksDirecotry, format);
49+
50+
} else {
51+
52+
callback(error);
53+
54+
}
55+
56+
});
57+
58+
} else {
59+
60+
downloadFile(trackId, callback, temporaryTracksDirecotry, format);
61+
62+
}
63+
64+
} else {
65+
66+
callback(error);
67+
68+
}
69+
70+
});
71+
72+
};
73+
74+
var downloadFile = function downloadFileFunction(trackId, callback, temporaryTracksDirecotry, format) {
75+
76+
console.log('downloadFile: ' + trackId);
77+
2778
if (format === undefined) {
2879

2980
format = 'ogg';
@@ -42,10 +93,12 @@ downloader.prototype.writeTrackToDisc = function(trackId, temporaryTracksDirecot
4293
default:
4394
throw 'unsupported track format';
4495
}
96+
97+
var trackFileName = trackId + '.' + format;
4598

46-
var trackPath = temporaryTracksDirecotry + '/' + trackId + '.' + format;
99+
var trackPath = temporaryTracksDirecotry + '/' + trackFileName;
47100

48-
//
101+
// request options
49102
var options = {
50103
hostname: 'storage-new.newjamendo.com',
51104
port: 80,
@@ -74,7 +127,7 @@ downloader.prototype.writeTrackToDisc = function(trackId, temporaryTracksDirecot
74127

75128
writeStream.end();
76129

77-
moveTrack();
130+
callback(false);
78131

79132
});
80133

@@ -85,6 +138,8 @@ downloader.prototype.writeTrackToDisc = function(trackId, temporaryTracksDirecot
85138
console.log('writeTrackToDisc, http request error: ' + error.message);
86139

87140
writeStream.end();
141+
142+
callback(error);
88143

89144
});
90145

@@ -97,6 +152,8 @@ downloader.prototype.writeTrackToDisc = function(trackId, temporaryTracksDirecot
97152
console.log('writeTrackToDisc writeStream, error: ' + error);
98153

99154
writeStream.end();
155+
156+
callback(error);
100157

101158
});
102159

0 commit comments

Comments
 (0)