小爱课表——淮南联合大学适配

小爱课程表APP是小米小爱同学旗下推出的手机课表应用,首次采用AI技术,赋予课程表智能体征。高颜值、操作方便是小爱课程表的重要特征,你只需要通过手机拍照,就能将纸质的课程表快速到导入到小爱中,无论是老师还是学生都可以轻松管理课表,所有课程信息一目了然。

【功能介绍】

【拍照导入课表】:点开“拍照导入”扫一扫课程表,即可快速自动识别课程名称、上课地点和授课教师,并智能编辑后导入手机

  【从教务系统导入课表】:能将学校课表的课程名称、上课地点和授课教师信息直接导入app

  【智能动态表格】:根据课程多少,大中学生不同情况动态响应

  【分享导入课表】:一人编辑,全班分享,点开同学分享的链接即可导入课程表

  【课程提醒】:一键设置课程闹钟,智能提醒用户上课时间

  【轻松编辑课程信息】:丰富自定义,单节课时长、课程节数均可自定义,修改后小爱课程表将智能推算一天安排

  【个性化设置】支持自定义课程颜色

  【课程表数据云同步】:数据绑定小米账号后即可支持跨设备查询,可同步到小爱音箱、小爱同学语音助手

  【课程表分享】:支持将课程通过链接分享给他人

但是这么好用的课程表软件居然没有适配我的学校,于是心血来潮做了淮南联合大学的教务系统适配:

【scheduleHtmlProvider.js】

function scheduleHtmlProvider(iframeContent = "", frameContent = "", dom = document) {
	// 以下可编辑
	const ifrs = dom.getElementsByTagName("iframe");
	const frs = dom.getElementsByTagName("frame");

	if (ifrs.length) {
		for (let i = 0; i < ifrs.length; i++) {
			const dom = ifrs[i].contentDocument.body.parentElement;
			iframeContent += scheduleHtmlProvider("", "", dom); // 递归调用时传递空字符串
		}
	}

	if (frs.length) {
		for (let i = 0; i < frs.length; i++) {
			const dom = frs[i].contentDocument.body.parentElement;
			frameContent += scheduleHtmlProvider("", "", dom); // 递归调用时传递空字符串
		}
	}

	if (!ifrs.length && !frs.length) {
		const tables = dom.querySelectorAll('table');
		tables.forEach(table => {
			frameContent += table.outerHTML;
		});
	}

	if (dom === document) {
		return frameContent + iframeContent; // 在最外层文档中合并内容
	}

	return iframeContent + frameContent; // 在递归调用中合并内容
}

【scheduleHtmlParser.js】

function scheduleHtmlParser(html) {
	function parseWeeks(weeksStr) {
		let weeks = [];
		let pattern = /(\d+)-?(\d*)/g;
		let match = pattern.exec(weeksStr);
		while (match != null) {
			let start = Math.max(1, parseInt(match[1])); // 确保开始周数不小于 1
			let end = match[2] !== '' ? Math.min(30, parseInt(match[2])) : start; // 如果没有结束周数,则结束周数为开始周数
			for (let i = start; i <= end; i++) {
				weeks.push(i);
			}
			match = pattern.exec(weeksStr);
		}
		return weeks;
	}

	function parseDay(dayStr) {
		let dayMap = {
			'一': 1,
			'二': 2,
			'三': 3,
			'四': 4,
			'五': 5,
			'六': 6,
			'日': 7
		};
		return dayMap[dayStr];
	}

	function parseSections(sectionsStr) {
		let sections = [];
		let pattern = /(\d+)-(\d+)/g;
		let match = pattern.exec(sectionsStr);
		while (match != null) {
			let start = Math.max(1, parseInt(match[1])); // 确保开始节次不小于 1
			let end = Math.min(30, parseInt(match[2])); // 确保结束节次不超过 30
			for (let i = start; i <= end; i++) {
				sections.push(i);
			}
			match = pattern.exec(sectionsStr);
		}
		return sections;
	}

	let result = [];
	let table = $(html).find('table tbody tr');
	for (let i = 0; i < table.length; i++) {
		let row = table[i];
		let courseName = $(row).find('td:eq(4)').text().replace(/\[.*?\]/g, '').trim();
		let position = $(row).find('td:eq(19)').text().trim();
		let teacher = $(row).find('td:eq(13)').text().replace(/\[.*?\]/g, '').trim();
		let weeksStr = $(row).find('td:eq(16)').text().trim();
		let weeks = parseWeeks(weeksStr);
		let dayStr = $(row).find('td:eq(18)').text().trim().charAt(0); // 只获取星期几的第一个字符
		let day = parseDay(dayStr);
		let sectionsStr = $(row).find('td:eq(18)').text().trim();
		let sections = parseSections(sectionsStr);

		// 添加条件判断,如果课程信息不为空,则将其加入结果列表中
		if (courseName !== '' || position !== '' || teacher !== '' || weeks.length > 0 || day !== undefined || sections
			.length > 0) {
			result.push({
				name: courseName,
				position: position,
				teacher: teacher,
				weeks: weeks,
				day: day,
				sections: sections
			});
		}
	}
	return result;
}

【scheduleTimer.js】

async function scheduleTimer({
	providerRes,
	parserRes
} = {}) {
	return {
		totalWeek: 18, // 总周数:[1, 30]之间的整数
		startSemester: '', // 开学时间:时间戳,13位长度字符串,推荐用代码生成
		startWithSunday: false, // 是否是周日为起始日,该选项为true时,会开启显示周末选项
		showWeekend: true, // 是否显示周末
		forenoon: 5, // 上午课程节数:[1, 10]之间的整数
		afternoon: 4, // 下午课程节数:[0, 10]之间的整数
		night: 3, // 晚间课程节数:[0, 10]之间的整数
		sections: [{
			section: 1,
			startTime: '08:00',
			endTime: '08:40',
		}, {
			section: 2,
			startTime: '08:50',
			endTime: '09:30',
		}, {
			section: 3,
			startTime: '09:40',
			endTime: '10:20',
		}, {
			section: 4,
			startTime: '10:30',
			endTime: '11:10',
		}, {
			section: 5,
			startTime: '11:20',
			endTime: '12:00',
		}, {
			section: 6,
			startTime: '14:30',
			endTime: '15:10',
		}, {
			section: 7,
			startTime: '15:20',
			endTime: '16:00',
		}, {
			section: 8,
			startTime: '16:10',
			endTime: '16:50',
		}, {
			section: 9,
			startTime: '17:00',
			endTime: '17:40',
		}, {
			section: 10,
			startTime: '19:00',
			endTime: '19:40',
		}, {
			section: 11,
			startTime: '19:50',
			endTime: '20:30',
		}, {
			section: 12,
			startTime: '20:40',
			endTime: '21:20',
		}],
	}
}
本文作者:任尚仁
版权声明:本文为原创内容,转载请注明出处。如需获取更多相关资讯,可访问官网:https://blog.rensr.site/。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇