Greasy Fork

wsxy_storageData

网上学院函数库:登录后获取解析并存储数据

目前为 2020-02-05 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.greasyfork.icu/scripts/396054/770211/wsxy_storageData.js

// ==UserScript==
// @name          wsxy_storageData
// @namespace     Vionlentmonkey
// @version       0.2.1
// @description   网上学院函数库:登录后获取解析并存储数据
// ==/UserScript==

// 用户学习数据:http://218.94.1.175:8087/sfxzwsxy/jypxks/ajax/index_ajax.jsp?reqType=4
const storageUserData = async () => {
  const response = await fetch(`${location.origin}/sfxzwsxy/jypxks/ajax/index_ajax.jsp?reqType=4`, {
    method: 'POST'
  });
  const jsonData = await response.json();
  const jsonDataObj = jsonData[0];

  const stime = jsonDataObj.stime; //学年开始时间
  const etime = jsonDataObj.etime; //学年结束时间
  const total_hour = jsonDataObj.total_hour; //规定需达到的总学时
  const required_hour = jsonDataObj.required_hour; //规定需达到的必修学时
  const required_credit = jsonDataObj.required_credit; //规定需达到的总学分
  const user_total_hour = jsonDataObj.user_total_hour || 0; //用户已获得的总学时
  const user_required_hour = jsonDataObj.user_required_hour || 0; //用户已获得的必修学时
  const user_required_credit = jsonDataObj.user_required_credit || 0; //用户已获得的总学分
  const user_integral = jsonDataObj.user_integral || 0; //用户已获得的的总积分
  const syn_total_hour = jsonDataObj.syn_total_hour || 0; //从省委组织部同步到的总学时
  const syn_required_hour = jsonDataObj.syn_required_hour || 0; //从省委组织部同步到的的必修学时
  const show_total_hour = parseFloat(user_total_hour) + parseFloat(syn_total_hour);
  const show_total_required_hour = parseFloat(user_required_hour) + parseFloat(syn_required_hour);

  localStorage.setItem('stime', stime);
  localStorage.setItem('etime', etime);
  localStorage.setItem('total_hour', total_hour);
  localStorage.setItem('required_hour', required_hour);
  localStorage.setItem('required_credit', required_credit);
  localStorage.setItem('user_total_hour', user_total_hour);
  localStorage.setItem('user_required_hour', user_required_hour);
  localStorage.setItem('user_required_credit', user_required_credit);
  localStorage.setItem('user_integral', user_integral);
  localStorage.setItem('syn_total_hour', syn_total_hour);
  localStorage.setItem('syn_required_hour', syn_required_hour);
  localStorage.setItem('show_total_hour', show_total_hour);
  localStorage.setItem('show_total_required_hour', show_total_required_hour);
  /*
  await storageUserData();

  const total_hour = Number(localStorage.getItem('total_hour')); //规定需达到的总学时
  const required_hour = Number(localStorage.getItem('required_hour')); //规定需达到的必修学时
  const required_credit = Number(localStorage.getItem('required_credit')); //规定需达到的总学分
  const user_total_hour = Number(localStorage.getItem('user_total_hour')); //用户已获得的总学时
  const user_required_hour = Number(localStorage.getItem('user_required_hour')); //用户已获得的必修学时
  const user_required_credit = Number(localStorage.getItem('user_required_credit')); //用户已获得的总学分

  console.log(`total_hour: ${total_hour}`);
  console.log(`required_hour: ${required_hour}`);
  console.log(`required_credit: ${required_credit}`);
  console.log(`user_total_hour: ${user_total_hour}`);
  console.log(`user_required_hour: ${user_required_hour}`);
  console.log(`user_required_credit: ${user_required_credit}`);
  */
};

/* 未完成学习课程数据:
http://218.94.1.175:8087/sfxzwsxy/jypxks/modules/homepage/ajax/homepage_ajax.jsp?ajaxType=10
获取自 http://218.94.1.175:8087/sfxzwsxy/jypxks/modules/homepage/js/homepage.js
初始化培训课程数据方法 function initCourseData()
内含3个 Array:
exam_courses      已听课待考试的必修课
required_courses  待报名听课的必修课
selected_courses  选修课
各 Array 又以对象形式存储各课程,如
[{
  course_pk: 2466,
  course_name: '行政机关不履行法定职责(投诉举报)类行政复议案件审查要点',
  topic_name: '司法行政专业课程',
  apply_pk: 3033781,
  is_finish: 1,
  course_type: 1,
  course_rate: 90,
  use_flag: 1
}]
注意区分属性是 Number 还是 String。
*/
const storageCourseData = async () => {
  const response = await fetch(
    `${location.origin}/sfxzwsxy/jypxks/modules/homepage/ajax/homepage_ajax.jsp?ajaxType=10`,
    {
      method: 'POST',
      body: 'blob'
    }
  );
  // https://developer.mozilla.org/docs/Web/API/Blob
  const blob = await response.blob();
  const utf8Text = await binary2Text(blob);
  const jsonData = JSON.parse(utf8Text);
  const jsonDataObj = jsonData[0];

  const exam_courses = JSON.stringify(jsonDataObj.exam_courses);
  const required_courses = JSON.stringify(jsonDataObj.required_courses);
  const selected_courses = JSON.stringify(jsonDataObj.selected_courses);

  localStorage.setItem('exam_courses', exam_courses);
  localStorage.setItem('required_courses', required_courses);
  localStorage.setItem('selected_courses', selected_courses);
  /*
  await storageCourseData();

  const exam_courses = JSON.parse(localStorage.getItem('exam_courses'));
  const required_courses = JSON.parse(localStorage.getItem('required_courses'));
  const selected_courses = JSON.parse(localStorage.getItem('selected_courses'));

  console.log(exam_courses);
  console.log(required_courses);
  console.log(selected_courses);
  */
};