diff --git a/NUXT/components/Player/index.vue b/NUXT/components/Player/index.vue index 8c438db..c2a7eeb 100644 --- a/NUXT/components/Player/index.vue +++ b/NUXT/components/Player/index.vue @@ -213,6 +213,21 @@ export default { this.vidSrc = this.sources[this.sources.length - 1].url; // TODO: detect orientation change and enter fullscreen // TODO: detect video loading state and send this.loading to play button :loading = loading + + + this.$youtube.getSponsorBlock(this.$route.query.v, (data) => { + sponsorBlock = data.segment; + }); + + this.$refs.player.ontimeupdate = () => { + let vidTime = this.$refs.player.currentTime; + for (let i = 0; i < sponsorBlock.length; i++) { + if (vidTime > sponsorBlock[i][0] && vidTime < sponsorBlock[0][i]) { + this.$refs.player.currentTime = sponsorBlock[i][0]; + break; + } + } + } }, beforeDestroy() { if (this.isFullscreen) this.exitFullscreen(); diff --git a/NUXT/plugins/youtube.js b/NUXT/plugins/youtube.js index 87e1b3f..f89e4c2 100644 --- a/NUXT/plugins/youtube.js +++ b/NUXT/plugins/youtube.js @@ -64,6 +64,21 @@ const searchModule = { callback(err); }); }, + getSponsorBlock(id, callback) { + Http.request({ + method: "GET", + url: `https://sponsor.ajay.app/api/skipSegments`, + params: { videoID: id }, + }) + .then((res) => { + logger("sponsorBlock", res.data); + callback(res.data); + }) + .catch((err) => { + logger("codeRun", err, true); + callback(err); + }); + } }; //--- Recommendations ---//