Greasy Fork

weread_pc_directory_export_mdfile

使用[微信读书]电脑版读书时,打开目录点击目录中的空白地方下载名为[书名_作者.md]的文件,该文件内容为带有缩进层级和选项框的目录,便于标记书籍已读。

目前为 2024-10-14 提交的版本。查看 最新版本

// ==UserScript==
// @name         weread_pc_directory_export_mdfile
// @namespace    [email protected]
// @version      1.1
// @description  使用[微信读书]电脑版读书时,打开目录点击目录中的空白地方下载名为[书名_作者.md]的文件,该文件内容为带有缩进层级和选项框的目录,便于标记书籍已读。
// @author       jiazhen
// @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js
// @match        https://weread.qq.com/web/reader/*
// @icon         https://www.google.com/s2/favicons?domain=tampermonkey.net
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    function prepare(){
        //此处$就代表JQuery
        var title_list = [];
        //书名
        var book = $("#routerView > div > div:nth-child(5) > div.readerCatalog > div.readerCatalog_bookInfo.readerCatalog_bookInfo > div.readerCatalog_bookInfo_right > h2 > span.readerCatalog_bookInfo_title_txt").html();
        //作者
        var author = $("#routerView > div > div:nth-child(5) > div.readerCatalog > div.readerCatalog_bookInfo.readerCatalog_bookInfo > div.readerCatalog_bookInfo_right > div").html();
        //目录
        $("li.readerCatalog_list_item>div").each(function(){
            var title = {};
            title.retract = parseInt($(this).attr("class").split(" ")[1].substr("readerCatalog_list_item_level_".length));
            title.name = $(this).find("div.readerCatalog_list_item_title_text").html();
            title_list.push(title);
        });

        //生成json
        //console.log(JSON.stringify(title_list));
        //生成markdown格式文本
        var md_text = "";
        title_list.forEach((item,index,array)=>{
            var i = 0;
            for(var d in item) {
                if(i==0){
                    md_text+="  ".repeat(item[d]-1)+"- [ ] ";
                }else{
                    md_text+=item[d];
                }
                i++;
            }
            if(index < array.length-1){
                md_text+="\r\n";
            }
        });
        //console.log(md_text);
        //写入文件
        download(book+"_"+author+".md",md_text);
    }
    function download(filename, text) {
        var element = document.createElement('a');
        element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
        element.setAttribute('download', filename);
        element.style.display = 'none';
        document.body.appendChild(element);
        element.click();
        document.body.removeChild(element);
    }
    $("#routerView > div:nth-child(5) > div.readerCatalog").on("click", prepare);

})();