冥月影 发表于 2022-7-31 22:42

【油猴脚本】自考-开考课程搜索

本帖最后由 冥月影 于 2022-8-1 20:04 编辑


## 食之无味,弃之可惜
## 仅作备份
### 增加专业代码搜索框
- 原来的搜索界面只能搜索单条的课程开考信息
- 增加专业代码搜索框,可以直接通过专业代码搜索对应月份的开考课程

### 已知问题
- 当有多个同样的专业代码时,会只取第一条数据
- 广东的自考官网搜索使用,其他省份的应该不行。。




// ==UserScript==
// @name         自考-开考课程搜索
// @namespace    http://tampermonkey.net/
// @version      0.1
// @descriptiontry to take over the world!
// @author       1
// @match      https://www.eeagd.edu.cn/*/kkkccx.jsp
// @icon         https://www.google.com/s2/favicons?sz=64&domain=eeagd.edu.cn
// @grant      unsafeWindow
// ==/UserScript==

(function() {
      'use strict';

      // Your code here...
      init();

      function init() {
                let div01 = '<label class="col-lg-1 col-md-1 control-label">专业代码</label>';
                let div02 =
                        '<div class="col-lg-2 col-md-2"><input type="text" id="zydm" style="width: 100px;" class="form-control" name="zydm" required="" value=""></div>';
                let div03 = '<div class="col-lg-2 col-md-2" style="" id="search_zydm"></div>'
                let div04 =
                        '<div class="col-lg-2 col-md-2x"><button id="search_zydm"><i class="icon wb-search" aria-hidden="true"></i>搜索专业代码</button></div>'
                $('.form-group').append(div01);
                $('.form-group').append(div02);
                $('.form-group').append(div04);
                // hock
                unsafeWindow.window.eval(gd_post.toString().replace('if(data===null || data===""){',
                        't_fn = successFn; if(data===null || data===""){'));
                $('.gdmui-searchBox button').click();
                $('#search_zydm').bind('click', function(e) {
                        let zydm = $('#zydm').val();
                        let kkny = $('#kknyGroup').val();
                        let tmp01 = search_by_zydm(zydm);
                        let tmp02 = get_gckc(tmp01.rows.ZYDM, tmp01.rows.ZYYXDM, tmp01.rows.KCZDM);
                        let tmp03 = get_all_km_info(kkny, tmp02);
                        let tmp04 = sort_km(tmp03);
                        t_fn(tmp04);
                });
      }


      function search_post(url, data) {
                let result = null;
                $.ajax({
                        type: 'post',
                        url: url,
                        data: JSON.stringify(data),
                        dataType: 'JSON',
                        contentType: 'application/json;charset=UTF-8',
                        async: false,
                        success: function(data) {
                              if (data.result != undefined) {
                                        result = data.result;
                              }
                        },
                        error: function(data) {
                              // console.log('error');
                              console.log(data);
                        }
                });
                return result;
      }

      function search_by_kmdm(kkny, kmdm) {
                let url = 'https://www.eeagd.edu.cn/zkselfec/gkcx/queryKkkccx.jsmeb';
                let search_data = [{page: 1,rows: 20,kkny: kkny,kmdm: kmdm,kmmc: ""}, null, "desc"];
                // let result = null;
                return search_post(url, search_data);
      }

      function search_by_zydm(zydm) {
                let url = 'https://www.eeagd.edu.cn/zkselfec/gkcx/queryZycx.jsmeb';
                let search_data = [{page: 1,rows: 20,zydm: zydm,zymc: ""}, null, "desc"];
                return search_post(url, search_data);
      }

      function get_gckc(zydm, zyyxdm, kczdm) {
                let url = 'https://www.eeagd.edu.cn/zkselfec/gkcx/queryZykm.jsmeb';
                let search_data = [{zydm: zydm,zyyxdm: zyyxdm,kczdm: kczdm}];
                return search_post(url, search_data);
      }

      function get_all_km_info(kkny, km) {
                let result = {rows: [],total: 0};
                let tmp = null;
                for (let i = 0; i < km.data.length; i++) {
                        tmp = search_by_kmdm(kkny, km.data['kmdm']);
                        result.total = result.total + parseInt(tmp.total);
                        if (tmp.total > 0) {
                              result.rows = result.rows.concat(tmp.rows);
                        } else {
                              console.log(km.data);
                        }
                }
                return result;
      }

      function sort_km(km) {
                let tmp = km.rows;
                let ksdate_num = 0;
                let sxw_num = 0;
                let tmp_v = null;
                for (let i = 0; i < tmp.length; i++) {
                        ksdate_num = parseInt(tmp['KSDATE'].replace(/.*月/, '').replace('日', ''));
                        sxw_num = tmp['SXW'] == '上午' ? 1 : 2;
                        tmp['sortnum'] = ksdate_num * 10000000 + sxw_num * 1000000 + parseInt(tmp['KMDM']);
                }
                for (let i = 0; i < tmp.length; i++) {
                        for (let j = i + 1; j < tmp.length; j++) {
                              if (tmp['sortnum'] > tmp['sortnum']) {
                                        tmp_v = km.rows;
                                        km.rows = km.rows;
                                        km.rows = tmp_v;
                              }
                        }
                }
                return km;
      }





})();

冥月影 发表于 2022-8-1 11:31

lingy9527 发表于 2022-8-1 11:19
这个软件是平时复习用的吗?
最近在准备考试,某平台买的学习软件,感觉不好用。

想啥呢,官网查10月开考课程的。。只是我不想一个课程一个课程的搜,所以写了个脚本批量搜索。。。

冥月影 发表于 2022-8-1 20:02

忧郁之子 发表于 2022-8-1 07:55
说实话,看不大明白这个的具体作用

广东自考的官网的,只是加了个批量搜索,可能其他省份的界面不一样,所以综合来讲,没啥用。。。

雾都孤尔 发表于 2022-7-31 23:29

还能这么用,学到了。感谢分享。

ixiaobaii 发表于 2022-7-31 23:46

好家伙,来学习下

KatharsisKing 发表于 2022-8-1 03:49

dadaliya 发表于 2022-8-1 07:29

谢谢分享,学习一下!!!

忧郁之子 发表于 2022-8-1 07:55

说实话,看不大明白这个的具体作用

wuyixuan 发表于 2022-8-1 08:26

谢谢下载收藏

士兵许三多 发表于 2022-8-1 08:47

非常感谢分享啊

ErrorBug 发表于 2022-8-1 08:47

感谢,终于不怕网课了

womeai 发表于 2022-8-1 09:12

没有想到过这样用!谢谢!
页: [1] 2 3
查看完整版本: 【油猴脚本】自考-开考课程搜索