您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
最大资源网、172资源网、1977资源网、ok资源网、高清电影资源站、永久资源网、酷云资源、酷播资源网、非凡资源网[MP4][m3u8]视频直接播放,分类页面改进翻页功能。
// ==UserScript== // @name 资源网助手 // @namespace https://greasyfork.org/zh-CN/users/104201 // @version 2.5 // @description 最大资源网、172资源网、1977资源网、ok资源网、高清电影资源站、永久资源网、酷云资源、酷播资源网、非凡资源网[MP4][m3u8]视频直接播放,分类页面改进翻页功能。 // @author 黄盐 // 影视作品介绍页面 // @match */?m=vod-* // 分类页面 // @match */detail/* // ╮(╯▽╰)╭ 好尴尬啊~我都忘记这个站点是用来做什么的了。最初添加好像是有些资源用这个网址开头的。 // @match http://bobo.okokbo.com* // @resource playercss https://cdn.bootcss.com/dplayer/1.25.0/DPlayer.min.css // @require https://cdn.bootcss.com/hls.js/0.12.4/hls.min.js // @require https://cdn.bootcss.com/dplayer/1.25.0/DPlayer.min.js // @require https://cdn.bootcss.com/zepto/1.2.0/zepto.min.js // @noframes // @run-at document-end // @grant GM_setValue // @grant GM_getValue // @grant GM_addStyle // @grant GM_getResourceText // @grant unsafeWindow // ==/UserScript== ;/* jshint esversion: 6 */ (function () { GM_addStyle(` span.zPlayButton{color:orange;font-size:1.2em;padding:2px 5px} span.played{color:gray} span.zPlayButton:hover{cursor:pointer;font-size:1.5em;background:#00000010;padding:3px 10px} /* 不是 m3u8 或者 MP4 的链接,直接打开另外的网页就可以 */ span[data-url]{display:none} span[data-url*=m3u8],span[data-url*=mp4]{display:inline-block} table a{font-family:"微软雅黑"} #playerContainer{width:60%;position:fixed;display:block;z-index:9000;right:0;top:5em;} #playerControls{position:absolute;width:100%;cursor:move;top:0;z-index:10000;visibility:hidden;} #playerContainer:hover #playerControls{visibility:visible;} #playerControls i{display:inline-block;max-height:40px;width:25px;padding:2px 5px;margin-left:5px;color:#fff;text-align:center;font-size: 16px;cursor:pointer;background:#ffff0080} #playerControls i:hover{color:red} #playerTitle{margin-left:10px;color:cyan} `); GM_addStyle(GM_getResourceText("playercss")); let tempElement, tempText; // 链接转化,添加播放按钮 Zepto('input[name*=copy_]').forEach(elm => { // 链接转化为真链接 if (Zepto(elm).parent().find('a').length) { // 有 <a> 元素的情况 Zepto(elm).parent().find('a').attr({ href: Zepto(elm).val(), target: '_blank' }).after(`<span class="zPlayButton" data-url='${Zepto(elm).val()}'>▶</span>`); } else { // 没有 <a> 元素的情况 tempElement = elm; tempText = Zepto(elm).parent().text(); Zepto(elm).parent().empty().append(tempElement).append(`<a href="${Zepto(tempElement).val()}" target="_blank">${tempText}</a>`) .append(`<span class="zPlayButton" data-url='${Zepto(tempElement).val()}'>▶</span>`); } }); // 元素全屏 function fullScreen(elm) { if (elm.requestFullscreen) { elm.requestFullscreen(); } else if (elm.webkitRequestFullScreen) { elm.webkitRequestFullScreen(); } else if (elm.mozRequestFullScreen) { elm.mozRequestFullScreen(); } else { elm.msRequestFullscreen(); } } // 播放器拖动位置 function move(e) { let left, top; let div = Zepto('#playerContainer')[0]; let disX = e.clientX - div.offsetLeft; let disY = e.clientY - div.offsetTop; document.onmousemove = (e) => { left = e.clientX - disX; top = e.clientY - disY; Zepto(div).css({ left: left + 'px', top: top + 'px' }); }; document.onmouseup = (e) => { // 在left或者top有值才更新 if(left&&top){GM_setValue('position', { left: left, top: top })} document.onmousemove = null; document.onmouseup = null; }; } // 页面添加播放器,按需初始化 function initPlayer(videoUrl = "") { // 添加播放器容器 Zepto('body').append(` <div id="playerContainer"> <div id="playerControls"> <i data-size="small">🗕</i> <i data-size="medium">🗗</i> <i data-size="big">🗖</i> <i data-size="full">🡧🡥</i> <i data-size="close">🗙</i> <b id="playerTitle"></b> </div> <div id="zplayer"></div> </div>`); unsafeWindow.dp = new DPlayer({ container: Zepto('#zplayer')[0], volume: 1, video: { url: videoUrl } }); // 播放器调整尺寸或者关闭按钮功能 function spanClick(e) { let sizes = { small: { width: '35%', height: 'auto' }, medium: { width: '70%', height: 'auto' }, big: { width: '100%', height: 'auto' } }; console.log(unsafeWindow.dp.url) let size = e.target.dataset.size; switch (size) { case 'small': case 'medium': case 'big': Zepto('#playerContainer').css(sizes[size]); break; case 'full': fullScreen(Zepto('#playerContainer')[0]); break; case 'close': unsafeWindow.dp.switchVideo({ url: '' }); // 不用 dp.destroy(), 免得重新渲染 setTimeout(() => {unsafeWindow.dp.notice('关闭', 100)}, 100); // 避免出现“视频加载失败” unsafeWindow.dp.pause(); Zepto('#playerContainer').hide(); break; default: break; } } let position = GM_getValue('position', { left: 200, top: 100 }); Zepto('#playerContainer').css({ left: position.left + 'px', top: position.top + 'px' }); Zepto("#playerControls").on('mousedown', move); Zepto('#playerControls i').on('click', (e) => { spanClick(e); }); } // 切换播放链接,点击播放按钮的时候生效 function switchVideo(e) { // 还没有播放器的话,就初始化 if (unsafeWindow.dp == undefined) { initPlayer(); } $('#playerContainer').show(); let title = Zepto(e.target).prev().text().split('$')[0]; Zepto('#playerTitle').text(title); console.log(title, "新视频地址:", e.target.dataset.url); // 这一行不要删除 unsafeWindow.dp.switchVideo({ url: e.target.dataset.url }); unsafeWindow.dp.play(); } Zepto('.zPlayButton').on('click', e => { Zepto(e.target).addClass('played'); switchVideo(e); }); })();