first commit

This commit is contained in:
2024-02-16 22:50:11 +01:00
commit 5f7ba1d7f4
10 changed files with 123 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.idea/

24
background.js Normal file
View File

@@ -0,0 +1,24 @@
/* chrome.runtime.onInstalled.addListener(() => {
chrome.action.setBadgeBackgroundColor({ color: '#FF0000' });
chrome.action.setBadgeText({text: 'ON'});
}); */
chrome.action.onClicked.addListener((tab) => {
// Ensure we have a valid tab ID
if (tab.id !== undefined) {
chrome.tabs.get(tab.id, (currentTab) => {
if (currentTab.url.includes('youtube.com/watch?v=')) {
const videoID = new URL(currentTab.url).searchParams.get('v');
if (videoID) {
const newURL = 'https://pip.turtel.xyz/watch?v=' + videoID;
chrome.tabs.update(currentTab.id, { url: newURL });
} else {
alert("This doesn't seem to be a valid YouTube video URL.");
}
} else {
alert("Please navigate to a YouTube video before clicking the extension icon.");
}
});
}
});

30
content.js Normal file
View File

@@ -0,0 +1,30 @@
const button = document.createElement('button');
button.id = 'redirectBtn';
button.innerText = 'Watch on Pipet';
button.classList.add('main-button');
button.addEventListener('click', function() {
const videoID = window.location.search.match(/v=([a-zA-Z0-9_-]+)/);
if (videoID && videoID[1]) {
const newURL = 'https://pip.turtel.xyz/watch?v=' + videoID[1];
window.location.href = newURL;
} else {
alert("This doesn't seem to be a valid YouTube video URL.");
}
});
function insertButtonIfTargetExists() {
const targetElement = document.getElementById('masthead').querySelector('ytd-topbar-menu-button-renderer');
if (targetElement && targetElement.parentElement) {
targetElement.parentElement.insertBefore(button, targetElement);
// If found and added, disconnect the observer
observer.disconnect();
}
}
const observer = new MutationObserver(insertButtonIfTargetExists);
observer.observe(document.body, {
childList: true,
subtree: true
});

BIN
icon128.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
icon16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
icon48.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

27
manifest.json Normal file
View File

@@ -0,0 +1,27 @@
{
"manifest_version": 3,
"name": "Pipet redirector XD",
"version": "1.0",
"description": "Redirects from YouTube to Piped.video using the video's ID",
"permissions": ["tabs"],
"content_scripts": [{
"matches": ["https://www.youtube.com/watch*"],
"css": ["styles.css"],
"js": ["content.js"]
}],
"background": {
"service_worker": "background.js"
},
"action": {
"default_icon": {
"16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png"
}
},
"icons": {
"16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png"
}
}

16
popup.html Normal file
View File

@@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Redirect to Piped.video</title>
<style>
body {
width: 200px;
font-family: Arial, sans-serif;
}
</style>
</head>
<body>
<button id="redirectBtn">Redirect to Pipet</button>
<script src="popup.js"></script>
</body>
</html>

13
popup.js Normal file
View File

@@ -0,0 +1,13 @@
document.getElementById('redirectBtn').addEventListener('click', function() {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
var currentTab = tabs[0];
var videoID = currentTab.url.match(/watch\?v=([a-zA-Z0-9_-]+)/);
if(videoID && videoID[1]) {
var newURL = 'https://piped.video/watch?v=' + videoID[1];
chrome.tabs.update(currentTab.id, {url: newURL});
} else {
alert("This doesn't seem to be a valid YouTube video URL.");
}
});
});

12
styles.css Normal file
View File

@@ -0,0 +1,12 @@
.main-button {
background: #FF0000;
color: white;
border: none;
border-radius: 5px;
padding: 10px 15px;
font-size: 14px;
cursor: pointer;
z-index: 9999;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
margin-right: 10px;
}