SourceForge Instant Download

Bypass SourceForge download timer and disable post-download redirect

  1. // ==UserScript==
  2. // @name SourceForge Instant Download
  3. // @namespace mevanlc
  4. // @license MIT
  5. // @match https://*.sourceforge.net/projects/*/files/*/download
  6. // @match https://*.sf.net/projects/*/files/*/download
  7. // @grant none
  8. // @version 1.3
  9. // @author -
  10. // @description Bypass SourceForge download timer and disable post-download redirect
  11. // @run-at document-start
  12. // ==/UserScript==
  13.  
  14. (() => {
  15.  
  16. function main() {
  17. if (typeof(SF) === 'undefined') {
  18. return setTimeout(main, 100);
  19. }
  20.  
  21. const SFOverride = {
  22. downloadDelay: 1,
  23. downloadRedirectDelay: 9999999999,
  24. };
  25.  
  26. SF = new Proxy(SF, {
  27. set: function (obj, prop, value) {
  28. if (SFOverride.hasOwnProperty(prop)) {
  29. console.log(`!!! userscript: ignoring attempt to set SF.${prop}=${value}`);
  30. return true;
  31. }
  32. obj[prop] = value;
  33. return true;
  34. },
  35. get: function (obj, prop) {
  36. if (SFOverride.hasOwnProperty(prop)) {
  37. console.log(`!!! userscript: returning override SF.${prop}=${SFOverride[prop]}`);
  38. return SFOverride[prop];
  39. }
  40. return obj[prop];
  41. },
  42. });
  43. }
  44.  
  45. main();
  46.  
  47. })();