Advertisement
Guest User

Untitled

a guest
Jan 10th, 2016
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.75 KB | None | 0 0
  1. process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
  2.  
  3. var Client = require("ftp");
  4. var async = require("async");
  5. var fs = require("fs");
  6. var c = new Client();
  7. var start_dir = "/XVID-DE/";
  8. var index_dir = [];
  9. var dl_dir = "C:\\Users\\upper\\Desktop\\MOVIES\\";
  10. c.on('ready', function() {
  11.  
  12. c.list(start_dir, function(err, list) {
  13. if (err) throw err;
  14. var _FILES = [];
  15. var list = [list[8]];
  16. async.forEachOfLimit(list, 1, function(value, key, cb) {
  17. var name = value.name;
  18. if (name == "." || name == "..")
  19. return cb();
  20.  
  21. var subDir = start_dir + name;
  22.  
  23. c.list(subDir, function(err, list1) {
  24. if (err)
  25. return cb(err);
  26.  
  27. var subDirLength = list1.length;
  28. var complete = false;
  29. var svfExist = false;
  30. var isMovieFile = false;
  31. var imdb_id = false;
  32.  
  33. var movieFile = false;
  34. var nfoFile = false;
  35. var rarArchive = [];
  36. for (var i = 0; i < subDirLength; i++) {
  37. var _name = list1[i].name.toLowerCase();
  38. if (isset(_name, ".sfv")) {
  39. svfExist = true;
  40. }
  41. if (isset(_name, "complete") && isset(_name, "100")) {
  42. complete = true;
  43. }
  44. if (isset(_name, ".avi") || isset(_name, ".mov") || isset(_name, ".mkv")) {
  45. isMovieFile = true;
  46. movieFile = subDir + "/" + list1[i].name;
  47. }
  48. if (isset(_name, ".nfo")) {
  49. nfoFile = subDir + "/" + list1[i].name;
  50. }
  51. if (/(\.r\d*)/.test(_name) || isset(_name, ".rar")) {
  52. rarArchive.push(subDir + "/" + list1[i].name);
  53. }
  54. }
  55. var statement = false;
  56.  
  57. if (isMovieFile && nfoFile) {
  58. statement = true;
  59. console.log(movieFile);
  60.  
  61. c.get(nfoFile, function(err, stream) {
  62. console.log("_GET_NFO");
  63. var string = ''
  64. stream.on('data', function(buffer) {
  65. var part = buffer.toString();
  66. string += part;
  67. });
  68.  
  69.  
  70. stream.on('end', function() {
  71. var imdb = string.match(/\/(tt\d*)\//);
  72. if (imdb != null || typeof imdb[1] != "undefined") {
  73. var imdb_id = imdb[1];
  74.  
  75. var subRlsFolder = dl_dir + name.trim()
  76. fs.mkdir(subRlsFolder, function(err) {
  77. var __name = movieFile.split("/");
  78. var subName = __name[__name.length - 1];
  79. console.time("SINGLE_FILE_DL");
  80. c.get(movieFile, function(err, stream) {
  81.  
  82. if (err) throw err;
  83.  
  84. stream.once('close', function() {
  85. console.timeEnd("SINGLE_FILE_DL");
  86. cb();
  87. console.log(subName + " DONE")
  88. });
  89. stream.pipe(fs.createWriteStream(subRlsFolder + "\\" + subName));
  90. });
  91. });
  92. } else {
  93. cb();
  94. }
  95. });
  96. });
  97. }
  98. if (complete && svfExist && nfoFile) {
  99. statement = true;
  100.  
  101. console.log("COMPLETE");
  102. console.log(nfoFile);
  103. c.get(nfoFile, function(err, stream) {
  104. console.log("_GET_NFO");
  105. var string = ''
  106. stream.on('data', function(buffer) {
  107. var part = buffer.toString();
  108. string += part;
  109. });
  110.  
  111.  
  112. stream.on('end', function() {
  113.  
  114. var imdb = string.match(/\/(tt\d*)\//);
  115. if (imdb != null || typeof imdb[1] != "undefined") {
  116. var imdb_id = imdb[1];
  117. _FILES = {
  118. rlsName: name,
  119. isSingleFile: movieFile,
  120. archive: rarArchive,
  121. nfoFile: nfoFile,
  122. imdb: imdb_id
  123. };
  124. var subRlsFolder = dl_dir + _FILES.rlsName.trim()
  125. fs.mkdir(subRlsFolder, function(err) {
  126. if (err)
  127. return cb("mkdir do not work");
  128. console.time("dbsave");
  129. async.forEachOfLimit(_FILES.archive, 4, function(val, key, callback) {
  130. var __name = val.split("/");
  131. var subName = __name[__name.length - 1];
  132.  
  133. if (key % 4 == 0) {
  134. c.get(val, function(err, stream) {
  135. if (err) throw err;
  136.  
  137. stream.once('close', function() {
  138. callback();
  139. console.log(subName + " DONE")
  140. });
  141. stream.pipe(fs.createWriteStream(subRlsFolder + "\\" + subName));
  142. });
  143. } else {
  144. var cl = new Client();
  145. cl.on('ready', function() {
  146. cl.get(val, function(err, stream) {
  147. if (err) throw err;
  148.  
  149. stream.once('close', function() {
  150. cl.end();
  151. callback();
  152. console.log(subName + " DONE")
  153. });
  154. stream.pipe(fs.createWriteStream(subRlsFolder + "\\" + subName));
  155. });
  156. });
  157. cl.connect(conObj);
  158. }
  159.  
  160. }, function(err) {
  161. console.log("WE ARE DONE");
  162. console.timeEnd("dbsave");
  163. return cb();
  164. });
  165. });
  166.  
  167. } else {
  168. cb("NO_IMDB");
  169. }
  170.  
  171. });
  172.  
  173.  
  174. });
  175.  
  176. }
  177.  
  178. if (!statement) {
  179. cb();
  180. }
  181. });
  182.  
  183. }, function(err) {
  184. console.log("DAT FINAL CALLBACK");
  185. if (err) {
  186. return console.log(err);
  187. }
  188. c.end();
  189. console.log("PENIS");
  190.  
  191.  
  192. });
  193. });
  194. });
  195.  
  196. function isset(val, check) {
  197. if (val.indexOf(check) > -1)
  198. return true;
  199. return false;
  200. }
  201. var conObj = {
  202. secure: true,
  203. host: "IP.AD.RE.SS",
  204. port: PORT,
  205. user: "username,
  206. password: pass
  207. };
  208. c.connect(conObj);
  209.  
  210.  
  211. function checkSubdir(dir, c, callback) {
  212. c.list(dir, function(err, list) {
  213. var subDirLength = list.length;
  214. var toDl = false;
  215. for (var i = 0; i < subDirLength; i++) {
  216. if (list[i].name.toLowerCase().indexOf(".sfv") > -1)
  217. toDl = true;
  218. }
  219. callback(dir, toDl);
  220. });
  221. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement