You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

subtitle-finder.js 1.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. var OpenSubtitles = require("opensubtitles-api");
  2. var fs = require("fs");
  3. var http = require("http");
  4. var urllib = require("url");
  5. var subs = new OpenSubtitles({ useragent: "mmpc-media-streamer" });
  6. var conf;
  7. exports.init = function(app, _conf) {
  8. conf = _conf;
  9. }
  10. exports.find = function(filesize, filename, cb) {
  11. if (!conf.subtitles)
  12. return cb();
  13. var subFile = conf.tmpdir+"/subs.srt";
  14. try {
  15. fs.unlinkSync(subFile);
  16. } catch (err) {}
  17. subs.search({
  18. sublanguageid: conf.subtitles,
  19. filesize: filesize,
  20. filename: filename
  21. }).then(subtitles => {
  22. var sub = subtitles[conf.subtitles];
  23. if (!sub || !sub.url)
  24. return cb();
  25. try {
  26. var ws = fs.createWriteStream(subFile);
  27. } catch (err) {
  28. console.trace(err);
  29. cb();
  30. }
  31. http.request(urllib.parse(sub.url), res => {
  32. res.pipe(ws);
  33. res
  34. .on("error", err => {
  35. notify("Error finding subtitles", err.toString());
  36. console.trace(err);
  37. cb();
  38. })
  39. .on("end", () => {
  40. ws.close();
  41. setTimeout(() => cb(subFile), 500);
  42. });
  43. }).end();
  44. });
  45. }