Skip to content

Commit

Permalink
feat: 开发智慧树倍速选项
Browse files Browse the repository at this point in the history
  • Loading branch information
enncy committed Apr 26, 2022
1 parent 7c5516f commit 83015b7
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 20 deletions.
38 changes: 30 additions & 8 deletions packages/core/src/components/zhs/StudySettingPanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,23 +38,45 @@ export const StudySettingPanel = defineComponent({

<label>暂停时间</label>,
<div>
{settings.watchTime === 0
{settings.watchTime === 0
? (
<span>设置为0将不会自动暂停</span>
)
)
: (
<span>将在 {settings.closeDate.toLocaleString()} 暂停</span>
)}
</div>
]
: []}

<label>视频倍速 </label>
<div>
<Tooltip title="智慧树不能倍速, 否则观看时间会变短, 并且容易封号!">
<input type="number" value="1" disabled="true"></input>
</Tooltip>
</div>
{
settings.creditStudy === true
? <>
<label>视频倍速 </label>
<div>
<Tooltip title="学分课不允许倍速!">
<input type="number"
value="1">
</input>
</Tooltip>
</div>
</>
: <>
<label>视频倍速 </label>
<div>
<Tooltip title="智慧树最高1.5倍速, 超过1.5容易封号!">
<input type="number"
step="0.25"
max="1.5"
min="1"
value={settings.playbackRate}
onChange={(e: any) => {
settings.playbackRate = e.target.valueAsNumber;
}}></input>
</Tooltip>
</div>
</>
}

<label>音量调节</label>
<div>
Expand Down
38 changes: 26 additions & 12 deletions packages/core/src/script/zhs/study.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { logger } from '../../logger';
import { store } from '..';
import { domSearch, domSearchAll, sleep } from '../../core/utils';
import { logger } from '../../logger';
import { ScriptSettings } from '../../scripts';
import { store } from '..';

let stop = false;

/**
* zhs 视频学习
*/
export async function study (setting?: ScriptSettings['zhs']['video']) {
export async function study(setting?: ScriptSettings['zhs']['video']) {
const { watchTime = 30, restudy = false } = setting || {};
logger('info', 'zhs 学习任务开始');
/** 查找任务 */
Expand Down Expand Up @@ -44,8 +44,7 @@ export async function study (setting?: ScriptSettings['zhs']['video']) {
} else {
logger(
'debug',
`即将播放 -- ${item.querySelector('[class="catalogue_title"]')?.getAttribute('title')} : ${
item.querySelector('.time')?.textContent
`即将播放 -- ${item.querySelector('[class="catalogue_title"]')?.getAttribute('title')} : ${item.querySelector('.time')?.textContent
}`
);
item.click();
Expand All @@ -66,8 +65,8 @@ export async function study (setting?: ScriptSettings['zhs']['video']) {
* @param setting
* @returns
*/
export async function watch (setting?: Pick<ScriptSettings['zhs']['video'], 'playbackRate' | 'volume'>) {
const { volume = 0 } = setting || {};
export async function watch(setting?: Pick<ScriptSettings['zhs']['video'], 'playbackRate' | 'volume'>) {
const { volume = 0, playbackRate } = setting || {};
return new Promise<void>((resolve, reject) => {
try {
const video = document.querySelector('video') as HTMLVideoElement;
Expand All @@ -77,8 +76,19 @@ export async function watch (setting?: Pick<ScriptSettings['zhs']['video'], 'pla
video.currentTime = 0;
// 音量
video.volume = volume;
setTimeout(() => {

Promise.resolve(async () => {
await sleep(1000);

video.play();

await sleep(1000);
const { btn, rate } = domSearch({ btn: '.speedBox', rate: `[rate="${playbackRate}"]` });
console.log({ btn, rate });
btn?.click();
await sleep(1000);
rate?.click();

video.onpause = function () {
if (!video.ended) {
if (stop) {
Expand All @@ -91,7 +101,11 @@ export async function watch (setting?: Pick<ScriptSettings['zhs']['video'], 'pla
video.onended = function () {
resolve();
};
}, 1000);
}).then((func) => {
func();
}).catch((err) => {
logger('error', err);
});
} catch (e) {
reject(e);
}
Expand All @@ -101,7 +115,7 @@ export async function watch (setting?: Pick<ScriptSettings['zhs']['video'], 'pla
/**
* 关闭zhs共享课测验弹窗
*/
export async function closeTestDialog () {
export async function closeTestDialog() {
const { items } = domSearchAll({ items: '.topic-item' });
if (items.length !== 0) {
const { item, btn } = domSearch({ item: '.topic-item', btn: '[aria-label="弹题测验"] .btn' });
Expand All @@ -115,7 +129,7 @@ export async function closeTestDialog () {
}

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

/** 查找任务 */
Expand Down Expand Up @@ -146,7 +160,7 @@ export async function creditStudy (setting?: ScriptSettings['zhs']['video']) {
/**
* 到达学习时间后,自动关闭
*/
export function autoClose (watchTime: number) {
export function autoClose(watchTime: number) {
if (watchTime !== 0) {
let time = 0;
// 清空之前的计数器
Expand Down

0 comments on commit 83015b7

Please sign in to comment.