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 975B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. console.trace(err);
  36. cb();
  37. })
  38. .on("end", () => {
  39. ws.close();
  40. cb(subFile);
  41. });
  42. }).end();
  43. });
  44. }