YouTube title
This commit is contained in:
parent
4b62a5c74d
commit
0dc9681ae8
2
dist/plyr.js
vendored
2
dist/plyr.js
vendored
File diff suppressed because one or more lines are too long
2
dist/plyr.js.map
vendored
2
dist/plyr.js.map
vendored
File diff suppressed because one or more lines are too long
@ -23,22 +23,6 @@ const youtube = {
|
|||||||
// Set ID
|
// Set ID
|
||||||
this.media.setAttribute('id', utils.generateId(this.type));
|
this.media.setAttribute('id', utils.generateId(this.type));
|
||||||
|
|
||||||
// Get the media title via Google API
|
|
||||||
const key = this.config.keys.google;
|
|
||||||
if (utils.is.string(key) && !utils.is.empty(key)) {
|
|
||||||
const url = `https://www.googleapis.com/youtube/v3/videos?id=${videoId}&key=${key}&fields=items(snippet(title))&part=snippet`;
|
|
||||||
|
|
||||||
fetch(url)
|
|
||||||
.then(response => (response.ok ? response.json() : null))
|
|
||||||
.then(result => {
|
|
||||||
if (result !== null && utils.is.object(result)) {
|
|
||||||
this.config.title = result.items[0].snippet.title;
|
|
||||||
ui.setTitle.call(this);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(() => {});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setup API
|
// Setup API
|
||||||
if (utils.is.object(window.YT)) {
|
if (utils.is.object(window.YT)) {
|
||||||
youtube.ready.call(this, videoId);
|
youtube.ready.call(this, videoId);
|
||||||
@ -63,6 +47,39 @@ const youtube = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Get the media title
|
||||||
|
getTitle() {
|
||||||
|
// Try via undocumented API method first
|
||||||
|
// This method disappears now and then though...
|
||||||
|
// https://github.com/sampotts/plyr/issues/709
|
||||||
|
if (utils.is.function(this.embed.getVideoData)) {
|
||||||
|
const { title } = this.embed.getVideoData();
|
||||||
|
|
||||||
|
if (utils.is.empty(title)) {
|
||||||
|
this.config.title = title;
|
||||||
|
ui.setTitle.call(this);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Or via Google API
|
||||||
|
const key = this.config.keys.google;
|
||||||
|
const videoId = utils.parseYouTubeId(this.embedId);
|
||||||
|
if (utils.is.string(key) && !utils.is.empty(key)) {
|
||||||
|
const url = `https://www.googleapis.com/youtube/v3/videos?id=${videoId}&key=${key}&fields=items(snippet(title))&part=snippet`;
|
||||||
|
|
||||||
|
fetch(url)
|
||||||
|
.then(response => (response.ok ? response.json() : null))
|
||||||
|
.then(result => {
|
||||||
|
if (result !== null && utils.is.object(result)) {
|
||||||
|
this.config.title = result.items[0].snippet.title;
|
||||||
|
ui.setTitle.call(this);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
// Set aspect ratio
|
// Set aspect ratio
|
||||||
setAspectRatio() {
|
setAspectRatio() {
|
||||||
const ratio = this.config.ratio.split(':');
|
const ratio = this.config.ratio.split(':');
|
||||||
@ -161,6 +178,9 @@ const youtube = {
|
|||||||
// Get the instance
|
// Get the instance
|
||||||
const instance = event.target;
|
const instance = event.target;
|
||||||
|
|
||||||
|
// Get the title
|
||||||
|
youtube.getTitle.call(player);
|
||||||
|
|
||||||
// Create a faux HTML5 API using the YouTube API
|
// Create a faux HTML5 API using the YouTube API
|
||||||
player.media.play = () => {
|
player.media.play = () => {
|
||||||
instance.playVideo();
|
instance.playVideo();
|
||||||
@ -259,11 +279,6 @@ const youtube = {
|
|||||||
controls.setSpeedMenu.call(player, instance.getAvailablePlaybackRates());
|
controls.setSpeedMenu.call(player, instance.getAvailablePlaybackRates());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set title
|
|
||||||
if (utils.is.function(instance.getVideoData)) {
|
|
||||||
player.config.title = instance.getVideoData().title;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set the tabindex to avoid focus entering iframe
|
// Set the tabindex to avoid focus entering iframe
|
||||||
if (player.supported.ui) {
|
if (player.supported.ui) {
|
||||||
player.media.setAttribute('tabindex', -1);
|
player.media.setAttribute('tabindex', -1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user