// ==UserScript== // @name 慕课网笔记导出 // @namespace https://github.com/yeomanye // @version 0.2 // @description 导出慕课网的笔记,分为点赞和采集两种(本人编写的也会被导出)。导出的格式为json。导出过程可以暂停,下次在进行导出。 // @author Ming Ye // @match http://www.imooc.com/*/* // @include https://www.imooc.com/*/* // @require https://greasyfork.org/scripts/34143-debug/code/debug.js?version=232648 // @require http://cdn.bootcss.com/jquery/1.8.3/jquery.min.js // @require https://greasyfork.org/scripts/27104-filesaver/code/FileSaver.js?version=173518 // @require https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.7.1/clipboard.min.js // @grant none // @downloadURL https://update.greasyfork.icu/scripts/35993/%E6%85%95%E8%AF%BE%E7%BD%91%E7%AC%94%E8%AE%B0%E5%AF%BC%E5%87%BA.user.js // @updateURL https://update.greasyfork.icu/scripts/35993/%E6%85%95%E8%AF%BE%E7%BD%91%E7%AC%94%E8%AE%B0%E5%AF%BC%E5%87%BA.meta.js // ==/UserScript== (function() { 'use strict'; var log = window.myDebugger.consoleFactory('慕课网导出笔记脚本:', 'color:brown;font-size:13px'), debugTrue = window.myDebugger.debugTrue(true); var $btnContainer = $('#main .course-info-main .content-wrap .mod-tab-menu .course-menu'), $collectBtn = $('导出笔记'),//采集按钮 $exportColCheck = $('
采集'), $exportPraCheck = $('点赞'), $curPageLabel = $('

当前采集页数:0

'); $collectBtn.click(btnClickHandler).appendTo($('#main .course-infos .hd')); $exportColCheck.appendTo($('#main .course-infos .hd')); $exportPraCheck.appendTo($('#main .course-infos .hd')); $curPageLabel.appendTo($('#main .course-infos .hd')); var isPause = true, courseId = window.location.pathname.split("/")[2], //课程ID baseUrl = window.location.protocol + '//' + window.location.hostname + '/note/' + courseId + '?sort=hot&page=', pageNum = localStorage.getItem('pageNum-'+courseId), //笔记页码 noteTimeout = null, userObj = fetchUser().data, //用户对象,保存用户相关信息 notes = JSON.parse(localStorage.getItem('notes-'+courseId)), // isCol = false,//是否收集采集的笔记 isPra = false;//是否收集点赞的笔记 log('课程ID', courseId); log('基准url', baseUrl); pageNum = pageNum ? pageNum : 1; /** * 导出笔记按钮点击事件 */ function btnClickHandler(){ isPause = !isPause; if(isPause){ $("#exportNoteBtn").text('导出笔记'); clearTimeout(noteTimeout) }else{ isCol = $('#exportColCheck')[0].checked; isPra = $('#exportPraCheck')[0].checked; $("#exportNoteBtn").text('暂停导出'); fetchNote(); } } /** * 采集笔记 */ function fetchNote(){ var htmlText = $.ajax({ url: baseUrl + pageNum, async: false }).responseText; //最后导出笔记 if(htmlText.indexOf('此课程暂无同学记录过笔记')>=0){ var blob = new Blob([JSON.stringify(notes)], {type: "text/plain;charset=utf-8"}); saveAs(blob, "notes.json"); return; } log('pageNum',pageNum); $("#curPageNum").html(pageNum); ++pageNum; var obj = getNoteElem(htmlText); var noteStatus = getUserNoteStatus(obj.noteIds); var colObj = getColObj(noteStatus); var colIdArr = []; //需要采集的笔记的id数组 if(isCol){ colIdArr = colObj.col; }else if(isPra){ for(var i=0,len=colObj.pra.length;i=0 || liStr.indexOf('authorid="'+userObj.uid+'"')>=0){ var patternNote = /