Compare commits

..

16 Commits

Author SHA1 Message Date
tigermren 55c3b548ca feat(background): add context menu item for sending current page to MeTube
- Create a new context menu item 'metube-page' for page context
- Update context menu URL patterns for YouTube and related sites in options
- Modify context menu click handler to use page URL if link URL is not available
- Ensure clicking context menu can send current page URL to MeTube and optionally switch tab
2025-11-11 00:39:26 +08:00
Виктор Диктор 984c717e36
Merge pull request #17 from Rpsl/v1.7
v1.7
2024-04-23 22:55:57 +03:00
Rpsl cff03d5072 v1.7 2024-04-23 22:54:36 +03:00
Виктор Диктор af0f0a0985
Merge pull request #16 from mutschler/patch-3
Add advanced Options (subfolder, prefix, autostart)
2024-04-23 22:50:40 +03:00
mutschler 0eebd6fbea
chg: set default values for advancedSettings 2024-04-06 05:41:22 +02:00
mutschler dc51ce5734
fix: set default value for autostart 2024-03-23 01:08:04 +01:00
Raphael Mutschler f166f505c9 new: option to prevent auto start fixes: #15 2024-03-22 18:10:14 +01:00
mutschler ff5fc0558d
chore: remove debug statements 2024-03-22 17:50:06 +01:00
mutschler beb78bfcce
fix: re-apply patch-1 2024-03-22 17:45:35 +01:00
mutschler a29f69520c
Merge branch 'master' into patch-3 2024-03-22 17:41:52 +01:00
Виктор Диктор a545f0c6cb
Merge pull request #14 from Rpsl/v1.6
v1.6
2024-01-19 10:08:48 +03:00
Rpsl e957c729f0 v1.6 2023-11-25 22:37:18 +02:00
Виктор Диктор 84bafb56a0
Merge pull request #12 from mutschler/mutschler-patch-1
fix: open metube tab after clicking on extension icon
2023-11-20 10:26:09 +03:00
Виктор Диктор 31d1d22563
Merge pull request #13 from mutschler/mutschler-patch-2
fix: allow custom sites when only one is added
2023-11-20 10:24:53 +03:00
mutschler 0b3dff4f89
fix: allow custom sites when only one is added 2023-11-19 01:52:46 +01:00
mutschler 0fb491c02e
fix: open metube tab after clicking on extension icon 2023-11-19 01:47:04 +01:00
6 changed files with 34 additions and 10 deletions

Binary file not shown.

Binary file not shown.

View File

@ -11,6 +11,12 @@ chrome.runtime.onInstalled.addListener(function () {
],
contexts: ['link'],
});
chrome.contextMenus.create({
id: 'metube-page',
title: "Send page to MeTube",
contexts: ['page'],
});
});
function sendVideoUrlToMetube(videoUrl, metubeUrl, format, advancedSettings, callback) {
@ -26,15 +32,18 @@ function sendVideoUrlToMetube(videoUrl, metubeUrl, format, advancedSettings, cal
let postData = {
"quality": "best",
"format": format,
"url": videoUrl
"url": videoUrl,
'auto_start': !advancedSettings['disable_auto_start'] ?? true
}
Object.keys(advancedSettings).forEach((key) => {
if (advancedSettings[key]) {
if (advancedSettings[key] && !['disable_auto_start'].includes(key) ) {
postData[key] = hostname.startsWith('www.') ? hostname.replace('www.', '') : hostname
}
})
console.log(postData)
fetch(metubeUrl + "/add", {
method: 'POST',
headers: {
@ -61,7 +70,8 @@ chrome.contextMenus.onClicked.addListener(function (item, tab) {
let needToSwitch = (data.contextMenuClickBehavior === 'context-menu-send-current-url-and-switch');
sendVideoUrlToMetube(item.linkUrl, data.metube, data.defaultFormat, data.advancedSettings, function () {
let videoUrl = item.linkUrl || item.pageUrl;
sendVideoUrlToMetube(videoUrl, data.metube, data.defaultFormat, data.advancedSettings, function () {
if (needToSwitch) {
openTab(data.metube, tab);
}
@ -90,7 +100,7 @@ chrome.action.onClicked.addListener(function (tab) {
// use this tab to get the youtube video URL
let videoUrl = tabs[0].url;
sendVideoUrlToMetube(videoUrl, data.metube, data.defaultFormat, data.advancedSettings, function () {
if (!needToSwitch) {
if (needToSwitch) {
openTab(data.metube, tab);
}
});

View File

@ -1,7 +1,7 @@
{
"name": "MeTube Downloader",
"description": "Use the context menu to send video into MeTube application",
"version": "1.5",
"version": "1.7",
"manifest_version": 3,
"permissions": ["contextMenus", "storage", "tabs"],
"background": {

View File

@ -58,6 +58,7 @@
<div id="advanced_settings">
<input type="checkbox" name="folder" id="folder" value="true"><label for="folder">Use subfolder based on the Hostname of the URL</label><br>
<input type="checkbox" name="custom_name_prefix" id="custom_name_prefix" value="true"><label for="custom_name_prefix">Use name-prefix based on the Hostname of the URL</label><br>
<input type="checkbox" name="disable_auto_start" id="disable_auto_start" value="true"><label for="disable_auto_start">Disable auto start of Downloads</label><br>
</div>
<h3>Additional sites</h3>

View File

@ -12,13 +12,15 @@ async function saveOptions() {
let advancedElements = document.querySelectorAll('#advanced_settings input');
let advancedSettings = {};
let advancedSettings = {
'folder': false,
'custom_name_prefix': false,
'disable_auto_start': false
};
advancedElements.forEach((e) => {
advancedSettings[e.name] = e.checked ? true : false
})
console.log(advancedSettings)
chrome.storage.sync.set({
"metube": url,
"sites": sites,
@ -39,7 +41,7 @@ async function saveOptions() {
// todo: fix it
// also need make function for check string
// https://developer.chrome.com/docs/extensions/mv3/match_patterns/
if(sites.length <= 1){
if(!sites.length){
return;
}
@ -55,6 +57,18 @@ async function saveOptions() {
}
);
chrome.contextMenus.update(
'metube-page',
{
documentUrlPatterns: [
'https://www.youtube.com/*',
'https://m.youtube.com/*',
'https://youtu.be/*',
...sites
]
}
);
}
async function restoreOptions() {
@ -88,7 +102,6 @@ async function restoreOptions() {
if (data.advancedSettings !== undefined) {
Object.keys(data.advancedSettings).forEach((key) => {
console.log(key)
document.getElementById(key).checked = data.advancedSettings[key];
})
}