SourceForge Instant Download

Bypass SourceForge download timer and disable post-download redirect

2024-07-21 기준 버전입니다. 최신 버전을 확인하세요.

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

You will need to install an extension such as Tampermonkey to install this script.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name        SourceForge Instant Download
// @namespace   mevanlc
// @license     MIT
// @match       https://sourceforge.net/projects/*/files/*/download
// @grant       none
// @version     1.0
// @author      -
// @description Bypass SourceForge download timer and disable post-download redirect
// @run-at      document-start
// ==/UserScript==

const SFOverride = {
  downloadDelay: 1,
  downloadRedirectDelay: 9999999999,
};

SF = new Proxy(SF, {
  set: function (obj, prop, value) {
    if (SFOverride.hasOwnProperty(prop)) {
      console.log(`!!! userscript: ignoring attempt to set SF.${prop}=${value}`);
      return true;
    }
    obj[prop] = value;
    return true;
  },
  get: function (obj, prop) {
    if (SFOverride.hasOwnProperty(prop)) {
      console.log(`!!! userscript: returning override SF.${prop}=${SFOverride[prop]}`);
      return SFOverride[prop];
    }
    return obj[prop];
  },
});