show "use yt-dlp" in manifest for youtube, use plugin-react-swc
This commit is contained in:
		
							parent
							
								
									6e22837047
								
							
						
					
					
						commit
						3fae8f296f
					
				
							
								
								
									
										245
									
								
								frontend/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										245
									
								
								frontend/package-lock.json
									
									
									
										generated
									
									
									
								
							@ -1,12 +1,12 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "frontend",
 | 
			
		||||
    "version": "0.0.0",
 | 
			
		||||
    "version": "2.1.0",
 | 
			
		||||
    "lockfileVersion": 3,
 | 
			
		||||
    "requires": true,
 | 
			
		||||
    "packages": {
 | 
			
		||||
        "": {
 | 
			
		||||
            "name": "frontend",
 | 
			
		||||
            "version": "0.0.0",
 | 
			
		||||
            "version": "2.1.0",
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "@tailwindcss/vite": "^4.1.11",
 | 
			
		||||
                "react": "^19.1.0",
 | 
			
		||||
@ -19,6 +19,7 @@
 | 
			
		||||
                "@types/react": "^19.1.8",
 | 
			
		||||
                "@types/react-dom": "^19.1.6",
 | 
			
		||||
                "@vitejs/plugin-react": "^4.7.0",
 | 
			
		||||
                "@vitejs/plugin-react-swc": "^3.11.0",
 | 
			
		||||
                "eslint": "^9.31.0",
 | 
			
		||||
                "eslint-plugin-react-hooks": "^5.2.0",
 | 
			
		||||
                "eslint-plugin-react-refresh": "^0.4.20",
 | 
			
		||||
@ -1255,6 +1256,232 @@
 | 
			
		||||
                "win32"
 | 
			
		||||
            ]
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@swc/core": {
 | 
			
		||||
            "version": "1.13.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.13.1.tgz",
 | 
			
		||||
            "integrity": "sha512-jEKKErLC6uwSqA+p6bmZR08usZM5Fpc+HdEu5CAzvye0q43yf1si1kjhHEa9XMkz0A2SAaal3eKCg/YYmtOsCA==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "hasInstallScript": true,
 | 
			
		||||
            "license": "Apache-2.0",
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "@swc/counter": "^0.1.3",
 | 
			
		||||
                "@swc/types": "^0.1.23"
 | 
			
		||||
            },
 | 
			
		||||
            "engines": {
 | 
			
		||||
                "node": ">=10"
 | 
			
		||||
            },
 | 
			
		||||
            "funding": {
 | 
			
		||||
                "type": "opencollective",
 | 
			
		||||
                "url": "https://opencollective.com/swc"
 | 
			
		||||
            },
 | 
			
		||||
            "optionalDependencies": {
 | 
			
		||||
                "@swc/core-darwin-arm64": "1.13.1",
 | 
			
		||||
                "@swc/core-darwin-x64": "1.13.1",
 | 
			
		||||
                "@swc/core-linux-arm-gnueabihf": "1.13.1",
 | 
			
		||||
                "@swc/core-linux-arm64-gnu": "1.13.1",
 | 
			
		||||
                "@swc/core-linux-arm64-musl": "1.13.1",
 | 
			
		||||
                "@swc/core-linux-x64-gnu": "1.13.1",
 | 
			
		||||
                "@swc/core-linux-x64-musl": "1.13.1",
 | 
			
		||||
                "@swc/core-win32-arm64-msvc": "1.13.1",
 | 
			
		||||
                "@swc/core-win32-ia32-msvc": "1.13.1",
 | 
			
		||||
                "@swc/core-win32-x64-msvc": "1.13.1"
 | 
			
		||||
            },
 | 
			
		||||
            "peerDependencies": {
 | 
			
		||||
                "@swc/helpers": ">=0.5.17"
 | 
			
		||||
            },
 | 
			
		||||
            "peerDependenciesMeta": {
 | 
			
		||||
                "@swc/helpers": {
 | 
			
		||||
                    "optional": true
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@swc/core-darwin-arm64": {
 | 
			
		||||
            "version": "1.13.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.13.1.tgz",
 | 
			
		||||
            "integrity": "sha512-zO6SW/jSMTUORPm6dUZFPUwf+EFWZsaXWMGXadRG6akCofYpoQb8pcY2QZkVr43z8TMka6BtXpyoD/DJ0iOPHQ==",
 | 
			
		||||
            "cpu": [
 | 
			
		||||
                "arm64"
 | 
			
		||||
            ],
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "license": "Apache-2.0 AND MIT",
 | 
			
		||||
            "optional": true,
 | 
			
		||||
            "os": [
 | 
			
		||||
                "darwin"
 | 
			
		||||
            ],
 | 
			
		||||
            "engines": {
 | 
			
		||||
                "node": ">=10"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@swc/core-darwin-x64": {
 | 
			
		||||
            "version": "1.13.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.13.1.tgz",
 | 
			
		||||
            "integrity": "sha512-8RjaTZYxrlYKE5PgzZYWSOT4mAsyhIuh30Nu4dnn/2r0Ef68iNCbvX4ynGnFMhOIhqunjQbJf+mJKpwTwdHXhw==",
 | 
			
		||||
            "cpu": [
 | 
			
		||||
                "x64"
 | 
			
		||||
            ],
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "license": "Apache-2.0 AND MIT",
 | 
			
		||||
            "optional": true,
 | 
			
		||||
            "os": [
 | 
			
		||||
                "darwin"
 | 
			
		||||
            ],
 | 
			
		||||
            "engines": {
 | 
			
		||||
                "node": ">=10"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@swc/core-linux-arm-gnueabihf": {
 | 
			
		||||
            "version": "1.13.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.13.1.tgz",
 | 
			
		||||
            "integrity": "sha512-jEqK6pECs2m4BpL2JA/4CCkq04p6iFOEtVNXTisO+lJ3zwmxlnIEm9UfJZG6VSu8GS9MHRKGB0ieZ1tEdN1qDA==",
 | 
			
		||||
            "cpu": [
 | 
			
		||||
                "arm"
 | 
			
		||||
            ],
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "license": "Apache-2.0",
 | 
			
		||||
            "optional": true,
 | 
			
		||||
            "os": [
 | 
			
		||||
                "linux"
 | 
			
		||||
            ],
 | 
			
		||||
            "engines": {
 | 
			
		||||
                "node": ">=10"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@swc/core-linux-arm64-gnu": {
 | 
			
		||||
            "version": "1.13.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.13.1.tgz",
 | 
			
		||||
            "integrity": "sha512-PbkuIOYXO/gQbWQ7NnYIwm59ygNqmUcF8LBeoKvxhx1VtOwE+9KiTfoplOikkPLhMiTzKsd8qentTslbITIg+Q==",
 | 
			
		||||
            "cpu": [
 | 
			
		||||
                "arm64"
 | 
			
		||||
            ],
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "license": "Apache-2.0 AND MIT",
 | 
			
		||||
            "optional": true,
 | 
			
		||||
            "os": [
 | 
			
		||||
                "linux"
 | 
			
		||||
            ],
 | 
			
		||||
            "engines": {
 | 
			
		||||
                "node": ">=10"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@swc/core-linux-arm64-musl": {
 | 
			
		||||
            "version": "1.13.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.13.1.tgz",
 | 
			
		||||
            "integrity": "sha512-JaqFdBCarIBKiMu5bbAp+kWPMNGg97ej+7KzbKOzWP5pRptqKi86kCDZT3WmjPe8hNG6dvBwbm7Y8JNry5LebQ==",
 | 
			
		||||
            "cpu": [
 | 
			
		||||
                "arm64"
 | 
			
		||||
            ],
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "license": "Apache-2.0 AND MIT",
 | 
			
		||||
            "optional": true,
 | 
			
		||||
            "os": [
 | 
			
		||||
                "linux"
 | 
			
		||||
            ],
 | 
			
		||||
            "engines": {
 | 
			
		||||
                "node": ">=10"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@swc/core-linux-x64-gnu": {
 | 
			
		||||
            "version": "1.13.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.13.1.tgz",
 | 
			
		||||
            "integrity": "sha512-t4cLkku10YECDaakWUH0452WJHIZtrLPRwezt6BdoMntVMwNjvXRX7C8bGuYcKC3YxRW7enZKFpozLhQIQ37oA==",
 | 
			
		||||
            "cpu": [
 | 
			
		||||
                "x64"
 | 
			
		||||
            ],
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "license": "Apache-2.0 AND MIT",
 | 
			
		||||
            "optional": true,
 | 
			
		||||
            "os": [
 | 
			
		||||
                "linux"
 | 
			
		||||
            ],
 | 
			
		||||
            "engines": {
 | 
			
		||||
                "node": ">=10"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@swc/core-linux-x64-musl": {
 | 
			
		||||
            "version": "1.13.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.13.1.tgz",
 | 
			
		||||
            "integrity": "sha512-fSMwZOaG+3ukUucbEbzz9GhzGhUhXoCPqHe9qW0/Vc2IZRp538xalygKyZynYweH5d9EHux1aj3+IO8/xBaoiA==",
 | 
			
		||||
            "cpu": [
 | 
			
		||||
                "x64"
 | 
			
		||||
            ],
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "license": "Apache-2.0 AND MIT",
 | 
			
		||||
            "optional": true,
 | 
			
		||||
            "os": [
 | 
			
		||||
                "linux"
 | 
			
		||||
            ],
 | 
			
		||||
            "engines": {
 | 
			
		||||
                "node": ">=10"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@swc/core-win32-arm64-msvc": {
 | 
			
		||||
            "version": "1.13.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.13.1.tgz",
 | 
			
		||||
            "integrity": "sha512-tweCXK/79vAwj1NhAsYgICy8T1z2QEairmN2BFEBYFBFNMEB1iI1YlXwBkBtuihRvgZrTh1ORusKa4jLYzLCZA==",
 | 
			
		||||
            "cpu": [
 | 
			
		||||
                "arm64"
 | 
			
		||||
            ],
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "license": "Apache-2.0 AND MIT",
 | 
			
		||||
            "optional": true,
 | 
			
		||||
            "os": [
 | 
			
		||||
                "win32"
 | 
			
		||||
            ],
 | 
			
		||||
            "engines": {
 | 
			
		||||
                "node": ">=10"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@swc/core-win32-ia32-msvc": {
 | 
			
		||||
            "version": "1.13.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.13.1.tgz",
 | 
			
		||||
            "integrity": "sha512-zi7hO9D+2R2yQN9D7T10/CAI9KhuXkNkz8tcJOW6+dVPtAk/gsIC5NoGPELjgrAlLL9CS38ZQpLDslLfpP15ng==",
 | 
			
		||||
            "cpu": [
 | 
			
		||||
                "ia32"
 | 
			
		||||
            ],
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "license": "Apache-2.0 AND MIT",
 | 
			
		||||
            "optional": true,
 | 
			
		||||
            "os": [
 | 
			
		||||
                "win32"
 | 
			
		||||
            ],
 | 
			
		||||
            "engines": {
 | 
			
		||||
                "node": ">=10"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@swc/core-win32-x64-msvc": {
 | 
			
		||||
            "version": "1.13.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.13.1.tgz",
 | 
			
		||||
            "integrity": "sha512-KubYjzqs/nz3H69ncX/XHKsC8c1xqc7UvonQAj26BhbL22HBsqdAaVutZ+Obho6RMpd3F5qQ95ldavUTWskRrw==",
 | 
			
		||||
            "cpu": [
 | 
			
		||||
                "x64"
 | 
			
		||||
            ],
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "license": "Apache-2.0 AND MIT",
 | 
			
		||||
            "optional": true,
 | 
			
		||||
            "os": [
 | 
			
		||||
                "win32"
 | 
			
		||||
            ],
 | 
			
		||||
            "engines": {
 | 
			
		||||
                "node": ">=10"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@swc/counter": {
 | 
			
		||||
            "version": "0.1.3",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz",
 | 
			
		||||
            "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "license": "Apache-2.0"
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@swc/types": {
 | 
			
		||||
            "version": "0.1.23",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.23.tgz",
 | 
			
		||||
            "integrity": "sha512-u1iIVZV9Q0jxY+yM2vw/hZGDNudsN85bBpTqzAQ9rzkxW9D+e3aEM4Han+ow518gSewkXgjmEK0BD79ZcNVgPw==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "license": "Apache-2.0",
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "@swc/counter": "^0.1.3"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@tailwindcss/node": {
 | 
			
		||||
            "version": "4.1.11",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.11.tgz",
 | 
			
		||||
@ -1616,6 +1843,20 @@
 | 
			
		||||
                "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@vitejs/plugin-react-swc": {
 | 
			
		||||
            "version": "3.11.0",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.11.0.tgz",
 | 
			
		||||
            "integrity": "sha512-YTJCGFdNMHCMfjODYtxRNVAYmTWQ1Lb8PulP/2/f/oEEtglw8oKxKIZmmRkyXrVrHfsKOaVkAc3NT9/dMutO5w==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "license": "MIT",
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "@rolldown/pluginutils": "1.0.0-beta.27",
 | 
			
		||||
                "@swc/core": "^1.12.11"
 | 
			
		||||
            },
 | 
			
		||||
            "peerDependencies": {
 | 
			
		||||
                "vite": "^4 || ^5 || ^6 || ^7"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/acorn": {
 | 
			
		||||
            "version": "8.15.0",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
 | 
			
		||||
 | 
			
		||||
@ -21,6 +21,7 @@
 | 
			
		||||
        "@types/react": "^19.1.8",
 | 
			
		||||
        "@types/react-dom": "^19.1.6",
 | 
			
		||||
        "@vitejs/plugin-react": "^4.7.0",
 | 
			
		||||
        "@vitejs/plugin-react-swc": "^3.11.0",
 | 
			
		||||
        "eslint": "^9.31.0",
 | 
			
		||||
        "eslint-plugin-react-hooks": "^5.2.0",
 | 
			
		||||
        "eslint-plugin-react-refresh": "^0.4.20",
 | 
			
		||||
 | 
			
		||||
@ -6,6 +6,7 @@ function Results() {
 | 
			
		||||
    const [licenseUrl, setLicenseUrl] = useState("");
 | 
			
		||||
    const [keys, setKeys] = useState([]);
 | 
			
		||||
    const [manifestUrl, setManifestUrl] = useState("");
 | 
			
		||||
    const [currentTabUrl, setCurrentTabUrl] = useState("");
 | 
			
		||||
 | 
			
		||||
    useEffect(() => {
 | 
			
		||||
        chrome.storage.local.get(
 | 
			
		||||
@ -36,6 +37,21 @@ function Results() {
 | 
			
		||||
            }
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        // Get current tab URL when component mounts
 | 
			
		||||
        chrome.windows.getAll({ populate: true, windowTypes: ["normal"] }, (windows) => {
 | 
			
		||||
            if (windows && windows.length > 0) {
 | 
			
		||||
                const lastFocusedWindow = windows.find((w) => w.focused) || windows[0];
 | 
			
		||||
                if (lastFocusedWindow) {
 | 
			
		||||
                    const activeTab = lastFocusedWindow.tabs.find(
 | 
			
		||||
                        (tab) => tab.active && tab.url && /^https?:\/\//.test(tab.url)
 | 
			
		||||
                    );
 | 
			
		||||
                    if (activeTab?.url) {
 | 
			
		||||
                        setCurrentTabUrl(activeTab.url);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        const handleChange = (changes, area) => {
 | 
			
		||||
            if (area === "local") {
 | 
			
		||||
                if (changes.drmType) {
 | 
			
		||||
@ -102,8 +118,31 @@ function Results() {
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    // Export to JSON file
 | 
			
		||||
    // Check if current tab is YouTube
 | 
			
		||||
    const isYouTube = () => {
 | 
			
		||||
        return currentTabUrl.includes("youtube.com") || currentTabUrl.includes("youtu.be");
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    // Get manifest URL display value
 | 
			
		||||
    const getManifestDisplayValue = () => {
 | 
			
		||||
        if (manifestUrl) {
 | 
			
		||||
            return manifestUrl;
 | 
			
		||||
        }
 | 
			
		||||
        if (isYouTube()) {
 | 
			
		||||
            return "[Use yt-dlp to download video]";
 | 
			
		||||
        }
 | 
			
		||||
        return "";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    // Get manifest URL placeholder
 | 
			
		||||
    const getManifestPlaceholder = () => {
 | 
			
		||||
        if (isYouTube() && !manifestUrl) {
 | 
			
		||||
            return "[Use yt-dlp to download video]";
 | 
			
		||||
        }
 | 
			
		||||
        return "[Not available]";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    // Export to JSON file
 | 
			
		||||
    const hasData = () => {
 | 
			
		||||
        return (
 | 
			
		||||
            drmType ||
 | 
			
		||||
@ -164,9 +203,11 @@ function Results() {
 | 
			
		||||
            <p className="text-2xl mt-5">Manifest URL</p>
 | 
			
		||||
            <input
 | 
			
		||||
                type="text"
 | 
			
		||||
                value={manifestUrl}
 | 
			
		||||
                className="w-full h-10 bg-slate-800/50 rounded-md p-2 mt-2 text-white font-mono"
 | 
			
		||||
                placeholder="[Not available]"
 | 
			
		||||
                value={getManifestDisplayValue()}
 | 
			
		||||
                className={`w-full h-10 bg-slate-800/50 rounded-md p-2 mt-2 font-mono ${
 | 
			
		||||
                    isYouTube() && !manifestUrl ? "text-yellow-400" : "text-white"
 | 
			
		||||
                }`}
 | 
			
		||||
                placeholder={getManifestPlaceholder()}
 | 
			
		||||
                disabled
 | 
			
		||||
            />
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
import tailwindcss from "@tailwindcss/vite";
 | 
			
		||||
import react from "@vitejs/plugin-react";
 | 
			
		||||
import react from "@vitejs/plugin-react-swc";
 | 
			
		||||
import { readFileSync } from "fs";
 | 
			
		||||
import { defineConfig } from "vite";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user