index.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. var express = require('express');
  2. var router = express.Router();
  3. var bodyParser = require('body-parser');
  4. var expressValidator = require('express-validator');
  5. router.use(bodyParser.urlencoded({extended: true}));
  6. router.use(bodyParser.json());
  7. router.use(expressValidator());
  8. var child_process = require('child_process');
  9. var Player = require('player');
  10. /* Example player code
  11. var player = new Player('./downloads/Doodlebob - Bring Me to Life.mp3');
  12. // play now and callback when playend
  13. player.play(function(err, player){
  14. console.log('playend!');
  15. });
  16. player.play();
  17. */
  18. /* GET home page. */
  19. router.get('/', function(req, res, next) {
  20. res.render('index');
  21. });
  22. router.get('/youtube', function(req, res, next) {
  23. res.render('youtube');
  24. });
  25. router.use(expressValidator({
  26. customValidators: {
  27. dlSuccess: function(video) {
  28. // Test if the requested video is available.
  29. var youtube_dl = child_process.spawnSync('/usr/bin/youtube-dl', ['-s', video]);
  30. console.log(youtube_dl.stderr.toString());
  31. if (youtube_dl.stderr.toString()) {
  32. return false;
  33. }
  34. return true;
  35. }
  36. }
  37. }
  38. ));
  39. router.post('/youtube', function(req, res) {
  40. var video = req.body.video;
  41. req.checkBody('video', 'URL is not valid.').dlSuccess();
  42. var errors = req.validationErrors();
  43. if(errors){
  44. res.render('youtube', {
  45. errors:errors
  46. });
  47. } else {
  48. var youtube_dl = child_process.spawn('/usr/bin/youtube-dl', ['-x', '--audio-format', 'mp3', '-o', 'downloads/%(title)s.%(ext)s', video]);
  49. // TODO eval video
  50. res.render('index');
  51. }
  52. });
  53. router.get('/file', function(req, res, next) {
  54. res.render('file');
  55. });
  56. module.exports = router;