Log play attempt separately for each file

This commit is contained in:
Adam Gotlib
2016-10-11 11:26:27 +02:00
committed by Dan Flettre
parent e8ab172d1b
commit de2db211cc
3 changed files with 9 additions and 13 deletions

View File

@@ -1,7 +1,5 @@
const electron = require('electron') const {ipcRenderer} = require('electron')
const telemetry = require('../lib/telemetry')
const ipcRenderer = electron.ipcRenderer
const Playlist = require('../lib/playlist') const Playlist = require('../lib/playlist')
// Controls local play back: the <video>/<audio> tag and VLC // Controls local play back: the <video>/<audio> tag and VLC
@@ -12,7 +10,7 @@ module.exports = class MediaController {
} }
mediaSuccess () { mediaSuccess () {
this.state.playing.result = 'success' telemetry.logPlayAttempt('success')
} }
mediaStalled () { mediaStalled () {
@@ -22,7 +20,7 @@ module.exports = class MediaController {
mediaError (error) { mediaError (error) {
const state = this.state const state = this.state
if (state.location.url() === 'player') { if (state.location.url() === 'player') {
state.playing.result = 'error' telemetry.logPlayAttempt('error')
state.playing.location = 'error' state.playing.location = 'error'
ipcRenderer.send('checkForExternalPlayer', state.saved.prefs.externalPlayerPath) ipcRenderer.send('checkForExternalPlayer', state.saved.prefs.externalPlayerPath)
ipcRenderer.once('checkForExternalPlayer', function (e, isInstalled) { ipcRenderer.once('checkForExternalPlayer', function (e, isInstalled) {

View File

@@ -211,6 +211,7 @@ module.exports = class PlaybackController {
const torrentSummary = TorrentSummary.getByKey(state, infoHash) const torrentSummary = TorrentSummary.getByKey(state, infoHash)
state.playing.infoHash = torrentSummary.infoHash state.playing.infoHash = torrentSummary.infoHash
state.playing.isReady = false
// update UI to show pending playback // update UI to show pending playback
sound.play('PLAY') sound.play('PLAY')
@@ -232,6 +233,7 @@ module.exports = class PlaybackController {
function onTorrentReady () { function onTorrentReady () {
ipcRenderer.send('wt-start-server', torrentSummary.infoHash) ipcRenderer.send('wt-start-server', torrentSummary.infoHash)
ipcRenderer.once('wt-server-running', () => state.playing.isReady = true)
} }
} }
@@ -320,12 +322,7 @@ module.exports = class PlaybackController {
// Save volume (this session only, not in state.saved) // Save volume (this session only, not in state.saved)
state.previousVolume = state.playing.volume state.previousVolume = state.playing.volume
// Telemetry: track what happens after the user clicks play if (!state.playing.isReady) telemetry.logPlayAttempt('abandoned') // user gave up waiting
const result = state.playing.result // 'success' or 'error'
if (result === 'success') telemetry.logPlayAttempt('success') // first frame displayed
else if (result === 'error') telemetry.logPlayAttempt('error') // codec missing, etc
else if (result === undefined) telemetry.logPlayAttempt('abandoned') // user gave up waiting
else console.error('Unknown state.playing.result', state.playing.result)
// Reset the window contents back to the home screen // Reset the window contents back to the home screen
state.playing = State.getDefaultPlayState() state.playing = State.getDefaultPlayState()

View File

@@ -91,7 +91,8 @@ function getDefaultPlayState () {
location: 'local', /* 'local', 'chromecast', 'airplay' */ location: 'local', /* 'local', 'chromecast', 'airplay' */
type: null, /* 'audio' or 'video', could be 'other' if ever support eg streaming to VLC */ type: null, /* 'audio' or 'video', could be 'other' if ever support eg streaming to VLC */
currentTime: 0, /* seconds */ currentTime: 0, /* seconds */
duration: 1, /* seconds */ duration: 1, /* seconds */,
isReady: false,
isPaused: true, isPaused: true,
isStalled: false, isStalled: false,
lastTimeUpdate: 0, /* Unix time in ms */ lastTimeUpdate: 0, /* Unix time in ms */