🏠 Home 

超星ss.chaoxing.com 及各地图书馆包库 的在线书一键获取目录 直接用于PDF目录编辑

可以通过点击右侧的按钮直接复制出 超星ss.chaoxing.com 及各地图书馆包库的在线书获取目录哦,直接用于FreePic2Pdf的目录编辑FreePic2Pdf_bkmk.txt,省时省力。


安装此脚本?
  1. // ==UserScript==
  2. // @name 超星ss.chaoxing.com 及各地图书馆包库 的在线书一键获取目录 直接用于PDF目录编辑
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.0
  5. // @note 22-01-28 1.0 swf失效后更换获取目录的在线XML Url
  6. // @icon data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJLgAAh5UAAITXAACA+QAAfPkAAHjZAABzlwECbzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQIAACUlQAAk/0AAJT/AACU/wAAkv8AAI//AACJ/wAAgf8AAHf9AQFwmQkLbgoAAAAAAAAAAAAAAAAAAJsIAACbvQAAnf8AAJ//AACg/wAAoP8AAJ7/AACb/wAAl/8AAJH/AACI/wAAfP8BAXLBCg1wCgAAAAAAAAAAAAChkzM0tv9FRr//Dg2v/0ZGwv8uLrr/ICC0/0VGvv8nKLD/Hh+o/0RFsv8wMaL/AAB+/wECc5kAAAAAAACmKgEAqf2lp+f/7PD8/0VDy//z9/7/YmHT/8bJ8P/S1fT/XF3L/93i9f9nasj/Bgaa/wAAi/8AAHz9AQJ0LgIArI8EALL/dHPd//H2/v9TT9f/9fn+/05K1f/3+v7/aGfX/+fq+v8/PsT/AACn/wAAnv8AAJX/AACH/wAAepUEALPRBgC6/yUdzf/v8/7/am7h//b4/v9mbN//+vz+/3h24f+pqen/BQC3/wMArv8AAKX/AACb/wAAkP8AAIDVBgC58QkAwf8REMj/naXu/8LI8v/DyfX/lJ7p/+zu/P+Pl+n/kY/l/wcAvv8FALX/AQCr/wAAof8AAJb/AACH9QgAvvEOCcf/IjDO/0VV2P/j4/r/trrw/+nq+v+ssu//pKzu/87P9f8OBcT/BgC6/wMAsP8AAKX/AACa/wAAjfUJAMLRFx3L/zFD0/9OXtv/g4nm/+7t+//T0vb/1Nb2/8PG9P+Zo+3/g4Hj/wcAvf8EALP/AACo/wAAnP8AAJHVCwHFjx0ozf86TNX/XWre/4OH5/+uqfD/4+H6/9/e+P/GyPT/rbXx/+3w/f+VlOT/fX/a/wEAqf8AAJ7/AACUlQ0FxyodKc39OkzV/11q3v+Dh+f/pJ7u/5mW7P+Ul+r/q6/v/+bp/P/3+f7/8/f+/yUjv/8BAKn/AACe/QAAli4AAAAAHSjMkzJD0/9OXtv/a3Xi/32D5v94f+X/YGzf/0JT1/8uPtT/6u/9/6Sk7v94edj/AQCo/wAAn5cAAAAAAAAAABwnzAgmNs+9OUrV/0xc2v9XZd3/VGLc/0VV2P8wQdL/GiLN/15c2v8GALr/BwOz/wAApr8AAKAIAAAAAAAAAAAAAAAAIS/OCCc30JUvP9L9NUbU/zNF0/8qOtD/GyTM/wwFxv8IAL7/BQC1/QIArZkAAKcIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHyzNLh4qzZUZIcvXERDI+QsCxPkIAL/ZBgC5lwQAszAAAAAAAAAAAAAAAAAAAAAA+B8AAOAHAADAAwAAgAEAAIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAAgAEAAMADAADgBwAA+B8AAA==
  7. // @description 可以通过点击右侧的按钮直接复制出 超星ss.chaoxing.com 及各地图书馆包库的在线书获取目录哦,直接用于FreePic2Pdf的目录编辑FreePic2Pdf_bkmk.txt,省时省力。
  8. // @author 405647825@qq.com
  9. // @license MIT
  10. // @include *ss.chaoxing.com/ebook/list?dxid=*
  11. // @include */n/slib/book/slib/*
  12. // @grant GM_xmlhttpRequest
  13. // @grant GM_setClipboard
  14. // ==/UserScript==
  15. (function() {
  16. 'use strict';
  17. //处于 ss.chaoxing.com/ebook/list?dxid= 网站时
  18. if(location.href.match(/ss\.chaoxing\.com\/ebook\/list\?dxid=/)){
  19. var jsonUrl = location.href.replace('list?','searchlistbyjson?');
  20. var jsonMenuContent = '';
  21. GM_xmlhttpRequest({
  22. method: 'GET',
  23. url: jsonUrl,
  24. headers: {
  25. 'User-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36',
  26. 'Accept': 'application/json',
  27. },
  28. onload: function(responseDetails) {
  29. var jsonData = eval('(' + responseDetails.responseText + ')');
  30. for(var i = 0; i < jsonData.length; i++){
  31. var currEntry = jsonData[i];
  32. var jsonTitle = currEntry.content;
  33. var jsonPageNumber = currEntry.page.split('-')[0];
  34. console.log(jsonTitle + '\t' + jsonPageNumber);
  35. jsonMenuContent += jsonTitle + '\t' + jsonPageNumber + '\n';
  36. }
  37. unsafeWindow.copyJsonMenu = function() {
  38. GM_setClipboard(jsonMenuContent);
  39. };
  40. document.body.innerHTML += '<div style="margin:0px auto; width:30px;line-height:18px; position: fixed !important; right: 5px; top: 250px; z-index: 100;"><button style="padding:5px; background: rgba(23,160,94,0.8);" onclick="copyJsonMenu();this.style.background=\'rgba(247,206,37,0.8)\';">复制目录</button></div>';
  41. }
  42. });
  43. }
  44. //
  45. var menuContent = '';
  46. var level = 0;
  47. function display(elem){
  48. var elem_child = elem.childNodes;
  49. for(var i=0; i<elem_child.length;i++){
  50. /*if(elem_child[i].nodeName == "#text" && !/\s/.test(elem_child.nodeValue)){
  51. elem.removeChild(elem_child[i]);
  52. }*/
  53. if(elem_child[i].nodeType == 1){
  54. if(elem_child[i].parentElement.tagName == 'treeview'){
  55. level = 0;
  56. }
  57. else if(elem_child[i].parentElement.parentElement.tagName == 'treeview'){
  58. level = 1;
  59. }
  60. else if(elem_child[i].parentElement.parentElement.parentElement.tagName == 'treeview'){
  61. level = 2;
  62. }
  63. else if(elem_child[i].parentElement.parentElement.parentElement.parentElement.tagName == 'treeview'){
  64. level = 3;
  65. }
  66. else if(elem_child[i].parentElement.parentElement.parentElement.parentElement.parentElement.tagName == 'treeview'){
  67. level = 4;
  68. }
  69. console.log('\t'.repeat(level) + elem_child[i].attributes[1].value.replace(/^\s+/, '\t') + '\t' + elem_child[i].attributes[2].value + '\n');
  70. menuContent += '\t'.repeat(level) + elem_child[i].attributes[1].value.replace(/^\s+/, '\t') + '\t' + elem_child[i].attributes[2].value + '\n';
  71. if(elem_child[i].hasChildNodes){
  72. //console.warn(elem_child[i]);
  73. display(elem_child[i]);
  74. }
  75. }
  76. }
  77. }
  78. //
  79. //var s = [[1, 0], [1, 1], [1, 1], [1, 2], [1, 1], [1, 119], [1, 0], [2, 2]];
  80. function getJiekou(s){
  81. var mulu = s[4][1];
  82. var bSum = 0;
  83. for(var i=0; i<5; i++){
  84. bSum += s[i][1];
  85. }
  86. bSum++;
  87. mulu = bSum-mulu;
  88. //console.log(mulu,bSum);
  89. return '〓用作参考:可能需手动调整,如果另从当当网下载到封面cov001需要BasePage、ContentsPage、TextPage都加1〓\n\n[Images]\n\n[Font]\nLanguage=GBK\nFontSize=10\nMargin=1.0\n\n[Bkmk]\nFile=FreePic2Pdf_bkmk.txt\nAddAsText=0\nShowBkmk=1\nShowAll=1\nBasePage='+bSum+'\n\n[Main]\nContentsPage='+mulu+'\nTextPage='+bSum+'\n\n〓或者这个:适合图书页码从封皮开始而正文页从非1开始的〓\n\n'+ '[Images]\n\n[Font]\nLanguage=GBK\nFontSize=10\nMargin=1.0\n\n[Bkmk]\nFile=FreePic2Pdf_bkmk.txt\nAddAsText=0\nShowBkmk=1\nShowAll=1\nBasePage=1\n\n[Main]\nContentsPage='+mulu+'\nTextPage='+bSum+'\n';
  90. }
  91. function getSMenu(s){
  92. var output = '';
  93. var tempArr = [];
  94. var bookStructure = ["封面","书名","版权","前言","目录","正文","封底"];
  95. var sum =0;
  96. //for(var i = s.length-1;i>0;i--){
  97. for(var i =4; i>0; i--){
  98. if(s[i][1]==0) continue;
  99. sum += s[i][1];
  100. //console.log(sum);
  101. tempArr[i]=-sum;
  102. }
  103. //console.log(tempArr);
  104. for(var j =0;j<tempArr.length;j++){
  105. if(tempArr[j] == 0 || tempArr[j] == undefined) continue;
  106. console.log(bookStructure[j]+'\t'+tempArr[j]);
  107. output += bookStructure[j]+'\t'+tempArr[j] + '\n';
  108. }
  109. return output;
  110. }
  111. //
  112. if(location.href.match(/\/n\/slib\/book\/slib\//)){
  113. //计算总页数
  114. var pageNumsList = eval(document.body.innerHTML.match(/var\spages\s=\s(.+);/)[1]);
  115. //不用 eval 高手提供的代替方法:
  116. //new Function("return" + "[[1, 0], [1, 1], [1, 1], [1, 2], [1, 1], [1, 119], [1, 0], [2, 2]]")();
  117. //直接滚动到出错的位置
  118. var bookStr = getSMenu(pageNumsList);
  119. //获取目录的在线XML Url
  120. //var menuUrl = document.body.querySelector('param[value^="/tree.swf?kid"]').value.replace('/tree.swf?','http://path.sslibrary.com/cat/cat2xml.dll?');
  121. var menuUrl = document.body.querySelector('#ztree').getAttribute('param').replace('/cat/cat2xml.dll?','http://path.sslibrary.com/cat/cat2xml.dll?');
  122. //添加按钮 复制目录
  123. console.log(menuUrl);
  124. //document.body.innerHTML += '<div style="margin:0px auto; width:30px;line-height:18px; position: fixed !important; right: 16px; top: 282px; z-index: 100;"><button style="padding:5px; background: rgba(23,160,94,0.8);" onclick="copyMenu();this.style.background=\'rgba(247,206,37,0.8)\';">复制目录</button></div>';
  125. document.querySelector('#dirsidebar').innerHTML += '<div style="margin:0px auto; width:28px;line-height:18px;"><button style="padding:5px; background: rgba(23,160,94,0.8);" onclick="copyMenu();this.style.background=\'rgba(247,206,37,0.8)\';" title="FreePic2Pdf里=>更改PDF=>PdgCntEditor里用的">复制目录</button><button style="padding:5px; background: rgba(23,160,94,0.8);" onclick="copyJiekou();this.style.background=\'rgba(247,206,37,0.8)\';" title="FreePic2Pdf里=>更改PDF=>编辑接口文件里用的">复制接口文件</button></div>';
  126. unsafeWindow.copyJiekou = function() {
  127. console.log(getJiekou(pageNumsList));
  128. GM_setClipboard(getJiekou(pageNumsList));
  129. };
  130. unsafeWindow.copyMenu = function() {
  131. GM_xmlhttpRequest({
  132. method: 'GET',
  133. url: menuUrl,
  134. headers: {
  135. 'User-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36',
  136. 'Accept': 'text/html,application/xhtml+xml,application/xml,text/xml',
  137. },
  138. onload: function(responseDetails) {
  139. console.log(responseDetails.responseText);
  140. var parser = new DOMParser();
  141. var dom = parser.parseFromString(responseDetails.responseText,
  142. "text/xml");
  143. console.warn(dom.firstChild);
  144. display(dom.firstChild);
  145. GM_setClipboard(bookStr+menuContent);
  146. menuContent = '';
  147. }
  148. });
  149. };
  150. }
  151. // Your code here...
  152. })();