首页
文章列表
交流群
文档
登录
案例代码:用油猴脚本统计b站课堂课程总时长
2024-11-12 09:56:14
小程序码
文章目录
热门文章
整理下php学员遇到的一些问题
430
fastadmin监听或重写删除编辑按钮事件
283
phpstudy怎么手动安装php8.3.0版本?
275
文档:一个案例学会fastadmin插件开发
146
php基础入门课程资料文档课件
133
表单验证:密码和确认密码的验证和文字提示
73
百题斩:用递归方式扁平化嵌套数组
66
百题斩:字符串的逆序函数
59
案例代码:用油猴脚本统计b站课堂课程总时长
56
使用ffmpeg把mp4转为加密后的m3u8文件
54
此脚本代码可以直接使用,测试地址可以使用这个: https://www.bilibili.com/cheese/play/ss25045 实际效果如图所示: ![](https://resource.maoshu.fun/storage/default/20241111/imagece28da663f81f548b5c097f5caab5a3f4e15ca06.png?e=1732481759&token=Ov7mXAv_8azPtTTXXyhh0S5qpDFEhafGpHARTAg2:J6g1xRORRtYKRfViemKKjpTyHGM=) 油猴脚本源码: ```js // ==UserScript== // @name 自动统计B站课堂总时长 // @namespace http://tampermonkey.net/ // @version 2024-11-11 // @description try to take over the world! // @author 猫叔 // @match https://www.bilibili.com/cheese/play/* // @require https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js // @icon https://www.google.com/s2/favicons?sz=64&domain=bilibili.com // @grant none // ==/UserScript== (function() { 'use strict'; $(function(){ console.log('脚本已加载 B'); // 将时间字符串转换为秒数 function convertToSeconds(timeString) { const regex = /(\d+分)?(\d+秒)?/; const match = timeString.match(regex); if (!match) { throw new Error('Invalid time format'); } const minutes = match[1] ? parseInt(match[1].replace('分', ''), 10) : 0; const seconds = match[2] ? parseInt(match[2].replace('秒', ''), 10) : 0; return minutes * 60 + seconds; } // 将秒数转换为时:分:秒格式 function convertToTimeFormat(seconds) { const hours = Math.floor(seconds / 3600); const minutes = Math.floor((seconds % 3600) / 60); const remainingSeconds = seconds % 60; return [ hours.toString().padStart(2, '0'), minutes.toString().padStart(2, '0'), remainingSeconds.toString().padStart(2, '0') ].join(':'); } let maxNum = 10; let timer = setInterval(() => { maxNum -= 1; if ($('.section-item').length > 0 || maxNum <= 0) { clearInterval(timer); let secondTotal = 0; $('.section-item').each(function(index, element) { const $element = $(element); const times = $element.find('div.season-info.flex-align-center > div.info.subtitle.flex-align-center > p').text(); console.log(times); const seconds = convertToSeconds(times); secondTotal += seconds; }); console.log('总时长: ', convertToTimeFormat(secondTotal)); // 在 class 为 edu-play-right 的元素顶部插入一个 div 元素 const totalTimeDiv = `
总时长: ${convertToTimeFormat(secondTotal)}
`; $('.edu-play-right').prepend(totalTimeDiv); } }, 1000); }) })(); ```