Reddit media downloader with Cobalt

Adds a button to download media via Cobalt.tools

  1. // ==UserScript==
  2. // @name Reddit media downloader with Cobalt
  3. // @namespace ViolentMonkey Scripts
  4. // @version 1.0
  5. // @description Adds a button to download media via Cobalt.tools
  6. // @author Naviamold
  7. // @license MIT
  8. // @match http*://*.reddit.com/*
  9. // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
  10. // @grant GM_xmlhttpRequest
  11. // @grant GM_openInTab
  12. // @require http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
  13. // @require https://greasyfork.org/scripts/476008-waitforkeyelements-gist-port/code/waitforkeyelements%20gist%20port+.js
  14. // ==/UserScript==
  15.  
  16. (function () {
  17. "use strict";
  18.  
  19. const getCobalt = (link) => {
  20. let payload = {
  21. url: link,
  22. vQuality: "1080",
  23. filenamePattern: "basic",
  24. };
  25.  
  26. GM_xmlhttpRequest({
  27. url: "https://api.cobalt.tools/api/json",
  28. headers: {
  29. accept: "application/json",
  30. "accept-language": "en-US,en;q=0.9",
  31. "content-type": "application/json",
  32. },
  33. responseType: "json",
  34. data: JSON.stringify(payload),
  35. method: "POST",
  36. onload: function (response) {
  37. console.log(response.response);
  38. GM_openInTab(response.response.url);
  39. },
  40. });
  41. };
  42.  
  43. waitForKeyElements(
  44. "shreddit-post[post-type=video]",
  45. (e) => {
  46. e.parent().append(`<button id='cobaltDownload'>Cobalt</button>`);
  47. document
  48. .getElementById("cobaltDownload")
  49. .addEventListener("click", () =>
  50. getCobalt(`https://www.reddit.com${e.attr("permalink")}`)
  51. );
  52. },
  53. false
  54. );
  55. })();