hlsmon 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #!/usr/bin/env node
  2. "use strict";
  3. var hlsmon = require('commander');
  4. hlsmon.version('0.0.0')
  5. .usage('[options] <url>')
  6. .option('-a', '--user-agent <string>', 'User-Agent')
  7. .parse(process.argv);
  8. var util = require('util'),
  9. url = require('url');
  10. var reader = require('../lib/reader');
  11. var src = process.argv[2];
  12. var sep = ';';
  13. function monitor(srcUrl) {
  14. var r = reader(srcUrl, {noData:true});
  15. var time = 0;
  16. r.on('readable', function() {
  17. var obj;
  18. while (null !== (obj = r.read())) {
  19. var meta = obj.meta;
  20. var duration = obj.segment.duration;
  21. console.log(meta.modified.toJSON() + sep + meta.size + sep + duration.toFixed(3) + sep + (meta.size / (duration * 1024/8)).toFixed(3));
  22. time += duration;
  23. }
  24. });
  25. r.once('index', function() {
  26. // wait until first index is returned before attaching error listener.
  27. // this will enable initials errors to throw
  28. r.on('error', function(err) {
  29. console.error('reader error', err.stack || err);
  30. });
  31. });
  32. r.on('end', function() {
  33. if (r.index && r.index.variant) {
  34. var newUrl = url.resolve(r.baseUrl, r.index.programs['1'][0].uri);
  35. console.error('found variant index, using: ', newUrl)
  36. return monitor(newUrl);
  37. }
  38. console.error('done');
  39. });
  40. r.resume();
  41. }
  42. monitor(src);