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