Thread: [See Bugtracker] RAR Split-Teile erkennen
View Single Post
  #15  
Old 01.07.2019, 00:13
thecoder2012's Avatar
thecoder2012 thecoder2012 is offline
Official 9kw.eu Support
 
Join Date: Feb 2013
Location: Internet
Posts: 1,324
Default

Quote:
Originally Posted by Jiaz View Post
Das Problem ist , dass der Code derzeit keine *gemischten* Archive verarbeiten kann.
Würde es dann nicht reichen wenn ".001" als Workaround entfernt würde und es als Part intern in der Funktion erkannt wird? (ggf. vorher kurze Regex ala "part1.rar$" und "partX.rar.001$" als Check auf die Links anwenden)
Für part01 vs. part1 muss es ja schon eine ähnlichen Workaround im Code vermutlich geben.

Klar könnte JDownloader noch auf 002 und 003 überprüfen aber das ist mehr Arbeit und zumindestens in meinen Live-Tests nicht vorgekommen. Wenn fehlte nur ein echter Part und falls 003 fehlt, dann hilft die Überprüfung auch nichts.

Für den Ereignis-Skripter hab ich so eine Routine mal gebastelt. Leider gibt es kein fertiges Event das bei einer abgeschlossenen Linkgrabberaktion (Crawlervorgang) aktivierbar wäre. Per Interval wäre es umständlich.
Code:
//disablePermissionChecks();

// Check Fileparts (LinkGrabber)
// Trigger : "LinkGrabber Contextmenu Button Pressed"
setAdvancedAlert(true);

if (name == "Check Fileparts") {
    var linkcheck = [];
    var linksort = [];
    var failm = "";

    if (lgSelection.getLinks().length != 0) {
        var links = lgSelection.getLinks();

        for (var i = 0; i < links.length; i++) {
            var link = links[i];

            var fileName = link.getName();
            var myfileName_temp = fileName.replace(/\.\d\d\d$/i, "").replace(/\.part\d+\.rar$/i, "").replace(/\.rar$/i, "");
            var arr = fileName.match(/part(\d+)\.rar/i);

            if (arr[1] == "" || arr[1] == undefined) {
                continue;
            }
            if (linkcheck[myfileName_temp] == undefined || arr[0] > linkcheck[myfileName_temp]) {
                linkcheck[myfileName_temp] = arr[1].replace(/^(0+)/g, '');
                if (linksort[myfileName_temp] == undefined) {
                    linksort[myfileName_temp] = arr[1].replace(/^(0+)/g, '');
                } else {
                    linksort[myfileName_temp] += "," + arr[1].replace(/^(0+)/g, '');
                }
            }
        }
        Object.keys(linkcheck).forEach(function(key) {
            var myarr = linksort[key].split(",");
            for (var t = 1; t <= linkcheck[key]; t++) {
                var found = 0;
                for (var i = 0; i <= myarr.length; i++) {
                    if (t == myarr[i]) {
                        found = 1;
                        break;
                    }
                }
                if (found == 0) {
                    failm += key + ".part" + t + "\n";
                }
            }
        });
        if (failm != "") {
            alert("Archive Incomplete:\n" + failm);
        } else {
            var myLinkgrabberSelection = lgSelection;
            var myCrawledPackage = myLinkgrabberSelection.getContextPackage();
            callAPI("linkgrabberv2", "moveToDownloadlist", [], [myCrawledPackage.getUUID()]);
        }
    }
}
__________________
Join 9kw.eu Captcha Service now and let your JD continue downloads while you sleep.

Last edited by thecoder2012; 01.07.2019 at 01:09.
Reply With Quote