/*! // ==UserScript== // @name 115小助手 // @namespace https://github.com/maomao1996/tampermonkey-scripts // @version 0.9.0 // @description 顶部链接任务入口还原、SHA1 快速查重(新页面打开)、SHA1 自动查重、删除空文件夹、一键搜(快捷搜索)、SHA1 查重列表支持选中第一个元素和悬浮菜单展示、搜索列表支持悬浮菜单展示 // @icon https://115.com/favicon.ico // @author maomao1996 // @include *://115.com/* // @grant GM_registerMenuCommand // @grant GM_addStyle // @grant GM_openInTab // @require https://greasyfork.org/scripts/398240-gm-config-zh-cn/code/G_zh-CN.js // @run-at document-end // @downloadURL none // ==/UserScript== */ ; (function () { 'use strict'; if (window.self === window.top || typeof TOP === 'undefined') { return; } var search = top.location.search; var MinMessage = top.Core.MinMessage; var GMConfigOptions = { id: 'Helper_Cfg', title: '115 小助手', css: '#Helper_Cfg .config_var textarea{width: 310px; height: 50px;} #Helper_Cfg .inline {padding-bottom:0px;}#Helper_Cfg .config_var {margin-left: 20px;margin-right: 20px;} #Helper_Cfg input[type="checkbox"] {margin-left: 0px;vertical-align: top;} #Helper_Cfg input[type="text"] {width: 53px;} #Helper_Cfg {background-color: lightblue;} #Helper_Cfg .reset_holder {float: left; position: relative; bottom: -1.2em;}', frameStyle: { height: '560px', width: '420px', zIndex: '13145201996' }, fields: { addTaskBtn: { section: ['', '网盘顶部菜单相关设置'], label: '网盘顶部菜单增加链接任务按钮', labelPos: 'right', type: 'checkbox', default: true }, 'autoSha1.addBtn': { section: ['', '网盘路径栏相关设置'], label: '网盘路径栏增加SHA1自动查重按钮', labelPos: 'right', type: 'checkbox', default: true, line: 'start' }, 'autoSha1.maxCount': { label: '每次最多打开的标签页数量', type: 'int', min: 1, max: 50, default: '20', line: 'end' }, addDeleteEmptyBtn: { label: '网盘路径栏增加删除空文件夹按钮', labelPos: 'right', type: 'checkbox', default: true }, addSha1Btn: { section: ['', '网盘列表悬浮菜单相关设置'], label: '悬浮菜单增加SHA1查重按钮', labelPos: 'right', type: 'checkbox', default: true }, 'quickSearch.addBtn': { label: '悬浮菜单增加一键搜按钮', labelPos: 'right', type: 'checkbox', default: true, line: 'start' }, 'quickSearch.edit': { label: '打开编辑弹窗再搜索', labelPos: 'right', type: 'checkbox', default: false }, 'quickSearch.isAll': { label: '默认搜索全部', labelPos: 'right', type: 'checkbox', default: false, line: 'end' }, 'sha1Repeat.addCheckbox': { section: ['', 'SHA1 查重列表模块(重复文件列表)'], label: '增加第一个文件选中按钮', labelPos: 'right', type: 'checkbox', default: true }, 'sha1Repeat.addMenu': { label: '列表增加悬浮菜单', labelPos: 'right', type: 'checkbox', default: true }, 'sha1Repeat.select': { label: '打开后默认选中', labelPos: 'right', type: 'checkbox', default: true }, 'search.addMenu': { section: ['', '网盘搜索列表模块'], label: '列表增加悬浮菜单', labelPos: 'right', type: 'checkbox', default: true }, joinGroup: { section: ['', '其他'], label: '加入 QQ 群', labelPos: 'right', type: 'button', click: function () { GM_openInTab('https://jq.qq.com/?_wv=1027&k=ToOoVmku', { active: true }); } }, reminder: { label: '温馨提示', labelPos: 'right', type: 'button', click: function () { alert("1. \u4E3A\u4FDD\u8BC1\u8D26\u53F7\u5B89\u5168 SHA1 \u81EA\u52A8\u67E5\u91CD \u529F\u80FD\u4F7F\u7528\u4E86\u7F13\u5B58\u673A\u5236\uFF08\u6BCF\u4E2A\u9875\u7801\u76EE\u5F55\u4E0B\u7684\u6587\u4EF6\u53EA\u4F1A\u67E5\u8BE2\u4E00\u6B21\uFF0C\u5982\u9700\u518D\u6B21\u67E5\u8BE2\u8BF7\u4F7F\u7528\u5177\u4F53\u6587\u4EF6\u7684 SHA1\u67E5\u91CD \u6309\u94AE\u6216\u5237\u65B0\u9875\u9762\u540E\u518D\u4F7F\u7528\uFF09\n2. \u811A\u672C\u8BBE\u7F6E\u4FDD\u5B58\u540E\u5C06\u4F1A\u81EA\u52A8\u5237\u65B0\u9875\u9762\n3. \u811A\u672C\u52A0\u8F7D\u6709\u6761\u4EF6\u9650\u5236\u4F1A\u9020\u6210\u8BBE\u7F6E\u5F39\u7A97\u4E0D\u5C45\u4E2D"); } } }, events: { save: function () { location.reload(); G.close(); } } }; var G = GM_config; G.init(GMConfigOptions); GM_registerMenuCommand('设置', function () { return G.open(); }); var urlHasString = function (str) { return search.indexOf(str) > -1; }; var observerChildList = function (callback, selector) { if (selector === void 0) { selector = '#js_data_list'; } var observer = new MutationObserver(function (_a) { var type = _a[0].type; type === 'childList' && callback(observer); }); var $selector = typeof selector === 'string' ? $(selector) : selector; if ($selector.length) { observer.observe($selector[0], { childList: true }); } return observer; }; var getAidCid = function () { try { var main = top.Ext.CACHE.FileMain; return main.Setting.GetActive(); } catch (e) { return { cid: 0 }; } }; var styles = [ '.mm-quick-operation{margin-left: 12px;padding: 0 6px}', '.list-contents .active::before{background: rgba(199, 237, 204, 0.7)!important;}' ].join(''); GM_addStyle(styles); var addLinkTaskBtn = function () { $('#js_top_panel_box .button[menu="upload"]').after('链接任务'); }; var handleRepeatSha1 = function (file_id, isAll) { if (isAll === void 0) { isAll = false; } return new Promise(function (resolve) { !isAll && MinMessage.Show({ text: '正在查找', type: 'load', timeout: 2e5 }); top.UA$.ajax({ url: '//webapi.115.com/files/get_repeat_sha', data: { file_id: file_id }, xhrFields: { withCredentials: !0 }, dataType: 'json', type: 'GET', success: function (_a) { var state = _a.state, data = _a.data; !isAll && MinMessage.Hide(); if (state && data.length > 1) { var sha1RepeatUrl = "//115.com/?tab=sha1_repeat&file_id=" + file_id + "&mode=wangpan"; if (G.get('sha1Repeat.select')) { sha1RepeatUrl += '&select=1'; } GM_openInTab(sha1RepeatUrl, { active: !isAll }); resolve(true); } else { !isAll && MinMessage.Show({ text: '没有重复文件', type: 'war', timeout: 2e3 }); resolve(false); } } }); }); }; var MENU_MAP = { move: "\u79FB\u52A8", edit_name: "\u91CD\u547D\u540D", delete: "\u5220\u9664", search: "\u4E00\u952E\u641C", sha1: "SHA1\u67E5\u91CD" }; var CONTROLLED_MENU = ['search', 'sha1']; var getFloatMenu = function (fileType, menuKeys, isAddWrap) { if (menuKeys === void 0) { menuKeys = CONTROLLED_MENU; } var menu = menuKeys.reduce(function (prev, key) { if (key === 'search' && G.get('quickSearch.addBtn')) { prev += MENU_MAP.search; } else if (key === 'sha1' && G.get('addSha1Btn') && fileType === '1') { prev += MENU_MAP.sha1; } else if (!CONTROLLED_MENU.includes(key)) { prev += MENU_MAP[key]; } return prev; }, ''); if (isAddWrap) { return "