// ==UserScript==
// @name 115小助手
// @namespace https://github.com/maomao1996/tampermonkey-scripts
// @version 0.3.0
// @description 顶部链接任务入口还原、SHA1 快速查重(新页面打开)、SHA1 查重列表支持选中第一个元素
// @author maomao1996
// @include *://115.com/*
// @grant none
// @downloadURL none
// ==/UserScript==
;
(function () {
'use strict';
// 过滤非 iframe 场景
if (window.self === window.top) {
return;
}
var search = location.search;
/**
* 工具方法 - url 中是否存在某个字符串
*/
var urlHasString = function (str) { return search.indexOf(str) > -1; };
/**
* 在顶部菜单添加链接任务按钮
*/
var addLinkTaskBtn = function () {
$('#js_top_panel_box .button[menu="upload"]').after('链接任务');
};
/**
* 网盘列表 SHA1 查重
*/
var initRepeatSha1 = function () {
var addRepeatSha1Btn = function () {
$('li[file_type="1"]').each(function () {
if (!$(this).find('.repeat-sha1-btn').length) {
$(this)
.find('a[menu="public_share"]')
.after('SHA1查重');
}
});
};
var listObserver = new MutationObserver(function (mutationsList) {
mutationsList.forEach(function (_a) {
var type = _a.type;
type === 'childList' && addRepeatSha1Btn();
});
});
listObserver.observe($('#js_data_list')[0], { childList: true });
var handleRepeatSha1 = function (file_id) {
TOP.Core.MinMessage.Show({
text: '正在查找',
type: 'load',
timeout: 2e4
});
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;
TOP.Core.MinMessage.Hide();
if (state && data.length > 1) {
window.open("//115.com/?tab=sha1_repeat&file_id=" + file_id + "&mode=wangpan");
}
else {
TOP.Core.MinMessage.Show({
text: '没有重复文件',
type: 'war',
timeout: 2e3
});
}
}
});
};
$(document).on('click', '.repeat-sha1-btn', function () {
var fileId = $(this).parent().parent().attr('file_id');
fileId && handleRepeatSha1(fileId);
});
};
/**
* SHA1 查重列表(支持选中第一个元素)
*/
var initRepeatSha1List = function () {
var listObserver = new MutationObserver(function (mutationsList) {
mutationsList.forEach(function (_a) {
var type = _a.type;
if (type === 'childList') {
var $first = $('#js-list li:first-child');
if (!$first.attr('item')) {
$first.attr('item', 'file');
$first.find('i.file-type').removeProp('style');
$first
.children('.file-name-wrap')
.prepend('');
}
}
});
});
listObserver.observe($('#js-list')[0], { childList: true });
};
// 初始化
$(function () {
// 网盘列表模块
if (urlHasString('cid=')) {
// 添加链接任务入口
addLinkTaskBtn();
// SHA1 查重
initRepeatSha1();
}
// SHA1 查重列表模块
else if (urlHasString('tab=sha1_repeat')) {
initRepeatSha1List();
}
});
})();