Sha256: db505f04454ebe6c1fa2ccc9f87108d7129532fed6b8cd44e1ca5edd3a818d1a

Contents?: true

Size: 1.74 KB

Versions: 2

Compression:

Stored size: 1.74 KB

Contents

win = @

YT_BASE_URL = '//gdata.youtube.com/feeds/api/users/%USER%/uploads/%TAGS%?v=2&alt=json';

# A random sort function
randomizer = -> 0.5 - Math.random()

class @NE.YTPlayer
  constructor : (id, options) ->
    @id      = id
    @videos  = []
    @options = options || {}

    win.addEventListener 'load:program', @onLoad, false

  ready : =>
    @__ready__ = true

    @loadChannel()

  url : ->
    url  = "#{YT_BASE_URL}"
    user = @options.user
    tags = @options.tags

    url = url.replace( '%USER%', user )

    if tags && tags.length > 0
      tags.unshift '-'

      url.replace '%TAGS%', tags.join('/')
    else
      url.replace '%TAGS%', ''

  loadChannel : ->
    return unless @__ready__ and @__loaded__

    xhr = new XMLHttpRequest()
    xhr.addEventListener 'readystatechange', (e) =>
      if xhr.readyState == 4 && xhr.status == 200
        data = JSON.parse( xhr.responseText )

        @onChannelLoaded data

    xhr.open 'GET', @url(), true
    xhr.send()

  onChannelLoaded : (data) ->
    if data.feed.entry
      data.feed.entry.forEach (v) =>
        @videos.push v.media$group.yt$videoid.$t

    @videos.sort randomizer

    @createPlayer()

  createPlayer : ->
    @player = new YT.Player @id,
      playerVars :
        autohide: 1
      events : 
        onReady       : @onPlayerReady,
        onStateChange : @onPlayerStateChange

  onPlayerReady : (e) =>
    @player.setLoop    true
    @player.setShuffle true

    @player.loadPlaylist playlist:@videos

    @player.playVideo()

  onPlayerStateChange : (e) =>
    if e.data == YT.PlayerState.ENDED
      @player.nextVideo()

  onLoad : (e) =>
    @__loaded__ = true

    payload = e.detail.data

    Object.keys(payload).forEach (k) =>
      @options[k] = payload[k]

    @loadChannel()

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
network_executive-0.0.8 app/assets/javascripts/network_executive/components/you_tube_player.coffee
network_executive-0.0.7 app/assets/javascripts/network_executive/components/you_tube_player.coffee