上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

【工程实战篇】获取课程详细数据

[复制链接]
  • TA的每日心情
    开心
    3 小时前
  • 签到天数: 57 天

    [LV.5]常住居民I

    354

    主题

    3128

    帖子

    3129

    积分

    管理员

    非物质文化遗产社会摇传承人

    Rank: 10Rank: 10Rank: 10

    积分
    3129

    猫咪币纪念章国庆纪念章中秋纪念章荣誉开发者家财万贯管理员

    发表于 2022-5-8 22:38:02 | 显示全部楼层 | 阅读模式

    开篇

    因为没法提供平台对应的账号
    特别细的地方大家可能不太理解
    可以忽略参数的填写等问题,关注实际的代码思路
    写的过程中发现有什么问题再进行查阅

    正文

    之前我们已经将课程保存到了vuex
    这节课我们开始获取具体课程的详细信息
    图片.png
    我们要获取的是视频信息
    因为上边的课程介绍,视频课件等是动态的
    所以我们需要先写代码
    然后在写具体的视频video获取代码

    export function GetVideoChapterId() {
      return new Promise(async (resolve, reject) => {
        let postdata = {
          service: "alioth.study.course.listChapterTag",
          tenantCode: store.state.UserInfo.bindUserList[0].tenantCode,
          userName: store.state.UserInfo.bindUserList[0].userName,
          courseId: store.state.CurrentLesson.courseId,
          trainId: store.state.CurrentLesson.trainId,
          trainCourseId: store.state.CurrentLesson.trainCourseId,
          enrollmentId: store.state.CurrentLesson.enrollmentId,
          courseVersionId: store.state.CurrentLesson.courseVersionId,
          businessTenantCode: store.state.UserInfo.bindUserList[0].tenantCode,
          businessUserName: store.state.UserInfo.bindUserList[0].userName,
        };
        post(
          "https://xueqiplus.chinaedu.net/aliothprovider/router",
          await GeneratePostData(postdata)
        ).then((response) => {
          let RetObject = {
            status: "error",
          };
          if (response.code === "0") {
            let result = JSON.parse(response.data);
            for (let index = 0; index < result.chapterTagList.length; index++) {
              const item = result.chapterTagList[index];
              if (item.chapterTagName === "视频课件") {
                RetObject.id = item.chapterTagId;
                RetObject.status = "success";
                break;
              }
              if (item.chapterTagName === "在线课件") {
                RetObject.id = item.chapterTagId;
                RetObject.externalUrl =
                  item.externalUrlList.length !== 0
                    ? item.externalUrlList[0].externalUrl
                    : undefined;
                RetObject.status = "success";
                break;
              }
            }
            resolve(RetObject);
          } else {
            resolve(RetObject);
          }
        });
      });
    }

    这里读取了章节的数据,并且寻找课程课件或者在线课件两个关键词
    如果找到了就进行返回,接下来我们尝试调用上方的函数

          let result = await GetLessonDetail(ChapterObject);
          if (result.status === "error") {
            alert("获取课程章节失败");
            return;
          }
    
          if (result.attrs === "normal" && !result.detail.chapterList) {
            alert("当前无课程!");
            return;
          }

    接下来我们判断章节的获取情况,以及章节列表的读取

          let result = await GetLessonDetail(ChapterObject);
          if (result.status === "error") {
            alert("获取课程章节失败");
            return;
          }
    
          if (result.attrs === "normal" && !result.detail.chapterList) {
            alert("当前无课程!");
            return;
          }
            chapterList.value = [];
            result.detail.chapterList.forEach((Chapter) => {
              chapterList.value = chapterList.value.concat(Chapter.activityList);
            });

    根据对应的格式循环添加视频Activity数据即可
    得到的Activity数据就是每一个视频的相应数据
    chapterList是我声明的视频的数据存储对象

    结语

    撒花~

    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
  • TA的每日心情
    慵懒
    前天 12:22
  • 签到天数: 137 天

    [LV.7]常住居民III

    23

    主题

    322

    帖子

    293

    积分

    高级工程师

    The CV Moilion :-)

    Rank: 6Rank: 6

    积分
    293

    中秋纪念章活跃会员国庆纪念章

    发表于 2022-5-8 22:51:49 | 显示全部楼层
    我爱哥哥,ggnb!
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表