├── CHANGELOG ├── GF_README.MD ├── History_README.MD ├── LICENSE ├── One.user.js ├── OneKeyVip.gf.user.js ├── OneKeyVip.user.js ├── One_README.MD ├── README.MD ├── VERSION └── tools └── OneKeyVip.History.Tools.user.js /CHANGELOG: -------------------------------------------------------------------------------- 1 | 2 | * 3.5.5 修正已知bug 3 | * 3.5.4 修复按钮拖动失效、重复生成问题 4 | * 3.5.3 日常更新 5 | * 3.5.2 修正咪咕音乐冲突 6 | * 3.5.1 修正规则 7 | * 3.5.0 修复已知问题 8 | * 3.4.9 修复解析页面按钮重复显示问题 9 | * 3.4.8 修复bilibili封面bug 10 | * 3.4.7 增加更新配置 11 | * 3.4.6 增加配置项 12 | * 3.4.5 增加一个外部资源 13 | * 3.4.4 修正QQ音乐接口,新增B站封面查看器(需要下载请右键图片另存为) 14 | * 3.4.3 由于上学吧接口不稳定,移除功能说明,保留功能按钮(能看就看,不能看也不考虑修复) 15 | * 3.4.2 修正按钮拖拽异常 16 | * 3.4.1 优化按钮拖拽 17 | * 3.4.0 更新接口 18 | * 3.3.9 修正匹配规则 19 | * 3.3.8 更新接口 20 | * 3.3.7 新增匹配规则 21 | * 3.3.6 变更数据接口 22 | * 3.3.5 SXB修正 23 | * 3.3.4 增加百度云离线跳转 24 | * 3.3.3 修复已知问题 25 | * 3.3.2 代码重构,修复已知问题 26 | * 3.3.1 修复音乐地址获取异常 27 | * 3.3.0 修复已知问题 28 | * 3.2.9 移除一个无效匹配规则 29 | * 3.2.8 修正bilibili问题 30 | * 3.2.7 增加上学吧答案展示 31 | * 3.2.6 修正链接匹配规则 32 | * 3.2.5 修正已知问题 33 | * 3.2.4 修正连续剧选集问题 34 | * 3.2.3 添加一个搜狐匹配规则 35 | * 3.2.2 移除无效引用 36 | * 3.2.1 修复音乐匹配相关问题,匹配手机版 37 | * 3.2.0 优化悬浮按钮,使其可以贴边 38 | * 3.1.9 添加一个爱奇艺匹配规则 39 | * 3.1.8 重构查券 40 | * 3.1.7 更换静态资源 41 | * 3.1.6 修正网易云音乐地址匹配异常 42 | * 3.1.5 更换静态资源 43 | * 3.1.4 重构预备 44 | * 3.1.3 更新接口,替换静态资源 45 | * 3.1.2 更新匹配规则 46 | * 3.1.1 更新解析接口,移除失效接口 47 | * 3.1.0 修正已知错误 48 | * 3.0.8 修正一处URL匹配异常 49 | * 3.0.7 修正一处匹配异常 50 | * 3.0.6 修正已知错误 51 | * 3.0.5 修正一处匹配异常 52 | * 3.0.4 修正已知错误,云盘钥匙铺路 53 | * 3.0.3 修正类库异常 54 | * 3.0.2 修正已知错误 55 | * 3.0.1 修正一些匹配异常 56 | * 3.0.0 更换一个失效的类库 57 | * 2.9.9 修正一个类库失效引起的弹窗异常问题 58 | * 2.9.8 修正一个匹配错误引起的异常 59 | * 2.9.7 修正一个匹配错误问题 60 | * 2.9.6 修正火狐浏览器悬浮按钮不显示的问题,修正腾讯视频部分匹配错误问题 61 | * 2.9.5 喜马拉雅专辑页新增解析列表 62 | * 2.9.4 修正一处匹配错误,优化喜马拉雅曲目匹配规则 63 | * 2.9.3 例行维护 64 | * 2.9.2 移除部分匹配规则,优化部分匹配规则 65 | * 2.9.1 修复音乐下载页面样式异常问题 66 | * 2.9 更新音乐下载 67 | * 2.8.7 修复一个爱妻艺不显示问题 68 | * 2.8.6 依旧是更新说明 69 | * 2.8.5 脚本说明更新 70 | * 2.8.4 更新脚本说明 71 | * 2.8.3 新增pptv匹配接口 72 | * 2.8.2 修复爱奇艺一个系列不匹配问题 73 | * 2.8.1 修复优惠券按钮不显示问题 74 | * 2.8 版本大更新,更换按钮展示样式。妈妈再也不用担心我被覆盖了~ 75 | * 2.7.1 修复爱奇艺按钮无效及不显示问题 76 | * 2.7 新增京东优惠券查询通道 77 | * 2.6 修复一个优惠券展示错误 78 | * 2.5 修复搜狐等相关页面显示问题 79 | * 2.4 更新一个优惠通道 80 | * 2.3 修复一个bug 81 | * 2.2 新增一个优惠券查询通道 82 | * 2.1 新增天猫优惠券查询 83 | * 2.0 修复一个显示错误问题 84 | * 1.9 新增淘宝优惠券查询,可以直接查询宝贝优惠券信息了 85 | * 1.8 因版权问题,暂时去除百度网盘解析 86 | * 1.6 新增百度网盘解析 87 | * 1.5 修复已知错误 88 | * 1.4 修复解析异常 89 | * 1.3 修复解析按钮指向 90 | * 1.2 新增若干解析接口,修复相关bug 91 | * 1.1 修复按钮 -------------------------------------------------------------------------------- /GF_README.MD: -------------------------------------------------------------------------------- 1 |

一键Vip解析工具箱

2 | 3 | 本脚本可安装于支持 Tampermonkey 或 暴力猴扩展的浏览器,包括但不限于Chrome,360,QQ,UC等。 4 | 5 |

6 | release 7 | ScriptCat 8 | tampermonkey 9 | chrome 10 | safari 11 | platform 12 |

13 | 14 | # 🤩🤩🤩重要说明🤩🤩🤩 15 | > 近期受MV3规则影响导致脚本失效 16 | > 17 | > 大量用户反馈脚本失效的问题,请参照如下教程开启”开发者模式“恢复脚本功能 18 | > 19 | > [**点击查看教程**](https://wiki.wandhi.com/zh-cn/Faq.html#_12-mv3%E8%A7%84%E5%88%99%E4%B8%8B%E7%9A%84%E5%BD%B1%E5%93%8D-%E5%BC%80%E5%90%AF%E5%BC%80%E5%8F%91%E8%80%85%E6%A8%A1%E5%BC%8F) 20 | 21 | ## 💩交流群 **有任何问题都可以加群反馈或在网站留言,修复更及时** 22 | 23 | - TG [猛击加入](//t.me/joinchat/fDZTZfGWE_9lYTFl) 24 | 25 | - 五群 [462983068](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=bBmrx1vXjbENW-tOycF7DCAQ-TpYnzaR&authKey=83NWF9%2BFkv5PIw2jLS%2FTcAMiCGraMiIbGMV4ce1WVEIOklGOm14IjIX%2F1Zu%2BeCvo&noverify=0&group_code=462983068) [**一键加群**](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=bBmrx1vXjbENW-tOycF7DCAQ-TpYnzaR&authKey=83NWF9%2BFkv5PIw2jLS%2FTcAMiCGraMiIbGMV4ce1WVEIOklGOm14IjIX%2F1Zu%2BeCvo&noverify=0&group_code=462983068) 26 | 27 | - 四群 [**137750146**](http://qm.qq.com/cgi-bin/qm/qr?k=gUbyjh9xrnskBWGYm-9DbnJqWBZOpcva&jump_from=webapi&authKey=5ci2KE+i56fFxxCVrj2Wkj4D3D7aKphITW07QdHls771upOyVT/06ekBgrNUZKeF) [**一键加群**](http://qm.qq.com/cgi-bin/qm/qr?k=gUbyjh9xrnskBWGYm-9DbnJqWBZOpcva&jump_from=webapi&authKey=5ci2KE+i56fFxxCVrj2Wkj4D3D7aKphITW07QdHls771upOyVT/06ekBgrNUZKeF) 28 | 29 | - 三群[**722457505**](http://shang.qq.com/wpa/qunwpa?idkey=a12d43edc065daad3043ca272a0eb9332ecd878f2921683c51e9d4e02554c80f) 30 | 31 | - 二群[**655341576**](https://shang.qq.com/wpa/qunwpa?idkey=dd0275fbf9149b71e4f2f4e44902b552c846e9a2234f68eaca35a442510f061b)**已满** [**一键加群**](https://shang.qq.com/wpa/qunwpa?idkey=dd0275fbf9149b71e4f2f4e44902b552c846e9a2234f68eaca35a442510f061b) 32 | 33 | - 一群[**340569308**](http://shang.qq.com/wpa/qunwpa?idkey=7fc3fef0db96421305e65c41cc081ffeca507fdc23cab93d731277be829985ec)**已满** [**一键加群**](http://shang.qq.com/wpa/qunwpa?idkey=7fc3fef0db96421305e65c41cc081ffeca507fdc23cab93d731277be829985ec) 34 | 35 | 36 | ## 💕京东、淘宝活动导购群 推荐 37 | 38 | 👉[点我](https://qm.qq.com/q/6c34zSGkuc) 39 | 👈或使用手机QQ扫码加群(禁言) 40 | 41 | 垃圾佬 42 | 垃圾佬 43 | 垃圾佬 44 | 45 | ## 声明 46 | 47 | > 脚本未最小化或混淆 48 | > 49 | > 未引用不符合规则的外部资源 50 | > 51 | > 举报前三思,瞎举报会被Ban 52 | 53 | 54 | ## 🔧 [插件功能(点我查看详情)](https://wiki.wandhi.com/zh-cn/Feature.html) 55 | 56 | * ✅ 视频解析 57 | * ✅ 音乐下载 58 | * ✅ 夸克网盘直链获取 59 | * ✅ 商品详情页优惠券 60 | * ✅ 商品列表页优惠券 61 | * ✅ B站视频封面获取 62 | * ✅ B站视频下载(支持分P下载) 63 | * ✅ B站视频一键三连 64 | * ✅ 商品历史价格 65 | * ✅ ~~百度文库解析~~ 66 | * ✅ CSDN页面清洁 67 | * ✅ 链接自动跳转 68 | * ✅ 内容自动展开(❤️❤️❤️待支持的网站等你提交申请❤️❤️❤️) 69 | * ✅ 阿里云盘refresh_token获取工具 70 | * ✅ YouTube视频下载 71 | * ✅ 搜索引擎快速跳转 72 | * ✅ 小红书无水印图片、视频 73 | * ✅ 鼠标点击图片时放大图片 74 | * ✅ github 75 | * ✅ v2ex 76 | 77 | ## 🔥挖坑 78 | 79 | * ❎ 功能项单独的控制开关(部分实现) 80 | * ❎ 搜索引擎跳转美化 81 | 82 | **插件有问题请及时反馈** 83 | 84 | 如果你有好的建议或想法,欢迎提供 85 | 86 | **感谢支持** 87 | 88 | ### [Github:https://github.com/maxzhang666/OneKeyVip](https://github.com/maxzhang666/OneKeyVip) 89 | 90 | ### [Gitee:https://gitee.com/ixysy/OneKeyVip](https://gitee.com/ixysy/OneKeyVip) 91 | 92 | ## 📖 常见问题 93 | 94 | [**点我查看**](https://wiki.wandhi.com/zh-cn/Faq.html) 95 | 96 | ## 🔔 更新历史 97 | 98 | [**查看**](https://wiki.wandhi.com/zh-cn/Changelog) 99 | 100 | # 功能说明 101 | 102 | > 温馨提示:除特殊说明外,大部分功能的使用方式都为页面内弹出Vip按钮方式 103 | 104 | > 功能介绍由于篇幅过长不再此处展示,请点击下方文字查看 105 | 106 | ## [插件功能(点我查看详情)](https://wiki.wandhi.com/zh-cn/Feature.html) 107 | 108 | ## 💕 友情捐助 109 | 110 |

111 | 友情捐助 112 |

113 | -------------------------------------------------------------------------------- /History_README.MD: -------------------------------------------------------------------------------- 1 |

【玩的嗨】历史价格、优惠券纯享版

2 | 3 | 本脚本可安装于支持 Tampermonkey 或 暴力猴扩展的浏览器,包括但不限于Chrome,360,QQ,UC等。 4 | 5 |

6 | release 7 | tampermonkey 8 | chrome 9 | safari 10 | platform 11 |

12 | 13 | # 🤩🤩🤩重要说明🤩🤩🤩 14 | > 近期受MV3规则影响导致脚本失效 15 | > 16 | > 大量用户反馈脚本失效的问题,请参照如下教程开启”开发者模式“恢复脚本功能 17 | > 18 | > [**点击查看教程**](https://wiki.wandhi.com/zh-cn/Faq.html#_12-mv3%E8%A7%84%E5%88%99%E4%B8%8B%E7%9A%84%E5%BD%B1%E5%93%8D-%E5%BC%80%E5%90%AF%E5%BC%80%E5%8F%91%E8%80%85%E6%A8%A1%E5%BC%8F) 19 | 20 | ## 💕京东、淘宝活动导购群 推荐 21 | 22 | 👉[点我](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=uTIafcbEgUOzOYvlkbbiT8iB3kZ4NWzx&authKey=btHJwZbMMQ4GQRFVkMlSpLCLcArztdc2ElBecWY8eJJd7aG%2BwJq4ETdgQCuZJKWv&noverify=0&group_code=488749187) 23 | 👈或使用手机QQ扫码加群(禁言) 24 | 25 | 垃圾佬 26 | 27 | 28 | ## 🔧 [插件功能(点我查看详情)](https://wiki.wandhi.com/zh-cn/Feature.html) 29 | 30 | * ✅ 淘宝、天猫、京东 优惠券自动查询 31 | * ✅ 商品历史价格自动展示 32 | 33 | **插件有问题请及时反馈** 34 | 35 | 如果你有好的建议或想法,欢迎提供 36 | 37 | **感谢支持** 38 | 39 | ### [Github:https://github.com/maxzhang666/OneKeyVip](https://github.com/maxzhang666/OneKeyVip) 40 | 41 | ### [Gitee:https://gitee.com/ixysy/OneKeyVip](https://gitee.com/ixysy/OneKeyVip) 42 | 43 | ## 📜 反馈说明 44 | 45 | > 反馈问题请按照以下格式进行: 46 | 47 | > 反馈时请给予“**Good**!”评价,并附上需要支持的网址,以及你所期望的需求! 48 | 49 | ### 问题网址(**重要**): 50 | 51 | ### 问题描述(**重要**): 52 | 53 | ### 问题图片(**重要**): 54 | 55 | 最后,反馈时请给予“**Good**!”评价,并附上需要支持的网址,以及你所期望的需求! 56 | 57 | ## 💩 交流群 58 | 59 | ### 一群[**340569308**](http://shang.qq.com/wpa/qunwpa?idkey=7fc3fef0db96421305e65c41cc081ffeca507fdc23cab93d731277be829985ec) [**一键加群**](http://shang.qq.com/wpa/qunwpa?idkey=7fc3fef0db96421305e65c41cc081ffeca507fdc23cab93d731277be829985ec) 60 | 61 | ### 二群[**655341576**](https://shang.qq.com/wpa/qunwpa?idkey=dd0275fbf9149b71e4f2f4e44902b552c846e9a2234f68eaca35a442510f061b) [**一键加群**](https://shang.qq.com/wpa/qunwpa?idkey=dd0275fbf9149b71e4f2f4e44902b552c846e9a2234f68eaca35a442510f061b) 62 | 63 | ### 三群[**722457505**](//shang.qq.com/wpa/qunwpa?idkey=a12d43edc065daad3043ca272a0eb9332ecd878f2921683c51e9d4e02554c80f) 暗号:玩的嗨 64 | 65 | ### TG [猛击加入](//t.me/joinchat/fDZTZfGWE_9lYTFl) 66 | 67 | > 有问题可以加群反馈或在网站留言,修复更及时 68 | 69 | ## 📖 常见问题 70 | 71 | [**点我查看**](https://wiki.wandhi.com/zh-cn/Faq.html) 72 | 73 | # 功能说明 74 | 75 | ## 优惠券 76 | 77 | > 淘宝、天猫、京东展示商品对应的优惠券信息,领券购买更优惠 78 | 79 | ![MPlbU3tV8I19Eni](https://i.loli.net/2020/04/22/MPlbU3tV8I19Eni.png) 80 | 81 | ## 商品历史价格 82 | 83 | > 在商品详情页展示商品的历史价格信息 84 | 85 | ![WSRmnbLghyfHxEe](https://i.loli.net/2020/04/22/WSRmnbLghyfHxEe.png) 86 | 87 | ## 🔔 更新历史 88 | 89 |
90 | 展开 91 |
 92 | 
 95 | 
96 | 97 |
98 | 99 | ## 💕 友情捐助 100 | 101 |

102 | 友情捐助 103 |

104 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 ChengLei 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /One.user.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 【One】懒人神器,懒人福利,全新架构,性能更出众————只需一个脚本包揽所有功能 长期更新,放心食用 3 | // @namespace https://www.wandhi.com/ 4 | // @description 功能介绍:1、ScriptsCat脚本猫脚本查询 2、CSDN页面清理 3、页面磁力链接提取 5 | // @license MIT 6 | // @version 1.1.5 7 | // @author MaxZhang 8 | // @include *://* 9 | // @require https://lib.baomitu.com/jquery/1.12.4/jquery.min.js 10 | // @require https://lib.baomitu.com/limonte-sweetalert2/11.4.7/sweetalert2.all.min.js 11 | // @grant GM_setClipboard 12 | // @grant unsafeWindow 13 | // @grant GM_xmlhttpRequest 14 | // @grant GM_info 15 | // @grant GM_cookie 16 | // @grant GM_addStyle 17 | // @grant GM.addStyle 18 | // @grant GM_getValue 19 | // @grant GM_setValue 20 | // @grant GM.getValue 21 | // @grant GM.setValue 22 | // @grant GM_notification 23 | // @grant GM_openInTab 24 | // @grant GM_deleteValue 25 | // @grant GM_registerMenuCommand 26 | // @grant GM_unregisterMenuCommand 27 | // @grant GM_download 28 | // @connect api.wandhi.com 29 | // @connect cdn.jsdelivr.net 30 | // @connect tool.manmanbuy.com 31 | // @connect gwdang.com 32 | // @connect scriptcat.org 33 | // @connect quark.cn 34 | // @compatible firefox 35 | // @compatible chrome 36 | // @compatible opera safari edge 37 | // @compatible safari 38 | // @compatible edge 39 | // @run-at document-end 40 | // @antifeature referral-link 此提示为GreasyFork代码规范要求含有查券功能的脚本必须添加,实际使用无任何强制跳转,代码可查,请知悉。 41 | // ==/UserScript== 42 | 43 | !function(global, factory) { 44 | "object" == typeof exports && "undefined" != typeof module ? factory(exports, require("sweetalert2")) : "function" == typeof define && define.amd ? define([ "exports", "sweetalert2" ], factory) : factory((global = "undefined" != typeof globalThis ? globalThis : global || self).One = {}, global.Swal); 45 | }(this, (function(exports, Swal) { 46 | "use strict"; 47 | function _interopDefaultLegacy(e) { 48 | return e && "object" == typeof e && "default" in e ? e : { 49 | default: e 50 | }; 51 | } 52 | var Swal__default = _interopDefaultLegacy(Swal), extendStatics = function(d, b) { 53 | return (extendStatics = Object.setPrototypeOf || { 54 | __proto__: [] 55 | } instanceof Array && function(d, b) { 56 | d.__proto__ = b; 57 | } || function(d, b) { 58 | for (var p in b) b.hasOwnProperty(p) && (d[p] = b[p]); 59 | })(d, b); 60 | }; 61 | function __extends(d, b) { 62 | function __() { 63 | this.constructor = d; 64 | } 65 | extendStatics(d, b), d.prototype = null === b ? Object.create(b) : (__.prototype = b.prototype, 66 | new __); 67 | } 68 | var SiteEnum, __assign = function() { 69 | return (__assign = Object.assign || function __assign(t) { 70 | for (var s, i = 1, n = arguments.length; i < n; i++) for (var p in s = arguments[i]) Object.prototype.hasOwnProperty.call(s, p) && (t[p] = s[p]); 71 | return t; 72 | }).apply(this, arguments); 73 | }; 74 | function __awaiter$1(thisArg, _arguments, P, generator) { 75 | return new (P || (P = Promise))((function(resolve, reject) { 76 | function fulfilled(value) { 77 | try { 78 | step(generator.next(value)); 79 | } catch (e) { 80 | reject(e); 81 | } 82 | } 83 | function rejected(value) { 84 | try { 85 | step(generator.throw(value)); 86 | } catch (e) { 87 | reject(e); 88 | } 89 | } 90 | function step(result) { 91 | result.done ? resolve(result.value) : function adopt(value) { 92 | return value instanceof P ? value : new P((function(resolve) { 93 | resolve(value); 94 | })); 95 | }(result.value).then(fulfilled, rejected); 96 | } 97 | step((generator = generator.apply(thisArg, _arguments || [])).next()); 98 | })); 99 | } 100 | function __generator$1(thisArg, body) { 101 | var f, y, t, g, _ = { 102 | label: 0, 103 | sent: function() { 104 | if (1 & t[0]) throw t[1]; 105 | return t[1]; 106 | }, 107 | trys: [], 108 | ops: [] 109 | }; 110 | return g = { 111 | next: verb(0), 112 | throw: verb(1), 113 | return: verb(2) 114 | }, "function" == typeof Symbol && (g[Symbol.iterator] = function() { 115 | return this; 116 | }), g; 117 | function verb(n) { 118 | return function(v) { 119 | return function step(op) { 120 | if (f) throw new TypeError("Generator is already executing."); 121 | for (;_; ) try { 122 | if (f = 1, y && (t = 2 & op[0] ? y.return : op[0] ? y.throw || ((t = y.return) && t.call(y), 123 | 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 124 | switch (y = 0, t && (op = [ 2 & op[0], t.value ]), op[0]) { 125 | case 0: 126 | case 1: 127 | t = op; 128 | break; 129 | 130 | case 4: 131 | return _.label++, { 132 | value: op[1], 133 | done: !1 134 | }; 135 | 136 | case 5: 137 | _.label++, y = op[1], op = [ 0 ]; 138 | continue; 139 | 140 | case 7: 141 | op = _.ops.pop(), _.trys.pop(); 142 | continue; 143 | 144 | default: 145 | if (!(t = _.trys, (t = t.length > 0 && t[t.length - 1]) || 6 !== op[0] && 2 !== op[0])) { 146 | _ = 0; 147 | continue; 148 | } 149 | if (3 === op[0] && (!t || op[1] > t[0] && op[1] < t[3])) { 150 | _.label = op[1]; 151 | break; 152 | } 153 | if (6 === op[0] && _.label < t[1]) { 154 | _.label = t[1], t = op; 155 | break; 156 | } 157 | if (t && _.label < t[2]) { 158 | _.label = t[2], _.ops.push(op); 159 | break; 160 | } 161 | t[2] && _.ops.pop(), _.trys.pop(); 162 | continue; 163 | } 164 | op = body.call(thisArg, _); 165 | } catch (e) { 166 | op = [ 6, e ], y = 0; 167 | } finally { 168 | f = t = 0; 169 | } 170 | if (5 & op[0]) throw op[1]; 171 | return { 172 | value: op[0] ? op[1] : void 0, 173 | done: !0 174 | }; 175 | }([ n, v ]); 176 | }; 177 | } 178 | } 179 | function __read(o, n) { 180 | var m = "function" == typeof Symbol && o[Symbol.iterator]; 181 | if (!m) return o; 182 | var r, e, i = m.call(o), ar = []; 183 | try { 184 | for (;(void 0 === n || n-- > 0) && !(r = i.next()).done; ) ar.push(r.value); 185 | } catch (error) { 186 | e = { 187 | error: error 188 | }; 189 | } finally { 190 | try { 191 | r && !r.done && (m = i.return) && m.call(i); 192 | } finally { 193 | if (e) throw e.error; 194 | } 195 | } 196 | return ar; 197 | } 198 | function __spread() { 199 | for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); 200 | return ar; 201 | } 202 | !function(SiteEnum) { 203 | SiteEnum.All = "All", SiteEnum.TaoBao = "TaoBao", SiteEnum.TMall = "TMall", SiteEnum.JingDong = "JingDong", 204 | SiteEnum.Shuma = "Shuma", SiteEnum.IQiYi = "IQiYi", SiteEnum.YouKu = "YouKu", SiteEnum.LeShi = "LeShi", 205 | SiteEnum.TuDou = "TuDou", SiteEnum.Tencent_V = "Tencent_V", SiteEnum.MangGuo = "MangGuo", 206 | SiteEnum.SoHu = "SoHu", SiteEnum.Acfun = "Acfun", SiteEnum.BiliBili = "BiliBili", 207 | SiteEnum.M1905 = "M1905", SiteEnum.PPTV = "PPTV", SiteEnum.YinYueTai = "YinYueTai", 208 | SiteEnum.WangYi = "WangYi", SiteEnum.Tencent_M = "Tencent_M", SiteEnum.KuGou = "KuGou", 209 | SiteEnum.KuWo = "KuWo", SiteEnum.XiaMi = "XiaMi", SiteEnum.TaiHe = "TaiHe", SiteEnum.QingTing = "QingTing", 210 | SiteEnum.LiZhi = "LiZhi", SiteEnum.MiGu = "MiGu", SiteEnum.XiMaLaYa = "XiMaLaYa", 211 | SiteEnum.SXB = "SXB", SiteEnum.BDY = "BDY", SiteEnum.BDY1 = "BDY1", SiteEnum.BD_DETAIL_OLD = "BD_DETAIL_OLD", 212 | SiteEnum.BD_DETAIL_NEW = "BD_DETAIL_NEW", SiteEnum.BD_DETAIL_Share = "BD_DETAIL_Share", 213 | SiteEnum.LZY = "LZY", SiteEnum.SuNing = "SuNing", SiteEnum.Vp = "Vp", SiteEnum.Gwd = "Gwd", 214 | SiteEnum.Xxqg = "Xxqg", SiteEnum.CSDN = "CSDN", SiteEnum.FeiShuDoc = "FeiShuDoc", 215 | SiteEnum.Juhaowan = "Juhaowan", SiteEnum.MhXin = "MhXin", SiteEnum.NodeSeek = "NodeSeek", 216 | SiteEnum.NodeSeekCategory = "NodeSeekCategory", SiteEnum.NodeSeekDetail = "NodeSeekDetail"; 217 | }(SiteEnum || (SiteEnum = {})); 218 | var LogLevel$1, Core$1 = function() { 219 | function Core() {} 220 | return Object.defineProperty(Core, "url", { 221 | get: function() { 222 | return window.location.href; 223 | }, 224 | enumerable: !1, 225 | configurable: !0 226 | }), Object.defineProperty(Core, "isTop", { 227 | get: function() { 228 | return window.self == window.top; 229 | }, 230 | enumerable: !1, 231 | configurable: !0 232 | }), Core.addStyle = function(content) { 233 | if (GM_addStyle) GM_addStyle(content); else { 234 | var style = unsafeWindow.window.document.createElement("style"); 235 | style.innerHTML = content, unsafeWindow.window.document.head.append(style); 236 | } 237 | }, Core.sleep = function(t) { 238 | return __awaiter$1(this, void 0, Promise, (function() { 239 | return __generator$1(this, (function(_a) { 240 | return [ 2, new Promise((function(resolve) { 241 | setTimeout(resolve, 1e3 * t); 242 | })) ]; 243 | })); 244 | })); 245 | }, Core.random = function(arr, n) { 246 | void 0 === n && (n = 1); 247 | for (var resArr = [ arr[Math.floor(Math.random() * arr.length)] ], i = 1; i < n; i++) resArr.push(arr[Math.floor(Math.random() * arr.length)]); 248 | return resArr; 249 | }, Core.randomNum = function(min, max) { 250 | var range = max - min; 251 | return min + Math.round(this.rnd() * range); 252 | }, Core.rnd = function(seed) { 253 | return void 0 === seed && (seed = Date.now()), (seed = (9301 * seed + 49297) % 233280) / 233280; 254 | }, Core.background = function(callback, time) { 255 | void 0 === time && (time = 5), setInterval((function() { 256 | callback(); 257 | }), 1e3 * time); 258 | }, Core.autoLazyload = function(isOk, callback, time) { 259 | void 0 === time && (time = 5), isOk() ? callback() : setTimeout((function() { 260 | Core.autoLazyload(isOk, callback, time); 261 | }), 1e3 * time); 262 | }, Core.lazyload = function(callback, time) { 263 | void 0 === time && (time = 5), setTimeout((function() { 264 | callback(); 265 | }), 1e3 * time); 266 | }, Core.bodyAppend = function(html) { 267 | unsafeWindow.document.body.append(html); 268 | }, Core; 269 | }(), Logger$1 = function() { 270 | function Logger() {} 271 | return Logger.log = function(msg, group, level) {}, Logger.debug = function(msg, group) { 272 | void 0 === group && (group = "debug"), this.log(msg, group, LogLevel$1.debug); 273 | }, Logger.info = function(msg, group) { 274 | void 0 === group && (group = "info"), this.log(msg, group, LogLevel$1.info); 275 | }, Logger.warn = function(msg, group) { 276 | void 0 === group && (group = "warning"), this.log(msg, group, LogLevel$1.warn); 277 | }, Logger.error = function(msg, group) { 278 | void 0 === group && (group = "error"), this.log(msg, group, LogLevel$1.error); 279 | }, Logger; 280 | }(); 281 | function styleInject(css, ref) { 282 | void 0 === ref && (ref = {}); 283 | var insertAt = ref.insertAt; 284 | if (css && "undefined" != typeof document) { 285 | var head = document.head || document.getElementsByTagName("head")[0], style = document.createElement("style"); 286 | style.type = "text/css", "top" === insertAt && head.firstChild ? head.insertBefore(style, head.firstChild) : head.appendChild(style), 287 | style.styleSheet ? style.styleSheet.cssText = css : style.appendChild(document.createTextNode(css)); 288 | } 289 | } 290 | !function(LogLevel) { 291 | LogLevel[LogLevel.debug = 0] = "debug", LogLevel[LogLevel.info = 1] = "info", LogLevel[LogLevel.warn = 2] = "warn", 292 | LogLevel[LogLevel.error = 3] = "error"; 293 | }(LogLevel$1 || (LogLevel$1 = {})); 294 | styleInject("#content_views pre,#content_views pre code{-webkit-touch-callout:auto!important;-webkit-user-select:auto!important;-khtml-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.passport-login-container{display:none!important}"); 295 | var LogLevel, __awaiter = function(thisArg, _arguments, P, generator) { 296 | return new (P || (P = Promise))((function(resolve, reject) { 297 | function fulfilled(value) { 298 | try { 299 | step(generator.next(value)); 300 | } catch (e) { 301 | reject(e); 302 | } 303 | } 304 | function rejected(value) { 305 | try { 306 | step(generator.throw(value)); 307 | } catch (e) { 308 | reject(e); 309 | } 310 | } 311 | function step(result) { 312 | result.done ? resolve(result.value) : function adopt(value) { 313 | return value instanceof P ? value : new P((function(resolve) { 314 | resolve(value); 315 | })); 316 | }(result.value).then(fulfilled, rejected); 317 | } 318 | step((generator = generator.apply(thisArg, _arguments || [])).next()); 319 | })); 320 | }, __generator = function(thisArg, body) { 321 | var f, y, t, _ = { 322 | label: 0, 323 | sent: function() { 324 | if (1 & t[0]) throw t[1]; 325 | return t[1]; 326 | }, 327 | trys: [], 328 | ops: [] 329 | }, g = Object.create(("function" == typeof Iterator ? Iterator : Object).prototype); 330 | return g.next = verb(0), g.throw = verb(1), g.return = verb(2), "function" == typeof Symbol && (g[Symbol.iterator] = function() { 331 | return this; 332 | }), g; 333 | function verb(n) { 334 | return function(v) { 335 | return function step(op) { 336 | if (f) throw new TypeError("Generator is already executing."); 337 | for (;g && (g = 0, op[0] && (_ = 0)), _; ) try { 338 | if (f = 1, y && (t = 2 & op[0] ? y.return : op[0] ? y.throw || ((t = y.return) && t.call(y), 339 | 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 340 | switch (y = 0, t && (op = [ 2 & op[0], t.value ]), op[0]) { 341 | case 0: 342 | case 1: 343 | t = op; 344 | break; 345 | 346 | case 4: 347 | return _.label++, { 348 | value: op[1], 349 | done: !1 350 | }; 351 | 352 | case 5: 353 | _.label++, y = op[1], op = [ 0 ]; 354 | continue; 355 | 356 | case 7: 357 | op = _.ops.pop(), _.trys.pop(); 358 | continue; 359 | 360 | default: 361 | if (!(t = _.trys, (t = t.length > 0 && t[t.length - 1]) || 6 !== op[0] && 2 !== op[0])) { 362 | _ = 0; 363 | continue; 364 | } 365 | if (3 === op[0] && (!t || op[1] > t[0] && op[1] < t[3])) { 366 | _.label = op[1]; 367 | break; 368 | } 369 | if (6 === op[0] && _.label < t[1]) { 370 | _.label = t[1], t = op; 371 | break; 372 | } 373 | if (t && _.label < t[2]) { 374 | _.label = t[2], _.ops.push(op); 375 | break; 376 | } 377 | t[2] && _.ops.pop(), _.trys.pop(); 378 | continue; 379 | } 380 | op = body.call(thisArg, _); 381 | } catch (e) { 382 | op = [ 6, e ], y = 0; 383 | } finally { 384 | f = t = 0; 385 | } 386 | if (5 & op[0]) throw op[1]; 387 | return { 388 | value: op[0] ? op[1] : void 0, 389 | done: !0 390 | }; 391 | }([ n, v ]); 392 | }; 393 | } 394 | }, Core = function() { 395 | function Core() {} 396 | return Object.defineProperty(Core, "url", { 397 | get: function() { 398 | return window.location.href; 399 | }, 400 | enumerable: !1, 401 | configurable: !0 402 | }), Object.defineProperty(Core, "isTop", { 403 | get: function() { 404 | return window.self == window.top; 405 | }, 406 | enumerable: !1, 407 | configurable: !0 408 | }), Core.addStyle = function(content) { 409 | if (GM_addStyle) GM_addStyle(content); else { 410 | var style = unsafeWindow.window.document.createElement("style"); 411 | style.innerHTML = content, unsafeWindow.window.document.head.append(style); 412 | } 413 | }, Core.sleep = function(t) { 414 | return __awaiter(this, void 0, void 0, (function() { 415 | return __generator(this, (function(_a) { 416 | return [ 2, new Promise((function(resolve) { 417 | setTimeout(resolve, 1e3 * t); 418 | })) ]; 419 | })); 420 | })); 421 | }, Core.random = function(arr, n) { 422 | void 0 === n && (n = 1); 423 | for (var resArr = [ arr[Math.floor(Math.random() * arr.length)] ], i = 1; i < n; i++) resArr.push(arr[Math.floor(Math.random() * arr.length)]); 424 | return resArr; 425 | }, Core.randomNum = function(min, max) { 426 | var range = max - min; 427 | return min + Math.round(this.rnd() * range); 428 | }, Core.rnd = function(seed) { 429 | return void 0 === seed && (seed = Date.now()), (seed = (9301 * seed + 49297) % 233280) / 233280; 430 | }, Core.background = function(callback, time) { 431 | void 0 === time && (time = 5), setInterval((function() { 432 | callback(); 433 | }), 1e3 * time); 434 | }, Core.autoLazyload = function(isOk, callback, time) { 435 | void 0 === time && (time = 5), isOk() ? callback() : setTimeout((function() { 436 | Core.autoLazyload(isOk, callback, time); 437 | }), 1e3 * time); 438 | }, Core.lazyload = function(callback, time) { 439 | void 0 === time && (time = 5), setTimeout((function() { 440 | callback(); 441 | }), 1e3 * time); 442 | }, Core.bodyAppend = function(html) { 443 | unsafeWindow.document.body.append(html); 444 | }, Core; 445 | }(); 446 | !function() { 447 | function Env() {} 448 | Env.Sign = "None"; 449 | }(); 450 | !function(LogLevel) { 451 | LogLevel[LogLevel.debug = 0] = "debug", LogLevel[LogLevel.info = 1] = "info", LogLevel[LogLevel.warn = 2] = "warn", 452 | LogLevel[LogLevel.error = 3] = "error"; 453 | }(LogLevel || (LogLevel = {})); 454 | var Logger = function() { 455 | function Logger() {} 456 | return Logger.log = function(msg, level) { 457 | for (var data = [], _i = 2; _i < arguments.length; _i++) data[_i - 2] = arguments[_i]; 458 | data.forEach((function(e) { 459 | e.forEach((function(ee) {})); 460 | })); 461 | }, Logger.debug = function(msg) { 462 | for (var data = [], _i = 1; _i < arguments.length; _i++) data[_i - 1] = arguments[_i]; 463 | this.log(msg, LogLevel.debug, data); 464 | }, Logger.info = function(msg) { 465 | this.log(msg, LogLevel.info); 466 | }, Logger.warn = function(msg) { 467 | this.log(msg, LogLevel.warn); 468 | }, Logger.error = function(msg) { 469 | this.log(msg, LogLevel.error); 470 | }, Logger; 471 | }(), AppBase = function() { 472 | function AppBase() { 473 | var _this = this; 474 | this.Process = function() { 475 | _this.loader(), _this.run(); 476 | }; 477 | } 478 | return AppBase.prototype.unique = function() { 479 | return this._unique; 480 | }, AppBase.prototype.linkTest = function(url) { 481 | var _this = this; 482 | url || (url = Core.url); 483 | var flag = !1; 484 | return this.rules.forEach((function(v, k) { 485 | v.some((function(r) { 486 | if (r.test(url)) return Logger.debug("app:".concat(_this.appName, "_").concat(SiteEnum[k], " test pass")), 487 | flag = !0, _this.site = k, !0; 488 | })), Logger.warn("app:".concat(_this.appName, " test end")); 489 | })), flag; 490 | }, AppBase.prototype.getAppName = function() { 491 | return this.appName; 492 | }, AppBase; 493 | }(), CsdnApp = function(_super) { 494 | function CsdnApp() { 495 | var _this = null !== _super && _super.apply(this, arguments) || this; 496 | return _this.appName = "Csdn", _this.rules = new Map([ [ SiteEnum.CSDN, [ /blog\.csdn\.net/i ] ] ]), 497 | _this._unique = !1, _this; 498 | } 499 | return __extends(CsdnApp, _super), CsdnApp.prototype.loader = function() {}, CsdnApp.prototype.run = function() { 500 | Core$1.background(this.adsClear, 3), this.commentClear(), this.articleClean(); 501 | }, CsdnApp.prototype.adsClear = function() { 502 | CsdnApp.adSelectors.forEach((function(selector) { 503 | $(selector).remove(); 504 | })); 505 | }, CsdnApp.prototype.commentClear = function() { 506 | Core$1.lazyload((function() { 507 | Logger$1.info("\u8bc4\u8bba\u533a\u6e05\u7406"), $(".comment-list-box").css("overflow", "").css("max-height", ""), 508 | $("#commentPage").removeClass("d-none"), $("#btnMoreComment").remove(); 509 | }), 3); 510 | }, CsdnApp.prototype.articleClean = function() { 511 | Logger$1.info("\u6587\u7ae0\u533a\u6e05\u7406"), $("#article_content").removeAttr("style"), 512 | $(".hide-article-box").remove(); 513 | }, CsdnApp.adSelectors = [ "#footerRightAds", ".side-question-box", "div[id^='dmp_ad']", "div[class^='ad_']", "div[id^='floor-ad_']", ".adsbygoogle" ], 514 | CsdnApp; 515 | }(AppBase), container = new Map, Ioc = function() { 516 | function Ioc() {} 517 | return Ioc.register = function(app) { 518 | var className = app.name.toLowerCase(); 519 | return container.has(className) ? container.get(className) : className ? (container.set(className, window.Reflect.construct(app, [])), 520 | container.get(className)) : void 0; 521 | }, Ioc; 522 | }(), Config = function() { 523 | function Config() {} 524 | return Object.defineProperty(Config, "env", { 525 | get: function() { 526 | return GM_info; 527 | }, 528 | enumerable: !1, 529 | configurable: !0 530 | }), Config.get = function(key, defaultValue) { 531 | void 0 === defaultValue && (defaultValue = ""); 532 | var objStr = GM_getValue(this.encode(key), null); 533 | if (objStr) { 534 | var obj = JSON.parse(objStr); 535 | if (-1 == obj.exp || obj.exp > (new Date).getTime()) return obj.value; 536 | GM_deleteValue(key); 537 | } 538 | return defaultValue; 539 | }, Config.set = function(key, v, exp) { 540 | void 0 === exp && (exp = -1); 541 | var obj = { 542 | key: key, 543 | value: v, 544 | exp: -1 == exp ? exp : (new Date).getTime() + 1e3 * exp 545 | }; 546 | GM_setValue(this.encode(key), JSON.stringify(obj)); 547 | }, Config.remember = function(key, exp, callback) { 548 | var _this = this; 549 | return new Promise((function(reso, reject) { 550 | var v = _this.get(key, null); 551 | null == v || "" === v ? callback().then((function(res) { 552 | _this.set(key, res, exp), reso(res); 553 | })).catch((function(e) { 554 | reject(e); 555 | })) : reso(v); 556 | })); 557 | }, Config.clear = function(key) { 558 | GM_deleteValue(key); 559 | }, Config.decode = function(str) { 560 | return atob(str); 561 | }, Config.encode = function(str) { 562 | return btoa(str); 563 | }, Config.inc = function(s) { 564 | var v = Config.get(s, 0); 565 | v++, Config.set(s, v); 566 | }, Config; 567 | }(), GmMenu = function() { 568 | function GmMenu() {} 569 | return GmMenu.Register = function(name, callback, showUse) { 570 | void 0 === showUse && (showUse = !0); 571 | var k = encodeURIComponent("app_use_" + name); 572 | showUse && (name = "\ud83d\ude80" + name + "(\u4f7f\u7528\u7edf\u8ba1:" + Config.get(k, 0) + ")"), 573 | GM_registerMenuCommand(name, (function() { 574 | showUse && Config.inc(k), callback(); 575 | })); 576 | }, GmMenu; 577 | }(), MagnetRegApp = function(_super) { 578 | function MagnetRegApp() { 579 | var _this = null !== _super && _super.apply(this, arguments) || this; 580 | return _this._unique = !1, _this.appName = "Magnet", _this.rules = new Map([ [ SiteEnum.All, [ /.*/i ] ] ]), 581 | _this; 582 | } 583 | return __extends(MagnetRegApp, _super), MagnetRegApp.prototype.loader = function() {}, 584 | MagnetRegApp.prototype.run = function() { 585 | GmMenu.Register("\u63d0\u53d6\u78c1\u529b", (function() { 586 | for (var m, reg = /magnet:\?xt=urn:btih:[0-9a-fA-F]{40}/gm, magnets = []; null != (m = reg.exec(unsafeWindow.document.body.innerText)); ) m.index === reg.lastIndex && reg.lastIndex++, 587 | m.forEach((function(match, groupIndex) { 588 | magnets.push(match); 589 | })); 590 | if (magnets.length > 0) { 591 | var newMagnets = magnets.filter((function(e, i) { 592 | return magnets.indexOf(e) === i; 593 | })); 594 | Swal__default.default.fire({ 595 | title: "\u78c1\u529b\u96c6", 596 | input: "textarea", 597 | inputValue: newMagnets.join("\r"), 598 | confirmButtonColor: "#3085d6", 599 | cancelButtonColor: "#d33", 600 | confirmButtonText: "\u6211\u597d\u4e86" 601 | }); 602 | } else Swal__default.default.fire({ 603 | toast: !0, 604 | position: "top", 605 | showConfirmButton: !1, 606 | timerProgressBar: !0, 607 | title: "\u4ec0\u4e48\u4e5f\u6ca1\u63d0\u53d6\u5230", 608 | icon: "warning", 609 | timer: 2e3 610 | }); 611 | })); 612 | }, MagnetRegApp; 613 | }(AppBase), Str = function() { 614 | function Str() {} 615 | return Str.trim = function(source, char) { 616 | return source.replace(new RegExp("^\\" + char + "+|\\" + char + "+$", "g"), ""); 617 | }, Str; 618 | }(), Http = function() { 619 | function Http() {} 620 | return Http.ajax = function(option, header) { 621 | var _a; 622 | void 0 === header && (header = new Map); 623 | var head = new HttpHeaders; 624 | head["User-Agent"] = null !== (_a = null === navigator || void 0 === navigator ? void 0 : navigator.userAgent) && void 0 !== _a ? _a : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114", 625 | head.Accept = "application/atom+xml,application/xml,text/xml,application/json,text/plain,*/*", 626 | (null == header ? void 0 : header.size) > 0 && header.forEach((function(v, k) { 627 | head[k] = v; 628 | })), Logger.debug("http head info:", head), option.headers || (option.headers = head); 629 | try { 630 | GM_xmlhttpRequest(option); 631 | } catch (e) { 632 | Logger.error(e); 633 | } 634 | }, Http.getFormData = function(data) { 635 | if (data instanceof Map) { 636 | var fd_1 = new FormData; 637 | data.forEach((function(v, k) { 638 | var _v; 639 | _v = "string" == typeof v ? v.toString() : JSON.stringify(v), fd_1.append(k, _v); 640 | })), data = fd_1; 641 | } 642 | return data; 643 | }, Http._getData = function(data, contentType) { 644 | if (void 0 === contentType && (contentType = "json"), data instanceof Map) { 645 | var fd_2 = new FormData; 646 | data.forEach((function(v, k) { 647 | fd_2.append(k, v); 648 | })), data = fd_2; 649 | } 650 | var res = ""; 651 | if ("json" == contentType) { 652 | var obj_1 = Object.create(null); 653 | data.forEach((function(k, v) { 654 | obj_1[v] = k; 655 | })), res = JSON.stringify(obj_1); 656 | } else data.forEach((function(k, v) { 657 | res += "".concat(v, "=").concat(encodeURIComponent(k.toString()), "&"); 658 | })), res = Str.trim(res, "&"); 659 | return res; 660 | }, Http.post = function(url, data, contentType, timeOut) { 661 | return void 0 === timeOut && (timeOut = 10), new Promise((function(resolve, reject) { 662 | Http.ajax({ 663 | url: url, 664 | method: "POST", 665 | data: Http.getFormData(data), 666 | timeout: 1e3 * timeOut, 667 | onload: function(response) { 668 | var _a; 669 | try { 670 | var res = null !== (_a = JSON.parse(response.responseText)) && void 0 !== _a ? _a : response.responseText; 671 | resolve(res); 672 | } catch (error) { 673 | Logger.debug(error), reject(); 674 | } 675 | }, 676 | onerror: function(response) { 677 | reject(response); 678 | }, 679 | ontimeout: function() { 680 | reject("\u8bf7\u6c42\u8d85\u65f6"); 681 | } 682 | }); 683 | })); 684 | }, Http.get = function(url, data, head, time_out) { 685 | return void 0 === head && (head = new Map), void 0 === time_out && (time_out = 10), 686 | new Promise((function(resolve, reject) { 687 | Http.ajax({ 688 | url: url, 689 | method: "GET", 690 | timeout: 1e3 * time_out, 691 | onload: function(response) { 692 | var _a; 693 | try { 694 | var res = null !== (_a = JSON.parse(response.responseText)) && void 0 !== _a ? _a : response.responseText; 695 | resolve(res); 696 | } catch (error) { 697 | Logger.debug(error), reject(); 698 | } 699 | }, 700 | onerror: function(response) { 701 | reject(response); 702 | }, 703 | ontimeout: function() { 704 | reject("\u8bf7\u6c42\u8d85\u65f6"); 705 | } 706 | }, head); 707 | })); 708 | }, Http; 709 | }(), HttpHeaders = function HttpHeaders() {}, ScriptsFind = function(_super) { 710 | function ScriptsFind() { 711 | var _this = null !== _super && _super.apply(this, arguments) || this; 712 | return _this._unique = !1, _this.appName = "ScriptsFind", _this.rules = new Map([ [ SiteEnum.All, [ /.*/i ] ] ]), 713 | _this; 714 | } 715 | return __extends(ScriptsFind, _super), ScriptsFind.prototype.loader = function() {}, 716 | ScriptsFind.prototype.run = function() { 717 | return __awaiter$1(this, void 0, Promise, (function() { 718 | var domain, data; 719 | return __generator$1(this, (function(_a) { 720 | switch (_a.label) { 721 | case 0: 722 | return domain = unsafeWindow.window.location.host, null != (data = Config.get("scriptscat_query_" + domain, null)) ? [ 3, 2 ] : [ 4, Http.get("https://scriptcat.org/api/v2/scripts?domain=" + domain) ]; 723 | 724 | case 1: 725 | data = _a.sent(), Config.set("scriptscat_query_" + domain, data, 7200), _a.label = 2; 726 | 727 | case 2: 728 | return GmMenu.Register("\u5f53\u524d\u7f51\u7ad9\u53ef\u7528\u811a\u672c:" + data.data.total, (function() { 729 | GM_openInTab("https://scriptcat.org/search?keyword=" + domain, { 730 | active: !0 731 | }); 732 | })), [ 2 ]; 733 | } 734 | })); 735 | })); 736 | }, ScriptsFind; 737 | }(AppBase), Hook = function() { 738 | function Hook() {} 739 | return Hook.HookHidden = function(v) { 740 | Object.defineProperty(window.document, "hidden", { 741 | value: v 742 | }), null == window.webkitHidden && (window.webkitHidden = !1), Object.defineProperty(window.document, "webkitHidden", { 743 | value: v 744 | }); 745 | }, Hook.hookVisibility = function(v) { 746 | Object.defineProperty(window.document, "visibilityState", { 747 | value: v 748 | }); 749 | }, Hook.hookXmlHttpRequest = function(condition, callback) { 750 | XMLHttpRequest.prototype._open = XMLHttpRequest.prototype.open, XMLHttpRequest.prototype.open = function() { 751 | for (var args = [], _i = 0; _i < arguments.length; _i++) args[_i] = arguments[_i]; 752 | var _a = __read(args, 2), method = _a[0], url = _a[1]; 753 | condition(method, url, this) && callback(this), this._open.apply(this, __spread(args)); 754 | }; 755 | }, Hook; 756 | }(), FeiShuDocApp = function(_super) { 757 | function FeiShuDocApp() { 758 | var _this = null !== _super && _super.apply(this, arguments) || this; 759 | return _this._unique = !1, _this.appName = "\u98de\u4e66\u6587\u6863\u590d\u5236", 760 | _this.rules = new Map([ [ SiteEnum.FeiShuDoc, [ /bytedance\.feishu\.cn/i, /feishu\.cn\/docx/i, /feishu\.cn\/sheets/i, /feishu\.cn\/wiki/i ] ] ]), 761 | _this; 762 | } 763 | return __extends(FeiShuDocApp, _super), FeiShuDocApp.prototype.loader = function() { 764 | Logger$1.debug("\u98de\u4e66\u6587\u6863hook"), Hook.hookXmlHttpRequest((function(method, url, xml) { 765 | return url.includes("space/api/suite/permission/document/actions/state/") && "POST" == method; 766 | }), (function(xml) { 767 | xml.addEventListener("readystatechange", (function() { 768 | var _a; 769 | if (4 === xml.readyState) { 770 | var response = xml.response; 771 | try { 772 | response = JSON.parse(response); 773 | } catch (e) {} 774 | Logger$1.debug("\u98de\u4e66\u62e6\u622a:response"), Logger$1.debug(response), 1 !== (null === (_a = response.data.actions) || void 0 === _a ? void 0 : _a.copy) && (response.data.actions.copy = 1, 775 | response.data.actions.duplicate = 1, response.data.actions.export = 1, Object.defineProperty(xml, "response", { 776 | get: function() { 777 | return response; 778 | } 779 | }), Object.defineProperty(xml, "responseText", { 780 | get: function() { 781 | return JSON.stringify(response); 782 | } 783 | })); 784 | } 785 | }), !1); 786 | })); 787 | }, FeiShuDocApp.prototype.run = function() {}, FeiShuDocApp; 788 | }(AppBase), RightClickFreeApp = function(_super) { 789 | function RightClickFreeApp() { 790 | var _this = null !== _super && _super.apply(this, arguments) || this; 791 | return _this._unique = !1, _this.appName = "\u53f3\u952e\u9650\u5236\u89e3\u9664", 792 | _this.rules = new Map([ [ SiteEnum.All, [ /.*/i ] ] ]), _this; 793 | } 794 | return __extends(RightClickFreeApp, _super), RightClickFreeApp.prototype.loader = function() {}, 795 | RightClickFreeApp.prototype.run = function() { 796 | GmMenu.Register("\u89e3\u9664\u53f3\u952e\u9650\u5236", (function() { 797 | RightClickFreeApp.rcFree(); 798 | })); 799 | }, RightClickFreeApp.rcFree = function() { 800 | function t(e) { 801 | e.stopPropagation(), e.stopImmediatePropagation && e.stopImmediatePropagation(); 802 | } 803 | document.querySelectorAll("*").forEach((function(e) { 804 | "none" === window.getComputedStyle(e, null).getPropertyValue("user-select") && e.style.setProperty("user-select", "text", "important"); 805 | })), [ "copy", "cut", "contextmenu", "selectstart", "mousedown", "mouseup", "mousemove", "keydown", "keypress", "keyup" ].forEach((function(e) { 806 | document.documentElement.addEventListener(e, t, { 807 | capture: !0 808 | }); 809 | })), Swal__default.default.fire({ 810 | toast: !0, 811 | position: "top", 812 | showConfirmButton: !1, 813 | timerProgressBar: !0, 814 | title: "\u9650\u5236\u89e3\u9664\u6210\u529f", 815 | icon: "warning", 816 | timer: 2e3 817 | }); 818 | }, RightClickFreeApp; 819 | }(AppBase), AdBlockApp = function(_super) { 820 | function AdBlockApp() { 821 | var _this = null !== _super && _super.apply(this, arguments) || this; 822 | return _this._unique = !1, _this.appName = "AdBlock", _this.rules = new Map([ [ SiteEnum.Juhaowan, [ /www\.juhaowan\.club/i ] ], [ SiteEnum.MhXin, [ /mhxin\.com\/manhua/i ] ] ]), 823 | _this.rule = [ { 824 | site: SiteEnum.CSDN, 825 | selector: [ ".__zy_flash" ] 826 | }, { 827 | site: SiteEnum.MhXin, 828 | hook: [ "tg.wmqfey.com/sc/6276", "diy.dcqs4.com/sh/to/1380", "diy.wcdc5.com/sh/to/1381", "tc.6tofsu.com:8001/d/6276", "tpic.kszvmqo.cn/2021/12/31155849600.txt" ] 829 | } ], _this; 830 | } 831 | return __extends(AdBlockApp, _super), AdBlockApp.prototype.loader = function() {}, 832 | AdBlockApp.prototype.run = function() { 833 | var that = this; 834 | that.rule.forEach((function(item) { 835 | var _a, _b; 836 | item.site === that.site && (null === (_a = item.selector) || void 0 === _a || _a.forEach((function(selector) { 837 | setInterval((function() { 838 | $(selector).remove(); 839 | }), 1e3); 840 | })), (null === (_b = item.hook) || void 0 === _b ? void 0 : _b.length) && Hook.hookXmlHttpRequest((function(method, url, xml) { 841 | for (var _a, _b, i = 0; null !== (_b = i < (null === (_a = item.hook) || void 0 === _a ? void 0 : _a.length)) && void 0 !== _b && _b; i++) if (url.includes(item.hook[i])) return !0; 842 | return !1; 843 | }), (function(xml) { 844 | xml.addEventListener("readystatechange", (function() { 845 | 4 === xml.readyState && (Object.defineProperty(xml, "response", { 846 | get: function() { 847 | return ""; 848 | } 849 | }), Object.defineProperty(xml, "responseText", { 850 | get: function() { 851 | return ""; 852 | } 853 | })); 854 | }), !1); 855 | }))); 856 | })); 857 | }, AdBlockApp; 858 | }(AppBase), CommonFeature = function(_super) { 859 | function CommonFeature() { 860 | var _this = null !== _super && _super.apply(this, arguments) || this; 861 | return _this._unique = !1, _this.appName = "CommonFeature", _this.rules = new Map([ [ SiteEnum.All, [ /.*/i ] ] ]), 862 | _this; 863 | } 864 | return __extends(CommonFeature, _super), CommonFeature.prototype.loader = function() {}, 865 | CommonFeature.prototype.run = function() { 866 | GmMenu.Register("\u5f00\u542f\u7f51\u9875\u7f16\u8f91", (function() { 867 | unsafeWindow.document.body.contentEditable = "true", unsafeWindow.document.designMode = "on"; 868 | })); 869 | }, CommonFeature; 870 | }(AppBase); 871 | function createButton(props) { 872 | var children = props.children, _a = props.className, className = void 0 === _a ? "" : _a, _b = props.type, type = void 0 === _b ? "button" : _b, _c = props.tag, tag = void 0 === _c ? "button" : _c, $button = $("<" + tag + ' class="normal button ' + className + '">' + children + ""); 873 | return "button" === tag && $button.prop("type", type), $button; 874 | } 875 | styleInject(".nodeseek-topic-preview-btn{background-color:#e2e8f0;border:none;border-color:initial;border-image:initial;border-radius:3px;color:#64748b;cursor:pointer;font-size:13px;outline:none;visibility:hidden}.post-list-item:hover .nodeseek-topic-preview-btn{visibility:visible}.nodeseek-topic-actions{display:inline-flex;gap:2px 10px;pointer-events:auto;position:relative;z-index:2}"); 876 | styleInject("body .button.normal,body .button.super{align-items:center;background:#f1f5f9;border:none;border-color:initial;border-image:initial;border-radius:6px;box-shadow:0 1.8px 0 e2e8f0,0 1.8px 0 #f1f5f9;color:#64748b;cursor:pointer;display:inline-flex;font-family:inherit;font-size:14px;font-weight:500;gap:5px;height:28px;line-height:28px;outline:none;padding:0 12px;position:relative;text-shadow:none;transition:color .25s,background-color .25s,box-shadow .25s;user-select:none;white-space:nowrap}body .button.normal:is(:hover:enabled,:active:enabled),body .button.super:is(:hover:enabled,:active:enabled){background:#e2e8f0;border:none initial;border-color:initial;border-image:initial;box-shadow:0 1.8px 0 #cbd5e1,0 1.8px 0 #f1f5f9;color:#475569;font-weight:500;text-shadow:none}.one-modal-mask{background-color:rgba(0,0,0,.25);inset:0;overflow:hidden;overflow-y:auto;padding:min(2vh,60px);position:fixed;z-index:888}.one-modal-main{border-radius:10px;box-sizing:border-box;flex-direction:column;height:100%;margin:0 auto;overflow:hidden;position:relative;width:800px}.one-modal-header,.one-modal-main{background-color:#fff;display:flex}.one-modal-header{align-items:center;border-bottom:1px solid #e2e8f0;gap:0 20px;padding:15px 20px 20px}.one-modal-title{font-size:16px;font-weight:700;overflow:hidden;padding:2px 0;text-overflow:ellipsis;white-space:nowrap}.one-modal-actions{align-items:center;display:flex;gap:0 10px;margin-left:auto}.one-modal-content{flex:1}#Main.one-topic-preview>.box{border:none;box-shadow:none}.one-modal-comments{inset:0;overflow-y:auto;padding:0 20px;position:absolute;visibility:hidden}.one-modal-comments.one-tab-content-active{visibility:visible;z-index:20}.one-modal-comment-tabs{align-items:center;background-color:var(--button-background-color);border-radius:4px;display:flex;font-size:14px;font-weight:400;gap:4px;padding:4px 5px}.one-modal-comment-tabs>[data-tab-key]{border-radius:4px;cursor:pointer;padding:4px 5px}.one-modal-comment-tabs>[data-tab-key]:hover{background-color:var(--one-color-button-background-hover)}.one-modal-comment-tabs>[data-tab-key].one-tab-active{background-color:var(--one-color-accent-100);color:var(--one-color-foreground)}.one-modal-content{flex:1 1 0%;outline:none;overflow-y:auto;overflow:hidden;overscroll-behavior-y:contain;position:relative;width:100%}.one-topic-preview-frame{border:none initial;border-color:initial;border-image:initial;height:100%;width:100%}"); 877 | var NodeSeekPreview = function(_super) { 878 | function NodeSeekPreview() { 879 | var _this = null !== _super && _super.apply(this, arguments) || this; 880 | return _this.rules = new Map([ [ SiteEnum.NodeSeekCategory, [ /nodeseek\.com\/categories/i ] ] ]), 881 | _this._unique = !1, _this.appName = "NodeSeekPreview", _this; 882 | } 883 | return __extends(NodeSeekPreview, _super), NodeSeekPreview.prototype.loader = function() {}, 884 | NodeSeekPreview.prototype.run = function() { 885 | this.InitList(); 886 | }, NodeSeekPreview.prototype.InitList = function() { 887 | var $detailBtn = createButton({ 888 | children: "\u8fdb\u5165\u4e3b\u9898", 889 | className: "special", 890 | tag: "a" 891 | }), modal = function createModal(props) { 892 | var mouseDownTarget, root = props.root, title = props.title, onMount = props.onMount, onOpen = props.onOpen, onClose = props.onClose, $mask = $('
'), $content = $('
'), $closeBtn = createButton({ 893 | children: "\u5173\u95edEsc", 894 | className: "one-modal-close-btn" 895 | }), $title = $('
' + (null != title ? title : "") + "
"), $actions = $('
').append($closeBtn), $header = $('
').append($title, $actions), $main = $('
').append($header, $content).on("click", (function(ev) { 896 | ev.stopPropagation(); 897 | })), $container = $mask.append($main).hide(), modalElements = { 898 | $mask: $mask, 899 | $main: $main, 900 | $header: $header, 901 | $container: $container, 902 | $title: $title, 903 | $actions: $actions, 904 | $content: $content 905 | }, boundEvent = !1, mouseDownHandler = function(ev) { 906 | mouseDownTarget = ev.target; 907 | }, mouseUpHandler = function(ev) { 908 | mouseDownTarget === $mask.get(0) && ev.target === $mask.get(0) && ev.currentTarget === ev.target && handleModalClose(); 909 | }, keyupHandler = function(ev) { 910 | "Escape" === ev.key && handleModalClose(); 911 | }, handleModalClose = function() { 912 | $mask.off("mousedown", mouseDownHandler), $mask.off("mouseup", mouseUpHandler), 913 | $(document).off("keydown", keyupHandler), boundEvent = !1, $container.fadeOut("fast"), 914 | document.body.classList.remove("one-modal-open"), null == onClose || onClose(modalElements); 915 | }; 916 | return $closeBtn.on("click", handleModalClose), null == onMount || onMount(modalElements), 917 | root && root.append($container), __assign(__assign({}, modalElements), { 918 | open: function() { 919 | setTimeout((function() { 920 | boundEvent || ($mask.on("mousedown", mouseDownHandler), $mask.on("mouseup", mouseUpHandler), 921 | $(document).on("keydown", keyupHandler), boundEvent = !0); 922 | })), $container.fadeIn("fast"), document.body.classList.add("one-modal-open"), null == onOpen || onOpen(modalElements); 923 | }, 924 | close: handleModalClose 925 | }); 926 | }({ 927 | root: $("body"), 928 | onMount: function(_a) { 929 | _a.$actions.prepend($detailBtn); 930 | }, 931 | onClose: function(_a) { 932 | var $title = _a.$title, $content = _a.$content; 933 | $title.empty(), $content.empty(); 934 | } 935 | }), btn = $(''), list = $(".post-title a"); 936 | Logger$1.debug("NodeSeekPreview list:" + list.length), list.each((function(i, e) { 937 | var relativeUrl = $(e).attr("href"); 938 | Logger$1.debug("NodeSeekPreview relativeUrl:" + relativeUrl); 939 | var absoluteUrl = new URL(relativeUrl, unsafeWindow.window.location.origin), title = $(e).text(); 940 | btn.clone().on("click", (function() { 941 | Logger$1.debug("NodeSeekPreview click"), modal.open(), Logger$1.debug("NodeSeekPreview open:" + absoluteUrl.href), 942 | modal.$title.html(title), modal.$content.html(''); 943 | })).appendTo($(e).parent()); 944 | })); 945 | }, NodeSeekPreview; 946 | }(AppBase), One = function() { 947 | function One() { 948 | this.services = [ Ioc.register(CommonFeature), Ioc.register(CsdnApp), Ioc.register(NodeSeekPreview), Ioc.register(MagnetRegApp), Ioc.register(FeiShuDocApp), Ioc.register(RightClickFreeApp), Ioc.register(AdBlockApp), Ioc.register(ScriptsFind) ]; 949 | } 950 | return One.prototype.run = function() { 951 | this.services.every((function(element) { 952 | return !element.linkTest() || (new Promise((function(resolve) { 953 | resolve(1); 954 | })).then(element.Process), Logger.debug("element unique:" + element.unique()), !element.unique()); 955 | })); 956 | }, One; 957 | }(); 958 | (new One).run(), exports.One = One, Object.defineProperty(exports, "__esModule", { 959 | value: !0 960 | }); 961 | })); 962 | -------------------------------------------------------------------------------- /One_README.MD: -------------------------------------------------------------------------------- 1 |

【ONE】懒人神器

2 | 3 | 本脚本可安装于支持 Tampermonkey 或 暴力猴扩展的浏览器,包括但不限于Chrome,360,QQ,UC等。 4 | 5 |

6 | release 7 | tampermonkey 8 | chrome 9 | safari 10 | platform 11 |

12 | 13 | ## 🔧 [插件功能(点我查看详情)](https://wiki.wandhi.com/zh-cn/Feature.html) 14 | 15 | * ✅ 右键菜单限制解除 16 | * ✅ 飞书文档复制解除 17 | * ✅ 脚本猫可用脚本查询 18 | * ✅ CSDN页面清洁 19 | * ✅ 页面磁力链接提取 20 | * ✅ Nodeseek站点弹窗预览 21 | 22 | ![6otxWw2GDjMVNSK](https://s2.loli.net/2023/03/10/6otxWw2GDjMVNSK.png) 23 | 24 | > 插件初期阶段,功能迭代完善中 25 | 26 | **插件有问题请及时反馈** 27 | 28 | 如果你有好的建议或想法,欢迎提供 29 | 30 | **感谢支持** 31 | 32 | ### [Github:https://github.com/maxzhang666/OneKeyVip](https://github.com/maxzhang666/OneKeyVip) 33 | 34 | ### [Gitee:https://gitee.com/ixysy/OneKeyVip](https://gitee.com/ixysy/OneKeyVip) 35 | 36 | ## 📜 反馈说明 37 | 38 | > 反馈问题请按照以下格式进行: 39 | 40 | > 反馈时请给予“**Good**!”评价,并附上需要支持的网址,以及你所期望的需求! 41 | 42 | ### 问题网址(**重要**): 43 | 44 | ### 问题描述(**重要**): 45 | 46 | ### 问题图片(**重要**): 47 | 48 | 最后,反馈时请给予“**Good**!”评价,并附上需要支持的网址,以及你所期望的需求! 49 | 50 | ## 💩 交流群 51 | 52 | ### 一群[**340569308**](http://shang.qq.com/wpa/qunwpa?idkey=7fc3fef0db96421305e65c41cc081ffeca507fdc23cab93d731277be829985ec) [**一键加群**](http://shang.qq.com/wpa/qunwpa?idkey=7fc3fef0db96421305e65c41cc081ffeca507fdc23cab93d731277be829985ec) 53 | 54 | ### 二群[**655341576**](https://shang.qq.com/wpa/qunwpa?idkey=dd0275fbf9149b71e4f2f4e44902b552c846e9a2234f68eaca35a442510f061b) [**一键加群**](https://shang.qq.com/wpa/qunwpa?idkey=dd0275fbf9149b71e4f2f4e44902b552c846e9a2234f68eaca35a442510f061b) 55 | 56 | ### 三群[**722457505**](//shang.qq.com/wpa/qunwpa?idkey=a12d43edc065daad3043ca272a0eb9332ecd878f2921683c51e9d4e02554c80f) 暗号:玩的嗨 57 | 58 | ### TG [猛击加入](//t.me/joinchat/fDZTZfGWE_9lYTFl) 59 | 60 | > 有问题可以加群反馈或在网站留言,修复更及时 61 | 62 | ## 📖 常见问题 63 | 64 | [**点我查看**](https://wiki.wandhi.com/zh-cn/Faq.html) 65 | 66 | # 功能说明 67 | 68 | > 温馨提示:除特殊说明外,大部分功能的使用方式都为页面内弹出Vip按钮方式 69 | 70 | ## CSDN页面广告清理 71 | 72 | > 还你一个干净的阅读体验 73 | 74 | ## 🔔 更新历史 75 | 76 |
77 | 展开 78 |
79 | 
    80 |
  • 1.1.1 飞书文档复制修复
  • 81 |
  • 1.0.1 页面磁力链接提取
  • 82 |
  • 1.0.0 CSDN页面清理
  • 83 |
84 |
85 | 86 |
87 | 88 | ## 💕 友情捐助 89 | 90 |

91 | 友情捐助 92 |

93 | -------------------------------------------------------------------------------- /README.MD: -------------------------------------------------------------------------------- 1 |

一键Vip解析工具箱

2 | 3 | 本脚本可安装于支持 Tampermonkey 或 暴力猴扩展的浏览器,包括但不限于Chrome,360,QQ,UC等。 4 | 5 |

6 | release 7 | ScriptCat 8 | tampermonkey 9 | chrome 10 | safari 11 | platform 12 |

13 | 14 | # 🤩🤩🤩重要说明🤩🤩🤩 15 | > 近期受MV3规则影响导致脚本失效 16 | > 17 | > 大量用户反馈脚本失效的问题,请参照如下教程开启”开发者模式“恢复脚本功能 18 | > 19 | > [**点击查看教程**](https://wiki.wandhi.com/zh-cn/Faq.html#_12-mv3%E8%A7%84%E5%88%99%E4%B8%8B%E7%9A%84%E5%BD%B1%E5%93%8D-%E5%BC%80%E5%90%AF%E5%BC%80%E5%8F%91%E8%80%85%E6%A8%A1%E5%BC%8F) 20 | 21 | 22 | ## 💕京东、淘宝活动导购群 推荐 23 | 24 | 👉[点我](https://qm.qq.com/q/6c34zSGkuc) 25 | 👈或使用手机QQ扫码加群(禁言) 26 | 27 | 垃圾佬 28 | 垃圾佬 29 | 垃圾佬 30 | 31 | ## 版本号说明 32 | 33 | ![x2TF67](https://cdn.jsdelivr.net/gh/maxzhang666/assets@master/img/2022/02/22/x2TF67.png)[](https://) 34 | 35 | ## 💩 交流群 **有任何问题都可以加群反馈或在网站留言,修复更及时** 36 | 37 | ### TG [猛击加入](//t.me/joinchat/fDZTZfGWE_9lYTFl) 38 | 39 | ### 四群[**137750146**](http://qm.qq.com/cgi-bin/qm/qr?k=gUbyjh9xrnskBWGYm-9DbnJqWBZOpcva&jump_from=webapi&authKey=5ci2KE+i56fFxxCVrj2Wkj4D3D7aKphITW07QdHls771upOyVT/06ekBgrNUZKeF) [**一键加群**](http://qm.qq.com/cgi-bin/qm/qr?k=gUbyjh9xrnskBWGYm-9DbnJqWBZOpcva&jump_from=webapi&authKey=5ci2KE+i56fFxxCVrj2Wkj4D3D7aKphITW07QdHls771upOyVT/06ekBgrNUZKeF) 40 | 41 | ### 三群[**722457505**](http://shang.qq.com/wpa/qunwpa?idkey=a12d43edc065daad3043ca272a0eb9332ecd878f2921683c51e9d4e02554c80f) 42 | 43 | ### 二群[**655341576**](https://shang.qq.com/wpa/qunwpa?idkey=dd0275fbf9149b71e4f2f4e44902b552c846e9a2234f68eaca35a442510f061b)**已满** [**一键加群**](https://shang.qq.com/wpa/qunwpa?idkey=dd0275fbf9149b71e4f2f4e44902b552c846e9a2234f68eaca35a442510f061b) 44 | 45 | ### 一群[**340569308**](http://shang.qq.com/wpa/qunwpa?idkey=7fc3fef0db96421305e65c41cc081ffeca507fdc23cab93d731277be829985ec)**已满** [**一键加群**](http://shang.qq.com/wpa/qunwpa?idkey=7fc3fef0db96421305e65c41cc081ffeca507fdc23cab93d731277be829985ec) 46 | 47 | ### [**QQ频道**](https://qun.qq.com/qqweb/qunpro/share?_wv=3&_wwv=128&inviteCode=1U23Gb&from=181074&biz=ka)**推荐** 48 | 49 | ## 🔧 [插件功能(点我查看详情)](https://wiki.wandhi.com/zh-cn/Feature.html) 50 | 51 | * ✅ 音乐下载 52 | * ✅ 夸克网盘直链获取 53 | * ✅ 商品详情页优惠券 54 | * ✅ 商品列表页优惠券 55 | * ✅ B站视频封面获取 56 | * ✅ B站视频下载(支持分P下载) 57 | * ✅ B站视频一键三连 58 | * ✅ 商品历史价格 59 | * ✅ ~~百度文库解析~~ 60 | * ✅ CSDN页面清洁 61 | * ✅ 链接自动跳转 62 | * ✅ 内容自动展开(❤️❤️❤️待支持的网站等你提交申请❤️❤️❤️) 63 | * ✅ 阿里云盘refresh_token获取工具 64 | * ✅ YouTube视频下载 65 | * ✅ 搜索引擎快速跳转 66 | * ✅ 鼠标点击图片时放大图片 67 | * ✅ github 68 | * ✅ v2ex 69 | 70 | ## 🔥挖坑 71 | 72 | * ❎ 功能项单独的控制开关(部分实现) 73 | * ❎ 小红书无水印图片、视频 74 | * ❎ 搜索引擎跳转美化 75 | 76 | **插件有问题请及时反馈** 77 | 78 | 如果你有好的建议或想法,欢迎提供 79 | 80 | **感谢支持** 81 | 82 | ### [Github:https://github.com/maxzhang666/OneKeyVip](https://github.com/maxzhang666/OneKeyVip) 83 | 84 | ### [Gitlab:https://gitlab.com/_MaxZhang/OneKeyVip](https://gitlab.com/_MaxZhang/OneKeyVip) 85 | 86 | ### [Gitee:https://gitee.com/ixysy/OneKeyVip](https://gitee.com/ixysy/OneKeyVip) 87 | 88 | ## 📜 反馈说明 89 | 90 | > 反馈问题请按照以下格式进行: 91 | 92 | > 反馈时请给予“**Good**!”评价,并附上需要支持的网址,以及你所期望的需求! 93 | 94 | ### 问题网址(**重要**): 95 | 96 | ### 问题描述(**重要**): 97 | 98 | ### 问题图片(**重要**): 99 | 100 | 最后,反馈时请给予“**Good**!”评价,并附上需要支持的网址,以及你所期望的需求! 101 | 102 | ## 📖 常见问题 103 | 104 | [**点我查看**](https://wiki.wandhi.com/zh-cn/Faq.html) 105 | 106 | ## 🔔 更新历史 107 | 108 | [**查看**](https://wiki.wandhi.com/zh-cn/Changelog) 109 | 110 | # 功能说明 111 | 112 | > 温馨提示:除特殊说明外,大部分功能的使用方式都为页面内弹出Vip按钮方式 113 | 114 | > 功能介绍由于篇幅过长不再此处展示,请点击下方文字查看 115 | 116 | ## [插件功能(点我查看详情)](https://wiki.wandhi.com/zh-cn/Feature.html) 117 | 118 | ## 💕 友情捐助 119 | 120 |

121 | 友情捐助 122 |

123 | -------------------------------------------------------------------------------- /VERSION: -------------------------------------------------------------------------------- 1 | v4.9.48 --------------------------------------------------------------------------------