add kodi queue
This commit is contained in:
		| @@ -7,7 +7,7 @@ | ||||
|         "48": "icon-48.png", | ||||
|         "128": "icon-128.png" | ||||
|     }, | ||||
|     "version": "108.0", | ||||
|     "version": "109.0", | ||||
|     "manifest_version": 3, | ||||
|     "host_permissions": ["http://127.0.0.1:4000/jsonrpc"], | ||||
|     "permissions": ["tabs"], | ||||
|   | ||||
| @@ -4,7 +4,8 @@ | ||||
|         <title>Proxy Stream</title> | ||||
|     </head> | ||||
|     <body> | ||||
|         <button>Proxy Stream</button> | ||||
|         <button>Play on kodi</button> | ||||
|         <button id="proxy-button">Proxy Stream</button> | ||||
|         <button id="kodi-play-button">Play on kodi</button> | ||||
|         <button id="kodi-queue-button">Queue on kodi</button> | ||||
|     </body> | ||||
| </html> | ||||
|   | ||||
							
								
								
									
										137
									
								
								chrome/script.js
									
									
									
									
									
								
							
							
						
						
									
										137
									
								
								chrome/script.js
									
									
									
									
									
								
							| @@ -12,75 +12,90 @@ const random = () => { | ||||
| } | ||||
|  | ||||
| document.addEventListener("DOMContentLoaded", () => { | ||||
|     let [proxyButton, kodiButton] = document.getElementsByTagName("button") | ||||
|     proxyButton.addEventListener("click", (ev) => { | ||||
|         chrome.tabs.query({currentWindow: true, active: true}, (tabs) => { | ||||
|             let oldurl = new URL(tabs[0].url) | ||||
|             let newurl = new URL("https://stream.purser.it") | ||||
|             let search = new URLSearchParams() | ||||
|             let hostname = oldurl.hostname.toLowerCase() | ||||
|             if(providers.has(hostname)) { | ||||
|                 if(hostname.includes("youtube.com")) { | ||||
|                     let newpath = oldurl.searchParams.get("v") | ||||
|                     if((newpath instanceof String) || ((typeof newpath) === "string")) { | ||||
|                         newurl.pathname = "/" + newpath | ||||
|                     } | ||||
|                 } else { | ||||
|                     newurl.pathname = oldurl.pathname | ||||
|     const proxyButton = document.getElementById("proxy-button") | ||||
|     const kodiPlayButton = document.getElementById("kodi-play-button") | ||||
|     const kodiQueueButton = document.getElementById("kodi-queue-button") | ||||
|  | ||||
|     async function handleProxyButton(ev) { | ||||
|         const [tab] = chrome.tabs.query({currentWindow: true, active: true}) | ||||
|         const oldurl = new URL(tab.url) | ||||
|         const search = new URLSearchParams() | ||||
|         const hostname = oldurl.hostname.toLowerCase() | ||||
|         let newurl = new URL("https://stream.purser.it") | ||||
|          | ||||
|         if(providers.has(hostname)) { | ||||
|             if(hostname.includes("youtube.com")) { | ||||
|                 let newpath = oldurl.searchParams.get("v") | ||||
|                 if((newpath instanceof String) || ((typeof newpath) === "string")) { | ||||
|                     newurl.pathname = "/" + newpath | ||||
|                 } | ||||
|             } else { | ||||
|                 newurl.pathname = oldurl.pathname | ||||
|             } | ||||
|             search.append("provider", providers.get(hostname)) | ||||
|         } | ||||
|         newurl.search = search.toString() | ||||
|         const newtab = {} | ||||
|         newtab.url = newurl.href | ||||
|         chrome.tabs.create(newtab) | ||||
|     } | ||||
|  | ||||
|     async function handleKodiButton(ev, method, playlistid) { | ||||
|         const [tab] = await chrome.tabs.query({currentWindow: true, active: true}) | ||||
|         const oldurl = new URL(tab.url) | ||||
|         const search = new URLSearchParams() | ||||
|         const hostname = oldurl.hostname.toLowerCase() | ||||
|         let newurl = new URL("https://stream.purser.it") | ||||
|  | ||||
|         if(providers.has(hostname)) { | ||||
|             if(hostname.includes("youtube.com")) { | ||||
|                 newurl = new URL("plugin://plugin.video.youtube") | ||||
|                 search.append("action", "play_video") | ||||
|                 let video_id = oldurl.searchParams.get("v") | ||||
|                 if(video_id) { | ||||
|                     search.append("videoid", video_id) | ||||
|                 } | ||||
|             } else { | ||||
|                 search.append("provider", providers.get(hostname)) | ||||
|                 search.append("raw", "true") | ||||
|                 newurl.pathname = oldurl.pathname | ||||
|             } | ||||
|             newurl.search = search.toString() | ||||
|             let tab = {} | ||||
|             tab.url = newurl.href | ||||
|             chrome.tabs.create(tab) | ||||
|         }) | ||||
|     }) | ||||
|     kodiButton.addEventListener("click", (ev) => { | ||||
|         chrome.tabs.query({currentWindow: true, active: true}, (tabs) => { | ||||
|             let oldurl = new URL(tabs[0].url) | ||||
|             let newurl = new URL("https://stream.purser.it") | ||||
|             let search = new URLSearchParams() | ||||
|             let hostname = oldurl.hostname.toLowerCase() | ||||
|             if(providers.has(hostname)) { | ||||
|                 if(hostname.includes("youtube.com")) { | ||||
|                     newurl = new URL("plugin://plugin.video.youtube") | ||||
|                     search.append("action", "play_video") | ||||
|                     let video_id = oldurl.searchParams.get("v") | ||||
|                     if(video_id) { | ||||
|                         search.append("videoid", video_id) | ||||
|                     } | ||||
|                 } else { | ||||
|                     search.append("provider", providers.get(hostname)) | ||||
|                     search.append("raw", "true") | ||||
|                     newurl.pathname = oldurl.pathname | ||||
|         } | ||||
|  | ||||
|         newurl.search = search.toString() | ||||
|  | ||||
|         const req = { | ||||
|             jsonrpc: "2.0", | ||||
|             method: method, | ||||
|             id:     random(), | ||||
|             params: { | ||||
|                 item: { | ||||
|                     file: newurl.href | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | ||||
|             newurl.search = search.toString() | ||||
|         if(playlistid) { | ||||
|             req.params.playlistid = 1 | ||||
|         } | ||||
|  | ||||
|             let req = { | ||||
|                 jsonrpc: "2.0", | ||||
|                 method: "Player.Open", | ||||
|                 id:     random(), | ||||
|                 params: { | ||||
|                     item: { | ||||
|                         file: newurl.href | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             try { | ||||
|                 fetch("http://127.0.0.1:4000/jsonrpc", { | ||||
|                     method: "POST", | ||||
|                     body: JSON.stringify(req), | ||||
|                     headers: { | ||||
|                         "Content-Type": "application/json; charset=utf-8" | ||||
|                     } | ||||
|                 }).then(resp => console.log(resp)) | ||||
|             } catch(e) { | ||||
|                 console.log(e) | ||||
|         const resp = await fetch("http://127.0.0.1:4000/jsonrpc", { | ||||
|             method: "POST", | ||||
|             body: JSON.stringify(req), | ||||
|             headers: { | ||||
|                 "Content-Type": "application/json; charset=utf-8" | ||||
|             } | ||||
|         }) | ||||
|         console.log(resp) | ||||
|     } | ||||
|  | ||||
|     kodiPlayButton.addEventListener("click", async ev => { | ||||
|         await handleKodiButton(ev, "Player.Open") | ||||
|     }) | ||||
|  | ||||
|     kodiQueueButton.addEventListener("click", async ev => { | ||||
|         await handleKodiButton(ev, "Playlist.Add", 1) | ||||
|     }) | ||||
|  | ||||
|     proxyButton.addEventListener("click", handleProxyButton) | ||||
| }) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user