// ==UserScript== // @name 更好的我来导出 // @namespace https://shenzilong.cn/ // @version 1.0.1 // @description 从我来导出markdown 文档 // @author 崮生 admin@shenzilong.cn // @include https://www.wolai.com/* // @grant unsafeWindow // @grant GM.setValue // @grant GM.getValue // @grant GM.xmlHttpRequest // @downloadURL none // ==/UserScript== !function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=15)}({15:function(e,t,n){"use strict";n.r(t),n.d(t,"我来md导出",(function(){return k}));function r(e,t){var n={};for(var r in e)n[r]=e[r];return n.target=n.currentTarget=t,n}var o,i=["load","loadend","timeout","error","readystatechange","abort"],a=i[0],s=i[1],c=i[2],u=i[3],l=i[4],d=i[5];function p(e){return e.watcher||(e.watcher=document.createElement("a"))}function f(e,t){var n,o=e.getProxy(),i="on"+t+"_",a=r({type:t},o);o[i]&&o[i](a),"function"==typeof Event?n=new Event(t,{bubbles:!1}):(n=document.createEvent("Event")).initEvent(t,!1,!0),p(e).dispatchEvent(n)}function h(e){this.xhr=e,this.xhrProxy=e.getProxy()}function y(e){function t(e){h.call(this,e)}return t.prototype=Object.create(h.prototype),t.prototype.next=e,t}h.prototype=Object.create({resolve:function(e){var t=this.xhrProxy,n=this.xhr;t.readyState=4,n.resHeader=e.headers,t.response=t.responseText=e.response,t.statusText=e.statusText,t.status=e.status,f(n,l),f(n,a),f(n,s)},reject:function(e){this.xhrProxy.status=0,f(this.xhr,e.type),f(this.xhr,s)}});var b=y((function(e){var t=this.xhr;for(var n in e=e||t.config,t.withCredentials=e.withCredentials,t.open(e.method,e.url,!1!==e.async,e.user,e.password),e.headers)t.setRequestHeader(n,e.headers[n]);t.send(e.body)})),v=y((function(e){this.resolve(e)})),g=y((function(e){this.reject(e)}));function m(e){var t=e.onRequest,n=e.onResponse,o=e.onError;function a(e,t,n){var r=new g(e),i={config:e.config,error:n};o?o(i,r):r.next(i)}function s(){return!0}function h(e,t){return a(e,0,t),!0}function y(e,t){return 4===e.readyState&&0!==e.status?function(e,t){var r=new v(e);if(!n)return r.resolve();var o={response:t.response,status:t.status,statusText:t.statusText,config:e.config,headers:e.resHeader||e.getAllResponseHeaders().split("\r\n").reduce((function(e,t){if(""===t)return e;var n=t.split(":");return e[n.shift()]=function(e){return e.replace(/^\s+|\s+$/g,"")}(n.join(":")),e}),{})};n(o,r)}(e,t):4!==e.readyState&&f(e,l),!0}return function(e){function t(t){return function(){var n=this.hasOwnProperty(t+"_")?this[t+"_"]:this.xhr[t],r=(e[t]||{}).getter;return r&&r(n,this)||n}}function n(t){return function(n){var o=this.xhr,i=this,a=e[t];if("on"===t.substring(0,2))i[t+"_"]=n,o[t]=function(a){a=r(a,i),e[t]&&e[t].call(i,o,a)||n.call(i,a)};else{var s=(a||{}).setter;n=s&&s(n,i)||n,this[t+"_"]=n;try{o[t]=n}catch(e){}}}}function o(t){return function(){var n=[].slice.call(arguments);if(e[t]){var r=e[t].call(this,n,this.xhr);if(r)return r}return this.xhr[t].apply(this.xhr,n)}}return window._rxhr=window._rxhr||XMLHttpRequest,XMLHttpRequest=function(){var e=new window._rxhr;for(var r in e){var i="";try{i=typeof e[r]}catch(e){}"function"===i?this[r]=o(r):Object.defineProperty(this,r,{get:t(r),set:n(r),enumerable:!0})}var a=this;e.getProxy=function(){return a},this.xhr=e},window._rxhr}({onload:s,onloadend:s,onerror:h,ontimeout:h,onabort:h,onreadystatechange:function(e){return y(e,this)},open:function(e,n){var o=this,i=n.config={headers:{}};i.method=e[0],i.url=e[1],i.async=e[2],i.user=e[3],i.password=e[4],i.xhr=n;var s="on"+l;n[s]||(n[s]=function(){return y(n,o)});var p=function(e){a(n,0,r(e,o))};if([u,c,d].forEach((function(e){var t="on"+e;n[t]||(n[t]=p)})),t)return!0},send:function(e,n){var r=n.config;if(r.withCredentials=n.withCredentials,r.body=e[0],t){var o=function(){t(r,new b(n))};return!1===r.async?o():setTimeout(o),!0}},setRequestHeader:function(e,t){return t.config.headers[e[0].toLowerCase()]=e[1],!0},addEventListener:function(e,t){var n=this;if(-1!==i.indexOf(e[0])){var o=e[1];return p(t).addEventListener(e[0],(function(t){var i=r(t,n);i.type=e[0],i.isTrusted=!0,o.call(n,i)})),!0}},getAllResponseHeaders:function(e,t){var n=t.resHeader;if(n){var r="";for(var o in n)r+=o+": "+n[o]+"\r\n";return r}},getResponseHeader:function(e,t){var n=t.resHeader;if(n)return n[(e[0]||"").toLowerCase()]}})}var k;!function(e){e.toMarkdown=async function(e){let t="";const n=Object.keys(e.data.block).map(t=>e.data.block[t]).map(e=>e.value);console.log("[blocks]",n);const o=function(e){return e.find(e=>"page"===e.type)}(n);if(!o)throw"没有寻找到page块";return t+=await r(o,e),t};const t=[],n=[];async function r(e,r){const o=t.find(t=>t.check(e,r));if(o){const t=await o.parer(e,r);if(e.sub_nodes.length){const o=n.find(t=>t.check(e,r));if(o)return await o.parer(t,e,r);console.log(`[没有对应的结构解析器 ${e.type}]`,e)}return t}return console.log(`[没有对应的解析器 ${e.type}]`,e),`--- 没有对应的解析器 -> ${e.type} ---`}function o(){return location.href.match(/.*?wolai\.com\/.*?\//)[0]}e.registerNodeParer=function(...e){t.push(...e)},e.registerSubNodeParer=function(...e){n.push(...e)},e.nodeToMarkdown=r,e.NodeTitleToMarkdown=function(e){return e?e.map(e=>{const t=e[0];if(1===e.length)return t;{const n=e[1];n.length;let r=t;for(const t of n)if("Link"===t[0])r=`[${r}](${t[1]})`;else if("BiLink"===t[0]){r=`[${r}](${o()}${t[2]})`}else"<>"===t[0]?r=`\`${r}\``:"B"===t[0]?r=`**${r}**`:"h"===t[0]?r=r:"i"===t[0]?r=`*${r}*`:"U"===t[0]?r=""+r:"S"===t[0]?r=`~~${r}~~`:"Equation"===t[0]?r=`$${r}$`:(r=`<未知类型 ${t[0]}>`,console.log(`<未知类型 ${t[0]}>`,t,n,e));return r}}).join(""):""},e.getWorkUrl=o}(k||(k={}));const w=k.NodeTitleToMarkdown;function $(e,t){return e.sub_nodes.map(e=>t.data.block[e].value)}k.registerNodeParer({check:e=>"quote"===e.type,parer:async e=>"> "+w(e.attributes.title)},(()=>{const e={bullList:"-",header:"#",midHeader:"##",subHeader:"###",tinyHeader:"####"};return{check:t=>e.hasOwnProperty(t.type),parer:async t=>`${e[t.type]} ${w(t.attributes.title)}`}})(),{check:e=>"enumList"===e.type,async parer(e,t){let n=0;const r=$(t.data.block[e.parent_id].value,t);let o=r.findIndex(t=>t.id===e.id);for(;o>=0&&"enumList"===r[o].type;)o-=1,n+=1;return`${n}. ${w(e.attributes.title)}`}},{check:e=>"toggleList"===e.type,parer:async(e,t)=>w(e.attributes.title)},{check:e=>"bookmark"===e.type,async parer(e){var t;const n=e.attributes.rich_media[0],r=n.description||"",o=r&&(null==n||null===(t=n.thumbnail)||void 0===t?void 0:t.length)?`![](${n.thumbnail[0].href}){:height="60px" width="60px"}`:"";return`> [![](${n.icons[0].href}){:height="30px" width="30px"} 崮生 一些随笔](${e.attributes.source} "${r}") ${r} ${o}`}},{check:e=>["embed","bilibiliVideo","tencentVideo","youkuVideo","youtubeVideo"].includes(e.type),parer:async e=>``},{check:e=>["callout"].includes(e.type),parer:async e=>`${k.NodeTitleToMarkdown(e.attributes.title)}`},{check:e=>["divider"].includes(e.type),parer:async e=>"---"},{check:e=>["file"].includes(e.type),async parer(e){const t="https://secure-static.wolai.com/"+encodeURIComponent(e.attributes.file[0]);return`[file:${e.attributes.alias[0]}](${t}})`}},{check:e=>["blockEquation"].includes(e.type),parer:async e=>`$$\n${e.attributes.title.join("\n")}\n$$`},{check:e=>["templateButton"].includes(e.type),parer:async e=>""},{check:e=>["simpleTable"].includes(e.type),async parer(e){const t=JSON.parse(e.attributes.cells);let n="";for(let e=0;e"-").join("|")+"|\n"),n+="|";for(let r=0;r"text"===e.type,parer:async e=>""+w(e.attributes.title)},{check:e=>"row"===e.type||"column"===e.type,async parer(e,t){const n=e.sub_nodes.map(e=>t.data.block[e]);let r="";for(const e of n)r+=await k.nodeToMarkdown(e.value,t)+"\n\n";return r}},{check:e=>"code"===e.type,parer:async(e,t)=>`\`\`\`${e.attributes.language}\n${w(e.attributes.title)}\n\`\`\``},{check:e=>"image"===e.type,async parer(e,t){const n=document.querySelector(`#id-${e.id} img`).getAttribute("src");return`![${w(e.attributes.title)}](${n})`}},{check:e=>"page"===e.type,async parer(e,t){const n=k.getWorkUrl();return e.id===Object.keys(t.data.block)[0]?`# [${w(e.attributes.title)}](${n}${e.id})`:`[${w(e.attributes.title)}](${n}${e.id})`}},{check:e=>"todoList"===e.type,parer:async(e,t)=>`[${"yes"===e.attributes.checked?"x":" "}] ${w(e.attributes.title)}`}),k.registerSubNodeParer({check:e=>"page"===e.type,parer:async(e,t,n)=>e+"\n\n"+(await Promise.all($(t,n).map(e=>k.nodeToMarkdown(e,n)))).join("\n\n")},{check:e=>["bullList","enumList","todoList"].includes(e.type),async parer(e,t,n){const r=function(e,t){let n=0,r=e;for(;null===(o=r)||void 0===o?void 0:o.parent_id;){var o,i,a;if(n++,r=null===(i=t.data.block[r.parent_id])||void 0===i?void 0:i.value,"toggleList"===(null===(a=r)||void 0===a?void 0:a.type)){n++;break}}return n-1}(t,n)-1,o=(await Promise.all($(t,n).map(e=>k.nodeToMarkdown(e,n)))).map(e=>`${"".padEnd(r+1,"\t")}${e}`);return`${e}${o.length?"\n"+o.join("\n"):""}`}},{check:e=>["toggleList"].includes(e.type),parer:async(e,t,n)=>`
\n ${e}\n${(await Promise.all($(t,n).map(e=>k.nodeToMarkdown(e,n)))).join("\n\n")}\n
`});let x=null;var T;!function(e){if(o)throw"Proxy already exists";o=new m(e)}({onRequest:(e,t)=>{t.next(e)},onError:(e,t)=>{t.next(e)},onResponse:(e,t)=>{t.next(e),e.config.url.endsWith("transaction/getPageChunks")&&(x=e.response)}}),function(e,t=(()=>{}),n=(()=>{}),r=(()=>{})){let o=!1,i="";setInterval(()=>{const a=document.querySelector(e);o&&a&&a.innerHTML!==i&&(i=a.innerHTML,n(a)),a&&!o?(o=!0,t(a)):!a&&o&&(o=!1,r())},100)}('[data-growing-title="复制页面引用链接-头部栏"]',e=>{console.log("[ el]",e);const t=e.nextElementSibling,n=t.cloneNode(!0);t.parentElement.appendChild(n),n.querySelectorAll("span")[1].textContent="[✨] 导出Markdown",n.addEventListener("click",async()=>{if(null===x)return alert("没有获取到当前页面数据,您可以尝试刷新重试。");const e=JSON.parse(x),t=await k.toMarkdown(e),n=new Blob([t],{type:"text/plain;charset=utf-8"}),r=URL.createObjectURL(n);var o;console.log(`[markdown:${r}]\n----\n`,t),console.log("[copy(md)]",(o=t,navigator.clipboard.writeText(o))),alert("复制成功")})}),function(e){e.已附加=!1}(T||(T={})),unsafeWindow.XMLHttpRequest=XMLHttpRequest}}); //# sourceMappingURL=更好的我来导出.user.js.map