Mananelo/Mangakakalot Bookmarks Export

Writes Mangakakalot or Manganelo Bookmarks (name and visited number) to "manga_bookmarks.txt" on "Export Bookmarks" button click

目前为 2020-02-11 提交的版本。查看 最新版本

// ==UserScript==
// @name         Mananelo/Mangakakalot Bookmarks Export
// @namespace    http://smoondev.com/
// @version      1.03
// @description  Writes Mangakakalot or Manganelo Bookmarks (name and visited number) to "manga_bookmarks.txt" on "Export Bookmarks" button click
// @author       Shawn Moon
// @include      https://mangakakalot.com/bookmark*
// @include      https://manganelo.com/bookmark*
// @require      http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require      https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.8/FileSaver.min.js
// @grant        GM_addStyle
// ==/UserScript==

GM_addStyle (`
#export_container {
color: #000;
cursor: pointer;
float: right;
margin-right: 10px;
}

#export_button:hover {
background-color: #b6e4e3;
color: #000;
cursor: pointer;
}

#export_button {
padding: 4px 8px;
border-radius: 5px;
text-decoration: none;
color: #fff;
background-color: #76cdcb;
border: none;
font-weight: 600;
}

#temp_data {
position: absolute; top: -9999px;
left: -9999px;
}
`);

(function() {
    'use strict';
    let pageI, bmTag, bmTitle, lastViewed, btnContainer
    if($('.bookmark-item').length > 0) {
        // manganelo
        pageI = '.group-page a'
        bmTag = '.bookmark-item'
        bmTitle = '.item-story-name'
        lastViewed = '.item-title a'
        btnContainer = '.panel-breadcrumb'
    } else {
        // mangakakalot
        pageI = '.group_page a'
        bmTag = '.bookmark_item'
        bmTitle = '.bookmark_title'
        lastViewed = '.bookmark_chap a'
        btnContainer = '.breadcrumbs p'
    }

    let domain = window.location.hostname
    let pageCount = parseInt($(`${pageI}`).last().text().replace(/\D+/g, ''))

    const deleteTemp = () => {
        // delete temp container
        $('#temp_data').remove()
    }

    const saveFile = saveData => {
        // save file
        const fileData = new Blob([saveData], {type:"application/octet-stream"})
        saveAs(fileData, "manga_bookmarks.txt")
    }

    const getBookmarks = () => {
        // main function generate file
        deleteTemp()

        $('body').append("<div id='temp_data'>")
        let pageSuccess = 0;
        let bookmarkedTitles = `===========================\n${domain} Bookmarks\n===========================\n`

        for(var i = 0; i < pageCount; i++) {
            $("#temp_data").append(`<div id='page${i+1}'>`)
            $(`#page${i+1}`).load(`https://${domain}/bookmark?page=${i+1} ${bmTag}`, (resp,status,xhr) => {
                if(status == "success") { pageSuccess++ }
                if(pageSuccess == pageCount) {
                    let bmItem = $(`#temp_data ${bmTag}`)

                    for(var j = 0; j < bmItem.length; j++) {
                        if($(bmItem[j]).find(`${bmTitle}`).text()) {
                           bookmarkedTitles += $(bmItem[j]).find(`${bmTitle}`).text() + `  ||  Viewed: ${$(bmItem[j]).find(`${lastViewed}`)[0].text} \n`
                        }
                    }

                    saveFile(bookmarkedTitles)
                    deleteTemp()
                }
            })
        }
    }
    $(`${btnContainer}`).append("<div id='export_container'><button id='export_button'>Export Bookmarks</button></div>")
    $(document).on('click', '#export_button', function() {
        getBookmarks()
    })
})();// ==UserScript==
// @name         Mananelo/Mangakakalot Bookmarks Export
// @namespace    http://smoondev.com/
// @version      1.02
// @description  Writes Mangakakalot or Manganelo Bookmarks (name and visited number) to "manga_bookmarks.txt" on "Export Bookmarks" button click
// @author       Shawn Moon
// @include      https://mangakakalot.com/bookmark*
// @include      https://manganelo.com/bookmark*
// @require      http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require      https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.8/FileSaver.min.js
// @grant        GM_addStyle
// ==/UserScript==

GM_addStyle (`
#export_container {
color: #000;
cursor: pointer;
float: right;
margin-right: 10px;
}

#export_button:hover {
background-color: #b6e4e3;
color: #000;
cursor: pointer;
}

#export_button {
padding: 4px 8px;
border-radius: 5px;
text-decoration: none;
color: #fff;
background-color: #76cdcb;
border: none;
font-weight: 600;
}

#temp_data {
position: absolute; top: -9999px;
left: -9999px;
}
`);

(function() {
    'use strict';
    let pageI, bmTag, bmTitle, lastViewed, btnContainer
    if($('.bookmark-item').length > 0) {
        // manganelo
        pageI = '.group-page a'
        bmTag = '.bookmark-item'
        bmTitle = '.item-story-name'
        lastViewed = '.item-title a'
        btnContainer = '.panel-breadcrumb'
    } else {
        // mangakakalot
        pageI = '.group_page a'
        bmTag = '.bookmark_item'
        bmTitle = '.bookmark_title'
        lastViewed = '.bookmark_chap a'
        btnContainer = '.breadcrumbs p'
    }

    let domain = window.location.hostname
    let pageCount = parseInt($(`${pageI}`).last().text().replace(/\D+/g, ''))

    const deleteTemp = () => {
        // delete temp container
        $('#temp_data').remove()
    }

    const saveFile = saveData => {
        // save file
        const fileData = new Blob([saveData], {type:"application/octet-stream"})
        saveAs(fileData, "manga_bookmarks.txt")
    }

    const getBookmarks = () => {
        // main function generate file
        deleteTemp()

        $('body').append("<div id='temp_data'>")
        let pageSuccess = 0;
        let bookmarkedTitles = `===========================\n${domain} Bookmarks\n===========================\n`

        for(var i = 0; i < pageCount; i++) {
            $("#temp_data").append(`<div id='page${i+1}'>`)
            $(`#page${i+1}`).load(`https://${domain}/bookmark?page=${i+1} ${bmTag}`, (resp,status,xhr) => {
                if(status == "success") { pageSuccess++ }
                if(pageSuccess == pageCount) {
                    let bmItem = $(`#temp_data ${bmTag}`)

                    for(var j = 0; j < bmItem.length; j++) {
                        if($(bmItem[j]).find(`${bmTitle}`).text()) {
                           bookmarkedTitles += $(bmItem[j]).find(`${bmTitle}`).text() + `  ||  Viewed: ${$(bmItem[j]).find(`${lastViewed}`)[0].text} \n`
                        }
                    }

                    saveFile(bookmarkedTitles)
                    deleteTemp()
                }
            })
        }
    }
    $(`${btnContainer}`).append("<div id='export_container'><button id='export_button'>Export Bookmarks</button></div>")
    $(document).on('click', '#export_button', function() {
        getBookmarks()
    })
})();