精华内容
下载资源
问答
  • 网易云课堂下载

    2018-12-09 21:11:47
    网易云堂课下载器,下载免费课程,方便离线观看 亲测可用。
  • 可以下载网易云课堂里面的免费视频
  • 在这篇文章中,我们将一起学习脚本 网易云课堂下载助手 的开发。在正式开始之前,先说一下我认为开发脚本应该遵循的两个准则: 功能实现。当你决定要开发一个脚本的时候,你肯定清楚你的脚本要实现什么功能,只有你...

    本文原创首发于我的个人博客 一个贾程序员,文章原地址 点此 查看

    在这篇文章中,我们将一起学习脚本 网易云课堂下载助手 的开发。在正式开始之前,先说一下我认为开发脚本应该遵循的两个准则:

    • 功能实现。当你决定要开发一个脚本的时候,你肯定清楚你的脚本要实现什么功能,只有你的脚本实现了你所描述的功能,才会有更多的人安装使用,才会有更多的人给你好评;
    • 样式实现。什么叫样式实现?就是你在目标网站中添加的元素,要尽量与原网站的配色,样式相一致。这一项是非必须的,但我认为是非常重要的。你想想,如果原网站整体是蓝色,而你添加的按钮是红色,那该有多突兀,有多丑,虽然你的按钮确实突出了,但别人一看就是山寨,看着会很不舒服。而如果你的按钮也用它网站的颜色,这样就会跟原网站已有的元素契合,整体特别自然,做到以假乱真的效果。你的脚本让别人用的舒服,别人才更愿意给你好评。

    需求分析

    网易云课堂 是一个非常不错的在线学习网站,上面有很多视频课程提供给我们学习。但是有点遗憾的是,官方在 PC 端并没有提供视频的下载功能,而在移动 APP 端可以下载视频,但是下载的视频也只能在软件内部观看。所以为了更加方便在某些网络不允许的情况下学习,我们可以将视频资源下载到本地。通过对课程结构的观察,我们发现一门课程有可能有很多章,每一章有可能有好几节,那么我们最好既提供单个视频下载功能,也提供批量下载功能,这样能满足更多人的需求。官方原版和我们要实现的最终效果分别如下图:

    功能实现

    在开始编写代码之前,需要说明的是,要写这种资源下载类的脚本,必须确保提前在网页上查看了各个网络请求,能够通过接口请求的方式拿到资源的 URL,并且下载下来的资源是有效的,否则只会白忙活一场。就像在这个脚本中,不支持收费视频的下载,因为收费视频进行了加密,下载下来也是不能播放的。我们要将按钮添加到课程主页,通过观察,课程主页的 URL 形式为: https://study.163.com/course/courseMain.htm?courseId=xxx,我们用 @match 匹配。在脚本编写过程中会用到 jQuery,所以我们使用 @require 引入 jQuery 库。我们需要保存用户设置的一些数据,需要进行网络请求,需要在新 tab 页中打开链接,还需要使用当前网页中的变量,所以需要脚本管理器的 GM_getValue()GM_setValue()GM_xmlhttpRequest()GM_openInTab()unsafeWindow 函数,我们用 @grant 声明。

    // @require           https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js
    // @match             *://study.163.com/course/courseMain.htm?courseId=*
    // @grant             unsafeWindow
    // @grant             GM_getValue
    // @grant             GM_setValue
    // @grant             GM_xmlhttpRequest
    // @grant             GM_openInTab
    

    通过查看网络请求得知,要获取视频的下载地址,需要知道视频的 id,所以我们要先拿到课程中所有视频的基本信息。这些基本信息有时候需要通过接口获取,有时候可以通过页面中的变量得到,需要你耐心的去寻找。这里我们可以通过页面中的变量 courseVo 拿到课程的信息。为了后边更方便的对每一节课程操作,我们把所有的课程信息保存在一个 json 类型的变量里面。最终我们这个变量保存的课程信息有课程 id,课程名称,课程价格,课程每一章节的信息。每一章节的信息有章节 id,章节名称,每一课时的信息。每一课时的信息有课时 id,课时名称,课时类型。为了方便后边下载时命名,我们还给每一课时加了一个编号。在JavaScript 中,我们可以用 forEach() 方法对 Array 数组进行遍历,可以用 push() 方法向数组末尾添加一个元素。

        var course_info = {'course_id': {},'course_name': {},'chapter_info': [],'course_price': {}}; //保存课程信息的变量
        function getCourseInfo(){ //获取课程信息
            var courseVo = unsafeWindow.courseVo;
            course_info.course_id = courseVo.id; //课程 id
            course_info.course_name = courseVo.name.replace(/:|\?|\*|"|<|>|\|/g," "); //课程名称
            course_info.course_price = courseVo.price; //课程价格
            var chapter = courseVo.chapterDtos; //课程章节
            chapter.forEach(function(val,index){
                var chapter = {'chapter_id': val.id,'chapter_name': val.name.replace(/:|\?|\*|"|<|>|\|/g," "),'lesson_info': []}; //保存章节信息的变量
                var lessonDtos = val.lessonDtos;
                lessonDtos.forEach(function(val,index){
                    var lesson = {'keshi':val.ksstr,'lesson_id':val.id,'lesson_name':val.lessonName.replace(/:|\?|\*|"|<|>|\|/g," "),'lesson_type':val.lessonType}; //保存课时信息的变量
                    chapter.lesson_info.push(lesson);
                });
                course_info.chapter_info.push(chapter);
            });
            if(course_info.course_price > 0){
                return false;
            }else{
                return true;
            }
        }
    

    拿到课程信息之后,我们先在页面中每一节课时上面添加一个下载按钮,用来下载当前选中的课时。我们希望我们添加的 下载 按钮和当前已有的 开始学习 按钮的字体大小,字体颜色,背景色都保持一致,所以我们先通过 getStyle() 方法拿到开始学习按钮的样式,然后在创建下载按钮时赋值给下载按钮。因为我们要为每一课时都添加一个下载按钮,所以创建元素的代码应该写在 for 循环里面。

            var ksbtn = document.getElementsByClassName('ksbtn')[0];
            var ksbtn_style = 'display:' + getStyle(ksbtn,'display') + ';width:' + getStyle(ksbtn,'width') + ';background-position:' + getStyle(ksbtn,'background-position') + ';margin-top:' + getStyle(ksbtn,'margin-top') + ';';
            var ksbtn_span = ksbtn.firstChild;
            var ksbtn_span_style = 'display:' + getStyle(ksbtn_span,'display') + ';text-align:' + getStyle(ksbtn_span,'text-align') + ';background:' + getStyle(ksbtn_span,'background') +
                             ';width:' + getStyle(ksbtn_span,'width') + ';font-size:' + getStyle(ksbtn_span,'font-size') + ';height:' + getStyle(ksbtn_span,'height') + ';line-height:' +
                             getStyle(ksbtn_span,'line-height') + ';color:' + getStyle(ksbtn_span,'color') + ';background-position:' + getStyle(ksbtn_span,'background-position') + ';';
            var allNodes = document.getElementsByClassName("section");
            for (var i = 0;i < allNodes.length;i ++) {
                var download_button = document.createElement("a");
                var style = 'display:block;text-align:center;padding-left:10px;width:58px;font-size:12px;height:34px;line-height:33px;color:#fff;background-position:-40px 0px;';
                download_button.innerHTML = "<span>下载</span>";
                download_button.className = "f-fr j-hovershow download-button";
                download_button.style = ksbtn_style;
                download_button.lastChild.style = ksbtn_span_style;
                allNodes[i].appendChild(download_button);
            }
        function getStyle(element,cssPropertyName){ //获取元素样式
            if(window.getComputedStyle){ //如果支持getComputedStyle属性(IE9及以上,ie9以下不兼容)
                return window.getComputedStyle(element)[cssPropertyName];
            } else { //如果支持currentStyle(IE9以下使用),返回
                return element.currentStyle[cssPropertyName];
            }
        }
    

    下载按钮添加完成后,我们需要对每一个按钮进行点击事件的处理。在 jQuery 中,我们使用 each() 方法遍历选择的多个元素。我们在后边进行网络请求时,需要视频 id,所以我们在点击事件里面需要拿到被点击的课时信息。我们在后面下载视频时,需要文件保存路径和文件名,所以我们在点击事件里面将这两个值拼接好,并传递给后面的函数。在进行点击操作时,要注意事件冒泡和事件捕获。

        $('.download-button').each(function(){ //下载按钮点击事件
            $(this).click(function(event){
                loadSetting();
                if(course_save_path==""){
                    alert("请到下载助手的设置里面填写文件保存位置");
                }else if(aria2_url==""){
                    alert("请到下载助手的设置里面填写 Aria2 地址");
                }else{
                    var data_chapter = event.target.parentNode.parentNode.getAttribute("data-chapter");
                    var data_lesson = event.target.parentNode.parentNode.getAttribute("data-lesson");
                    var index = Number(data_lesson);
                    for(var i = 0;i < Number(data_chapter); i ++){
                        index = index - course_info.chapter_info[i].lesson_info.length;
                    }
                    var lesson = course_info.chapter_info[data_chapter].lesson_info[index];
                    mylog("选择的课为【lesson_name: " + lesson.lesson_name + ",lesson_id: " + lesson.lesson_id + ",lesson_type: " + lesson.lesson_type + '】');
                    var file_name = lesson.keshi + '_' + lesson.lesson_name;
                    var save_path = course_save_path.replace(/\\/g,'\/') + '/' + course_info.course_name + '/章节' + (Number(data_chapter) + 1) + '_' + course_info.chapter_info[data_chapter].chapter_name;
                    if(lesson.lesson_type=="3"){
                        getTextLearnInfo(lesson,file_name,save_path);
                    }else{
                        getVideoLearnInfo(lesson,file_name,save_path);
                    }
                }
                event.stopPropagation();
            });
        });
    

    我们拿到当前点击的课时信息后,需要请求接口拿到视频地址。并且还注意到,课程中除了视频,还有 PDF 文件,所以我们根据课时类型分别请求不同的接口。在 jQuery 中,我们可以使用 $.ajax() 来进行网络请求。每个接口需要的参数都是从网页中观察得到的。由于视频可能提供不止一种格式,不止一种清晰度,所以我们在后面会添加一个设置按钮让用户可以选择下载哪种格式,哪种清晰度的视频。

        function getTextLearnInfo(lesson,file_name,save_path){ // 获取文档下载地址
            var timestamp = new Date().getTime();
            var params = {
                "callCount":"1",
                "scriptSessionId":"${scriptSessionId}190",
                "httpSessionId":match_cookie,
                "c0-scriptName":"LessonLearnBean",
                "c0-methodName":"getTextLearnInfo",
                "c0-id":"0",
                "c0-param0":"string:" + lesson.lesson_id,
                "c0-param1":"string:" + course_info.course_id,
                "batchId":timestamp
            }; //接口需要的数据
            var url = "https://study.163.com/dwr/call/plaincall/LessonLearnBean.getTextLearnInfo.dwr?" + timestamp;
            $.ajax({
                url:url,
                method:'POST',
                async: true,
                data: params,
                success: function (response){
                    var pdfUrl = response.match(/pdfUrl:"(.*?)"/)[1];
                    sendDownloadTaskToAria2(pdfUrl,file_name + ".pdf",save_path);
                }
            });
        }
        function getVideoUrl(videoId,signature,file_name,save_path){ // 获取视频下载地址
            var params = {
                'videoId':videoId,
                'signature':signature,
                'clientType':'1'
            };
            $.ajax({
                url:"https://vod.study.163.com/eds/api/v1/vod/video",
                method:'POST',
                async:true,
                data:params,
                success:function(response){
                    var videoUrls = response.result.videos;
                    var video_url_list = [];
                    videoUrls.forEach(function(video){
                        if(video.format == video_format) {
                            video_url_list.push({'video_format': video.format,'video_quality': video.quality,'video_url': video.videoUrl});
                        }
                    });
                    if(video_url_list.length != 0){
                        if(video_quality=="2"){
                            video_download_url = video_url_list[video_url_list.length-1].video_url;
                        }else{
                            video_download_url = video_url_list[0].video_url;
                        }
                    }
                    if(video_download_url != ""){
                        //mylog(video_download_url);
                        sendDownloadTaskToAria2(video_download_url,file_name + '.' + video_format,save_path);
                    }
                }
            });
        }
    

    我们获取到文档和视频的下载地址后,就可以进行下载了。脚本管理器提供一个叫做 GM_download() 的方法可以下载文件,但经过尝试,体验不是太好,尤其是我们后边还要进行批量下载,所以就没有采用。这里我们借助的工具是 Aria2,如何通过 Aria2下载文件可以看这篇文章: 如何配置 Aria2 来进行文件下载。我们将获取到的下载地址和文件名,文件保存路径都传给 Aria2,就可以开始下载了。然后我们可以在网站 http://aria2c.com/ 上看到下载进度。

        function sendDownloadTaskToAria2(download_url,file_name,save_path){
            var json_rpc = {
                id:'',
                jsonrpc:'2.0',
                method:'aria2.addUri',
                params:[
                    [download_url],
                    {
                        dir:save_path,
                        out:file_name
                    }
                ]
            };
            GM_xmlhttpRequest({
                url:aria2_url,
                method:'POST',
                data:JSON.stringify(json_rpc),
                onerror:function(response){
                    mylog(response);
                },
                onload:function(response){
                    mylog(response);
                    if (!hasOpenAriac2Tab){
                        GM_openInTab('http://aria2c.com/',{active:true});
                        hasOpenAriac2Tab = true;
                    }
                }
            });
        }
    

    这样我们单个视频下载的功能就实现了,下面我们要实现批量下载功能,同时还要提供给用户一个设置按钮,让用户可以选择视频的格式,清晰度,以及填写文件保存路径。我们在页面顶部创建一个下载助手按钮,当鼠标移入下载助手时,显示一个下拉框,下拉框里面有批量下载和设置,点击批量下载,我们调用批量下载的方法,遍历所有课时,对每一个课时都调用前面获取视频地址的方法,然后下载。点击设置,我们弹出一个设置页面,让用户可以进行相应的设置。我们要使用 GM_setValue() 将设置的内容进行保存,然后在脚本加载的时候使用 GM_getValue() 取出数据,这样用户只需要设置一次,以后一直有效,并且脚本更新之后也有效。

        function addDownloadAssistant(){ // 添加下载助手按钮
            $(".u-navsearchUI").css("width","224px");
            var download_assistant_div = $("<div class='m-nav_item'></div>");
            var download_assistant = $("<span>下载助手</span>");
            var assistant_div = $("<div class='f-pa' style='line-height:40px;display:none;left:0px;top:60px;width:auto;height:auto;background-color:#fff;color:#666;border:1px solid #ddd;padding:5px 10px;text-align:center;'><div class='arrr f-pa' style='background:url(//s.stu.126.net/res/images/ui/ui_new_yktnav_sprite.png) 9999px 9999px no-repeat;top:-9px;left:40px;width:14px;height:9px;background-position:-187px 0;'></div></div>");
            var batch_download = $("<a>批量下载</a>");
            var assistant_setting = $("<a>设置</a>");
            assistant_div.append(batch_download).append(assistant_setting);
            download_assistant_div.append(download_assistant).append(assistant_div);
            $('.m-nav').append(download_assistant_div);
            download_assistant_div.mouseover(function(){
                assistant_div.show();
            });
            download_assistant_div.mouseout(function(){
                assistant_div.hide();
            });
            batch_download.click(function(){
                assistant_div.hide();
                loadSetting();
                if(course_save_path==""){
                    alert("请到下载助手的设置里面填写文件保存位置");
                }else if(aria2_url==""){
                    alert("请到下载助手的设置里面填写 Aria2 地址");
                }else{
                    batchDownload();
                }
            });
            assistant_setting.click(function(){
                assistant_div.hide();
                showSetting();
            });
        }
        function batchDownload(){ // 批量下载
            course_info.chapter_info.forEach(function(chapter,index){
                chapter.lesson_info.forEach(function(lesson){
                    var file_name = lesson.keshi + '_' + lesson.lesson_name;
                    var save_path = course_save_path.replace(/\\/g,'\/') + '/' + course_info.course_name + '/章节' + (index + 1) + '_' + chapter.chapter_name;
                    if(lesson.lesson_type=="3"){
                        getTextLearnInfo(lesson,file_name,save_path);
                    }else{
                        getVideoLearnInfo(lesson,file_name,save_path);
                    }
                });
            });
        }
    

    至此,我们就完成了这个脚本的开发,用户可以用它来下载单个视频,也可以批量下载视频,并且可以进行设置,选择视频清晰度,视频格式。至于发布脚本的流程可以参考文章 如何开发一个用户脚本系列(3)——脚本一:百度首页和搜索页面添加 Google 搜索框

    总结

    本文对脚本 网易云课堂下载助手 的开发过程进行了介绍,如果还有疑问,可以留言,下一篇文章将对脚本 视频跳过广告和 VIP 视频解析 的开发过程进行介绍。

    展开全文
  • 软件介绍: 网易云课堂课程下载器v2.2 支持收费版和免费版课程下载1.7版更新内容 1.修复网易更新后无法提取的问题. 2.修复部分中国大学MOOC视频下载问题.感谢网友Philong huynh 、...云课堂下载格式改为flv.
  • 大黄蜂云课堂网校系统使用国内优秀开源框架THinkPHP,基于PHP+MySQL开发,采用B/S架构,是为中小企业提供的开源视频管理系统,在线教育系统,网上教学视频系统,在线培训、视频课程网站、免费视频课程系统,DSKMS...
  • 网易云课堂视频下载

    千次阅读 2020-08-10 21:21:30
    index=100000 for index,line in enumerate(file_line_list): if "#EXTINF" in line: unknow = False url_ts = str(url).rsplit('/',1)[0] +'/'+ str(file_line_list[index+1]) #下载文件名重新编号,以防合并是造成...

    1 通过网络分析找到视频的网址

     

     

    2源代码如下:

    import requests
    import os
    
    import optparse
    
    
    headers = {
        "User - Agent": "Mozilla / 5.0(Windows NT 10.0;WOW64) AppleWebKit / 537.36(KHTML, like Gecko) Chrome / 84.0.4147.105 Safari / 537.36"
        }
    
    def down_load_ts(url,pathname):
        basepath = os.path.join(os.getcwd(),pathname)
        if not os.path.exists(basepath):
            os.mkdir(basepath)
    
    
        try:
            req = requests.get(url,headers=headers)
            #print(req.text)
            file_line_list = req.text.split('\n')
            if not "#EXTM3U" in file_line_list[0]:
                raise BaseException(u'非M3U8的连接')
            else:
                unknow = True
                file_index=100000
                for index,line in enumerate(file_line_list):
                    if "#EXTINF" in line:
                        unknow = False
                        url_ts = str(url).rsplit('/',1)[0] +'/'+ str(file_line_list[index+1])
                        #下载文件名重新编号,以防合并是造成文件顺序混乱
                        file_name = str(file_index)+'.ts'
                        file_index+=1
                        full_file_name =os.path.join(basepath,file_name)
                        # print(url_ts)
    
                        process_ts(url_ts, full_file_name)
    
                        
    
                if unknow:
                    raise BaseException('未找到对应的下载连接')
                else:
                    
                    print(pathname,':downloaded')
                    print("start merge file to mp4")
                    mergeFileToMP4(pathname)
                    return
    
    
        except Exception as e:
            print(e)
            return
    
    def process_ts(url_ts,full_file_name):
        
         req_ts = requests.get(url_ts, headers=headers)
         print("downloading file:", os.path.split(full_file_name)[1])
         with open(full_file_name, 'ab') as fw:
             fw.write(req_ts.content)
             fw.flush()
    
    
    def mergeFileToMP4(pathname):
        os.chdir(os.path.join(os.getcwd(),pathname))
        cmd = "copy /b * new.tmp"
        os.system(cmd)
        os.system('del /Q *.ts')
        os.system('del /Q *.mp4')
        os.rename("new.tmp", "new.mp4")
        print("merge file is :",str(os.path.join(os.getcwd(),pathname,"new.mp4")))
    
    
    def main():
        # parser = optparse.OptionParser("usage -n <pathname> -u <m3u8 url> -h <help>\n")
        # parser.add_option('-n',dest = "pathname",type ="string",help="specify a save path name")
        # parser.add_option('-u',dest='url',type='string',help="specify a m3u8 url")
        # (options,args)= parser.parse_args()
        # pathname = options.pathname
        # url = options.url
        # if (pathname ==None) or (url == None):
        #     print(parser.usage)
        #     return
        url = 'https://jdvodluwytr3t.1217106454_a7850079a3ed43f29c6f4169201b4893_sd.m3u8?'
        pathname = '163nixiang-1'
        
        down_load_ts(url=url,pathname=pathname)
    
    
    if __name__ == '__main__':
        main()

     

    注:在ts文件进行合并为mp4文件时没有问题,但合成的文件就不能播放,通过多次测试发现,是下载的ts文件因为文件名拍讯的问题,例如 d99.ts  d100.ts d990.ts 三个文件,在进行合并是,d99.ts 会排在100之后跟d990.ts一起,因此对下载文件重新进行了编号,问题解决。

    展开全文
  • 网易云课堂整站源码 供爱好者研究 上传到网站根目录 2、用phpMyadmin导入数据库文件sasa.sql 3、修改数据库链接文件 \Application\Admin\Conf\config.php和\Application\Home\Conf\config.php (记得不要用...
  • 网易云课堂课程下载教程

    千次阅读 2020-08-30 13:35:07
    网易云课堂不能下载视频,缓存打不开? 记: 网易云课堂、中国大学mooc这些学习平台确实大大方便了我们这些工作党学习,之前一直用的是手机客户端看视频,但是由于换手机啊,清理垃圾啊,手机储存容量各种原因,同一...

    网易云课堂不能下载视频,缓存打不开?
    记: 网易云课堂、中国大学mooc这些学习平台确实大大方便了我们这些工作党学习,之前一直用的是手机客户端看视频,但是由于换手机啊,清理垃圾啊,手机储存容量各种原因,同一个课程下载了好几次,下完又被清除。今天发现了一个好东西,推荐大家低调使用。
    电脑端无法下载视频,这对于我们这种成天到处跑的人太不友好了。
    移动端缓存是加密m3u8格式,缓存容易被当作垃圾清理!其次,看课程用手掌大的屏幕看不难受吗?
    我曾试过吧手机缓存考出来,用各种m3u8合并工具合并,但是被各种限制,有些因为没有key还合并不了。这些m3u8除了他的客户端,其他视频播放软件也还打不开。难受至极。
    在这里插入图片描述

    最后,找到一款下载软件,地址在下面:
    学无止官网
    下载器支持网易云课堂,中国大学,爱课程,学堂在线,慕课网,这几个常用mooc网站下载视频和课件。

    使用教程:

    1、下载好软件之后,进行安装,一路确定就可以了,软件可选安装位置。
    在这里插入图片描述

    2、下载前操作,进入软件之后需要登陆,用微信扫一下就可以登陆了
    在这里插入图片描述

    登陆之后,弹出操作提示:
    在这里插入图片描述

    输入Y或者N回车继续。
    在这里插入图片描述

    3、下载,至此,你已经随时可以下载课程了。现在回到网易云课程页面,复制课程链接
    在这里插入图片描述

    然后回到下载器,粘贴之后回车
    在这里插入图片描述

    此时提示是否登录,这里注意一下,如果是免费课程,无需登录,直接输入n回车;如果是已购买的付费课程,需要输入y登陆之后下载。
    在这里插入图片描述

    下载完了会生成一个potplayer的播放列表单,直接双击表单就可以播放课程列表了。
    在这里插入图片描述

    至此,结束了。好好学习吧。

    展开全文
  • 支持免费课程的下载,收费课程暂不支持。
  • 云端课堂 v7.7.1官方版

    2020-12-25 02:10:46
    为您提供云端课堂下载,云端课堂是一款直播式的教学软件,提供专业教育直播,点播,高清画质,轻松集成,弹性架构,对于学习非常的有帮助,数据及链路多重容灾备份有效防止数据丢失。功能介绍 高清视频稳定&流畅 ...
  • PC端下载网易云课堂视频到本地

    千次阅读 2019-11-11 17:58:51
    javascript:document.write('<a href=\"'+document....打开你想要下载的视频界面,在地址栏中将上面的代码复制进去,注意:前面的***JavaScript:***可能不会被识别,需要自己手动输入。输入无误后按回车,...
    javascript:document.write('<a href=\"'+document.getElementsByTagName("video")[0].currentSrc+'\">右键我另存为</a>')
    

    打开你想要下载的视频界面,在地址栏中将上面的代码复制进去,注意:前面的***JavaScript:***可能不会被识别,需要自己手动输入。输入无误后按回车,出现下载界面,界面显示“右键我另存为”。鼠标右键该字样下载即可。

    展开全文
  • 云课堂 v3.0.zip

    2019-07-13 00:22:35
    云课堂,一个能把课堂搬到家的神器,利用APP学习学前、小学、初中、高中名师课程的最佳免费平台,适合3岁至18岁年龄段学生使用,内容涵盖语文、数学、英语、历史、生物、地理、历史等学科每一节课程,学生利用该平台...
  • Muu云课堂V2-1.7.2是全场景付费音视频内容管理系统,支持知识付费、在线教育、企业内训等诸多场景。DIY心中理想的店铺样式,制作专属新知识付费平台。支持图文、音频、视频等各种主流媒体形式。店主可以通过公众号、...
  • 网易云课堂视频解析

    2017-10-06 10:12:48
    在线学习得爽,断网了怎么办,有了它离线也可以学习了.软件不下载下载免费资源,不下载付费资源.
  • 茂名云课堂是一款多功能的在线教学软件,本软件为教师用户提供了在线备课、作业步骤以及自由组卷等功能,为家长用户提供了家校互动,亲子教育服务。学生用户可以在线复习功课,在线问答等等! 软件介绍 茂名云课堂...
  • 云端课堂怎么登录关于云端课堂怎么登录的问题,是电脑使用技巧,鸟基地...电脑使用技巧:1、Win10系统无法安装软件,可能是软件和系统不兼容导致,需要下载合适的版本使用。2、用户可以使用拨号上网,打开电脑,右键...
  • 2019康复职称考试【全套四门】 资源 百度 康复教育网校Python-机器学习-进阶实战 资源 百度 唐宇迪全民一起VBA提高篇(Excel数据处理) 资源 百度 杨洋老师全网稀缺好课--徐sir的PS超神课 资源 百度 PS东方站...
  • 微信小程序源码,前端源码,简单展示源码,原生小程序源码 非uniapp,仅供参考,如有涉及版权问题请联系作者。微信小程序源码,前端源码,简单展示源码,原生小程序源码 非uniapp,仅供参考,如有涉及版权问题请联系...
  • 下载网易云课堂和B站的视频

    千次阅读 2018-08-29 08:51:00
    我们在平时的学习中,很有可能会接触 网易云课堂 和 BIlibili 这两个很棒的网站。 有的时候我们在线观看不方便,总是想把网站里面的视频下载到电脑,然后自己...一、下载网易云课堂视频 提前说明一下,这个软件只能...
  • 吴恩达网易机器学习视频链接, 可下载, 可以写个python脚本下载
  • 锐捷云课堂

    2014-12-17 11:03:43
    锐捷云课堂的详细介绍以及入门知识,方便大家查阅。
  • 网易云课堂课程下载器是一款功能非常实用可靠的是课程下载软件,专业用于帮助用户进行网易云课堂的视频课程进行下载。输入地址即可下载完整版课程,安全免费。 软件说明: 网易云课堂课程下载器是一款专门用来下载...
  • 为您提供酷瓜云课堂 腾讯云版下载,经过一个月的迭代开发,终于初步完成酷瓜云课堂的 v1.2.0 版本,此次更新修复了以往版本出现的问题,最主要的是完成了客户端所需要的 API,以后 H5 移动端,小程序,APP 客户端就...
  • 智能云课堂demo

    2017-10-06 09:40:14
    本系统由PC端、移动端和微信公众号组成,另外,我们设置了学生用户和教师用户两种不同的用户权限。学生可以加入课程学习、查看课程资源、课堂互动等操作,教师拥有设置课程、学生成绩管理、学生考勤等权限。
  • 异度云课堂是一款专业的教育学习平台,通过该软件可以轻松的将教师搬到云端,根据教学需求轻松展开一系列助力教学,广泛的应用于精品课堂制作、优质师资分享、教学反思、日常教学常规使用等,欢迎大家下载使用。...
  • 系统包含了多终端切换学习,一步全搞定、流畅视频点播、师资管理系统、教师点评以及学员互动各种课程的营销模式、在线直播、笔记、题库试卷系统、课程资料预览、下载等强大的教学管理功能等。微厦在线教育系统将...
  • 网易云课堂课程下载器,可以批量下载网易的云课堂
  • 智慧教育云课堂解决方案

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,533
精华内容 2,613
关键字:

云课堂下载