Warning: fopen(/www/sites/update.greasyfork.icu/index/store/temp/8f4c59b6f7965c9c8489ae6c72a59106.js): failed to open stream: No space left on device in /www/sites/update.greasyfork.icu/index/scriptControl.php on line 65
// ==UserScript==
// @name Download Media with Cobalt API
// @namespace https://github.com/tizee/tempermonkey-download-with-cobalt
// @version 1.1
// @description Adds a context menu item to download media from supported video sites using a direct URL.
// @author tizee
// @match *://*.bilibili.com/video/*
// @match *://*.instagram.com/p/*
// @match *://*.instagram.com/reels/*
// @match *://*.instagram.com/reel/*
// @match *://*.twitter.com/*/status/*
// @match *://*.twitter.com/*/status/*/video/*
// @match *://*.twitter.com/i/spaces/*
// @match *://*.x.com/*/status/*
// @match *://*.x.com/*/status/*/video/*
// @match *://*.x.com/i/spaces/*
// @match *://*.reddit.com/r/*/comments/*/*
// @match *://*.soundcloud.com/*
// @match *://*.soundcloud.app.goo.gl/*
// @match *://*.tumblr.com/post/*
// @match *://*.tumblr.com/*/*
// @match *://*.tumblr.com/*/*/*
// @match *://*.tumblr.com/blog/view/*/*
// @match *://*.tiktok.com/*
// @match *://*.vimeo.com/*
// @match *://*.youtube.com/watch?*
// @match *://*.youtu.be/*
// @match *://*.youtube.com/shorts/*
// @match *://*.vk.com/video*
// @match *://*.vk.com/*?w=wall*
// @match *://*.vk.com/clip*
// @match *://*.vine.co/*
// @match *://*.streamable.com/*
// @match *://*.pinterest.com/pin/*
// @match *://*.xiaohongshu.com/explore/*
// @grant GM_registerMenuCommand
// @grant GM_openInTab
// @grant GM_getValue
// @grant GM_setValue
// @license MIT
// @downloadURL https://update.greasyfork.icu/scripts/526268/Download%20Media%20with%20Cobalt%20API.user.js
// @updateURL https://update.greasyfork.icu/scripts/526268/Download%20Media%20with%20Cobalt%20API.meta.js
// ==/UserScript==
(function() {
'use strict';
const defaultApiUrl = 'cobalt.tools'; // Removed https:// prefix
let apiUrl = GM_getValue('apiurl', defaultApiUrl); // Load from storage
// Function to set/update the API URL
function setApiUrl() {
let newApiUrl = prompt("Enter Cobalt API URL (e.g., cobalt.tools):", apiUrl); // Adjusted prompt
if (newApiUrl !== null) {
apiUrl = newApiUrl;
GM_setValue('apiurl', apiUrl);
alert(`API URL set to: ${apiUrl}`);
}
}
// Add menu command to configure the API URL
GM_registerMenuCommand("Set Cobalt API URL", setApiUrl);
function downloadItem(targetUrl) {
let au = apiUrl;
if (!au.startsWith("https://") && !au.startsWith("http://")) au = `https://` + au; // Add protocol if missing
if (!au.endsWith("/")) au = au + '/'; // Add trailing slash if missing
au = au + `?u=${encodeURIComponent(targetUrl)}`; // Properly encode the target URL
GM_openInTab(au, { active: true });
}
GM_registerMenuCommand("Download Media (Cobalt API)", () => {
downloadItem(window.location.href);
});
})();