您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
try to take over the world!
// ==UserScript== // @name aiimooc下载 // @namespace http://tampermonkey.net/ // @version 0.2 // @description try to take over the world! // @author You // @match https://college.aiimooc.com/study/* // @match https://www.aiimooc.com/mall/* // @require https://cdn.bootcdn.net/ajax/libs/jquery/1.10.0/jquery.min.js // @require https://cdn.bootcdn.net/ajax/libs/downloadjs/1.4.8/download.js // @require https://cdn.bootcdn.net/ajax/libs/FileSaver.js/2.0.0/FileSaver.js // @grant none // ==/UserScript== function loadStyle(url){ var link = document.createElement('link'); link.type = 'text/css'; link.rel = 'stylesheet'; link.href = url; var head = document.getElementsByTagName('head')[0]; head.appendChild(link); } function loadScript(url, callback){ var script = document.createElement ("script") script.type = "text/javascript"; if (script.readyState){ //IE script.onreadystatechange = function(){ if (script.readyState == "loaded" || script.readyState == "complete"){ script.onreadystatechange = null; if(typeof(callback) == 'function') callback(); } }; } else { //Others script.onload = function(){ if(typeof(callback) == 'function') callback(); }; } script.src = url; document.getElementsByTagName("head")[0].appendChild(script); } loadScript("https://cdn.bootcdn.net/ajax/libs/FileSaver.js/2.0.0/FileSaver.js"); function download_src(url, filename){ var download_file = document.createElement('a'); document.body.appendChild(download_file); download_file.href = url; download_file.download = filename; download_file.target = "_blank"; download_file.rel = 'noopener noreferrer'; download_file.click(); document.body.removeChild(download_file); } var wait_video_timer; var video_init; var video_src; wait_video_timer = setInterval(function(){ if($("video").attr('src') != undefined && $("video").attr('src') != ''){ video_init = 1; video_src = $("video").attr('src'); clearInterval(wait_video_timer); show_msg('[OK] got video src.'); show_msg(video_src); set_status('Ready!'); } show_msg('[Wait] video src.'); },1000) function set_progress(n){ if(window.element){ element.progress('mprogress', n.toString()+'%'); } } function set_status(msg){ $('#mstatus').text(msg); } function show_msg(msg){ var s = '' for(var i=0; i<arguments.length;i++){ s+=' '+String(arguments[i]); } console.log(s); if(typeof(layer.msg) == 'function'){ layer.msg(s, { offset: 't', anim: 5, area: 300 }); } } function fun_btn(){ if(video_init != 1){ show_msg("[Wait] video src."); return; } var file_name = $(".c-study-left-nav-item-segment-state-doing").parent().text().replace(/[\s\\\\/:*?\"<>|]+/g, ' ').trim() + '.mp4'; video_src = $("video").attr('src'); download_src(video_src, file_name); // layer.prompt({ // formType: 0, // closeBtn: 0, // resize: false, // btn:["确定"], // value: file_name, // area: ['500px', '100px'], // title: '文件名', // }, // function(value, index, elem){ // layer.close(index); // file_name = value; // download_src(video_src, file_name); // // download(video_src, file_name, "video/mp4"); // set_status('OK!'); // }); } loadStyle("https://www.layuicdn.com/layui/css/layui.css") loadScript("https://www.layuicdn.com/layui/layui.all.js", function(){ // 由于引入的为all.js 模块都一次性加载,因此不用执行 layui.use() 来加载对应模块,直接使用即可layer,element layer.open({ type: 1, content: '<div style="padding:20px;text-align: center;"><h3>Github:<a style="color: #23696f" href="https://github.com/ygcaicn/keledge" target="_blank">Star</a></h3><br><p>Status:<span id="mstatus">Ready!</span></p></div> <div class="layui-progress layui-progress-big" lay-filter="mprogress" lay-showpercent="true"><div class="layui-progress-bar" lay-percent="0%"></div></div>', skin: 'layui-layer-molv', shade: 0, btnAlign: 'c' , offset: 'rt', area:'300px', btn: ['Download', 'Cancel'], btn1: function(){ fun_btn(); return false; }, btn2: function(){ return false; } }); window.element = layui.element; window.element.init(); set_status('Wait initing...'); })