Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

torrent-streamer.js 1.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. var httpStream = require("./http-stream");
  2. var torrentStream = require("torrent-stream");
  3. var mediarx = /\.(mp4|mkv|mov|avi|ogv)$/;
  4. var tmpdir = process.cwd()+"/tmp";
  5. var engine;
  6. var conf;
  7. exports.init = function(app, _conf) {
  8. conf = _conf;
  9. }
  10. exports.stream = function(magnet, cb) {
  11. if (engine)
  12. return engine.destroy(() =>
  13. { engine = null; exports.stream(magnet, cb) });
  14. engine = torrentStream(magnet, {
  15. tmp: conf.tmpdir
  16. });
  17. engine.on("ready", () => {
  18. var file = null;
  19. engine.files.forEach(f => {
  20. if (mediarx.test(f.name) &&
  21. (file == null || f.length > file.length)) {
  22. file = f;
  23. }
  24. });
  25. if (file == null)
  26. return cb("No media file in the torrent");
  27. file.select();
  28. httpStream.readStreamCreator = function(options) {
  29. console.log("creating stream with", options);
  30. var rs = file.createReadStream(options);
  31. rs.filesize = file.length;
  32. rs.filename = file.name;
  33. rs.on("close", () => console.log("stream closing"));
  34. return rs;
  35. }
  36. cb();
  37. });
  38. }
  39. exports.stop = function() {
  40. if (engine != null)
  41. engine.destroy();
  42. }