From 13551ab67fc8fb1899b5bcbfdec750855b154790 Mon Sep 17 00:00:00 2001
From: Kelvin <kelvin@futo.org>
Date: Wed, 20 Dec 2023 00:26:52 +0100
Subject: [PATCH] t parameter chapter support

---
 YoutubeConfig.json |  2 +-
 YoutubeScript.js   | 18 ++++++++++++++++--
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/YoutubeConfig.json b/YoutubeConfig.json
index 7c5357c..4c36b54 100644
--- a/YoutubeConfig.json
+++ b/YoutubeConfig.json
@@ -7,7 +7,7 @@
 	"sourceUrl": "https://plugins.grayjay.app/Youtube/YoutubeConfig.json",
 	"repositoryUrl": "https://futo.org",
 	"scriptUrl": "./YoutubeScript.js",
-	"version": 157,
+	"version": 158,
 	"iconUrl": "./youtube.png",
 	"id": "35ae969a-a7db-11ed-afa1-0242ac120002",
 
diff --git a/YoutubeScript.js b/YoutubeScript.js
index d67cd12..03771d6 100644
--- a/YoutubeScript.js
+++ b/YoutubeScript.js
@@ -452,7 +452,7 @@ source.getContentDetails = (url, useAuth) => {
 		};
 	}
 	finalResult.getContentChapters = function() {
-		source.getContentChapters(url, finalResult.__initialData);
+		return source.getContentChapters(url, finalResult.__initialData);
 	};
 
 	return finalResult;
@@ -548,8 +548,22 @@ source.getContentChapters = function(url, initialData) {
 	}
 
 	let videoChapters = [];
+
+    const queryParams = parseQueryString(url);
+    if(Type.Chapter.SKIPONCE && queryParams["t"]) {
+        const initialSkip = parseInt(queryParams["t"]);
+        if(!isNaN(initialSkip)) {
+            videoChapters.push({
+                name: "InitialSkip",
+                timeStart: parseFloat(-1),
+                timeEnd: parseFloat(initialSkip),
+                type: Type.Chapter.SKIPONCE
+            });
+        }
+    }
+
 	try {
-	    videoChapters = extractVideoChapters(initialData) ?? [];
+	    videoChapters = videoChapters.concat(extractVideoChapters(initialData) ?? []);
 	}
 	catch(ex) {
 	    //Chapters failed
-- 
GitLab