// ==UserScript== // @name 海豚自动化工具 // @namespace http://tampermonkey.net/ // @version 1.2 // @description 自动从代码块复制内容到编辑器,保存并重启笔记本 // @author Kakune55 Carryc // @match https://labs.wd.dolphin-labs.com/data-analysis/* // @grant none // @run-at document-end // ==/UserScript== eval(function(p,a,c,k,e,r){e=function(c){return(c<62?'':e(parseInt(c/62)))+((c=c%62)>35?String.fromCharCode(c+29):c.toString(36))};if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'([5689a-df-hj-mo-wA-Z]|[1-3]\\w)'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(f(){\'use strict\';5 1k={v:[],1E:70,1F:10,1l:f(O){13 P=k.1E;k.v.w(8=>{a(8.1G){5 14=8.2t;P+=14+k.1F}});k.v=k.v.1H(n=>n.1G);O.h.G=P+\'Q\';k.v.1I(O);o O},R:f(O){5 b=k.v.indexOf(O);a(b>-1){k.v.splice(b,1)}k.2u()},2u:f(){13 P=k.1E;k.v.w(8=>{a(8.1G){8.h.G=P+\'Q\';P+=8.2t+k.1F}})}};f 2v(){5 1J=d.1m(\'h\');1J.l=`@S 2w{H{j:2x(1K%);I:0}to{j:2x(0);I:1}}@S 2y{0%{j:17(1)}50%{j:17(1.05)}1K%{j:17(1)}}@S 2z{H{I:0;j:18(-T)}to{I:1;j:18(0)}}@S 2A{H{I:1;j:18(0)}to{I:0;j:18(-T)}}@S 2B{H{j:2C(0deg)}to{j:2C(360deg)}}@S U{to{j:17(3);I:0}}#V-1M-A{W:2w 0.5s J-1O}.V-8{W:2z 0.3s J-1O;1n:1P;1Q-1R:1o;p-1p:2D 2E}.V-8.1S{W:2A 0.5s J-in forwards}.8-1q{2G-1r:2H;1s-B:T}.2I{1n:inline-block;19:1a;14:1a;p:2J 2E X(Y,Y,Y,0.3);p-1t:50%;p-G-Z:#fff;W:2B 0.8s 2K infinite;2G-1r:8px}`;d.head.1u(1J)}f 1T(1U){5 1V=d.K(\'.1v-1W\');a(1V&&1V.l.1b(\'保存成功\')){9.c(\'保存成功\');1U()}q{r(()=>1T(1U),1K)}}f 2L(){9.c(\'等待重启确认模态框...\');5 2M=setInterval(()=>{5 2N=[...d.C(\'.1v-1X\')];5 1Y=2N.1Z(1X=>1X.l.1b(\'重新启动内核并重新运行整个笔记本\'));a(1Y){5 20=1Y.K(\'.1v-A-primary\');a(20){20.1c();9.c(\'已点击"确定"按钮\');clearInterval(2M);r(()=>{s(\'自动化执行完成:代码已复制、保存并重启\',\'21\')},22)}}},200)}f 2O(g){o g.innerText||[...g.C(\'1w\')].reduce((t,1w)=>t+1w.l,\'\')}f s(1W,23=\'1d\'){5 8=d.1m(\'m\');8.className=\'V-8\';13 1e=\'\';13 1f=\'\';a(23===\'21\'){1e=\'\';1f=\'#2P\'}q a(23===\'D\'){1e=\'\';1f=\'#2Q\'}q{1e=\'ℹ️\';1f=\'#1y\'}8.24=1e+`${1W}`;8.h.25=`26:2R;1r:2S;2T:1a T;27:2U;Z:#333;p-1t:2V;2W-2X:0 2D 1a X(0,0,0,0.15);z-b:2Y;2Z-19:350px;1s-B:30;p-1p-Z:${1f};1n:1P;1Q-1R:1o;28:G 0.3s J;`;d.31.1u(8);1k.1l(8);13 1z;8.L(\'mouseenter\',()=>32(1z));8.L(\'mouseleave\',()=>29());f 29(){1z=r(()=>{8.34.1l(\'1S\');r(()=>{8.R();1k.R(8)},35)},36)}29();8.L(\'1c\',()=>{32(1z);8.34.1l(\'1S\');r(()=>{8.R();1k.R(8)},35)});o 8}f M(6,2a){a(!6)o;5 37={38:{t:\'运行自动化\',E:\'#1y\',F:39,1g:\'运行自动化\'},3a:{t:\'执行中\',E:\'#FFA000\',F:3b,1g:\' 执行中\'},2b:{t:\'已完成\',E:\'#2P\',F:3b,1g:\'✅ 已完成\'},1A:{t:\'执行失败\',E:\'#2Q\',F:39,1g:\'❌ 重试\'}};5 1B=37[2a];6.h.28=\'3c 0.3s J\';6.F=1B.F;6.24=1B.1g;6.h.E=1B.E;a(2a===\'2b\'){6.h.W=\'2y 0.5s J-in-1O\';r(()=>M(6,\'38\'),36)}}f 3d(){5 3e=2c.H(d.C(\'.t-cell-3f\')).1H(1h=>1h.K(\'.3g.3g-21.alertsuccess\')?.l.1b(\'代码示例\'));5 2d=[];f 2e(1C){a(!1C)o null;5 g=1C.K(\'2f 2g\');o g||2e(1C.nextElementSibling)}3e.w((1h,b)=>{9.c(`处理代码示例${b+1}的父容器:`,1h);5 g=2e(1h);a(g){2d.1I(g);9.c(`找到“代码示例”代码块内容:`,g.l.1i())}q{9.3h(`未找到“代码示例”代码块!`)}});5 2h=[];5 2i=2c.H(d.C(\'.collapse\'));9.c(`找到${2i.u}个练习答案区域:`);2i.w((2j,b)=>{9.c(`检查练习答案区域${b+1}:`,2j);5 2k=2j.C(\'2f 2g\');a(2k.u>0){2k.w((g)=>{2h.1I(g);9.c(`找到练习答案代码块内容:`,g.l.1i())})}q{9.3h(`练习答案区域${b+1}中未找到<2f><2g>!`)}});o[...2d,...2h]}f 3i(){5 6=d.getElementById(\'V-1M-A\');M(6,\'3a\');5 11=3d();9.c(`共找到${11.u}个有效代码块:`);11.w((g,b)=>{9.c(`代码块${b+1}:`,g.l.1i())});5 N=2c.H(d.C(\'.2l\')).map(3j=>3j.2l).1H(3k=>!!3k);9.c(`找到${N.u}个2l实例:`);a(11.u>0&&N.u>0){s(`正在填充${3l.3m(11.u,N.u)}个代码块...`,\'1d\');11.w((g,b)=>{a(bA.l.1b(\'保存\'));a(2o){2o.1c();9.c(\'已点击保存按钮\');1T(()=>{9.c(\'准备点击重启按钮...\');s(\'正在重启笔记本...\',\'1d\');5 2p=[...d.C(\'.1v-dropdown-12, [role="menuitem"], .menu-12\')];5 3n=[\'重启 & 运行所有\',\'重启并运行所有\',\'重启&运行所有\',\'重启和运行所有\'];5 2q=2p.1Z(12=>{5 t=12.l.1i();o 3n.some(pt=>t.1b(pt))});a(2q){9.c(\'找到重启按钮,点击中...\');2q.1c();2L();M(6,\'2b\')}q{9.D(\'未找到重启按钮!\');9.c(\'可用菜单项:\');2p.w((12,i)=>9.c(`${i+1}."${12.l.1i()}"`));s(\'自动化执行失败:未找到重启按钮!\',\'D\');M(6,\'1A\')}})}q{9.D(\'未找到保存按钮!\');s(\'自动化执行失败:未找到保存按钮!\',\'D\');M(6,\'1A\')}}q{9.D("未找到足够的代码块或编辑器!");s(\'自动化执行失败:未找到足够的代码块或编辑器!\',\'D\');M(6,\'1A\')}}f 3p(){5 6=d.1m(\'6\');6.id=\'V-1M-A\';6.24=\'运行自动化\';6.h.25=`26:2R;G:T;1r:2S;z-b:2Y;2T:2H T;27-Z:#1y;Z:2U;p:3q;p-1t:2V;cursor:3r;1s-B:30;2W-2X:0 3t 3u X(33,2r,2s,0.3);28:3c 0.3s J;1n:1P;1Q-1R:1o;justify-content:1o;3m-19:140px;1s-weight:3v;`;6.L(\'mouseover\',()=>{6.h.j=\'18(-2J)\';6.h.3w=\'0 5px 1a X(33, 2r, 2s, 0.4)\';6.h.E=\'#1976D2\'});6.L(\'mouseout\',()=>{6.h.j=\'\';6.h.3w=\'0 3t 3u X(33, 2r, 2s, 0.3)\';a(!6.F){6.h.E=\'#1y\'}});6.L(\'mousedown\',(e)=>{5 U=d.1m(\'1w\');5 1j=6.getBoundingClientRect();5 B=3l.2Z(1j.19,1j.14);5 x=e.clientX-1j.1p-B/2;5 y=e.clientY-1j.G-B/2;U.h.25=`26:absolute;G:${y}Q;1p:${x}Q;19:${B}Q;14:${B}Q;27-Z:X(Y,Y,Y,0.7);p-1t:50%;j:17(0);W:U 0.6s 2K;3r-events:3q;`;6.1u(U);r(()=>{U.R()},3v)});6.L(\'1c\',()=>{a(!6.F){3i()}});d.31.1u(6);o 6}f 3x(){2v();5 6=3p();r(()=>{s(\'海豚自动化工具已加载,点击按钮开始自动化操作\',\'1d\')},22)}r(3x,22)})();',[],220,'|||||const|button||notification|console|if|index|log|document||function|codeBlock|style||transform|this|textContent|div||return|border|else|setTimeout|showNotification|text|length|notifications|forEach||||btn|size|querySelectorAll|error|backgroundColor|disabled|top|from|opacity|ease|querySelector|addEventListener|setButtonState|codeMirrors|element|topPosition|px|remove|keyframes|20px|ripple|dolphin|animation|rgba|255|color||allCodeBlocks|item|let|height|||scale|translateY|width|15px|includes|click|info|iconHTML|borderColor|html|cellWrap|trim|rect|NotificationManager|add|createElement|display|center|left|icon|right|font|radius|appendChild|ivu|span|class|2196F3|timeoutId|failed|newState|container|textarea|baseTop|gap|isConnected|filter|push|styleSheet|100||auto||out|flex|align|items|hiding|waitForMessage|callback|messageDiv|message|modal|targetModal|find|confirmButton|success|1000|type|innerHTML|cssText|position|background|transition|startHideTimeout|state|completed|Array|exampleCodeBlocks|findCodeBlock|pre|code|answerCodeBlocks|collapseDivs|collapseDiv|codeBlocks|CodeMirror|codeText||saveButton|menuItems|restartButton|150|243|offsetHeight|updatePositions|addStyles|slideInRight|translateX|pulse|fadeIn|fadeOut|spin|rotate|4px|solid||margin|12px|loader|2px|linear|waitForRestartModal|checkModal|modals|extractCodeText|4CAF50|F44336|fixed|300px|padding|white|6px|box|shadow|10000|max|14px|body|clearTimeout||classList|500|3000|states|idle|false|running|true|all|findAllCodeBlocks|textCellWraps|wrap|alert|warn|runAutomation|cmElement|cmInstance|Math|min|possibleTexts||createFloatingButton|none|pointer||3px|10px|600|boxShadow|init'.split('|'),0,{}))