-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtorrent_parse.js
57 lines (44 loc) · 1.42 KB
/
torrent_parse.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
var Q = require('q');
var readTorrent = require('read-torrent');
module.exports = {
parseTorrent: function(torrent) {
var deferred = Q.defer();
var torrent_count = 0;
var data_content = {};
var torrent_content = [];
//dont bother checking if magnet link
if(torrent.indexOf("magnet:?xt=urn:") > -1) {
//we can't check magnet links for multiple files so skip
deferred.resolve(false);
} else {
readTorrent(torrent,function(err, torrent) {
if(torrent && typeof torrent.files !== undefined){
torrent.files.forEach(function(torrent_files) {
torrent_content.push(torrent_files.name);
var StreamFormats = ['.mp4','.mkv', '.avi'],
length = StreamFormats.length;
while(length--) {
//figure out how many streamable files there are
if (torrent_files.name.indexOf(StreamFormats[length])!=-1) {
if (torrent_files.name.indexOf("sample") == -1) {
torrent_count++;
}
}
}
});
} else {
//single file torrent
deferred.resolve(false);
}
if(torrent_count > 1){
//more than one streamable files
deferred.resolve(torrent_content);
} else {
//single file torrent
deferred.resolve(false);
}
});
}
return deferred.promise;
}
};