Start working on Dailymotion
This commit is contained in:
parent
a291836a99
commit
daf2463a6a
4 changed files with 269 additions and 25 deletions
105
player/dailymotion.coffee
Normal file
105
player/dailymotion.coffee
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
window.DailymotionPlayer = class DailymotionPlayer extends Player
|
||||
constructor: (data) ->
|
||||
if not (this instanceof DailymotionPlayer)
|
||||
return new DailymotionPlayer(data)
|
||||
|
||||
@setMediaProperties(data)
|
||||
@initialVolumeSet = false
|
||||
|
||||
waitUntilDefined(window, 'DM', =>
|
||||
removeOld()
|
||||
|
||||
params =
|
||||
autoplay: 1
|
||||
wmode: if USEROPTS.wmode_transparent then 'transparent' else 'opaque'
|
||||
logo: 0
|
||||
|
||||
quality = @mapQuality(USEROPTS.default_quality)
|
||||
if quality != 'auto'
|
||||
params.quality = quality
|
||||
|
||||
@dm = DM.player('ytapiplayer',
|
||||
video: data.id
|
||||
width: parseInt(VWIDTH, 10)
|
||||
height: parseInt(VHEIGHT, 10)
|
||||
params: params
|
||||
)
|
||||
|
||||
@dm.addEventListener('apiready', =>
|
||||
@dm.ready = true
|
||||
@dm.addEventListener('ended', ->
|
||||
if CLIENT.leader
|
||||
socket.emit('playNext')
|
||||
)
|
||||
|
||||
@dm.addEventListener('pause', =>
|
||||
@paused = true
|
||||
if CLIENT.leader
|
||||
sendVideoUpdate()
|
||||
)
|
||||
|
||||
@dm.addEventListener('playing', =>
|
||||
@paused = false
|
||||
if CLIENT.leader
|
||||
sendVideoUpdate()
|
||||
|
||||
if not @initialVolumeSet
|
||||
@setVolume(VOLUME)
|
||||
@initialVolumeSet = true
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
load: (data) ->
|
||||
@setMediaProperties(data)
|
||||
if @dm and @dm.ready
|
||||
@dm.load(data.id)
|
||||
@dm.seek(data.currentTime)
|
||||
else
|
||||
console.error('WTF? DailymotionPlayer::load() called but dm is not ready')
|
||||
|
||||
pause: ->
|
||||
if @dm and @dm.ready
|
||||
@paused = true
|
||||
@dm.pause()
|
||||
|
||||
play: ->
|
||||
if @dm and @dm.ready
|
||||
@paused = false
|
||||
@dm.play()
|
||||
|
||||
seekTo: (time) ->
|
||||
if @dm and @dm.ready
|
||||
@dm.seek(time)
|
||||
|
||||
setVolume: (volume) ->
|
||||
if @dm and @dm.ready
|
||||
@dm.setVolume(volume)
|
||||
|
||||
getTime: (cb) ->
|
||||
if @dm and @dm.ready
|
||||
cb(@dm.currentTime)
|
||||
else
|
||||
cb(0)
|
||||
|
||||
getVolume: (cb) ->
|
||||
if @dm and @dm.ready
|
||||
if @dm.muted
|
||||
cb(0)
|
||||
else
|
||||
volume = @dm.volume
|
||||
# There was once a bug in Dailymotion where it sometimes gave back
|
||||
# volumes in the wrong range. Not sure if this is still a necessary
|
||||
# check.
|
||||
if volume > 1
|
||||
volume /= 100
|
||||
cb(volume)
|
||||
else
|
||||
cb(VOLUME)
|
||||
|
||||
mapQuality: (quality) ->
|
||||
switch String(quality)
|
||||
when '240', '480', '720', '1080' then String(quality)
|
||||
when '360' then '380'
|
||||
when 'best' then '1080'
|
||||
else 'auto'
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
TYPE_MAP =
|
||||
yt: YouTubePlayer
|
||||
vi: VimeoPlayer
|
||||
dm: DailymotionPlayer
|
||||
|
||||
window.loadMediaPlayer = (data) ->
|
||||
if data.type of TYPE_MAP
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ window.YouTubePlayer = class YouTubePlayer extends Player
|
|||
|
||||
waitUntilDefined(window, 'YT', =>
|
||||
# Even after window.YT is defined, YT.Player may not be, which causes a
|
||||
# "YT.Player is not a constructor" error occasionally
|
||||
# 'YT.Player is not a constructor' error occasionally
|
||||
waitUntilDefined(YT, 'Player', =>
|
||||
removeOld()
|
||||
|
||||
|
|
@ -94,15 +94,15 @@ window.YouTubePlayer = class YouTubePlayer extends Player
|
|||
return
|
||||
|
||||
ytQuality = switch String(quality)
|
||||
when "240" then "small"
|
||||
when "360" then "medium"
|
||||
when "480" then "large"
|
||||
when "720" then "hd720"
|
||||
when "1080" then "hd1080"
|
||||
when "best" then "highres"
|
||||
else "auto"
|
||||
when '240' then 'small'
|
||||
when '360' then 'medium'
|
||||
when '480' then 'large'
|
||||
when '720' then 'hd720'
|
||||
when '1080' then 'hd1080'
|
||||
when 'best' then 'highres'
|
||||
else 'auto'
|
||||
|
||||
if ytQuality != "auto"
|
||||
if ytQuality != 'auto'
|
||||
@yt.setPlaybackQuality(ytQuality)
|
||||
|
||||
getTime: (cb) ->
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue