Fix video thumbnails and fix various issues with PiP mode
This commit is contained in:
parent
78a1655dd8
commit
51593176cc
|
@ -575,6 +575,8 @@ export default Vue.extend({
|
||||||
this.player.dispose()
|
this.player.dispose()
|
||||||
this.player = null
|
this.player = null
|
||||||
clearTimeout(this.mouseTimeout)
|
clearTimeout(this.mouseTimeout)
|
||||||
|
} else if (this.player.isInPictureInPicture()) {
|
||||||
|
this.player.play()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -43,6 +43,7 @@ export default Vue.extend({
|
||||||
isUpcoming: false,
|
isUpcoming: false,
|
||||||
upcomingTimestamp: null,
|
upcomingTimestamp: null,
|
||||||
activeFormat: 'legacy',
|
activeFormat: 'legacy',
|
||||||
|
thumbnail: '',
|
||||||
videoId: '',
|
videoId: '',
|
||||||
videoTitle: '',
|
videoTitle: '',
|
||||||
videoDescription: '',
|
videoDescription: '',
|
||||||
|
@ -113,26 +114,6 @@ export default Vue.extend({
|
||||||
return this.$store.getters.getPlayNextVideo
|
return this.$store.getters.getPlayNextVideo
|
||||||
},
|
},
|
||||||
|
|
||||||
thumbnail: function () {
|
|
||||||
let baseUrl
|
|
||||||
if (this.backendPreference === 'invidious') {
|
|
||||||
baseUrl = this.invidiousInstance
|
|
||||||
} else {
|
|
||||||
baseUrl = 'https://i.ytimg.com'
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (this.thumbnailPreference) {
|
|
||||||
case 'start':
|
|
||||||
return `${baseUrl}/vi/${this.videoId}/maxres1.jpg`
|
|
||||||
case 'middle':
|
|
||||||
return `${baseUrl}/vi/${this.videoId}/maxres2.jpg`
|
|
||||||
case 'end':
|
|
||||||
return `${baseUrl}/vi/${this.videoId}/maxres3.jpg`
|
|
||||||
default:
|
|
||||||
return `${baseUrl}/vi/${this.videoId}/maxresdefault.jpg`
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
youtubeNoCookieEmbeddedFrame: function () {
|
youtubeNoCookieEmbeddedFrame: function () {
|
||||||
return `<iframe width='560' height='315' src='https://www.youtube-nocookie.com/embed/${this.videoId}?rel=0' frameborder='0' allow='autoplay; encrypted-media' allowfullscreen></iframe>`
|
return `<iframe width='560' height='315' src='https://www.youtube-nocookie.com/embed/${this.videoId}?rel=0' frameborder='0' allow='autoplay; encrypted-media' allowfullscreen></iframe>`
|
||||||
}
|
}
|
||||||
|
@ -206,8 +187,23 @@ export default Vue.extend({
|
||||||
this.channelName = result.videoDetails.author.name
|
this.channelName = result.videoDetails.author.name
|
||||||
this.channelThumbnail = result.videoDetails.author.avatar
|
this.channelThumbnail = result.videoDetails.author.avatar
|
||||||
this.videoPublished = new Date(result.videoDetails.publishDate.replace('-', '/')).getTime()
|
this.videoPublished = new Date(result.videoDetails.publishDate.replace('-', '/')).getTime()
|
||||||
this.videoDescription =
|
this.videoDescription = result.player_response.videoDetails.shortDescription
|
||||||
result.player_response.videoDetails.shortDescription
|
|
||||||
|
switch (this.thumbnailPreference) {
|
||||||
|
case 'start':
|
||||||
|
this.thumbnail = `https://i.ytimg.com/vi/${this.videoId}/maxres1.jpg`
|
||||||
|
break
|
||||||
|
case 'middle':
|
||||||
|
this.thumbnail = `https://i.ytimg.com/vi/${this.videoId}/maxres2.jpg`
|
||||||
|
break
|
||||||
|
case 'end':
|
||||||
|
this.thumbnail = `https://i.ytimg.com/vi/${this.videoId}/maxres3.jpg`
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
this.thumbnail = result.videoDetails.thumbnail.thumbnails[result.videoDetails.thumbnail.thumbnails.length - 1].url
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
this.recommendedVideos = result.related_videos.map((video) => {
|
this.recommendedVideos = result.related_videos.map((video) => {
|
||||||
video.videoId = video.id
|
video.videoId = video.id
|
||||||
video.authorId = video.ucid
|
video.authorId = video.ucid
|
||||||
|
@ -379,6 +375,21 @@ export default Vue.extend({
|
||||||
return caption
|
return caption
|
||||||
})
|
})
|
||||||
|
|
||||||
|
switch (this.thumbnailPreference) {
|
||||||
|
case 'start':
|
||||||
|
this.thumbnail = `${this.invidiousInstance}/vi/${this.videoId}/maxres1.jpg`
|
||||||
|
break
|
||||||
|
case 'middle':
|
||||||
|
this.thumbnail = `${this.invidiousInstance}/vi/${this.videoId}/maxres2.jpg`
|
||||||
|
break
|
||||||
|
case 'end':
|
||||||
|
this.thumbnail = `${this.invidiousInstance}/vi/${this.videoId}/maxres3.jpg`
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
this.thumbnail = result.videoThumbnails[0].url
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
if (this.isLive) {
|
if (this.isLive) {
|
||||||
this.showLegacyPlayer = true
|
this.showLegacyPlayer = true
|
||||||
this.showDashPlayer = false
|
this.showDashPlayer = false
|
||||||
|
@ -651,6 +662,25 @@ export default Vue.extend({
|
||||||
console.log('update watch progress')
|
console.log('update watch progress')
|
||||||
this.updateWatchProgress(payload)
|
this.updateWatchProgress(payload)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (player.isInPictureInPicture()) {
|
||||||
|
setTimeout(() => {
|
||||||
|
player.play()
|
||||||
|
player.on('leavepictureinpicture', () => {
|
||||||
|
const watchTime = player.currentTime()
|
||||||
|
if (this.$route.fullPath.includes('/watch')) {
|
||||||
|
const routeId = this.$route.params.id
|
||||||
|
if (routeId === this.videoId) {
|
||||||
|
const activePlayer = $('.ftVideoPlayer video').get(0)
|
||||||
|
activePlayer.currentTime = watchTime
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
player.pause()
|
||||||
|
player.dispose()
|
||||||
|
})
|
||||||
|
}, 200)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue