Greasy Fork is available in English.

fictionpress

remove all the style and merge with the list from the TOC page

// ==UserScript==
// @name        fictionpress
// @namespace   fictionpress
// @description remove all the style and merge with the list from the TOC page
// @include     https://www.fictionpress.com/s/*/*/*
// @include     http://skythewood.blogspot.sg/p/knights-and-magic-author-amazake-no.html
// @include     http://www.translationnations.com/translations/*/
// @include     http://gravitytales.com/chaotic-sword-god/
// @include     http://raisingthedead.ninja/current-*
// @include     http://www.wuxiaworld.com/*-index/
// @include     http://japtem.com/*-volume-*chapter-*/
// @include     http*://dragomircm.com/wn*/
// @include     http://royalroadl.com/fiction/*
// @include     https://xantandminions.wordpress.com/lv999-villager/
// @include     http://www.sousetsuka.com/p/blog-page*
// @include     http://shiroyukitranslations.com/long-live-summons/
// @include     https://clickyclicktranslation.blogspot.com/p/blog-page.html
// @include     http://gravitytales.com/*/true-martial-world
// @include     http://thesylthorian.com/wn-*/
// @include     http://www.rainbowturtletranslation.com/legendary-moonlight-sculptor-table-of-contents/
// @version     0.8.8.7
// @require     http://code.jquery.com/jquery-latest.js
// @grant       GM_xmlhttpRequest
// @grant       GM_getValue
// @grant       GM_setValue
// @connect-src *
// ==/UserScript==

oldHistory = JSON.parse(GM_getValue("history","{}"));
button = $("<div style='z-index: 9999;top:0;position: fixed;'><input type='button'  value='kindle extract'><input type='text' id='startChap' value='0'><input type='button' value='trasponi'></div>");
button[0].firstChild.addEventListener('click',getText,true);
button[0].children[2].addEventListener('click',trasposta,true);$("body").append(button);
istart = 0;
if(location.href.indexOf("http://turb0translation.blogspot.dk/") != -1) { istart = 317; }
if (oldHistory[location.href.replace("https://","http://")]) istart = oldHistory[location.href.replace("https://","http://")];
//delete oldHistory[location.href.replace("https://","http://")]; // delete history number
//GM_setValue("history",JSON.stringify(oldHistory));              // ^^^^^^^^^^^^^^^^^^^^^
$("#startChap").val(istart);

class1=""; class2=""; class3=""; class4=""; orderfunction=null;
if (location.href.indexOf("translationnations.com") != -1){ class1=".entry-content a"; class2=".entry-content"; }
else if(location.href.indexOf("gravitytales.com/") != -1) { class1="article a"; class2="article"; class3=".sharedaddy"; }
else if(location.href.indexOf("http://raisingthedead.ninja/") != -1) { class1=".entry-content a"; class2=".post.hentry"; class3=".comments,.post-footer,.entry-meta,.wp-post-navigation,.wpcnt,.entry-content p:last-child"; } //class4="p:has(strong)";
else if(location.href.indexOf("http://www.wuxiaworld.com/") != -1) { class1=".entry-content a"; class2=".entry-header,.entry-content"; class3=".comments,.post-footer"; }
else if(location.href.indexOf("dragomircm.com/wn") != -1) { class1="article a"; class2="article"; class3="#jp-post-flair,.wpcnt,.entry-utility"; }
else if(location.href.indexOf("http://royalroadl.com/fiction") != -1) { class1=".chapters ul a"; class2=".post_body:first,.largetext:first"; class3=".post-content"; }
else if(location.href.indexOf("xantandminions.wordpress.com/lv999-villager/") != -1) { class1=".entry-content a"; class2=".entry-header,.entry-content"; class3="#jp-post-flair"; }
else if(location.href.indexOf("www.sousetsuka.com/p/blog-pa") != -1) { class1=".entry-content a"; class2="div.post.hentry"; class3="#jp-post-flair";  }
else if(location.href.indexOf("shiroyukitranslations.com/long-live-summons/") != -1) { class1="#lcp_instance_1 a"; class2="article"; class3=".sharedaddy";  }
else if(location.href.indexOf("thesylthorian.com") != -1) { class1=".panel-grid a"; class2="article .panel-grid:first"; class3=".fcbk_share";  }
else if(location.href.indexOf("clickyclicktranslation.blogspot.com") != -1) { class1=".entry-content a"; class2=".post.hentry"; class3=".fcbk_share";  }
else if(location.href.indexOf("rainbowturtletranslation.com") != -1) { class1=".entry-content a"; class2="article"; class3=".sharedaddy,.wpcnt";  }


urls = [];
$(class1).each(function(){ if (this.href.length > 4 && !/(.*\.jpg$)|(.*\.jpeg$)|(.*\.gif$)|(.*\.bmp$)|(.*imgur\.com.*)|(.*tumblr\.com.*)|(.*\?share.*)|(.*\/#[^\/]*)/.test(this.href)) urls.push(this.href);
                          if (urls.length -1 == istart) $(this).wrap("<mark></mark>"); });
if(location.href.indexOf("shiroyukitranslations.com/long-live-summons/") != -1) urls = urls.reverse();

function trasposta(css){
    $(".entry-content table").each(function() {
        var $this = $(this);
        var newrows = [];
        $this.find("tr").each(function(){
            var i = 0;
            $(this).find("td").each(function(){
                i++;
                if(newrows[i] === undefined) { newrows[i] = $("<tr></tr>"); }
                newrows[i].append($(this));
            });
        });
        $this.find("tr").remove();
        for (j=0;j<newrows.length;j++){ $this.append(newrows[j]); }
    });
    urls = [];
    $(class1).each(function(){ if (this.href.length > 4 && !/(.*\.jpg$)|(.*\.jpeg$)|(.*\.gif$)|(.*\.bmp$)|(.*imgur\.com.*)|(.*tumblr\.com.*)|(\?share)/.test(this.href)) urls.push(this.href);
                              if (urls.length -1 == istart) $(this).wrap("<mark></mark>"); });
}
function getText(){
    istart = $("#startChap").val();
    title = $("head title").html();
    document.head.innerHTML = "<title>"+title+"</title><style>";


    if (location.href.indexOf("fictionpress.com") != -1)  {
        startt = location.pathname.match(/[0-9]+/g);
        startt = parseInt(startt[startt.length-1]);
        startt = istart;
        end = startt+11;

        document.body.innerHTML = "";
        for (i=startt;i<end;i++){
            div2 = $('<div style="page-break-after:always" class="chapter" id="page-'+i+'"></div>\n<mbp:pagebreak/>\n');
            $("body").append(div2);
        }
        ajaxTime2(startt,end);
    }
    else if (location.href.indexOf("skythewood.blogspot.sg") != -1)  {
        urls = [];
        $(".post-body a").each(function(){ if (this.href.indexOf(".htm") != -1) urls.push(this.href); });

        document.body.innerHTML = "";
        for (i=0;i<urls.length;i++){
            div2 = $('<div style="page-break-after:always" id="page-'+i+'"></div>\n<mbp:pagebreak/>\n');
            $("body").append(div2);
        }
        ajaxTime(urls,".post.hentry","",0);
    }
    else if (location.href.indexOf("japtem.com") != -1)  {
        urls = [];
        start = location.pathname.match(/[0-9]+/g);
        start = parseInt(start[start.length-1]);
        for (i=start;i<start+50;i++){
            urls.push(location.href.replace(/[0-9]+\//,i+"\/"));
        }
        console.log(urls);

        document.body.innerHTML = "";
        for (i=0;i<urls.length;i++){
            div2 = $('<div style="page-break-after:always" id="page-'+i+'"></div>\n<mbp:pagebreak/>\n');
            $("body").append(div2);
        }
        ajaxTime(urls,".post.hentry",".fusion-meta-info,.fusion-sharing-box,#disqus_thread","",0);
    }
    else {
        document.body.innerHTML = "";
        console.log(urls);
        for (i=istart;i<urls.length;i++){
            div2 = $('<div style="page-break-after:always" id="page-'+i+'"></div>\n<mbp:pagebreak/>\n');
            $("body").append(div2);
        }
        ajaxTime(urls,class2,class3,class4,istart);
    }
}

function ajaxTime2(startt,end){
    for (i=startt;i<end;i++){
        test= location.href.replace(/(\/[0-9]+\/)[0-9]+\//,"$1"+i+"\/");
        $.ajax({
            url: test,
            indexValue: i,
            urlFrom: location.href.replace("https://","http://"),
            success: function(data) {
                chap = $(data).find("#storytextp")[0].innerHTML;
                $("#page-"+(this.indexValue)).html(chap);
                oldHistory = JSON.parse(GM_getValue("history","{}"));
                if (!oldHistory[this.urlFrom] || oldHistory[this.urlFrom] < this.indexValue +1) oldHistory[this.urlFrom] = this.indexValue+1;
                GM_setValue("history",JSON.stringify(oldHistory));
                console.log(oldHistory);
            }
        });
    }
}


function testfunction(url,i,classCss,remCss,remblabla){
    GM_xmlhttpRequest ( {
        method: 'GET',
        url: url,
        accept: 'text/xml',
        onreadystatechange: function (indexValue,css,css2,css3,urlFrom) {
            return function (response) {
                if (response.readyState != 4)
                    return;
                chap = $(response.responseText).find(css)[0].innerHTML + (css.indexOf(",") != -1 ? $(response.responseText).find(css)[1].innerHTML : "");

                $("#page-"+(indexValue))[0].innerHTML = chap;
                $("#page-"+(indexValue)).find(css2).remove();
                if (css3 != "")
                    $("#page-"+(indexValue)).find(css3).eq(0).prevAll().remove();
                oldHistory = JSON.parse(GM_getValue("history","{}"));
                if (!oldHistory[urlFrom] || oldHistory[urlFrom] < indexValue) oldHistory[urlFrom] = indexValue;
                GM_setValue("history",JSON.stringify(oldHistory));

            }
        }(i,classCss,remCss,remblabla,location.href.replace("https://","http://")),
        error: function (indexValue,css,css2,css3,urlFrom) {
            return function (response) {
                if (response.status == 500){
                    chap = $(response.responseText).find(css)[0].innerHTML + (css.indexOf(",") != -1 ? $(response.responseText).find(css)[1].innerHTML : "");

                    $("#page-"+(indexValue))[0].innerHTML = chap;
                    $("#page-"+(indexValue)).find(css2).remove();
                    if (css3 != "")
                        $("#page-"+(indexValue)).find(css3).eq(0).prevAll().remove();
                    oldHistory = JSON.parse(GM_getValue("history","{}"));
                    if (!oldHistory[urlFrom] || oldHistory[urlFrom] < indexValue) oldHistory[urlFrom] = indexValue;
                    GM_setValue("history",JSON.stringify(oldHistory));

                }
            }
        }(i,classCss,remCss,remblabla,location.href.replace("https://","http://"))
    } );

}


function ajaxTime(urls,classCss,remCss,remblabla,istart){
    i=istart;
    for (i=istart;i<urls.length;i++){
        test= urls[i];
        setTimeout(testfunction,100*(i-istart),test,i,classCss,remCss,remblabla);
    }
}