neatreader_web_directory_export_mdfile

使用[NeatReader]网页版读书时,点击键盘字母D下载名为[书名.md]的文件,该文件内容为带有缩进层级和选项框的目录,便于标记书籍已读。

当前为 2023-06-08 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name neatreader_web_directory_export_mdfile
  3. // @license MIT
  4. // @namespace jarzhen@163.com
  5. // @version 0.2
  6. // @description 使用[NeatReader]网页版读书时,点击键盘字母D下载名为[书名.md]的文件,该文件内容为带有缩进层级和选项框的目录,便于标记书籍已读。
  7. // @author jiazhen
  8. // @require https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js
  9. // @match https://www.neat-reader.cn/webapp#/*
  10. // @icon https://www.google.com/s2/favicons?domain=tampermonkey.net
  11. // @grant none
  12. // ==/UserScript==
  13. (function() {
  14. 'use strict';
  15. function prepare(){
  16. var importJs=document.createElement('script'); //在页面新建一个script标签
  17. importJs.setAttribute("type","text/javascript"); //给script标签增加type属性
  18. importJs.setAttribute("src", 'https://cdn.jsdelivr.net/npm/jquery@3.4.1');
  19. var title_list = [];
  20. //书名
  21. var book = $("title").html();
  22. //目录
  23. $("div.book-catalog div").each(function(){
  24. var title = {};
  25. title.retract = parseInt($(this).attr("class").split(" ")[0].substr("nav-level-".length));
  26. title.name = $(this).attr("data-label");
  27. title_list.push(title);
  28. });
  29. console.log(title_list);
  30. //生成json
  31. //console.log(JSON.stringify(title_list));
  32. //生成markdown格式文本
  33. var md_text = "";
  34. title_list.forEach((item,index,array)=>{
  35. var i = 0;
  36. for(var d in item) {
  37. //debugger;
  38. if(i==0){
  39. md_text+=" ".repeat(item[d]-1)+"- [ ] ";
  40. }else{
  41. md_text+=item[d];
  42. }
  43. i++;
  44. }
  45. if(index < array.length-1){
  46. md_text+="\r\n";
  47. }
  48. });
  49. console.log(md_text);
  50. //写入文件
  51. download(book+".md",md_text);
  52. }
  53. function download(filename, text) {
  54. var element = document.createElement('a');
  55. element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
  56. element.setAttribute('download', filename);
  57. element.style.display = 'none';
  58. document.body.appendChild(element);
  59. element.click();
  60. document.body.removeChild(element);
  61. }
  62. //绑定键盘字母D点击事件
  63. $(document).keyup(function(e){
  64. switch(e.keyCode) {
  65. case 68:
  66. prepare();
  67. return;
  68. }
  69. });
  70. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址