From 43572002f4af7685b6c2b458703e4cc62b7e4db9 Mon Sep 17 00:00:00 2001 From: Brian Mathews Date: Fri, 18 Dec 2015 16:46:40 -0800 Subject: [PATCH 001/102] WIP --- .editorconfig | 8 + .eslintrc | 27 ++ app.js | 97 ----- app/Controller.js | 255 ++++++++++++++ app/Server.js | 67 ++++ app/app.js | 51 +++ app/engines/Chromecast.js | 0 app/engines/HTML5Video.js | 43 +++ app/front/components/Icon.jsx | 57 +++ app/front/index.html | 17 + app/front/index.jsx | 82 +++++ app/front/styles/main.css | 38 ++ app/front/styles/main.scss | 63 ++++ app/loaders/file.js | 77 ++++ app/loaders/youtube.js | 73 ++++ chromecast.png | Bin 5505 -> 0 bytes index.css | 370 ------------------- index.html | 62 ---- index.js | 643 +--------------------------------- mouseidle.js | 50 --- package.json | 26 +- player.js | 180 ---------- playlist.js | 263 -------------- splash.gif | Bin 233267 -> 0 bytes 24 files changed, 882 insertions(+), 1667 deletions(-) create mode 100644 .editorconfig create mode 100644 .eslintrc delete mode 100755 app.js create mode 100644 app/Controller.js create mode 100644 app/Server.js create mode 100644 app/app.js create mode 100644 app/engines/Chromecast.js create mode 100644 app/engines/HTML5Video.js create mode 100644 app/front/components/Icon.jsx create mode 100644 app/front/index.html create mode 100644 app/front/index.jsx create mode 100644 app/front/styles/main.css create mode 100644 app/front/styles/main.scss create mode 100644 app/loaders/file.js create mode 100644 app/loaders/youtube.js delete mode 100644 chromecast.png delete mode 100644 index.css delete mode 100644 index.html delete mode 100644 mouseidle.js delete mode 100644 player.js delete mode 100644 playlist.js delete mode 100644 splash.gif diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..2ce6d26 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,8 @@ +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 2 diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..21c1b8f --- /dev/null +++ b/.eslintrc @@ -0,0 +1,27 @@ +{ + "parser": "babel-eslint", + + "plugins": [ + "react" + ], + + "env": { + "es6": true, + "node": true, + "browser": true + }, + + "extends": "airbnb", + + "ecmaFeatures": { + "jsx": true, + "modules": true + }, + + "rules": { + "semi": [2, "never"], + "func-names": 0, + "comma-dangle": 0, + "consistent-return": 0 + } +} diff --git a/app.js b/app.js deleted file mode 100755 index 87942ef..0000000 --- a/app.js +++ /dev/null @@ -1,97 +0,0 @@ -#!/usr/bin/env electron - -var app = require('app') -var BrowserWindow = require('browser-window') -var path = require('path') -var ipc = require('ipc') -var dialog = require('dialog') -var shell = require('shell') -var powerSaveBlocker = require('electron').powerSaveBlocker - -var win -var link -var ready = false - -var onopen = function (e, lnk) { - e.preventDefault() - - if (ready) { - win.send('add-to-playlist', [].concat(lnk)) - return - } - - link = lnk -} - -app.on('open-file', onopen) -app.on('open-url', onopen) - -var frame = process.platform === 'win32' - -app.on('ready', function () { - win = new BrowserWindow({ - title: 'playback', - width: 860, - height: 470, - frame: frame, - show: false, - transparent: true - }) - - win.loadUrl('file://' + path.join(__dirname, 'index.html#' + JSON.stringify(process.argv.slice(2)))) - - ipc.on('close', function () { - app.quit() - }) - - ipc.on('open-file-dialog', function () { - var files = dialog.showOpenDialog({ properties: [ 'openFile', 'multiSelections' ]}) - if (files) win.send('add-to-playlist', files) - }) - - ipc.on('open-url-in-external', function (event, url) { - shell.openExternal(url) - }) - - ipc.on('focus', function () { - win.focus() - }) - - ipc.on('minimize', function () { - win.minimize() - }) - - ipc.on('maximize', function () { - win.maximize() - }) - - ipc.on('resize', function (e, message) { - if (win.isMaximized()) return - var wid = win.getSize()[0] - var hei = (wid / message.ratio) | 0 - win.setSize(wid, hei) - }) - - ipc.on('enter-full-screen', function () { - win.setFullScreen(true) - }) - - ipc.on('exit-full-screen', function () { - win.setFullScreen(false) - win.show() - }) - - ipc.on('ready', function () { - ready = true - if (link) win.send('add-to-playlist', [].concat(link)) - win.show() - }) - - ipc.on('prevent-sleep', function () { - app.sleepId = powerSaveBlocker.start('prevent-display-sleep') - }) - - ipc.on('allow-sleep', function () { - powerSaveBlocker.stop(app.sleepId) - }) -}) diff --git a/app/Controller.js b/app/Controller.js new file mode 100644 index 0000000..728033b --- /dev/null +++ b/app/Controller.js @@ -0,0 +1,255 @@ +import { EventEmitter } from 'events' +import update from 'react-addons-update' +import Server from './Server' +import fileLoader from './loaders/file' +import youtubeLoader from './loaders/youtube' + +const loaders = [fileLoader, youtubeLoader] + +class Controller extends EventEmitter { + + get STATUS_STOPPED() { return 'stopped' } + get STATUS_PAUSED() { return 'paused' } + get STATUS_PLAYING() { return 'playing' } + + constructor() { + super() + this.server = new Server(this) + this.setState({ + status: this.STATUS_STOPPED, + volume: 100, + muted: false, + casting: false, + currentFile: null, + stream: null, + currentTime: 0, + duration: 0, + playlist: [], + chromecasts: [], + engine: null + }) + } + + /* + * Update state + */ + + setState(state) { + this.state = Object.assign({}, this.state || {}, state) + console.log('Setting state', state, this.state) + setImmediate(() => { + this.emit('update', this.state) + }) + } + + + /* + * Get state + */ + + getState() { + return this.state + } + + + /* + * Toggle the playing state + */ + + togglePlay() { + if (!this.state.currentFile) { return } + + if (this.state.status !== this.STATUS_PLAYING) { + this.resume() + } else { + this.pause() + } + } + + + /* + * Add a URI to the playlist IF we can load it + */ + + add(uri) { + let prom + loaders.some((loader) => { + if (loader.test(uri)) { + prom = loader.load(uri).then(file => { + this.setState(update(this.state, { playlist: { $push: [file] } })) + return file + }) + return true + } + }) + return prom + } + + + /* + * Add a URI to the playlist and play it + */ + + addAndStart(uri) { + return this.add(uri).then(file => { + this.start(file) + }) + } + + + /* + * Start a file + */ + + start(file) { + this.setState({ + status: this.STATUS_PLAYING, + currentFile: file, + stream: this.server.getPath() + '/' + encodeURIComponent(file.uri) + }) + this.startPollingEngine() + } + + + /* + * Resume playing a file + */ + + resume() { + this.setState({ + status: this.STATUS_PLAYING + }) + this.startPollingEngine() + } + + + /* + * Pause playback + */ + + pause() { + this.setState({ + status: this.STATUS_PAUSED + }) + this.stopPollingEngine() + } + + + /* + * Stop playback + */ + + stop() { + this.setState({ + status: this.STATUS_STOPPED, + currentFile: null + }) + this.stopPollingEngine() + } + + + /* + * Seek to a particular second + */ + + seekToSecond(second) { + this.state.engine.seekToSecond(second) + this.setState({ + currentTime: second + }) + } + + + /* + * Play the next item in the playlist, if possible + */ + + next() { + const { currentFile, playlist } = this.state + const currentIndex = playlist.indexOf(currentFile) + const nextFile = playlist[currentIndex + 1] + if (!nextFile) { return } + this.start(nextFile) + } + + + /* + * Play the previous item in the playlist, if possible + */ + + previous() { + const { currentFile, playlist } = this.state + const currentIndex = playlist.indexOf(currentFile) + const prevFile = playlist[currentIndex - 1] + if (!prevFile) { return } + this.start(prevFile) + } + + + /* + * Start polling the engine for state updates + */ + + startPollingEngine() { + this.pollInterval = setInterval(() => { + console.log('polling!') + this.setState({ + currentTime: this.state.engine.currentTime(), + duration: this.state.engine.duration() + }) + }, this.state.engine.POLL_FREQUENCY) + } + + + /* + * Stop polling the engine for state updates + */ + + stopPollingEngine() { + clearInterval(this.pollInterval) + } + + + /* + * Toggle casting + */ + + toggleCasting() { + if (this.state.casting) { + this.stopCasting() + } else { + this.startCasting() + } + } + + + /* + * Start casting + */ + + startCasting() { + + } + + + /* + * Stop casting + */ + + stopCasting() { + + } + + + /* + * Get a file from the playlist + */ + + getFile(uri) { + const { playlist } = this.state + return playlist[playlist.find(uri, f => f.uri === uri)] + } + +} + +module.exports = new Controller() diff --git a/app/Server.js b/app/Server.js new file mode 100644 index 0000000..e1a0565 --- /dev/null +++ b/app/Server.js @@ -0,0 +1,67 @@ +import http from 'http' +import rangeParser from 'range-parser' +import pump from 'pump' +import network from 'network-address' + +class Server { + + constructor(controller) { + this.controller = controller + this.server = http.createServer(this.route.bind(this)).listen(0, () => { + console.log('Playback server running at: ' + this.getPath()) + }) + } + + route(req, res) { + if (req.headers.origin) res.setHeader('Access-Control-Allow-Origin', req.headers.origin) + if (req.url === '/subtitles') return this.handleSubtitles(req, res) + if (req.url === '/follow') return this.handleFollow(req, res) + return this.handleFile(req, res) + } + + handleSubtitles(req, res) { + console.log(req, res) + } + + handleFollow(req, res) { + console.log(req, res) + } + + handleFile(req, res) { + const uri = decodeURIComponent(req.url.slice(1)) + const file = this.controller.getFile(uri) + + if (!file) { + res.statusCode = 404 + res.end() + return + } + + const range = req.headers.range && rangeParser(file.length, req.headers.range)[0] + + res.setHeader('Accept-Ranges', 'bytes') + res.setHeader('Content-Type', 'video/mp4') + + if (!range) { + res.setHeader('Content-Length', file.length) + if (req.method === 'HEAD') return res.end() + pump(file.createReadStream(), res) + return + } + + res.statusCode = 206 + res.setHeader('Content-Length', range.end - range.start + 1) + res.setHeader('Content-Range', 'bytes ' + range.start + '-' + range.end + '/' + file.length) + + if (req.method === 'HEAD') return res.end() + + pump(file.createReadStream(range), res) + } + + getPath() { + return `http://${network()}:${this.server.address().port}` + } + +} + +module.exports = Server diff --git a/app/app.js b/app/app.js new file mode 100644 index 0000000..d05fe1a --- /dev/null +++ b/app/app.js @@ -0,0 +1,51 @@ +import electron from 'electron' + +const app = electron.app +const BrowserWindow = electron.BrowserWindow +const ipc = electron.ipcMain + +electron.crashReporter.start() + +let win = null + +app.on('window-all-closed', () => { + if (process.platform !== 'darwin') { + app.quit() + } +}) + +app.on('ready', () => { + win = new BrowserWindow({ + title: 'playback', + width: 860, + height: 470 + }) + win.loadURL('file://' + __dirname + '/front/index.html') + win.webContents.openDevTools() + win.on('closed', () => { + win = null + }) +}) + +ipc.on('fullscreen', (value = true) => { + win.setFullScreen(value) +}) + +ipc.on('focus', function () { + win.focus() +}) + +ipc.on('minimize', function () { + win.minimize() +}) + +ipc.on('maximize', function () { + win.maximize() +}) + +ipc.on('resize', function (e, message) { + if (win.isMaximized()) return + const wid = win.getSize()[0] + const hei = (wid / message.ratio) | 0 + win.setSize(wid, hei) +}) diff --git a/app/engines/Chromecast.js b/app/engines/Chromecast.js new file mode 100644 index 0000000..e69de29 diff --git a/app/engines/HTML5Video.js b/app/engines/HTML5Video.js new file mode 100644 index 0000000..086015c --- /dev/null +++ b/app/engines/HTML5Video.js @@ -0,0 +1,43 @@ +import { EventEmitter } from 'events' + +class HTML5Video extends EventEmitter { + + get POLL_FREQUENCY() { return 250 } + + constructor(controller) { + super() + this.controller = controller + controller.on('update', this._update.bind(this)) + } + + _update(state) { + if (state.stream && state.stream !== this.element.src) { + this.element.src = state.stream + } + + if (state.status === this.controller.STATUS_PLAYING) { + this.element.play() + } else { + this.element.pause() + } + } + + setElement(el) { + this.element = el + } + + seekToSecond(second) { + this.element.currentTime = second + } + + duration() { + return this.element.duration + } + + currentTime() { + return this.element.currentTime + } + +} + +module.exports = HTML5Video diff --git a/app/front/components/Icon.jsx b/app/front/components/Icon.jsx new file mode 100644 index 0000000..ea8764f --- /dev/null +++ b/app/front/components/Icon.jsx @@ -0,0 +1,57 @@ +import React from 'react' + +class Icon extends React.Component { + + static propTypes = { + icon: React.PropTypes.string.isRequired, + size: React.PropTypes.oneOfType([ + React.PropTypes.string, + React.PropTypes.number + ]), + style: React.PropTypes.object + } + + static defaultProps = { + size: 24 + } + + _mergeStyles(...args) { + return Object.assign({}, ...args) + } + + _renderGraphic() { + switch (this.props.icon) { + case 'play': + return ( + + ) + case 'pause': + return ( + + ) + case 'playlist': + return ( + + ) + default: + return + } + } + + render() { + const styles = { + fill: 'currentcolor', + verticalAlign: 'middle', + width: this.props.size, // CSS instead of the width attr to support non-pixel units + height: this.props.size // Prevents scaling issue in IE + } + + return ( + + {this._renderGraphic()} + + ) + } +} + +module.exports = Icon diff --git a/app/front/index.html b/app/front/index.html new file mode 100644 index 0000000..389a24c --- /dev/null +++ b/app/front/index.html @@ -0,0 +1,17 @@ + + + + + Playback + + + +
+ + + diff --git a/app/front/index.jsx b/app/front/index.jsx new file mode 100644 index 0000000..fdbda4a --- /dev/null +++ b/app/front/index.jsx @@ -0,0 +1,82 @@ +import React from 'react' +import { render } from 'react-dom' + +import Controller from '../Controller' +import HTML5Video from '../engines/HTML5Video' +import Icon from './components/icon' + +const htmlEngine = new HTML5Video(Controller) + +class App extends React.Component { + + constructor(props) { + super(props) + this.state = Controller.getState() + } + + componentDidMount() { + Controller.setState({ + engine: htmlEngine + }) + Controller.on('update', () => { + this.setState(Controller.getState()) + }) + htmlEngine.setElement(this.refs.video) + } + + _handleTogglePlayClick() { + Controller.togglePlay() + } + + _handleLoadClick() { + Controller.addAndStart('file:///Users/brianmathews/Desktop/arrange.mov') + } + + _handleSeek(e) { + const percentage = e.clientX / window.innerWidth + const time = this.state.duration * percentage + Controller.seekToSecond(time) + } + + _formatTime(totalSeconds) { + const hours = (totalSeconds / 3600) | 0 + let mins = ((totalSeconds - hours * 3600) / 60) | 0 + let secs = (totalSeconds - (3600 * hours + 60 * mins)) | 0 + if (mins < 10) mins = '0' + mins + if (secs < 10) secs = '0' + secs + return (hours ? hours + ':' : '') + mins + ':' + secs + } + + render() { + const playIcon = this.state.status === Controller.STATUS_PLAYING ? 'pause' : 'play' + const title = this.state.currentFile ? this.state.currentFile.name : 'No file' + const { currentTime, duration } = this.state + const transitionSpeed = htmlEngine.POLL_FREQUENCY + 'ms' + + const app = ( +
+
+ ) + return app + } +} + +render(, document.getElementById('react-root')) diff --git a/app/front/styles/main.css b/app/front/styles/main.css new file mode 100644 index 0000000..ea0e960 --- /dev/null +++ b/app/front/styles/main.css @@ -0,0 +1,38 @@ +body { + background: black; + overflow: hidden; + font-family: "Arial"; + font-size: 13px; } + +.controls { + position: fixed; + bottom: 0; + right: 0; + left: 0; + background-color: #333; + color: #fff; } + .controls .controls__timeline { + height: 10px; + width: 100%; + background: #222; } + .controls .controls__timeline > .controls__timeline__progress { + height: 10px; + background-color: green; } + .controls .controls__toolbar { + padding: 6px; + display: flex; + align-items: center; } + .controls .controls__toolbar > button { + background: transparent; + border: none; + outline: none; + color: inherit; } + .controls .controls__toolbar > .controls__title { + flex: 1; + color: #aaa; } + .controls .controls__toolbar > .controls__time { + color: #aaa; } + +video { + max-width: 100%; + max-height: 100%; } diff --git a/app/front/styles/main.scss b/app/front/styles/main.scss new file mode 100644 index 0000000..87efe04 --- /dev/null +++ b/app/front/styles/main.scss @@ -0,0 +1,63 @@ +$body-bg: black; +$body-font: 'Arial'; +$controls-bg: #333; +$controls-fg: #fff; +$controls-title-fg: #aaa; +$controls-timeline-height: 10px; +$controls-timeline-bg: #222; +$controls-timeline-progress-bg: green; + +body { + background: $body-bg; + overflow: hidden; + font-family: $body-font; + font-size: 13px; +} + +.controls { + position: fixed; + bottom: 0; + right: 0; + left: 0; + background-color: $controls-bg; + color: $controls-fg; + + .controls__timeline { + height: $controls-timeline-height; + width: 100%; + background: $controls-timeline-bg; + + > .controls__timeline__progress { + height: $controls-timeline-height; + background-color: $controls-timeline-progress-bg; + } + } + + .controls__toolbar { + padding: 6px; + display: flex; + align-items: center; + + > button { + background: transparent; + border: none; + outline: none; + color: inherit; + } + + > .controls__title { + flex: 1; + color: $controls-title-fg; + } + + > .controls__time { + color: $controls-title-fg; + } + + } +} + +video { + max-width: 100%; + max-height: 100%; +} diff --git a/app/loaders/file.js b/app/loaders/file.js new file mode 100644 index 0000000..462bbc2 --- /dev/null +++ b/app/loaders/file.js @@ -0,0 +1,77 @@ +import qfs from 'q-io/fs' +import fs from 'fs' +import vtt from 'srt-to-vtt' +import concat from 'concat-stream' +import path from 'path' + +module.exports = { + + + /* + * Match file:// URIs + */ + + test(uri) { + return /^file:\/\//i.test(uri) + }, + + + /* + * Load the file and subtitles, if possible. + */ + + load(uri) { + const filePath = uri.replace(/^file:\/\//i, '') + const file = { uri, filePath } + + return qfs.stat(filePath) + .then(stat => { + file.length = stat.size + file.name = path.basename(filePath) + file.createReadStream = opts => fs.createReadStream(filePath, opts) + return this.getSubtitles(filePath) + }).then(subtitles => { + file.subtitles = subtitles + return file + }) + }, + + + /* + * Try to open a subtitle + */ + + tryLoadingSubtitle(subtitlePath) { + return new Promise((resolve) => { + qfs.exists(subtitlePath).then(exists => { + if (exists) { + fs.createReadStream(subtitlePath).pipe(vtt()).pipe(concat(data => resolve(data))) + } else { + resolve() + } + }).catch(err => { + resolve(err) + }) + }) + }, + + + /* + * Attempt to get subtitles relative to the filePath + */ + + getSubtitles(filePath) { + const basename = filePath.substr(0, filePath.lastIndexOf('.')) + const extensions = ['srt', 'vtt'] + const next = () => { + const ext = extensions.shift() + if (!ext) return Promise.resolve() + + return this.tryLoadingSubtitle(basename + '.' + ext).then(data => { + if (!data) { return next() } + return Promise.resolve(data) + }) + } + return next() + } +} diff --git a/app/loaders/youtube.js b/app/loaders/youtube.js new file mode 100644 index 0000000..eb8c046 --- /dev/null +++ b/app/loaders/youtube.js @@ -0,0 +1,73 @@ +module.exports = { + test(uri) { + return /youtube\.com\/watch/i.test(uri) + }, + + load(uri) { + var file = {} + var url = /https?:/.test(uri) ? uri : 'https:' + uri + + getYoutubeData(function (err, data) { + if (err) return cb(err) + var fmt = data.fmt + var info = data.info + request({method: 'HEAD', url: fmt.url}, function (err, resp, body) { + if (err) return cb(err) + var len = resp.headers['content-length'] + if (!len) return cb(new Error('no content-length on response')) + file.length = +len + file.name = info.title + + file.createReadStream = function (opts) { + if (!opts) opts = {} + // fetch this for every range request + // TODO try and avoid doing this call twice the first time + getYoutubeData(function (err, data) { + if (err) return cb(err) + var vidUrl = data.fmt.url + if (opts.start || opts.end) vidUrl += '&range=' + ([opts.start || 0, opts.end || len].join('-')) + stream.setReadable(request(vidUrl)) + }) + + var stream = duplex() + return stream + } + file.id = that.entries.push(file) - 1 + that.emit('update') + cb() + }) + }) + + function getYoutubeData (cb) { + ytdl.getInfo(url, function (err, info) { + if (err) return cb(err) + + var vidFmt + var formats = info.formats + + formats.sort(function sort (a, b) { + return +a.itag - +b.itag + }) + + var vidFmt + formats.forEach(function (fmt) { + // prefer webm + if (fmt.itag === '46') return vidFmt = fmt + if (fmt.itag === '45') return vidFmt = fmt + if (fmt.itag === '44') return vidFmt = fmt + if (fmt.itag === '43') return vidFmt = fmt + + // otherwise h264 + if (fmt.itag === '38') return vidFmt = fmt + if (fmt.itag === '37') return vidFmt = fmt + if (fmt.itag === '22') return vidFmt = fmt + if (fmt.itag === '18') return vidFmt = fmt + }) + + if (!vidFmt) return cb (new Error('No suitable video format found')) + + cb(null, {info: info, fmt: vidFmt}) + }) + } + } +} diff --git a/chromecast.png b/chromecast.png deleted file mode 100644 index 619dd50e0f78c7221170ced6c1b7dca9829efbf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5505 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 - - - playback - - - - - - -
- -
- -
-
-
-
-
-
-
-
-
- -
-
- -
-
- ‒‒:‒‒ - / - ‒‒:‒‒ -
-
-
-
-
-
- -
-
- -
-
- -
-
-
-
- - - diff --git a/index.js b/index.js index c359540..03f8949 100644 --- a/index.js +++ b/index.js @@ -1,641 +1,4 @@ -var request = require('request') -var drop = require('drag-and-drop-files') -var mdns = require('multicast-dns')() -var concat = require('concat-stream') -var vtt = require('srt-to-vtt') -var ipc = require('ipc') -var remote = require('remote') -var Menu = remote.require('menu') -var MenuItem = remote.require('menu-item') -var http = require('http') -var rangeParser = require('range-parser') -var pump = require('pump') -var fs = require('fs') -var eos = require('end-of-stream') -var minimist = require('minimist') -var JSONStream = require('JSONStream') -var network = require('network-address') -var chromecasts = require('chromecasts')() -var $ = require('dombo') -var titlebar = require('titlebar')() -var clipboard = require('clipboard') -var player = require('./player') -var playlist = require('./playlist') -var mouseidle = require('./mouseidle') - -var argv = minimist(JSON.parse(window.location.toString().split('#')[1]), { - alias: {follow: 'f'}, - boolean: ['follow'] +require('babel-register')({ + presets: ['es2015', 'stage-0'] }) - -var printError = function (err) { - if (err) console.log(err) -} - -var onsubs = function (data) { - media.subtitles(data) -} - -ipc.on('add-to-playlist', function (links) { - links.forEach(function (link) { - if (/\.(vtt|srt)$/i.test(link)) { - fs.createReadStream(link).pipe(vtt()).pipe(concat(onsubs)) - return - } - - list.add(link, printError) - }) -}) - -$(document).on('paste', function (e) { - ipc.emit('add-to-playlist', e.clipboardData.getData('text').split('\n')) -}) - -var media = player($('#player')[0]) -var list = playlist() - -if (process.platform !== 'win32') { - titlebar.appendTo('#titlebar') -} - -drop($('body')[0], function (files) { - for (var i = 0; i < files.length; i++) { - if (/\.(vtt|srt)$/i.test(files[i].path)) { - fs.createReadStream(files[i].path).pipe(vtt()).pipe(concat(onsubs)) - return - } - - list.add(files[i].path, printError) - } -}) - -var videoDown = false -var videoOffsets = [0, 0] - -$('#idle').on('mousedown', function (e) { - videoDown = true - videoOffsets = [e.clientX, e.clientY] -}) - -$('#idle').on('mouseup', function () { - videoDown = false -}) - -$('#idle').on('mousemove', function (e) { - if (videoDown) remote.getCurrentWindow().setPosition(e.screenX - videoOffsets[0], e.screenY - videoOffsets[1]) -}) - -var onTop = false - -$(window).on('contextmenu', function (e) { - e.preventDefault() - - var menu = new Menu() - - menu.append(new MenuItem({ - label: 'Always on top', - type: 'checkbox', - checked: onTop, - click: function () { - onTop = !onTop - remote.getCurrentWindow().setAlwaysOnTop(onTop) - } - })) - - menu.append(new MenuItem({ - label: 'Paste link', - click: function () { - ipc.emit('add-to-playlist', clipboard.readText().split('\n')) - } - })) - - if (media.subtitles()) { - menu.append(new MenuItem({ - label: 'Remove subtitles', - click: function () { - media.subtitles(null) - } - })) - } - - menu.popup(remote.getCurrentWindow()) -}) - -$('body').on('mouseover', function () { - if (onTop) ipc.send('focus') -}) - -var isFullscreen = false - -var onfullscreentoggle = function (e) { - if (!isFullscreen && e.shiftKey) { - ipc.send('resize', { - width: media.width, - height: media.height, - ratio: media.ratio - }) - return - } - - var $icon = $('#controls-fullscreen .mega-octicon') - if (isFullscreen) { - isFullscreen = false - $('#titlebar')[0].style.display = 'block' - $icon.removeClass('octicon-screen-normal') - $icon.addClass('octicon-screen-full') - ipc.send('exit-full-screen') - } else { - isFullscreen = true - $('#titlebar')[0].style.display = 'none' - $icon.removeClass('octicon-screen-full') - $icon.addClass('octicon-screen-normal') - ipc.send('enter-full-screen') - } -} - -var onplaytoggle = function () { - if (media.playing) media.pause() - else media.play() -} - -$('#idle').on('dblclick', onfullscreentoggle) -$('#controls-fullscreen').on('click', onfullscreentoggle) - -$('#controls-timeline').on('click', function (e) { - var time = e.pageX / $('#controls-timeline')[0].offsetWidth * media.duration - media.time(time) -}) - -function updateTimelineTooltip(e) { - var tooltip = $('#controls-timeline-tooltip')[0] - var percentage = e.pageX / $('#controls-timeline')[0].offsetWidth - var time = formatTime(percentage * media.duration) - tooltip.innerHTML = time - tooltip.style.left = (e.pageX - tooltip.offsetWidth / 2) + "px" -} - -$('#controls-timeline').on('mousemove', function (e) { - updateTimelineTooltip(e) -}) - -$('#controls-timeline').on('mouseover', function (e) { - var tooltip = $('#controls-timeline-tooltip')[0] - tooltip.style.opacity = 1 - updateTimelineTooltip(e) -}) - -$('#controls-timeline').on('mouseout', function (e) { - var tooltip = $('#controls-timeline-tooltip')[0] - tooltip.style.opacity = 0 -}) - -var isVolumeSliderClicked = false - -function updateAudioVolume(value) { - media.volume(value) -} - -function updateVolumeSlider(volume) { - var val = volume.value * 100 - volume.style.background = '-webkit-gradient(linear, left top, right top, color-stop(' + val.toString() + '%, #31A357), color-stop(' + val.toString() + '%, #727374))' -} - -$('#controls-volume-slider').on('mousemove', function (e) { - if (isVolumeSliderClicked) { - var volume = $('#controls-volume-slider')[0] - updateAudioVolume(volume.value) - updateVolumeSlider(volume) - } -}) - -$('#controls-volume-slider').on('mousedown', function (e) { - isVolumeSliderClicked = true -}) - -$('#controls-volume-slider').on('mouseup', function (e) { - var volume = $('#controls-volume-slider')[0] - updateAudioVolume(volume.value) - updateVolumeSlider(volume) - isVolumeSliderClicked = false -}) - -$(document).on('keydown', function (e) { - if (e.keyCode === 27 && isFullscreen) return onfullscreentoggle(e) - if (e.keyCode === 13 && e.metaKey) return onfullscreentoggle(e) - if (e.keyCode === 13 && e.shiftKey) return onfullscreentoggle(e) - if (e.keyCode === 32) return onplaytoggle(e) - - if ($('#controls-playlist').hasClass('selected')) $('#controls-playlist').trigger('click') - if ($('#controls-chromecast').hasClass('selected')) $('#controls-chromecast').trigger('click') -}) - -mouseidle($('#idle')[0], 3000, 'hide-cursor') - -list.on('select', function () { - $('#controls-name')[0].innerText = list.selected.name - media.play('http://127.0.0.1:' + server.address().port + '/' + list.selected.id) - if (list.selected.subtitles) onsubs(list.selected.subtitles) - updatePlaylist() -}) - -var updatePlaylist = function () { - var html = '' - - list.entries.forEach(function (entry, i) { - html += '
' + - '' + entry.name + '
' - }) - - $('#playlist-entries')[0].innerHTML = html -} - -var updateChromecast = function () { - var html = '' - - chromecasts.players.forEach(function (player, i) { - html += '
' + - '' + player.name + '' - }) - - $('#chromecast-entries')[0].innerHTML = html -} - -chromecasts.on('update', updateChromecast) - -var updateSpeeds = function () { - $('#player-downloadspeed')[0].innerText = '' - list.entries.forEach(function (entry, i) { - if (!entry.downloadSpeed) return - - $('.playlist-entry[data-index="' + i + '"] .status').addClass('octicon-sync') - - var kilobytes = entry.downloadSpeed() / 1024 - var megabytes = kilobytes / 1024 - var text = megabytes > 1 ? megabytes.toFixed(1) + ' mb/s' : Math.floor(kilobytes) + ' kb/s' - - if (list.selected === entry) $('#player-downloadspeed')[0].innerText = text - }) -} -setInterval(updateSpeeds, 750) - -list.on('update', updatePlaylist) - -list.once('update', function () { - list.select(0) -}) - -var popupSelected = function () { - return $('#controls-playlist').hasClass('selected') || $('#controls-chromecast').hasClass('selected') -} - -var closePopup = function (e) { - if (e && (e.target === $('#controls-playlist .mega-octicon')[0] || e.target === $('#controls-chromecast .chromecast')[0])) return - $('#popup')[0].style.opacity = 0 - $('#controls-playlist').removeClass('selected') - $('#controls-chromecast').removeClass('selected') -} - -$('#controls').on('click', closePopup) -$('#idle').on('click', closePopup) - -$('#playlist-entries').on('click', '.playlist-entry', function (e) { - var id = Number(this.getAttribute('data-id')) - list.select(id) -}) - -$('#chromecast-entries').on('click', '.chromecast-entry', function (e) { - var id = Number(this.getAttribute('data-id')) - var player = chromecasts.players[id] - - if (media.casting === player) { - $('body').removeClass('chromecasting') - media.chromecast(null) - return updateChromecast() - } - - $('body').addClass('chromecasting') - media.chromecast(player) - updateChromecast() -}) - -var updatePopup = function () { - if (popupSelected()) { - $('#popup')[0].style.display = 'block' - $('#popup')[0].style.opacity = 1 - } else { - $('#popup')[0].style.opacity = 0 - } -} - -$('#controls-chromecast').on('click', function (e) { - if ($('#controls-chromecast').hasClass('selected')) { - closePopup() - return - } - - $('#popup')[0].className = 'chromecast' - $('#controls .controls-secondary .selected').removeClass('selected') - $('#controls-chromecast').addClass('selected') - chromecasts.update() - updatePopup() -}) - -$('#controls-playlist').on('click', function (e) { - if ($('#controls-playlist').hasClass('selected')) { - closePopup() - return - } - - $('#popup')[0].className = 'playlist' - $('#controls .controls-secondary .selected').removeClass('selected') - $('#controls-playlist').addClass('selected') - updatePopup() -}) - -$('#playlist-add-media').on('click', function () { - ipc.send('open-file-dialog') -}) - -$('#popup').on('transitionend', function () { - if (!popupSelected()) $('#popup')[0].style.display = 'none' -}) - -titlebar.on('close', function () { - ipc.send('close') -}) - -titlebar.on('minimize', function () { - ipc.send('minimize') -}) - -titlebar.on('maximize', function () { - ipc.send('maximize') -}) - -titlebar.on('fullscreen', onfullscreentoggle) - -var appmenu_template = [ - { - label: 'Playback', - submenu: [ - { - label: 'About Playback', - click: function() { ipc.send('open-url-in-external', 'https://mafintosh.github.io/playback/') } - }, - { - type: 'separator' - }, - { - label: 'Quit', - accelerator: 'Command+Q', - click: function() { ipc.send('close') } - } - ] - }, - { - label: 'File', - submenu: [ - { - label: 'Add media', - accelerator: 'Command+O', - click: function() { ipc.send('open-file-dialog') } - }, - { - label: 'Add link from clipboard', - accelerator: 'CommandOrControl+V', - click: function () { ipc.emit('add-to-playlist', clipboard.readText().split('\n')) } - } - ] - }, - { - label: 'Window', - submenu: [ - { - label: 'Minimize', - accelerator: 'Command+M', - click: function() { ipc.send('minimize') } - }, - { - label: 'Toggle Full Screen', - accelerator: 'Command+Enter', - click: onfullscreentoggle - } - ] - }, - { - label: 'Help', - submenu: [ - { - label: 'Report Issue', - click: function() { ipc.send('open-url-in-external', 'https://github.com/mafintosh/playback/issues') } - }, - { - label: 'View Source Code on GitHub', - click: function() { ipc.send('open-url-in-external', 'https://github.com/mafintosh/playback') } - }, - { - type: 'separator' - }, - { - label: 'Releases', - click: function() { ipc.send('open-url-in-external', 'https://github.com/mafintosh/playback/releases') } - } - ] - } -] -var appmenu = Menu.buildFromTemplate(appmenu_template) -Menu.setApplicationMenu(appmenu) - -var formatTime = function (secs) { - var hours = (secs / 3600) | 0 - var mins = ((secs - hours * 3600) / 60) | 0 - secs = (secs - (3600 * hours + 60 * mins)) | 0 - if (mins < 10) mins = '0' + mins - if (secs < 10) secs = '0' + secs - return (hours ? hours + ':' : '') + mins + ':' + secs -} - -var updateInterval -media.on('metadata', function () { - // TODO: comment in again when not quirky - // if (!isFullscreen) { - // ipc.send('resize', { - // width: media.width, - // height: media.height, - // ratio: media.ratio - // }) - // } - - $('#controls-main')[0].style.display = 'block' - $('#controls-time-total')[0].innerText = formatTime(media.duration) - $('#controls-time-current')[0].innerText = formatTime(media.time()) - - clearInterval(updateInterval) - updateInterval = setInterval(function () { - $('#controls-timeline-position')[0].style.width = (100 * (media.time() / media.duration)) + '%' - $('#controls-time-current')[0].innerText = formatTime(media.time()) - }, 250) -}) - -$('#controls-play').on('click', onplaytoggle) - -media.on('end', function () { - ipc.send('allow-sleep') - list.selectNext() -}) - -media.on('play', function () { - ipc.send('prevent-sleep') - $('#splash').toggleClass('hidden', !media.casting) - $('#player').toggleClass('hidden', media.casting) - $('#controls-play .octicon-playback-play').removeClass('octicon-playback-play') - $('#controls-play .mega-octicon').addClass('octicon-playback-pause') -}) - -media.on('pause', function () { - ipc.send('allow-sleep') - $('#controls-play .octicon-playback-pause').removeClass('octicon-playback-pause') - $('#controls-play .mega-octicon').addClass('octicon-playback-play') -}) - -var server = http.createServer(function (req, res) { - if (req.headers.origin) res.setHeader('Access-Control-Allow-Origin', req.headers.origin) - - if (req.url === '/subtitles') { - var buf = media.subtitles() - - if (buf) { - res.setHeader('Content-Type', 'text/vtt; charset=utf-8') - res.setHeader('Content-Length', buf.length) - res.end(buf) - } else { - res.statusCode = 404 - res.end() - } - } - - if (req.url === '/follow') { // TODO: do not hardcode /0 - if (!list.selected) return res.end() - var stringify = JSONStream.stringify() - - var onseek = function () { - stringify.write({type: 'seek', time: media.time() }) - } - - var onsubs = function (data) { - stringify.write({type: 'subtitles', data: data.toString('base64')}) - } - - stringify.pipe(res) - stringify.write({type: 'open', url: 'http://' + network() + ':' + server.address().port + '/' + list.selected.id, time: media.time() }) - - media.on('subtitles', onsubs) - media.on('seek', onseek) - eos(res, function () { - media.removeListener('subtitles', onsubs) - media.removeListener('seek', onseek) - }) - return - } - - var id = Number(req.url.slice(1)) - var file = list.get(id) - - if (!file) { - res.statusCode = 404 - res.end() - return - } - - var range = req.headers.range && rangeParser(file.length, req.headers.range)[0] - - res.setHeader('Accept-Ranges', 'bytes') - res.setHeader('Content-Type', 'video/mp4') - - if (!range) { - res.setHeader('Content-Length', file.length) - if (req.method === 'HEAD') return res.end() - pump(file.createReadStream(), res) - return - } - - res.statusCode = 206 - res.setHeader('Content-Length', range.end - range.start + 1) - res.setHeader('Content-Range', 'bytes ' + range.start + '-' + range.end + '/' + file.length) - if (req.method === 'HEAD') return res.end() - pump(file.createReadStream(range), res) -}) - -server.listen(0, function () { - console.log('Playback server running on port ' + server.address().port) - - argv._.forEach(function (file) { - if (file) list.add(file, printError) - }) - - if (argv.follow) { - mdns.on('response', function onresponse(response) { - response.answers.forEach(function (a) { - if (a.name !== 'playback') return - clearInterval(interval) - mdns.removeListener('response', onresponse) - - var host = a.data.target + ':' + a.data.port - - request('http://' + host + '/follow').pipe(JSONStream.parse('*')).on('data', function (data) { - if (data.type === 'open') { - media.play(data.url) - media.time(data.time) - } - - if (data.type === 'seek') { - media.time(data.time) - } - - if (data.type === 'subtitles') { - media.subtitles(data.data) - } - }) - }) - }) - - var query = function () { - mdns.query({ - questions: [{ - name: 'playback', - type: 'SRV' - }] - }) - } - - var interval = setInterval(query, 5000) - query() - } else { - mdns.on('query', function (query) { - var valid = query.questions.some(function (q) { - return q.name === 'playback' - }) - - if (!valid) return - - mdns.respond({ - answers: [{ - type: 'SRV', - ttl: 5, - name: 'playback', - data: {port: server.address().port, target: network()} - }] - }) - }) - } - - setTimeout(function () { - ipc.send('ready') - }, 10) -}) - -media.volume(0.5) -$('#controls-volume-slider')[0].setAttribute("value", 0.5) -$('#controls-volume-slider')[0].setAttribute("min", 0) -$('#controls-volume-slider')[0].setAttribute("max", 1) -$('#controls-volume-slider')[0].setAttribute("step", 0.05) +require('./app/app.js') diff --git a/mouseidle.js b/mouseidle.js deleted file mode 100644 index 3060038..0000000 --- a/mouseidle.js +++ /dev/null @@ -1,50 +0,0 @@ -var $ = require('dombo') - -module.exports = function (elem, timeout, className) { - var max = (timeout / 250) | 0 - var overMovie = false - var hiding = false - var moving = 0 - var tick = 0 - var mousedown = false - - var update = function () { - if (hiding) { - $('body').removeClass(className) - hiding = false - } - } - - $(elem).on('mouseover', function () { - overMovie = true - update() - }) - - $(elem).on('mouseout', function () { - overMovie = false - }) - - $(elem).on('mousedown', function (e) { - mousedown = true - moving = tick - update() - }) - - $(elem).on('mouseup', function (e) { - mousedown = false - moving = tick - }) - - $(window).on('mousemove', function (e) { - moving = tick - update() - }) - - setInterval(function () { - tick++ - if (!overMovie) return - if (tick - moving < max || mousedown) return - hiding = true - $('body').addClass(className) - }, 250) -} diff --git a/package.json b/package.json index 0145bc8..b2336d8 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "main": "app.js", "dependencies": { "JSONStream": "^0.10.0", + "babel-polyfill": "^6.3.14", "chromecasts": "^1.2.1", "concat-stream": "^1.4.7", "dombo": "^3.2.0", @@ -17,7 +18,11 @@ "network-address": "^1.0.0", "octicons": "2.4.1", "pump": "^1.0.0", + "q-io": "^1.13.2", "range-parser": "^1.0.2", + "react": "^0.14.3", + "react-addons-update": "^0.14.3", + "react-dom": "^0.14.3", "request": "^2.54.0", "roboto-fontface": "^0.4.2", "srt-to-vtt": "^1.0.2", @@ -26,16 +31,27 @@ "ytdl-core": "^0.5.1" }, "devDependencies": { - "electron-packager": "^5.1.1", - "electron-prebuilt": "0.35.4" + "babel-core": "^6.3.17", + "babel-eslint": "^4.1.6", + "babel-preset-es2015": "^6.3.13", + "babel-preset-react": "^6.3.13", + "babel-preset-stage-0": "^6.3.13", + "electron-packager": "^4.1.3", + "electron-prebuilt": "0.35.4", + "eslint": "^1.10.3", + "eslint-config-airbnb": "^2.1.1", + "eslint-plugin-react": "^3.11.3", + "node-sass": "^3.4.2" }, "bin": { - "playback": "./app.js" + "playback": "./index.js" }, "scripts": { "rebuild": "npm rebuild --runtime=electron --target=0.35.4 --disturl=https://atom.io/download/atom-shell", - "start": "electron app.js", - "dev": "electron app.js test.mp4", + "start": "electron index.js", + "lint": "eslint app/** --ext .js,.jsx", + "sass": "node-sass app/front/styles/main.scss app/front/styles/main.css", + "dev": "npm run lint && npm run sass && electron index.js", "mac-bundle": "electron-packager . Playback --platform=darwin --arch=x64 --version=0.35.4 --ignore=node_modules/electron-prebuilt && cp info.plist Playback-darwin-x64/Playback.app/Contents/Info.plist && cp icon.icns Playback-darwin-x64/Playback.app/Contents/Resources/atom.icns", "win-bundle": "electron-packager . Playback --platform=win32 --arch=ia32 --version=0.35.4 --icon=icon.ico", "linux-64-bundle": "electron-packager . Playback --platform=linux --arch=x64 --version=0.35.4 ignore='node_modules/(electron-packager|electron-prebuilt)'" diff --git a/player.js b/player.js deleted file mode 100644 index 0aa728c..0000000 --- a/player.js +++ /dev/null @@ -1,180 +0,0 @@ -var events = require('events') -var network = require('network-address') - -module.exports = function ($video) { - var that = new events.EventEmitter() - var atEnd = false - var lastUrl = null - - that.setMaxListeners(0) - - that.width = 0 - that.height = 0 - that.element = $video - - var chromecast = null - var chromecastTime = 0 - var chromecastOffset = 0 - var chromecastSubtitles = 1 - var interval = null - - var onerror = function () { - if (chromecast) chromecast.removeListener('error', onerror) - that.chromecast(null) - } - - var onmetadata = function (err, status) { - if (err) return onerror(err) - if (chromecastTime) chromecastOffset = 0 - chromecastTime = status.currentTime - chromecastSubtitles = 1 - that.duration = status.media.duration - that.emit('metadata') - - clearInterval(interval) - interval = setInterval(function () { - chromecast.status(function (err, status) { - if (err) return onerror(err) - - if (!status) { - chromecastOffset = 0 - clearInterval(interval) - atEnd = true - that.playing = false - that.emit('pause') - that.emit('end') - return - } - - if (chromecastTime) chromecastOffset = 0 - chromecastTime = status.currentTime - }) - }, 1000) - } - - that.casting = false - that.chromecast = function (player) { - chromecastOffset = chromecast ? 0 : $video.currentTime - clearInterval(interval) - if (chromecast && that.playing) chromecast.stop() - chromecast = player - that.casting = player - if (chromecast) chromecast.on('error', onerror) - if (!that.playing) return - media.play(lastUrl, that.casting ? chromecastOffset : chromecastTime) - } - - $video.addEventListener('seeked', function () { - if (chromecast) return - that.emit('seek') - }, false) - - $video.addEventListener('ended', function () { - if (chromecast) return - atEnd = true - that.playing = false - that.emit('pause') - that.emit('end') - }, false) - - $video.addEventListener('loadedmetadata', function () { - if (chromecast) return - that.width = $video.videoWidth - that.height = $video.videoHeight - that.ratio = that.width / that.height - that.duration = $video.duration - that.emit('metadata') - }, false) - - that.time = function (time) { - atEnd = false - if (chromecast) { - if (arguments.length) { - chromecastOffset = 0 - chromecast.seek(time) - } - return chromecastOffset || chromecastTime - } - if (arguments.length) $video.currentTime = time - return $video.currentTime - } - - that.playing = false - - that.play = function (url, time) { - if (!url && !lastUrl) return - var changed = url && lastUrl !== url - if (changed) subs = null - if (chromecast) { - $video.innerHTML = '' // clear - $video.pause() - $video.load() - if (url) lastUrl = url - else url = lastUrl - atEnd = false - if (url) { - var mediaUrl = url.replace('127.0.0.1', network()) - var subsUrl = mediaUrl.replace(/(:\/\/.+)\/.*/, '$1/subtitles') - var subsList = [] - for (var i = 0; i < 100; i++) subsList.push(subsUrl) - chromecast.play(mediaUrl, {title: 'Playback', seek: time || 0, subtitles: subsList, autoSubtitles: !!subs }, onmetadata) - } else { - chromecast.resume() - } - } else { - if (atEnd && url === lastUrl) $video.time(0) - if (!url) { - $video.play() - } else { - lastUrl = url - atEnd = false - $video.innerHTML = '' // clear - var $src = document.createElement('source') - $src.setAttribute('src', url) - $src.setAttribute('type', 'video/mp4') - $video.appendChild($src) - if (changed) $video.load() - $video.play() - if (time) $video.currentTime = time - } - } - that.playing = true - that.emit('play') - } - - that.pause = function () { - if (chromecast) chromecast.pause() - else $video.pause() - that.playing = false - that.emit('pause') - } - - var subs = null - that.subtitles = function (buf) { - if (!arguments.length) return subs - subs = buf - - if (chromecast) { - if (!buf) chromecast.subtitles(false) - else chromecast.subtitles(++chromecastSubtitles) - return - } - - if ($video.querySelector('track')) $video.removeChild($video.querySelector('track')) - if (!buf) return null - var $track = document.createElement('track') - $track.setAttribute('default', 'default') - $track.setAttribute('src', 'data:text/vtt;base64,'+buf.toString('base64')) - $track.setAttribute('label', 'Subtitles') - $track.setAttribute('kind', 'subtitles') - $video.appendChild($track) - that.emit('subtitles', buf) - return buf - } - - that.volume = function (value) { - $video.volume = value - } - - return that -} diff --git a/playlist.js b/playlist.js deleted file mode 100644 index 717dfe5..0000000 --- a/playlist.js +++ /dev/null @@ -1,263 +0,0 @@ -var torrents = require('webtorrent') -var request = require('request') -var duplex = require('duplexify') -var ytdl = require('ytdl-core') -var events = require('events') -var path = require('path') -var fs = require('fs') -var vtt = require('srt-to-vtt') -var concat = require('concat-stream') - -var noop = function () {} - -module.exports = function () { - var that = new events.EventEmitter() - - that.entries = [] - - var onmagnet = function (link, cb) { - console.log('torrent ' + link) - - var engine = torrents() - var subtitles = {} - - engine.add(link, { - announce: [ 'wss://tracker.webtorrent.io' ] - }, function (torrent) { - console.log('torrent ready') - - torrent.files.forEach(function (f) { - if (/\.(vtt|srt)$/i.test(f.name)) { - subtitles[f.name] = f; - } - }) - - torrent.files.forEach(function (f) { - f.downloadSpeed = torrent.downloadSpeed() - if (/\.(mp4|mkv|mp3)$/i.test(f.name)) { - f.select() - f.id = that.entries.push(f) - 1 - - var basename = f.name.substr(0, f.name.lastIndexOf('.')) - var subtitle = subtitles[basename + '.srt'] || subtitles[basename + '.vtt'] - if (subtitle) { - subtitle.createReadStream().pipe(vtt()).pipe(concat(function(data) { - f.subtitles = data - })) - } - } - - }) - - setInterval(function () { - console.log(torrent.downloadSpeed() + ' (' + torrent.swarm.wires.length + ')') - }, 1000) - - that.emit('update') - cb() - }) - } - - var ontorrent = function (link, cb) { - fs.readFile(link, function (err, buf) { - if (err) return cb(err) - onmagnet(buf, cb) - }) - } - - var onyoutube = function (link, cb) { - var file = {} - var url = /https?:/.test(link) ? link : 'https:' + link - - getYoutubeData(function (err, data) { - if (err) return cb(err) - var fmt = data.fmt - var info = data.info - request({method: 'HEAD', url: fmt.url}, function (err, resp, body) { - if (err) return cb(err) - var len = resp.headers['content-length'] - if (!len) return cb(new Error('no content-length on response')) - file.length = +len - file.name = info.title - - file.createReadStream = function (opts) { - if (!opts) opts = {} - // fetch this for every range request - // TODO try and avoid doing this call twice the first time - getYoutubeData(function (err, data) { - if (err) return cb(err) - var vidUrl = data.fmt.url - if (opts.start || opts.end) vidUrl += '&range=' + ([opts.start || 0, opts.end || len].join('-')) - stream.setReadable(request(vidUrl)) - }) - - var stream = duplex() - return stream - } - file.id = that.entries.push(file) - 1 - that.emit('update') - cb() - }) - }) - - function getYoutubeData (cb) { - ytdl.getInfo(url, function (err, info) { - if (err) return cb(err) - - var vidFmt - var formats = info.formats - - formats.sort(function sort (a, b) { - return +a.itag - +b.itag - }) - - var vidFmt - formats.forEach(function (fmt) { - // prefer webm - if (fmt.itag === '46') return vidFmt = fmt - if (fmt.itag === '45') return vidFmt = fmt - if (fmt.itag === '44') return vidFmt = fmt - if (fmt.itag === '43') return vidFmt = fmt - - // otherwise h264 - if (fmt.itag === '38') return vidFmt = fmt - if (fmt.itag === '37') return vidFmt = fmt - if (fmt.itag === '22') return vidFmt = fmt - if (fmt.itag === '18') return vidFmt = fmt - }) - - if (!vidFmt) return cb (new Error('No suitable video format found')) - - cb(null, {info: info, fmt: vidFmt}) - }) - } - } - - var onfile = function (link, cb) { - var file = {} - - fs.stat(link, function (err, st) { - if (err) return cb(err) - - file.length = st.size - file.name = path.basename(link) - file.createReadStream = function (opts) { - return fs.createReadStream(link, opts) - } - - file.id = that.entries.push(file) - 1 - - var ondone = function () { - that.emit('update') - cb() - } - var basename = link.substr(0, link.lastIndexOf('.')) - var extensions = ['srt', 'vtt'] - var next = function () { - var ext = extensions.shift() - if (!ext) return ondone() - - fs.exists(basename + '.' + ext, function(exists) { - if (!exists) return next() - fs.createReadStream(basename + '.' + ext).pipe(vtt()).pipe(concat(function(data) { - file.subtitles = data - ondone() - })) - }) - } - next() - }) - } - - var onhttplink = function (link, cb) { - var file = {} - - file.name = link.lastIndexOf('/') > -1 ? link.split('/').pop() : link - - file.createReadStream = function (opts) { - if (!opts) opts = {} - - if (opts && (opts.start || opts.end)) { - var rs = 'bytes=' + (opts.start || 0) + '-' + (opts.end || file.length || '') - return request(link, {headers: {Range: rs}}) - } - - return request(link) - } - - // first, get the head for the content length. - // IMPORTANT: servers without HEAD will not work. - request.head(link, function (err, response) { - if (err) return cb(err) - if (!/2\d\d/.test(response.statusCode)) return cb(new Error('request failed')) - - file.length = Number(response.headers['content-length']) - file.id = that.entries.push(file) - 1 - that.emit('update') - cb() - }) - } - - var onipfslink = function (link, cb) { - if (link[0] != '/') link = "/" + link // / may be stripped in add - - var local = 'localhost:8080' // todo: make this configurable - var gateway = 'gateway.ipfs.io' - var file = {} - - // first, try the local http gateway - var u = 'http://' + local + link - console.log('trying local ipfs gateway: ' + u) - onhttplink(u, function (err) { - if (!err) return cb() // done. - - // error? ok try fuse... maybe the gateway's broken. - console.log('trying mounted ipfs fs (just in case)') - onfile(link, function (err) { - if (!err) return cb() // done. - - // worst case, try global ipfs gateway. - var u = 'http://' + gateway + link - console.log('trying local ipfs gateway: ' + u) - onhttplink(u, cb) - }) - }) - } - - that.selected = null - - that.deselect = function () { - that.selected = null - that.emit('deselect') - } - - that.selectNext = function () { - if (!that.entries.length) return null - if (!that.selected) return that.select(0) - if (that.selected.id === that.entries.length - 1) return null - return that.select(that.selected.id + 1) - } - - that.select = function (id) { - that.selected = that.get(id) - that.emit('select') - return that.selected - } - - that.get = function (id) { - return that.entries[id] - } - - that.add = function (link, cb) { - link = link.replace('playback://', '').replace('playback:', '') // strip playback protocol - if (!cb) cb = noop - if (/magnet:/.test(link)) return onmagnet(link, cb) - if (/\.torrent$/i.test(link)) return ontorrent(link, cb) - if (/youtube\.com\/watch/i.test(link)) return onyoutube(link, cb) - if (/^\/*(ipfs|ipns)\//i.test(link)) return onipfslink(link, cb) - if (/^https?:\/\//i.test(link)) return onhttplink(link, cb) - onfile(link, cb) - } - - return that -} diff --git a/splash.gif b/splash.gif deleted file mode 100644 index 9b72e876c217f58947e9cc5834c2fd0cf42771d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233267 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 $!^*FM`yY1*LzRdr`BI{BR%G$xZhdJF{+=sU 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

y~{ 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 K&GHpN0027)OW=wC From 1ee87de058618c0eae2b3d71bf98a25717caa97f Mon Sep 17 00:00:00 2001 From: Brian Mathews Date: Fri, 18 Dec 2015 17:16:59 -0800 Subject: [PATCH 002/102] Fix width/height of video. Finish youtube support --- app/front/index.jsx | 2 +- app/front/styles/main.css | 19 +++---- app/front/styles/main.scss | 23 ++++---- app/loaders/youtube.js | 108 +++++++++++++++++++------------------ 4 files changed, 78 insertions(+), 74 deletions(-) diff --git a/app/front/index.jsx b/app/front/index.jsx index fdbda4a..7eef3eb 100644 --- a/app/front/index.jsx +++ b/app/front/index.jsx @@ -29,7 +29,7 @@ class App extends React.Component { } _handleLoadClick() { - Controller.addAndStart('file:///Users/brianmathews/Desktop/arrange.mov') + Controller.addAndStart('https://www.youtube.com/watch?v=IYia8yiIKGQ') } _handleSeek(e) { diff --git a/app/front/styles/main.css b/app/front/styles/main.css index ea0e960..3033a59 100644 --- a/app/front/styles/main.css +++ b/app/front/styles/main.css @@ -2,7 +2,8 @@ body { background: black; overflow: hidden; font-family: "Arial"; - font-size: 13px; } + font-size: 13px; + margin: 0; } .controls { position: fixed; @@ -10,7 +11,7 @@ body { right: 0; left: 0; background-color: #333; - color: #fff; } + color: #aaa; } .controls .controls__timeline { height: 10px; width: 100%; @@ -26,13 +27,13 @@ body { background: transparent; border: none; outline: none; - color: inherit; } + color: #fff; } + .controls .controls__toolbar > button:hover { + color: green; } .controls .controls__toolbar > .controls__title { - flex: 1; - color: #aaa; } - .controls .controls__toolbar > .controls__time { - color: #aaa; } + flex: 1; } video { - max-width: 100%; - max-height: 100%; } + position: fixed; + width: 100%; + height: 100%; } diff --git a/app/front/styles/main.scss b/app/front/styles/main.scss index 87efe04..7fc79f6 100644 --- a/app/front/styles/main.scss +++ b/app/front/styles/main.scss @@ -1,8 +1,9 @@ $body-bg: black; $body-font: 'Arial'; $controls-bg: #333; -$controls-fg: #fff; -$controls-title-fg: #aaa; +$controls-fg: #aaa; +$controls-icon-color: #fff; +$controls-icon-color-hover: green; $controls-timeline-height: 10px; $controls-timeline-bg: #222; $controls-timeline-progress-bg: green; @@ -12,6 +13,7 @@ body { overflow: hidden; font-family: $body-font; font-size: 13px; + margin: 0; } .controls { @@ -42,22 +44,21 @@ body { background: transparent; border: none; outline: none; - color: inherit; + color: $controls-icon-color; + + &:hover { + color: $controls-icon-color-hover; + } } > .controls__title { flex: 1; - color: $controls-title-fg; - } - - > .controls__time { - color: $controls-title-fg; } - } } video { - max-width: 100%; - max-height: 100%; + position: fixed; + width: 100%; + height: 100%; } diff --git a/app/loaders/youtube.js b/app/loaders/youtube.js index eb8c046..f542eb2 100644 --- a/app/loaders/youtube.js +++ b/app/loaders/youtube.js @@ -1,73 +1,75 @@ +import ytdl from 'ytdl-core' +import request from 'request' +import duplex from 'duplexify' + module.exports = { test(uri) { return /youtube\.com\/watch/i.test(uri) }, - load(uri) { - var file = {} - var url = /https?:/.test(uri) ? uri : 'https:' + uri - - getYoutubeData(function (err, data) { - if (err) return cb(err) - var fmt = data.fmt - var info = data.info - request({method: 'HEAD', url: fmt.url}, function (err, resp, body) { - if (err) return cb(err) - var len = resp.headers['content-length'] - if (!len) return cb(new Error('no content-length on response')) - file.length = +len - file.name = info.title + _getYoutubeData(url) { + return new Promise((resolve, reject) => { + ytdl.getInfo(url, (err, info) => { + if (err) return reject(err) - file.createReadStream = function (opts) { - if (!opts) opts = {} - // fetch this for every range request - // TODO try and avoid doing this call twice the first time - getYoutubeData(function (err, data) { - if (err) return cb(err) - var vidUrl = data.fmt.url - if (opts.start || opts.end) vidUrl += '&range=' + ([opts.start || 0, opts.end || len].join('-')) - stream.setReadable(request(vidUrl)) - }) + let vidFmt + const formats = info.formats - var stream = duplex() - return stream - } - file.id = that.entries.push(file) - 1 - that.emit('update') - cb() - }) - }) - - function getYoutubeData (cb) { - ytdl.getInfo(url, function (err, info) { - if (err) return cb(err) - - var vidFmt - var formats = info.formats - - formats.sort(function sort (a, b) { + formats.sort((a, b) => { return +a.itag - +b.itag }) - var vidFmt formats.forEach(function (fmt) { // prefer webm - if (fmt.itag === '46') return vidFmt = fmt - if (fmt.itag === '45') return vidFmt = fmt - if (fmt.itag === '44') return vidFmt = fmt - if (fmt.itag === '43') return vidFmt = fmt + if (fmt.itag === '46') vidFmt = fmt + if (fmt.itag === '45') vidFmt = fmt + if (fmt.itag === '44') vidFmt = fmt + if (fmt.itag === '43') vidFmt = fmt // otherwise h264 - if (fmt.itag === '38') return vidFmt = fmt - if (fmt.itag === '37') return vidFmt = fmt - if (fmt.itag === '22') return vidFmt = fmt - if (fmt.itag === '18') return vidFmt = fmt + if (fmt.itag === '38') vidFmt = fmt + if (fmt.itag === '37') vidFmt = fmt + if (fmt.itag === '22') vidFmt = fmt + if (fmt.itag === '18') vidFmt = fmt + return }) - if (!vidFmt) return cb (new Error('No suitable video format found')) + if (!vidFmt) return reject(new Error('No suitable video format found')) + + return resolve({ info, fmt: vidFmt }) + }) + }) + }, + + load(uri) { + return new Promise((resolve, reject) => { + const file = { uri } + const url = /https?:/.test(uri) ? uri : 'https:' + uri - cb(null, {info: info, fmt: vidFmt}) + this._getYoutubeData(url).then(data => { + const fmt = data.fmt + const vidUrl = fmt.url + const info = data.info + request({ method: 'HEAD', url: vidUrl }, (err, resp) => { + if (err) return reject(err) + + const len = resp.headers['content-length'] + if (!len) return reject(new Error('no content-length on response')) + file.length = +len + file.name = info.title + + file.createReadStream = (opts = {}) => { + const stream = duplex() + this._getYoutubeData(url).then(data2 => { + let vidUrl2 = data2.fmt.url + if (opts.start || opts.end) vidUrl2 += '&range=' + ([opts.start || 0, opts.end || len].join('-')) + stream.setReadable(request(vidUrl2)) + }) + return stream + } + resolve(file) + }) }) - } + }) } } From 7d75e1688517d0e53b68b25ef3599d5222247a92 Mon Sep 17 00:00:00 2001 From: Brian Mathews Date: Fri, 18 Dec 2015 19:01:06 -0800 Subject: [PATCH 003/102] Fix quality selection of youtube loader --- app/loaders/youtube.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/app/loaders/youtube.js b/app/loaders/youtube.js index f542eb2..8f40b56 100644 --- a/app/loaders/youtube.js +++ b/app/loaders/youtube.js @@ -16,21 +16,21 @@ module.exports = { const formats = info.formats formats.sort((a, b) => { - return +a.itag - +b.itag + return +b.itag - +a.itag }) - formats.forEach(function (fmt) { + formats.some(function (fmt) { // prefer webm - if (fmt.itag === '46') vidFmt = fmt - if (fmt.itag === '45') vidFmt = fmt - if (fmt.itag === '44') vidFmt = fmt - if (fmt.itag === '43') vidFmt = fmt + if (fmt.itag === '46') return vidFmt = fmt + if (fmt.itag === '45') return vidFmt = fmt + if (fmt.itag === '44') return vidFmt = fmt + if (fmt.itag === '43') return vidFmt = fmt // otherwise h264 - if (fmt.itag === '38') vidFmt = fmt - if (fmt.itag === '37') vidFmt = fmt - if (fmt.itag === '22') vidFmt = fmt - if (fmt.itag === '18') vidFmt = fmt + if (fmt.itag === '38') return vidFmt = fmt + if (fmt.itag === '37') return vidFmt = fmt + if (fmt.itag === '22') return vidFmt = fmt + if (fmt.itag === '18') return vidFmt = fmt return }) @@ -64,7 +64,7 @@ module.exports = { let vidUrl2 = data2.fmt.url if (opts.start || opts.end) vidUrl2 += '&range=' + ([opts.start || 0, opts.end || len].join('-')) stream.setReadable(request(vidUrl2)) - }) + }).catch(err2 => reject(err2)) return stream } resolve(file) From 7b5f8ff8ad43336c8740d70f6ed52105f9539cc1 Mon Sep 17 00:00:00 2001 From: Brian Mathews Date: Fri, 18 Dec 2015 19:01:37 -0800 Subject: [PATCH 004/102] Add support for displaying buffered amount. Button placeholders. Style improvements --- .eslintrc | 3 +- app/Controller.js | 3 +- app/engines/HTML5Video.js | 10 +++++-- app/front/components/Icon.jsx | 24 +++++++++++++++ app/front/index.jsx | 55 ++++++++++++++++++++++++++++++----- app/front/styles/main.css | 36 +++++++++++++++++------ app/front/styles/main.scss | 44 ++++++++++++++++++++++++---- 7 files changed, 147 insertions(+), 28 deletions(-) diff --git a/.eslintrc b/.eslintrc index 21c1b8f..51b95fa 100644 --- a/.eslintrc +++ b/.eslintrc @@ -22,6 +22,7 @@ "semi": [2, "never"], "func-names": 0, "comma-dangle": 0, - "consistent-return": 0 + "consistent-return": 0, + "no-return-assign": 0 } } diff --git a/app/Controller.js b/app/Controller.js index 728033b..5a7aaa4 100644 --- a/app/Controller.js +++ b/app/Controller.js @@ -195,7 +195,8 @@ class Controller extends EventEmitter { console.log('polling!') this.setState({ currentTime: this.state.engine.currentTime(), - duration: this.state.engine.duration() + duration: this.state.engine.duration(), + buffered: this.state.engine.buffered() }) }, this.state.engine.POLL_FREQUENCY) } diff --git a/app/engines/HTML5Video.js b/app/engines/HTML5Video.js index 086015c..5bc7e04 100644 --- a/app/engines/HTML5Video.js +++ b/app/engines/HTML5Video.js @@ -2,7 +2,7 @@ import { EventEmitter } from 'events' class HTML5Video extends EventEmitter { - get POLL_FREQUENCY() { return 250 } + get POLL_FREQUENCY() { return 500 } constructor(controller) { super() @@ -31,11 +31,15 @@ class HTML5Video extends EventEmitter { } duration() { - return this.element.duration + return this.element.duration || 0 } currentTime() { - return this.element.currentTime + return this.element.currentTime || 0 + } + + buffered() { + return this.element.buffered } } diff --git a/app/front/components/Icon.jsx b/app/front/components/Icon.jsx index ea8764f..cf8d07b 100644 --- a/app/front/components/Icon.jsx +++ b/app/front/components/Icon.jsx @@ -33,6 +33,30 @@ class Icon extends React.Component { return ( ) + case 'cast': + return ( + + ) + case 'cast-connected': + return ( + + ) + case 'fullscreen': + return ( + + ) + case 'volume-up': + return ( + + ) + case 'volume-mute': + return ( + + ) + case 'volume-down': + return ( + + ) default: return } diff --git a/app/front/index.jsx b/app/front/index.jsx index 7eef3eb..101eb78 100644 --- a/app/front/index.jsx +++ b/app/front/index.jsx @@ -28,8 +28,18 @@ class App extends React.Component { Controller.togglePlay() } - _handleLoadClick() { - Controller.addAndStart('https://www.youtube.com/watch?v=IYia8yiIKGQ') + _handlePlaylistClick() { + Controller.addAndStart('https://www.youtube.com/watch?v=ct47O2EIpWE').catch(err => { + console.error(err, err.stack) + }) + } + + _handleCastClick() { + + } + + _handleFullscreenClick() { + } _handleSeek(e) { @@ -38,6 +48,10 @@ class App extends React.Component { Controller.seekToSecond(time) } + _handleVolumeClick() { + + } + _formatTime(totalSeconds) { const hours = (totalSeconds / 3600) | 0 let mins = ((totalSeconds - hours * 3600) / 60) | 0 @@ -51,26 +65,51 @@ class App extends React.Component { const playIcon = this.state.status === Controller.STATUS_PLAYING ? 'pause' : 'play' const title = this.state.currentFile ? this.state.currentFile.name : 'No file' const { currentTime, duration } = this.state - const transitionSpeed = htmlEngine.POLL_FREQUENCY + 'ms' + const progressStyle = { + transition: `width ${htmlEngine.POLL_FREQUENCY}ms linear`, + width: currentTime / duration * 100 + '%' + } + + const bufferedBars = [] + const buffered = this.state.buffered + if (buffered && buffered.length) { + for (let i = 0; i < buffered.length; i++) { + const left = buffered.start(i) / duration * 100 + const width = (buffered.end(i) - buffered.start(i)) / duration * 100 + bufferedBars.push( +

+ ) + } + } const app = (
+

T)veR+8EaVmD{Og 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 z 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

+ ) + } + + _renderChromecastDialog() { + const items = this.state.chromecasts.map((cast, i) => { + const active = cast.host + cast.name === this.state.casting ? 'active' : '' + return
  • {cast.name}
  • + }) + + return ( +
    +
      + {items} +
    +
    + ) + } + render() { const playIcon = this.state.status === this.controller.STATUS_PLAYING ? 'pause' : 'play' const title = this.state.currentFile ? this.state.currentFile.name : 'No file' const { currentTime, duration } = this.state + const updateSpeed = this.state.player ? this.state.player.POLL_FREQUENCY : 1000 const progressStyle = { - transition: `width ${500}ms linear`, + transition: `width ${updateSpeed}ms linear`, width: currentTime / duration * 100 + '%' } @@ -78,14 +136,23 @@ class App extends React.Component { const left = buffered.start(i) / duration * 100 const width = (buffered.end(i) - buffered.start(i)) / duration * 100 bufferedBars.push( -
    +
    ) } } + let dialog + if (this.state.uiDialog === 'playlist') { + dialog = this._renderPlaylist() + } else if (this.state.uiDialog === 'chromecasts') { + dialog = this._renderChromecastDialog() + } + const app = ( -
    -