Skip to content

Commit

Permalink
Allows you to go to the new up video.
Browse files Browse the repository at this point in the history
  • Loading branch information
TroyWarez committed Oct 10, 2023
1 parent 6de53fd commit 5017931
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 35 deletions.
4 changes: 2 additions & 2 deletions manifest.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"name": "BetterMediaKeys",
"version": "1.0.0.2",
"version": "1.0.0.3",
"description": "Use your media keys to navigate YouTube chapters without browser focus.",
"action": {},
"manifest_version": 3,
"content_scripts": [
{
"run_at": "document_idle",
"run_at": "document_start",
"matches": ["https://*.youtube.com/*"],
"exclude_matches": ["https://music.youtube.com/*"],
"js": ["main.js"]
Expand Down
73 changes: 40 additions & 33 deletions mediaKeys.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
const config = { attributes: true, childList: true, subtree: true };
var ytInitialData;
var ytChapterData = null;
//var ytSessionVideoData = null;
document.addEventListener("yt-navigate-finish", function (event)
var ytPlaylist = null;
document.addEventListener("yt-navigate-finish", SetChapterData, true);
document.addEventListener("DOMContentLoaded", SetChapterData, true);

function SetChapterData(event)
{
if(("detail" in event)//Cumbersome
if(
(typeof event !== 'undefined')
&& ("detail" in event)//Cumbersome
&& ("response" in event.detail)
&& ("response" in event.detail.response)
&& ("playerOverlays" in event.detail.response.response)
Expand All @@ -21,39 +26,43 @@ document.addEventListener("yt-navigate-finish", function (event)
ytChapterData = event.detail.response.response.playerOverlays.playerOverlayRenderer.decoratedPlayerBarRenderer.decoratedPlayerBarRenderer.playerBar.multiMarkersPlayerBarRenderer.markersMap[0].value;
}
}
});
else if((ytChapterData === null)
&& ("playerOverlays" in ytInitialData)
&& ("playerOverlayRenderer" in ytInitialData.playerOverlays)
&& ("decoratedPlayerBarRenderer" in ytInitialData.playerOverlays.playerOverlayRenderer)
&& ("decoratedPlayerBarRenderer" in ytInitialData.playerOverlays.playerOverlayRenderer.decoratedPlayerBarRenderer)
&& ("playerBar" in ytInitialData.playerOverlays.playerOverlayRenderer.decoratedPlayerBarRenderer.decoratedPlayerBarRenderer)
&& ("multiMarkersPlayerBarRenderer" in ytInitialData.playerOverlays.playerOverlayRenderer.decoratedPlayerBarRenderer.decoratedPlayerBarRenderer.playerBar)
&& ("markersMap" in ytInitialData.playerOverlays.playerOverlayRenderer.decoratedPlayerBarRenderer.decoratedPlayerBarRenderer.playerBar.multiMarkersPlayerBarRenderer)
&& (ytInitialData.playerOverlays.playerOverlayRenderer.decoratedPlayerBarRenderer.decoratedPlayerBarRenderer.playerBar.multiMarkersPlayerBarRenderer.markersMap instanceof Array) )
{
if( ytInitialData.playerOverlays.playerOverlayRenderer.decoratedPlayerBarRenderer.decoratedPlayerBarRenderer.playerBar.multiMarkersPlayerBarRenderer.markersMap.length !== 0)
{
ytChapterData = ytInitialData.playerOverlays.playerOverlayRenderer.decoratedPlayerBarRenderer.decoratedPlayerBarRenderer.playerBar.multiMarkersPlayerBarRenderer.markersMap[0].value;
}
}

}

function SetMediaKeys()// Must now be injected into the current video page.
{
const currentChapterText = document.getElementsByClassName("ytp-chapter-title-content")[0];
const moviePlayer = document.getElementById("movie_player");
const url = window.location;
let params = new URLSearchParams(url.search);
let list = params.has('list');
if((ytChapterData === null)
&& ("playerOverlays" in ytInitialData)
&& ("playerOverlayRenderer" in ytInitialData.playerOverlays)
&& ("decoratedPlayerBarRenderer" in ytInitialData.playerOverlays.playerOverlayRenderer)
&& ("decoratedPlayerBarRenderer" in ytInitialData.playerOverlays.playerOverlayRenderer.decoratedPlayerBarRenderer)
&& ("playerBar" in ytInitialData.playerOverlays.playerOverlayRenderer.decoratedPlayerBarRenderer.decoratedPlayerBarRenderer)
&& ("multiMarkersPlayerBarRenderer" in ytInitialData.playerOverlays.playerOverlayRenderer.decoratedPlayerBarRenderer.decoratedPlayerBarRenderer.playerBar)
&& ("markersMap" in ytInitialData.playerOverlays.playerOverlayRenderer.decoratedPlayerBarRenderer.decoratedPlayerBarRenderer.playerBar.multiMarkersPlayerBarRenderer)
&& (ytInitialData.playerOverlays.playerOverlayRenderer.decoratedPlayerBarRenderer.decoratedPlayerBarRenderer.playerBar.multiMarkersPlayerBarRenderer.markersMap instanceof Array) )
let list = null;

if(params.has('list') || params.has('start_radio') || params.has('index'))
{
if( ytInitialData.playerOverlays.playerOverlayRenderer.decoratedPlayerBarRenderer.decoratedPlayerBarRenderer.playerBar.multiMarkersPlayerBarRenderer.markersMap.length !== 0)
{
ytChapterData = ytInitialData.playerOverlays.playerOverlayRenderer.decoratedPlayerBarRenderer.decoratedPlayerBarRenderer.playerBar.multiMarkersPlayerBarRenderer.markersMap[0].value;
}
list = true;
}

if( (typeof currentChapterText !== 'undefined') && ("textContent" in currentChapterText) && (currentChapterText.textContent !== ''))
{
navigator.mediaSession.metadata.title = currentChapterText.textContent;
}
else
{
return;
}
if ("mediaSession" in navigator && list === false) {

if ("mediaSession" in navigator && list === null) {

navigator.mediaSession.setActionHandler('previoustrack', function() {
const currentChapterText = document.getElementsByClassName("ytp-chapter-title-content")[0];
Expand All @@ -62,9 +71,7 @@ function SetMediaKeys()// Must now be injected into the current video page.
navigator.mediaSession.metadata.title = currentChapterText.textContent;
}
const moviePlayer = document.getElementById("movie_player");
if((moviePlayer !== null) && ("seekToChapterWithAnimation" in moviePlayer) && (typeof currentChapterText !== 'undefined') && ("textContent" in currentChapterText) && (currentChapterText.textContent !== '')){
//moviePlayer.previousVideo(); doesn't work unless your in a playlist.
//history.back();
if((moviePlayer !== null) && ("seekToChapterWithAnimation" in moviePlayer) && ("seekTo" in moviePlayer) && (typeof currentChapterText !== 'undefined') && ("textContent" in currentChapterText) && (currentChapterText.textContent !== '')){
if( (typeof currentChapterText !== 'undefined') && ("textContent" in currentChapterText) && (currentChapterText.textContent !== ''))
{
let CurrentChapterIndex = ytChapterData.chapters.findIndex(i => i.chapterRenderer.title.simpleText === currentChapterText.textContent);
Expand All @@ -79,7 +86,6 @@ function SetMediaKeys()// Must now be injected into the current video page.
}
else if((StartTimeSec - 5) === 0)//Cleaner
{
moviePlayer.CurrentTime = 0;
moviePlayer.seekTo(0);
return;
}
Expand All @@ -94,9 +100,9 @@ function SetMediaKeys()// Must now be injected into the current video page.
}

}
else if (ytChapterData !== null){

//document.dispatchEvent(new KeyboardEvent('keydown', {'keyCode': 37, 'which': 37, 'altKey' : true, 'ctrlKey' : true}));// 37 is "ArrowLeft", 39 is "ArrowRight".
else if ((moviePlayer !== null) && ("seekTo" in moviePlayer)){
moviePlayer.seekTo(0);
return;
}
});
navigator.mediaSession.setActionHandler('nexttrack', function() {
Expand All @@ -107,8 +113,6 @@ function SetMediaKeys()// Must now be injected into the current video page.
}
const moviePlayer = document.getElementById("movie_player");
if((moviePlayer !== null) && ("seekToChapterWithAnimation" in moviePlayer) && ("seekTo" in moviePlayer) && (typeof currentChapterText !== 'undefined') && ("textContent" in currentChapterText) && (currentChapterText.textContent !== '')){
//moviePlayer.previousVideo(); doesn't work unless your in a playlist.
//history.back();
if( (typeof currentChapterText !== 'undefined') && ("textContent" in currentChapterText) && (currentChapterText.textContent !== ''))
{
let CurrentChapterIndex = ytChapterData.chapters.findIndex(i => i.chapterRenderer.title.simpleText === currentChapterText.textContent);
Expand All @@ -119,7 +123,10 @@ function SetMediaKeys()// Must now be injected into the current video page.
}

}
});
else if(moviePlayer !== null && ("nextVideo" in moviePlayer)){
moviePlayer.nextVideo();
};
});
}
}
const observer = new MutationObserver(SetMediaKeys);
Expand Down

0 comments on commit 5017931

Please sign in to comment.