@帅得惊动党中央内容提供一、脚本用途
本脚本可在百度云盘页面添加一个搜索窗口,本窗口调用API,搜索所有百度云盘公开分享的资源,便于大家查找和下载所需的分享资源。如下图中的红色矩形框内就是脚本添加的搜索窗口。
二、脚本安装方法
在暴力猴插件中新建一个空白脚本,将下面的脚本复制过去保存就是的。
本帖隐藏的内容- // ==UserScript==
- // @name 百度云盘公开分享资源搜索器
- // @namespace
- // @version 4.4.3.3
- // @description 在百度云网盘的页面添加一个搜索框,调用API搜索所有公开分享文件。
- // @require http://code.jquery.com/jquery-2.1.1.min.js
- // @description For more imformation,please email me at wang0xinzhe@gmail.com.
- // @include http://pan.baidu.com/disk/*
- // @include https://pan.baidu.com/disk/*
- // @include https://yun.baidu.com/#from=share_yun_logo/
- // @include http://yun.baidu.com/#from=share_yun_logo/
- // @grant GM_xmlhttpRequest
- // @run-at document-end
- // @copyright 2014,04,20 __By Wang Hsin-che
- // ==/UserScript==
- //////////////////////////////////////////////////////////////////////
- /////jQuery draggable plugin v0.2 by Wang Hsin-che @ 2015 04///////////////
- /////usage: $(selector).draggable({handel:'handle',msg:{},callfunction:function(){}});
- //////////////////////////////////////////////////////////////////////
- (function($) {
- $.fn.draggable = function(options) {
- var settings = $.extend({
- handle: undefined,
- msg: {},
- callfunction: function() {}
- }, options);
- var _eleFunc = function() {
- var x0, y0,
- ele = $(this),
- handle;
- handle = (settings.handle === undefined ? ele : ele.find(settings.handle).eq(0) === undefined ? ele : ele.find(settings.handle).eq(0));
- ele.css({
- position: "absolute"
- }); //make sure that the "postion" is "absolute"
- handle.bind('mousedown', function(e0) {
- handle.css({
- cursor: "move"
- }); //set the appearance of cursor
- x0 = ele.offset().left - e0.pageX; //*1
- y0 = ele.offset().top - e0.pageY; //*1
- $(document).bind('mousemove', function(e1) { //bind the mousemove event, caution:this event must be bind to "document"
- ele.css({
- left: x0 + e1.pageX,
- top: y0 + e1.pageY
- }); //this expression and the expression of *1 equal to "ele.origin_offset+mouse.current_offset-mouse.origin_offset"
- });
- $(document).one('mouseup', settings.msg, function(e) { //when the mouse up,unbind the mousemove event,bind only once
- settings.callfunction(e); //callback function
- $(document).unbind('mousemove');
- handle.css({
- cursor: "auto"
- });
- });
- });
- // 从这里开始
- };
- return this.each(_eleFunc);
- };
- })(jQuery);
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //////
- /////定义
- var SearchObject = function($, replaceEle) {
- var keyword = '',
- flag = '',
- info = '作者:Wang Hsin-che @ 2014 04;当前版本: 4.4.3.3。';
- function searchClear() {
- $('#wxz_myDiv').slideUp();
- $('#wxz_input').val('');
- keyword = '';
- $('.wxz-content').empty(); //清空原来的内容
- console.log('clear');
- }
- function search(keyword, startIndex) {
- var url;
- if (keyword === '') {
- console.log('fail');
- return 0;
- }
- console.log('search');
- switch (flag) {
- case 'repigu':
- url = 'https://repigu.com/uds/GwebSearch?rsz=filtered_cse&hl=zh_CN&cx=018177143380893153305:yk0qpgydx_e&v=1.0&key=AIzaSyCVAXiUzRYsML1Pv6RwSG1gunmMikTzQqY&q=';
- url = url + keyword + '&start=' + startIndex;
- break;
- case 'Repigu':
- url = 'https://repigu.com/search?q=';
- url = url + keyword + '+site:pan.baidu.com'+'&start=' + startIndex;
- break;
- case 'Google':
- url = 'https://www.googleapis.com/customsearch/v1element?key=AIzaSyCVAXiUzRYsML1Pv6RwSG1gunmMikTzQqY&rsz=filtered_cse&num=10&hl=en&prettyPrint=true&source=gcsc&gss=.com&sig=ee93f9aae9c9e9dba5eea831d506e69a&cx=018177143380893153305:yk0qpgydx_e&q=';
- url = url + keyword + '&start=' + startIndex;
- break;
- case 'SOSO':
- url = 'http://www.sogou.com/web?query=';
- url = url + keyword + '+site%3Apan.baidu.com' + '&page=' + parseInt(startIndex / 10, 10) + 1;
- break;
- default:
- console.log('error');
- return 0;
- }
- //显示loading条
- $('.wxz-content').html('<img src="data:image/gif;base64,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" />');
- $('#wxz_myDiv').slideDown();
- GM_xmlhttpRequest({
- method: "GET",
- url: url,
- headers: {
- "User-Agent": "Mozilla/5.0", // If not specified, navigator.userAgent will be used.
- "Accept": "text/xml" // If not specified, browser defaults will be used.
- },
- onload: function(response) {
- var
- data,
- showList,
- tempNode,
- totalPage = 1,
- totalResults;
- switch (flag) {
- case 'Google':
- data = JSON.parse(response.responseText);
- break;
- case 'repigu':
- data = mirrorToData(response.responseText);
- break;
- case 'Repigu':
- data = repiguToData(response.responseText);
- break;
- case 'SOSO':
- data = sosoToData(response.responseText);
- break;
- default:
- console.log('error');
- return 0;
- }
- totalResults = parseInt(data.cursor.estimatedResultCount, 10);
- //把json数据转为html,存入缓存showlist
- if (parseInt(data.cursor.resultCount, 10) === 0) {
- $('.wxz-content').html('<div class="loading-tips" align="center">无搜索结果...换个关键词重新试试?</div>');
- } //无结果时提示
- else {
- totalPage = parseInt((totalResults - 1) / 10, 10) + 1 > 10 ? 10 : parseInt((totalResults - 1) / 10, 10) + 1; //坑比,google自定义搜索只提供最大10页(每页10条)
- showList = "<p align='center'>数据来源:" + flag + ".com </p><p align='center' >★★★★★共为您找到有关【" + keyword + "】约" + data.cursor.resultCount + "条结果★★★★★</p><p>-------------------------------------------------------------------------------------------------------------------------------------------------<p>";
- $.each(data.results, function(index, element) {
- tempNode = '<a href="' + element.unescapedUrl + '"target="_blank">' + element.titleNoFormatting + '</a>';
- showList += '<p><p class="myTitle">' + tempNode + '</p>';
- showList += '<p class="mySnippet">' + element.contentNoFormatting + '</p>';
- });
- showList += "<p>-------------------------------------------------------------------------------------------------------------------------------------------------</p><p align='center' > ★★★★★仅为您加载了前" + data.results.length + "页★★★★★</p>";
- $('.wxz-content').html(showList); //替换原来内容,之所以用了showlist作为缓存是为了提升速度
- $('.wxz-content').scrollTop(0); //滚到顶端
- }
- addAboutInfo(info);
- pageBar(parseInt(startIndex / 10, 10) + 1, totalPage);
- data = null;
- tempNode = null;
- totalPage = null;
- totalResults = null;
- showList = null;
- },
- onerror: function() {
- $('.wxz-content').html('<div class="loading-tips" align="center">出错了......</div>');
- console.log("error");
- return 0;
- }
- });
- }
- function addAboutInfo(info) {
- var temp = '<p align="right"><a href="javascript:alert(' + "'" + info + "'" + ')" ><font color="#333">关于</font></a></p>';
- $('.wxz-content').append(temp);
- }
- function mirrorToData(text){
- var tempData=JSON.parse(text).responseData;
- var data = {
- cursor: {
- estimatedResultCount: 0,
- resultCount: 0
- },
- results: []
- };
- data.cursor.resultCount = parseInt(tempData.cursor.resultCount.replace(',', ''), 10);
- data.cursor.estimatedResultCount = data.cursor.resultCount;
- $.each(tempData.results, function(index, val) {
- var tempResult = {
- unescapedUrl: "",
- titleNoFormatting: "",
- contentNoFormatting: ""
- };
- tempResult.unescapedUrl = val.unescapedUrl;
- tempResult.titleNoFormatting = val.titleNoFormatting;
- tempResult.contentNoFormatting = val.content;
- data.results.push(tempResult);
- /* iterate through array or object */
- });
- return data;
- }
- function sosoToData(html) {
- var begin = html.search('<div id="main" class="main">'),
- end = html.search('<div class="hintBox">');
- var data = {
- cursor: {
- estimatedResultCount: 0,
- resultCount: 0
- },
- results: []
- },
- rbJquery = $(html.slice(begin, end)).find('.rb');
- $.each(rbJquery, function(index, val) {
- if (index === 0) {
- data.cursor.resultCount = parseInt($(val).find('em').text().replace(',', ''), 10);
- data.cursor.estimatedResultCount = data.cursor.resultCount;
- } else {
- var tempResult = {
- unescapedUrl: "",
- titleNoFormatting: "",
- contentNoFormatting: ""
- };
- tempResult.unescapedUrl = $(val).find("h3 a").attr('href');
- tempResult.titleNoFormatting = $(val).find("h3 a").text();
- tempResult.contentNoFormatting = $(val).find('div.ft').text();
- data.results.push(tempResult);
- }
- /* iterate through array or object */
- });
- return data;
- }
- function repiguToData(html) {
- // var begin = html.search('<div id="res">'),
- // end = html.search('<div id="foot">');
- var data = {
- cursor: {
- estimatedResultCount: 0,
- resultCount: 0
- },
- results: []
- },
- rbJquery = $(html).find('.g');
- data.cursor.resultCount = parseInt($(html).find('#resultStats').text().slice(4).replace(',', ''), 10);
- data.cursor.estimatedResultCount = data.cursor.resultCount;
- $.each(rbJquery, function(index, val) {
- var tempResult = {
- unescapedUrl: "",
- titleNoFormatting: "",
- contentNoFormatting: ""
- };
- tempResult.unescapedUrl = $(val).find("h3 a").attr('href');
- tempResult.titleNoFormatting = $(val).find("h3 a").text();
- tempResult.contentNoFormatting = $(val).find('.st').text();
- data.results.push(tempResult);
- /* iterate through array or object */
- });
- return data;
- }
- function pageBar(page, totalPage) {
- var
- html = '\
- <div class="pagese "id="wxz-pagese">\
- <a href="javascript:void(0)" class="page-prev mou-evt">上一页</a>\
- <span class="page-content"></span>\
- <a href="javascript:void(0)" class="page-next mou-evt">下一页</a>\
- </div>\
- ',
- pageNodeHtml = '<span class="page-number"></span>',
- i, c,
- startPage = 10 * parseInt((page - 1) / 10, 10) + 1;
- $('#wxz-pagese').replaceWith(html);
- c = $('#wxz-pagese').find('.page-content').eq(0);
- for (i = 0; i < 10; i++) {
- if (i + startPage > totalPage) {
- break;
- }
- if (i + startPage === page) {
- $(pageNodeHtml).html(i + startPage).addClass('global-disabled').appendTo(c);
- } else {
- $(pageNodeHtml).html(i + startPage)
- .bind('click', {
- msg: i + startPage
- }, function(e) {
- search(keyword, (e.data.msg - 1) * 10);
- })
- .appendTo(c);
- }
- }
- if (page <= 1) {
- $('#wxz-pagese').find('.page-prev').eq(0).addClass('global-disabled');
- } else {
- $('#wxz-pagese').find('.page-prev').eq(0).bind('click', {
- msg: page - 1
- }, function(event) {
- search(keyword, (event.data.msg - 1) * 10);
- });
- }
- if (page >= totalPage) {
- $('#wxz-pagese').find('.page-next').eq(0).addClass('global-disabled');
- } else {
- $('#wxz-pagese').find('.page-next').eq(0).bind('click', {
- msg: page + 1
- }, function(event) {
- search(keyword, (event.data.msg - 1) * 10);
- });
- }
- html = null;
- pageNodeHtml = null;
- i = null;
- c = null;
- startPage = null;
- }
- function setUI() {
- //根据屏幕设置div的大小位置
- var
- html_1 = '<li node-type="click-ele pos-ele" data-key="none" class="info-i show-item">\
- <div class="search-form" id="wxz_searchForm"><input class="search-query" placeholder=" 搜索公开分享文件" id="wxz_input">\
- <input type="button" value="GO" class="search-button" id="wxz_searchButton"></div></li>',
- //显示页面的html
- html_2 = '\
- <div class="b-panel b-dialog share-dialog" id="wxz_myDiv" style="z-index:99">\
- <div class="dlg-hd b-rlv" id="wxz_myDiv_title">\
- <div title="关闭" id="wxz_closeButton" class="dlg-cnr dlg-cnr-r"></div>\
- <h3 >搜索列表</h3>\
- </div>\
- <div class="wxz-content">\
- </div>\
- <div class="offline-bottom">\
- <div class="offline-pageing">\
- <div class="pagese " id="wxz-pagese">\
- </div>\
- </div>\
- </div>\
- </div>\
- ',
- html_4='<li node-type="menu-nav" data-key="searcher" class="wxz-menu info-i wxz-dropdown has-pulldown">\
- <em class="f-icon pull-arrow"></em>\
- <span node-type="username" class="name top-username" id="wxzMenuDisplay" style="width: auto;">'+flag+'</span>\
- <div node-type="menu-list" class="wxz-menu-content pulldown user-info" style="display: none;">\
- <em class="arrow"></em>\
- <div class="content" style="height:auto">\
- <span node-type="click-ele" data-key="Repigu" class="li wxz-menu-option">\
- <a >by Repigu</a>\
- </span>\
- <!--span node-type="click-ele" data-key="SOSO" class="li wxz-menu-option">\
- <a >by SOSO</a>\
- </span-->\
- <span node-type="click-ele" data-key="Google" class="li wxz-menu-option">\
- <a >by Google</a>\
- </span>\
- </div>\
- </div>\
- </li>\
- ',
- cssText = '\
- <style type="text/css">\
- #wxz_searchButton{background-image:none;cursor:pointer;background-color: rgb(155, 154, 154);color: #ffffff;}\
- .wxz-content{line-height: 200%;text-align: left;white-space: normal;margin-left:20px;overflow:auto;}\
- .wxz-close{margin-right:20px;important;height:20px;cursor:pointer}\
- .wxz-next{margin-right:20px;float:right;height:20px;cursor:pointer}\
- .wxz-front{margin-right:40px;float:right;height:20px;cursor:pointer}\
- .wxz-content a{color:#0066FF!important;font: 14px/1.5 arial,sans-serif!important;}\
- </style>\
- ';
- switch (replaceEle) {
- case '#top_menu_other':
- $('div.info.clearfix ul').prepend(html_1);//切换按钮
- $(replaceEle).remove(); //删除搜索栏了广告
- // $('div.info.clearfix ul').prepend(html_1);//搜索按钮
- break;
- case 'div.remaining':
- $(replaceEle).before(html_1);
- $('#wxz_searchForm').addClass('side-options');
- $('#wxz_searchButton').css({
- width: 40
- });
- break;
- }
- $('div.info.clearfix ul').prepend(html_4);//切换按钮
- $('body').append(html_2);
- $('head:first').append(cssText); //插入css
- //应用大小和页面
- $('.wxz-content').css({
- height: window.innerHeight / 3 * 2
- });
- $('#wxz_myDiv').css({
- top: window.innerHeight / 8,
- left: window.innerWidth / 4
- });
- //应用拖拽
- $("#wxz_myDiv").draggable({
- handle: "#wxz_myDiv_title"
- });
- }
- function bind() {
- //绑定各种函数
- $('#wxz_searchButton').click(function() {
- keyword = $('#wxz_input').val();
- search(keyword, 0);
- });
- $('#wxz_closeButton').click(function() {
- searchClear();
- });
- $('.li.wxz-menu-option').click(function(){
- flag=$(this).attr('data-key');
- $('#wxzMenuDisplay').text(flag);
- $('.wxz-menu-content').hide();
- });
- $('#wxz_input').keyup(function(event) {
- if (event.which == 13) {
- $('#wxz_searchButton').trigger('click');
- }
- });
- } return {
- init: function(option) {
- var
- t = window.setInterval(function() { //百度云把一些内容放到后面加载,因此我设置了一个延时循环,每隔100ms选择一下所需的元素,当所需的元素存在时,开始脚本,同时停止延时循环
- if ($(replaceEle).length > 0) {
- window.clearInterval(t);
- flag = option;
- setUI();
- bind();
- }
- console.log('waiting');
- }, 100);
- },
- };
- };
- //根据屏幕分辨率选择替换的元素
- var ele = (window.innerWidth > 1024 ? '#top_menu_other' : 'div.remaining');
- //启动
- SearchObject(jQuery, ele).init('Repigu'); //to use original google, please replace parameter with 'Google';
- //复制本脚本到暴力猴插件
[color=rgb(51, 102, 153) !important]复制代码
[color=rgb(51, 102, 153) !important]
原帖地址
|