Skip to content

Commit

Permalink
feat: 添加智慧树学分课脚本
Browse files Browse the repository at this point in the history
  • Loading branch information
enncy committed Mar 27, 2022
1 parent 817733f commit 37b112a
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 26 deletions.
38 changes: 34 additions & 4 deletions packages/scripts/src/browser/zhs/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { createNote } from "../core/create.element";
import { defineScript } from "../core/define.script";
import { defaultSetting } from "../scripts";
import { createZHSStudySettingPanel, createZHSWorkSettingPanel } from "./panels";
import { study } from "./study";
import { creditStudy, study } from "./study";
import { createSearchResultPanel, createTerminalPanel, domSearch, sleep } from "../core/utils";
import { work } from "./work";
import { logger } from "../../logger";
Expand All @@ -12,14 +12,26 @@ export const ZHSScript = defineScript({
name: "知道智慧树",
routes: [
{
name: "视频脚本",
name: "共享课视频脚本",
url: "**zhihuishu.com/videoStudy.html**",
async onload(setting = OCS.setting.zhs.video) {
await sleep(5000);
// 智慧树视频学习
logger("info", "开始智慧树共享课视频学习");
await study(setting || defaultSetting().video);
},
},
{
name: "学分课视频脚本",
/** 学分共享课(翻转课) */
url: "**zhihuishu.com/aidedteaching/sourceLearning/**",
async onload(setting = OCS.setting.zhs.video) {
await sleep(5000);
// 智慧树视频学习
logger("info", "开始智慧树学分课视频学习");
await creditStudy(setting || defaultSetting().video);
},
},
{
name: "作业脚本",
url: "**zhihuishu.com/stuExamWeb.html#/webExamList/dohomework**",
Expand Down Expand Up @@ -48,9 +60,9 @@ export const ZHSScript = defineScript({
el: () => createNote("提示您:", "请点击任意的课程进入。"),
},
{
name: "视频助手",
name: "共享课视频助手",
/** 共享课 */
url: "**zhihuishu.com/videoStudy.html**",

el: () =>
createNote(
"进入 视频设置面板 可以调整视频设置",
Expand All @@ -66,6 +78,24 @@ export const ZHSScript = defineScript({
createTerminalPanel(),
],
},
{
name: "学分课视频助手",
/** 学分共享课(翻转课) */
url: "**zhihuishu.com/aidedteaching/sourceLearning/**",
el: () =>
createNote(
"进入 视频设置面板 可以调整视频设置",
"学分课默认1倍速, 不可修改",
"5秒后自动开始播放视频..."
),
children: [
{
name: "学习设置",
el: () => createZHSStudySettingPanel(true),
},
createTerminalPanel(),
],
},
{
name: "作业考试助手",
url: "**zhihuishu.com/stuExamWeb.html#/webExamList?**",
Expand Down
52 changes: 33 additions & 19 deletions packages/scripts/src/browser/zhs/panels.ts
Original file line number Diff line number Diff line change
@@ -1,36 +1,44 @@
import { DefineComponent } from "vue";
import { createSettingPanel, createWorkerSetting, CreateWorkerSettingConfig } from "../core/create.element";
import {
createSettingPanel,
createWorkerSetting,
CreateWorkerSettingConfig,
SettingInput,
SettingSelect,
} from "../core/create.element";

/**
* 创建智慧树视频设置面板
* @param creditStudy 是否为学分课
*/

export function createZHSStudySettingPanel(): DefineComponent {
export function createZHSStudySettingPanel(creditStudy: boolean = false): DefineComponent {
const settings = OCS.setting.zhs.video;

return createSettingPanel(
{
label: "播放时间(小时)",
ref: "setting.zhs.video.watchTime",
type: "number",
attrs: {
title: "播放时间到后, 将会自动暂停。\n如设置为0, 则不会自动暂停",
value: settings.watchTime,
min: 0,
max: 24,
step: 0.1,
},
const watchTimeSetting = {
label: "播放时间(小时)",
ref: "setting.zhs.video.watchTime",
type: "number",
attrs: {
title: "播放时间到后, 将会自动暂停。\n如设置为0, 则不会自动暂停",
value: settings.watchTime,
min: 0,
max: 24,
step: 0.1,
},
};

const settingInputs = [
{
label: "视频倍速",
ref: "setting.zhs.video.playbackRate",
type: "number",
attrs: {
title: "不能大于1.5倍速,否则容易封号",
value: settings.playbackRate,
title: creditStudy ? "学分课不可修改倍速" : "不能大于1.5倍速,否则容易封号",
value: creditStudy ? 1 : settings.playbackRate,
min: 1.0,
max: 1.5,
step: 0.25,
disabled: creditStudy,
},
},
{
Expand All @@ -49,8 +57,14 @@ export function createZHSStudySettingPanel(): DefineComponent {
title: "将播放过的视频再播放一遍。",
checked: settings.restudy,
},
}
);
},
] as (SettingSelect | SettingInput)[];

if (!creditStudy) {
settingInputs.unshift(watchTimeSetting as SettingInput);
}

return createSettingPanel(...settingInputs);
}

/**
Expand Down
37 changes: 34 additions & 3 deletions packages/scripts/src/browser/zhs/study.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ export async function study(setting?: ScriptSettings["zhs"]["video"]) {
* @param setting
* @returns
*/
export async function watch(setting?: ScriptSettings["zhs"]["video"]) {
export async function watch(setting?: Pick<ScriptSettings["zhs"]["video"], "playbackRate" | "mute">) {
const { playbackRate = 1, mute = true } = setting || {};
return new Promise<void>((resolve, reject) => {
try {
Expand All @@ -101,7 +101,9 @@ export async function watch(setting?: ScriptSettings["zhs"]["video"]) {
// 改变速率
video.playbackRate = parseFloat(playbackRate.toString());
const playbackRateText = document.querySelector("div.speedBox > span") as HTMLVideoElement;
playbackRateText.textContent = "X " + video.playbackRate;
if (playbackRateText) {
playbackRateText.textContent = "X " + video.playbackRate;
}

video.play();
} catch (e) {
Expand All @@ -111,7 +113,7 @@ export async function watch(setting?: ScriptSettings["zhs"]["video"]) {
}

/**
* 关闭zhs测验弹窗
* 关闭zhs共享课测验弹窗
*/
export async function closeTestDialog() {
if (document.querySelectorAll(".topic-item").length != 0) {
Expand All @@ -123,3 +125,32 @@ export async function closeTestDialog() {
await sleep(500);
}
}

/** 校内学分课 */
export async function creditStudy(setting?: ScriptSettings["zhs"]["video"]) {
const { restudy = false } = setting || {};

/** 查找任务 */
let list: HTMLLIElement[] = Array.from(document.querySelectorAll(".file-item"));

/** 如果不是复习模式,则排除掉已经完成的任务 */
if (!restudy) {
list = list.filter((el) => el.querySelector(".icon-finish") === null);
}

console.log(list);

const item = list[0];
if (item) {
if (item.classList.contains("active")) {
await watch({
mute: setting?.mute || true,
playbackRate: 1,
});
/** 下一章 */
if (list[1]) list[1].click();
} else {
item.click();
}
}
}

0 comments on commit 37b112a

Please sign in to comment.