BIhelper

Auto-DL

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

// ==UserScript==
// @name         BIhelper
// @version      1.2
// @grant        GM_download
// @grant        GM_addStyle
// @namespace    https://greasyfork.org/users/290665
// @description  Auto-DL
// @include      https://www.berlinintim.de/*
// ==/UserScript==

$(function() {
    addstyle();

    var NAME = $('title')
        .text()
        .replace(/ +$/,'');
    var PHONE = $('.telefon_button').last().attr('href');
    PHONE = PHONE
        .replace(/^javascript:.*/i,'')
        .replace(/^#/i,'')
        .replace(/tel:/,'')
        .replace(/\+49 */,'0')
        .replace(/ \/ /,'-')
        .replace(/ +/,'-');
    NAME = NAME.replace(/(Privatmodell|(Highclass-)?Escort|Gastmodell|Transsexuelle)\s*/ig,'');
    NAME = NAME.replace(/[^\w-\(\)äöüÄÖÜß ]/g,'');
    var name = NAME + (PHONE?' - ' + PHONE:'');
    var dlArea = $('<div id="BIhelper"></div>');
    $('<button title="download '+name+'"><span class="material-icons md-18">download</span></b></button>')
        .data('name',name)
        .on('click', function(event) {
            downloadAll($(event.currentTarget).data('name'));
        }).appendTo(dlArea);
    $('<button title="copy text"><span class="material-icons md-18">content_copy</span></b></button>')
        .on('click', function(event) {
            navigator.clipboard.writeText(adData());
            $("<div>OK</div>").appendTo($(this))
                .delay(2000).fadeOut(1000, function() {
                $(this).remove();
            });
        }).appendTo(dlArea);

    $(dlArea).find("button").addClass("head_btn");

    $(dlArea).find('button');
    $('.hl_date').first().append(dlArea);
});

function downloadAll(name) {
    let downloadlist = [];
    $('img.slider_img').each(function() {
        var link = $(this).attr('src');
        if (link.length) {
            downloadlist.push(link.replace(/\?.*/,''));
        }
    });
    let listUnique = [...new Set(downloadlist)];
    startDownload(name,listUnique);
}

function startDownload(path,downloadlist) {

    var dialog = $('<div id="BIhelperdialog" title="Download to '+path+' ..."></div>').appendTo($('#BIhelper'));

    for (let URL of downloadlist) {
        var name = URL.replace(/.*\//,'');
        var file = path.replace(/[^\w-\(\)äöüÄÖÜß ]/g,'')+'/'+name;
        URL = URL.replace(/^\/\//,'https://');
        var line = $('<div class="BIDL" data-name="'+name+'">'+name+'</div>').appendTo(dialog);
        (function(url,filepath,filename,linediv) {
            var dl = GM_download({
                url: url,
                name: filepath,
                saveAs: false,
                onerror: function(err){
                    console.error(err);
                    $(linediv).append('<span class="download_error">ERROR: '+err.error+' - '+err.details+'</span>')
                        .delay(2000).fadeOut(1000, function() {
                            $(this).remove();
                        });
                },
                onload: function() {
                    $(linediv).append('<span class="download_ok">✓</span>')
                        .delay(2000).fadeOut(1000, function() {
                            $(this).remove();
                        });
            },
            });
        })(URL,file,name,line);

    }
}
function adData() {
    let name = $('h1.ellipsis').text();

    let subheader = "";
    let text = "";
    $('.sedcard_facts_modell .blocktext_hl').each(function(undefined,el) {
        let key = $(el).text().trim();
        let val = $(el).nextUntil('.blocktext_hl').find("*").addBack().contents()
         .filter(function() {
          return (this.nodeType === 3) && ($(this).text().match(/\w/i));
        })
        .map(function() {
            return $(this).text().trim().replace(/\u00A0/,' ')
        }).get().join(", ");
        if (key && val) text += $(el).text().trim() + " [B]" + val + "[/B]\n";
    });
    $('div.block_teaser .blocktext_hl').each(function(undefined,el) {
        let key = $(el).text().trim();
        let val = $(el).nextUntil('.blocktext_hl').find("*").not(".sternchentext").addBack().contents()
         .filter(function() {
          return (this.nodeType === 3) && ($(this).text().match(/\w/i));
        })
        .map(function() {
            return $(this).text().trim().replace(/\u00A0/,' ')
        }).get().join(", ");
        if (key && val) text += $(el).text().trim() + " [B]" + val + "[/B]\n";
    });
    let stbr = [];
    $("h2:contains(Mein Steckbrief)").parent().parent().parent().find('.block_teaser div.row').each(function(undefined,el) {
        let key = $(el).children("div").eq(0).text().replace(/\u00A0/,' ').trim();
        let val = $(el).children("div").eq(1).text().replace(/\u00A0/,' ').trim();
        if (key && val) stbr.push(`${key}: [B]${val}[/B]`);
    });

    text += stbr.join(", ");

    let URL = window.location.href;
    let address = $('#adress_0 > div').first().contents().filter(function() {
        return (this.nodeType === 3) && ($(this).text().match(/\w/i));
    }).map(function() {
        return $(this).text().trim().replace(/\u00A0/,' ')
    }).get().join(", ");
    let gmap_address = encodeURIComponent(address);
    let adressdetail = $('#adressdetail0').text().trim();
    // let service = $('div.tablet-info-service').html()
    //     .replace(/\n/g,'')
    //     .replace(/<(\/)?h2>/g,'[$1B]')
    //     .replace(/\[B\]/g,'\n[B]')
    //     .replace(/\[\/B\]/g,':[/B]');
    // let languages = '';
    let dataHTML = "Infoservice\n"
        +`[QUOTE][URL=${URL}][SIZE="3"][B]${name}[/B][/SIZE]\n`
        +`${subheader}[/URL]`
        +`[SIZE="1"]\n${text}\n\n`
        // +`[B]Telefon:[/B] [SIZE="3"]${phone}[/SIZE], ${phone2}, ${phone3}\n`
        +`[B]Adresse:[/B] [URL=https://www.google.de/maps/place/${gmap_address}]${address}[/URL] ${adressdetail}`
        // +`${service}\n`
        +`[/SIZE][/QUOTE]`;
    dataHTML = dataHTML.replace(/ {2,}/g,' ').replace(/\n{3,}/,'\n\n');
    //console.log(dataHTML);
    return dataHTML;
}


function addstyle() {
    $('head').append('<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">');
    GM_addStyle(`
    #BIhelper {
        max-height: 150px;
        overflow: auto;
        font-size: 10px;
        position: absolute;
        right: 10px;
        top: 11px;
        z-index: 100;
    }

    #BIhelper button {
        padding: 5px 10px;
        background-color: #980403;
        color: #fff;
        border: none;
        margin-left: 8px;
        position: relative;
        overflow: visible;
    }

    .BIDL {
        background-color: black;
    }
    .download_error {
        color: white;
        background-color: #880010;
        padding: 1px 4px;
        border-radius: 2px;
        margin: 0px 4px;
    }

    .download_ok {
        color: white;
        background-color: #10a020;
        padding: 1px 4px;
        border-radius: 2px;
        margin: 0px 4px;
    }

    `);
}