MediaFire Batch Downloader

Batch download files from a MediaFire folder

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

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

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

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

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

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         MediaFire Batch Downloader
// @namespace    http://tampermonkey.net/
// @include     http://www.mediafire.com/folder/*
// @include     https://www.mediafire.com/folder/*
// @include     http://www.mediafire.com/file/*
// @include     https://www.mediafire.com/file/*
// @version      0.2
// @description  Batch download files from a MediaFire folder
// @author       ShadowLin / Update by Dwelling9512
// @license      GNU GPL v3
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    let linkSet = new Set();

    function findAll() {
        var listItems = document.querySelectorAll('#main_list > li');
        var found = false;
        var listSize = linkSet.size;
        for (var i = 0; i < listItems.length; i++) {
            var link = listItems[i].querySelector('a');
            if (link) {
                linkSet.add(link.href);
                if (linkSet.size > listSize) {
                    found = true;
                }
            }
        }

        var newLinks = linkSet.size - listSize;
        listSize = linkSet.size;

        if (found) {
            window.scrollBy(0,60*newLinks);
            //console.log("MORE!");
            //console.log(newLinks);
            var delay = 500 + (Math.random() * 2000);
            setTimeout(function() {
                findAll();
            }, delay);
        } else {
            console.log("Total Found:");
            console.log(listSize);
            startDownload();
        }
    }

    function startDownload() {
        var i = 0;
        for (const link of linkSet) {
            var delay = (3000 * i) + (Math.random() * 2000);
            setTimeout(function() {
                window.open(link, '_blank');
            }, delay);
            i++;
        }
    }

    var upgradeButtonFrame = document.querySelector('.upgrade_button_frame');
    if (upgradeButtonFrame) {
        var button = document.createElement('button');
        button.textContent = 'DOWNLOAD ALL';
        button.classList.add('Btn', 'Btn--greenUpgrade');
        button.style.backgroundColor = '#33CC66';
        button.style.color = '#222835';
        button.addEventListener('click', findAll);
        upgradeButtonFrame.parentNode.replaceChild(button, upgradeButtonFrame);
    }
})();

(function() {
    'use strict';

    var input = document.querySelector('.download_link .input');
    if (input) {
        var dl = input.getAttribute('href');
        console.log(dl);
        location.replace(dl);

        var set = setInterval(closeWindows, 1000 * 5);

        function closeWindows() {
            window.close();
            clearInterval(set);
        }
    } else {
        console.error('Could not find download link');
    }
})();