Merge branch 'pr/196' into develop

# Conflicts:
#	dist/plyr.js
This commit is contained in:
Sam Potts 2016-04-30 11:08:42 +10:00
commit aa093b6c42
2 changed files with 177 additions and 47 deletions

4
dist/plyr.js vendored

File diff suppressed because one or more lines are too long

View File

@ -131,7 +131,7 @@
frameTitle: 'Player for {title}'
},
types: {
embed: ['youtube', 'vimeo'],
embed: ['youtube', 'vimeo', 'soundcloud'],
html5: ['video', 'audio']
},
// URLs
@ -141,6 +141,9 @@
},
youtube: {
api: 'https://www.youtube.com/iframe_api'
},
soundcloud: {
api: 'https://w.soundcloud.com/player/api.js'
}
},
// Custom control listeners
@ -1425,6 +1428,35 @@
}
}, 50);
}
// Soundcloud
else if (plyr.type === 'soundcloud') {
// Inject the iframe
var iframe = document.createElement('iframe');
// Watch for iframe load
iframe.loaded = false;
_on(iframe, 'load', function() { iframe.loaded = true; });
_setAttributes(iframe, {
'src': 'https://w.soundcloud.com/player/?url=https://api.soundcloud.com/tracks/' + videoId,
'id': id
});
container.appendChild(iframe);
plyr.media.appendChild(container);
if (!window.SC) {
_injectScript(config.urls.soundcloud.api);
}
// Wait for SC load
var timer = window.setInterval(function() {
if (window.SC && iframe.loaded) {
window.clearInterval(timer);
_soundcloudReady.call(iframe);
}
}, 50);
}
}
// When embeds are ready
@ -1649,6 +1681,84 @@
});
}
// Soundcloud ready
function _soundcloudReady() {
plyr.embed = SC.Widget(this);
// Setup on ready
plyr.embed.bind(SC.Widget.Events.READY, function() {
// Create a faux HTML5 API using the Soundcloud API
plyr.media.play = function() {
plyr.embed.play();
plyr.media.paused = false;
};
plyr.media.pause = function() {
plyr.embed.pause();
plyr.media.paused = true;
};
plyr.media.stop = function() {
plyr.embed.seekTo(0);
plyr.embed.pause();
plyr.media.paused = true;
};
plyr.media.paused = true;
plyr.media.currentTime = 0;
// Update UI
_embedReady();
plyr.embed.getPosition(function(value) {
plyr.media.currentTime = value;
// Trigger timeupdate
_triggerEvent(plyr.media, 'timeupdate');
});
plyr.embed.getDuration(function(value) {
plyr.media.duration = value/1000;
// Display duration if available
_displayDuration();
});
plyr.embed.bind(SC.Widget.Events.PLAY, function() {
plyr.media.paused = false;
_triggerEvent(plyr.media, 'play');
_triggerEvent(plyr.media, 'playing');
});
plyr.embed.bind(SC.Widget.Events.PAUSE, function() {
plyr.media.paused = true;
_triggerEvent(plyr.media, 'pause');
});
plyr.embed.bind(SC.Widget.Events.PLAY_PROGRESS, function(data) {
plyr.media.seeking = false;
plyr.media.currentTime = data.currentPosition/1000;
_triggerEvent(plyr.media, 'timeupdate');
});
plyr.embed.bind(SC.Widget.Events.LOAD_PROGRESS, function(data) {
plyr.media.buffered = data.loadProgress;
_triggerEvent(plyr.media, 'progress');
if (parseInt(data.loadProgress) === 1) {
// Trigger event
_triggerEvent(plyr.media, 'canplaythrough');
}
});
plyr.embed.bind(SC.Widget.Events.FINISH, function() {
plyr.media.paused = true;
_triggerEvent(plyr.media, 'ended');
});
// Autoplay
if (config.autoplay) {
plyr.embed.play();
}
});
}
// Play media
function _play() {
if ('play' in plyr.media) {
@ -1747,6 +1857,10 @@
// Round to nearest second for vimeo
plyr.embed.api('seekTo', targetTime.toFixed(0));
break;
case 'soundcloud':
plyr.embed.seekTo(targetTime * 1000);
break;
}
if (paused) {
@ -1880,6 +1994,10 @@
case 'vimeo':
plyr.embed.api('setVolume', plyr.media.muted ? 0 : parseFloat(config.volume / 10));
break;
case 'soundcloud':
plyr.embed.setVolume(plyr.media.muted ? 0 : parseFloat(config.volume / 10));
break;
}
// Trigger volumechange for embeds
@ -1935,6 +2053,10 @@
case 'vimeo':
plyr.embed.api('setVolume', plyr.media.volume);
break;
case 'soundcloud':
plyr.embed.setVolume(plyr.media.volume);
break;
}
// Trigger volumechange for embeds
@ -2259,6 +2381,12 @@
});
break;
case 'soundcloud':
plyr.embed.getCurrentSound(function(object) {
url = object.permalink_url;
});
break;
default:
url = plyr.media.currentSrc;
break;
@ -2338,6 +2466,7 @@
case 'youtube':
case 'vimeo':
case 'soundcloud':
plyr.media = document.createElement('div');
plyr.embedId = source.sources[0].src;
break;
@ -2897,6 +3026,7 @@
case 'vimeo':
case 'youtube':
case 'soundcloud':
basic = true;
full = (!oldIE && !iPhone);
break;