您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
红晋江( http://bbs.jjwxc.net ) 贴子整理,去广告,加跳转,只看楼主,最少字数等等
// -------------------------------------------------------------------- // // ==UserScript== // @name hjj_tidy // @namespace http://abbypan.github.io/ // @version 0.2 // @license MIT // @author Abby Pan ([email protected]) // @description 红晋江( http://bbs.jjwxc.net ) 贴子整理,去广告,加跳转,只看楼主,最少字数等等 // @copyright 2014, Abby Pan (http://abbypan.github.io/) // @include *://bbs.jjwxc.net/showmsg.php?board=*&id=* // @include *://bbs.jjwxc.com/showmsg.php?board=*&id=* // @grant none // ==/UserScript== // // -------------------------------------------------------------------- function extract_floor_info(info) { var c = info.html() .replace(/^\s*<font color='gray' size='-1'>[^<]+<\/font><br>/,'') ; var w = info.text().length; var meta = info.parents("tr:eq(1)").next().text(); var m = meta.match(/№(\d+).+?☆☆☆(.*?)于([\d\s:-]+)留言☆☆☆/); return { content: c, word_num: w, id: parseInt(m[1]), poster: m[2] || ' ', time: m[3] }; } function format_floor_content(f) { var html = '<div class="floor" id="floor' + f.id + '" fid="'+ f.id +'">' + '<div class="flcontent" word_num="' + f.word_num + '">' + f.content + '</div>' + '<span class="chapter">№' + f.id + '<span class="star">☆☆☆</span><span class="floor_poster">' + f.poster + '</span><span class="star">于</span>' + f.time + '留言<span class="star">☆☆☆</span></span>' + ' ' + '<a class="reply_thread_floor" reply_type="cite" href="#">»</a>' + ' ' + '<a class="reply_thread_floor" reply_type="default" href="#">›</a>' + ' ' + '<a class="jump_to_top" href="#">⇑</a>' + ' ' + '<a class="jump_to_bottom" href="#">⇓</a>' + ' ' + '<a class="jump_to_prev" href="#">↑</a>' + ' ' + '<a class="jump_to_next" href="#">↓</a>' + ' ' + '<span class="temp_floor"></span>' + '</div>'; //'<a href="#jump_floor" data-rel="popup" data-position-to="window" data-transition="pop">☇</a>' + //' ' + //'<a class="mark_floor" href="#">⚓</a>' + //' ' + return html; } function extract_showmsg_content(d){ var res = {}; var tm = $('title').text(); res["title"] = tm.replace(/―― 晋江文学城网友交流区/,'').replace(/^\s+/,'').replace(/\s+$/, ''); var pm = d.match(/\>(共\d+页:.+?)<\/div>/); res["pager"] = pm ? pm[1].replace(/<\/a>/g, '</a> ') : ''; var h = $.parseHTML(d); res["banner"] = $(h).find('a').eq(0).parent().html(); res["banner_reverse"] = res["banner"].replace(/^(.*?)(→.*?→)(.*)/, "$3$2$1"); res["reply_form"] = $(h).find('input[name="last_floor"]').parent().prop('outerHTML'); var poster = ''; var floors_info = new Array(); $(h).find('td[class="read"]').each(function() { var bot = $(this); var f_i = extract_floor_info(bot); if(!poster) poster = f_i.poster; var html = format_floor_content(f_i); floors_info.push(html); }).promise().done(function(){ var all_floor = floors_info.join("\n"); res["floor_list"] = all_floor; res["poster"] = poster; }); return res; } function get_css(){ return '<style> \ body { font-size: 150%; line-height: 150%; margin-left : 10%; margin-right: 10% } \ #banner_bottom { text-align: right; } \ .pager,#thread_action { border: 0.1em solid rgb(153, 204, 0); } \ .flcontent { padding-bottom : 0.5em; } \ .floor,.onethread { \ border-bottom: 0.1em solid rgb(153, 204, 0); \ margin: 0.8em 0.2em 1.2em; \ text-indent: 0em; \ padding-bottom: 0.25em; \ } \ #thread_title { font-weight: bold;backgound-color:#E8F3FF; } \ .star { color: #d4db8e; font-weight: bold; } \ </style> \ '; } function div_thread_action(){ return '<div id="thread_action"> \ <input size="10" type="text" name="word_num" value=50 id="min_word_num_input" > \ <a href="#" id="min_word_num">字数</a> \ <input size="10" type="text" name="floor_keyword" id="floor_keyword_input" placeholder="关键字"> \ <a href="#" id="floor_keyword">抽取</a> \ <a href="#" id="floor_filter">过滤</a> \ \ <a href="#" id="only_poster">楼主</a> \ <a href="#" id="view_img">看图</a> \ <a href="#" id="reverse_floor">倒序</a> \ <a id="view_all_floor" href="#">全部</a> \ <span id="thread_action_temp"></span> \ </div>'; } (function(){ $ = unsafeWindow.jQuery; var d = $('body').html(); var res = extract_showmsg_content(d); var reply_thread_floor = function (){ $("#reply").find("textarea").val(""); var reply_type = $(this).attr("reply_type"); var c = $(this).parent().children(".chapter").text().replace(/\\n/g, " "); if(reply_type=="cite") c = "" + $(this).parent().children(".flcontent").text().replace(/(\\s*\\n)+/g, "\n").trim().substr(0, 300) + "......\n\n" + c ; $("#reply").find("textarea").val(c.trim()+"\n"); var pos = $("#reply").offset().top; $("html,body").animate({ scrollTop : pos },500); }; var filter_floor = function(is_to_filter,msg) { var i = 0; $(".floor").each(function() { if(i>0 && is_to_filter($(this))) $(this).hide(); i=1; }); if(msg) $("#thread_action_temp").html(msg); } ; $('head').html( '<title>' + res["title"] + '</title>' + get_css() ); $('body').html( '<div id="thread_info">' + res["banner"] + '<br><br>' + '<div id="thread_title">' + res["title"] + "</div><br>" + div_thread_action() + '</div><br>' + '<div id="pager_top" class="pager">' + res["pager"] + '</div>' + '<div id="thread_floor_list">' + res["floor_list"] + '</div>' + '<div id="pager_bottom" class="pager">' + res["pager"] + '</div>' + '<div id="banner_bottom">' + res["banner_reverse"] + '</div>' + '<div id="reply">' + res["reply_form"] + '</div>' ); $('body').on('click', '.jump_to_top', function(){ $('html,body').animate({ 'scrollTop': 0 }, 500); }); $('body').on('click', '.jump_to_bottom', function(){ var f = $('#pager_bottom').offset(); $("html,body").animate({ scrollTop : f.top },500); }); $('body').on('click','.jump_to_next', function(){ var x = $(this).parent().nextAll(); var i = 50-1; if(x[i]) { var pos = $(x[i]).offset().top; $("html,body").animate({ scrollTop : pos },500); } }); $('body').on('click','.jump_to_prev', function(){ var x = $(this).parent().prevAll(); var i = 50-1; if(x[i]) { var pos = $(x[i]).offset().top; $("html,body").animate({ scrollTop : pos },500); } }); $('body').on('click', '.reply_thread_floor',function(){ $('#reply').find('textarea').val(''); var reply_type = $(this).attr("reply_type"); var c = $(this).parent().children('.chapter').text().replace(/\n/g, ' '); if(reply_type=="cite") c = "" + $(this).parent().children('.flcontent').text().replace(/(\s*\n)+/g, "\n").trim().substr(0, 300) + "......\n\n" + c ; $('#reply').find('textarea').val(c.trim()+"\n"); var pos = $('#reply').offset().top; $("html,body").animate({ scrollTop : pos },500); }); $('body').on('click', '#view_all_floor', function(){ $(".floor").each(function() { $(this).show(); }); $("#thread_action_temp").html("全部"); }); $('body').on('click', '#view_img', function(){ var is_to_filter = function(f){ var c = f.find(".flcontent").eq(0).html(); return c.match(/\<img /i) ? 0 : 1; }; filter_floor(is_to_filter, "只看图"); }); var get_showmsg_poster = function(){ if($(".floor").eq(0).find(".floor_poster").length>0){ return $(".floor").eq(0).find(".floor_poster").text(); } return; }; $('body').on('click', '#only_poster', function(){ var poster = get_showmsg_poster(); var is_to_filter = function(f){ var flposter = f.find(".floor_poster").text(); return flposter!=poster ; }; filter_floor(is_to_filter, "只看楼主"); }); $('body').on('click', '#min_word_num',function(){ var min = $("#min_word_num_input").val(); var is_to_filter = function(f){ var c = f.find(".flcontent").attr("word_num"); return c<min; }; filter_floor(is_to_filter, "最少" + min + "字"); }); $('body').on('click', '#floor_keyword',function(){ var k = $("#floor_keyword_input").val(); var is_to_filter = function(f){ var c = f.find(".flcontent").text().match(k); var p = f.find(".floor_poster").text().match(k); return (c || p) ? false : true; }; filter_floor(is_to_filter, "抽取" + k); }); $('body').on('click', '#floor_filter',function(){ var k = $("#floor_keyword_input").val(); var is_to_filter = function(f){ var c = f.find(".flcontent").text().match(k); var p = f.find(".floor_poster").text().match(k); return (c || p) ? true : false; }; filter_floor(is_to_filter, "过滤" + k); }); $('body').on('click', '#reverse_floor', function(){ var s = []; $(".floor").each(function(){ s.push($(this).prop("outerHTML")); }); var c = s.reverse().join("\n"); $("#thread_floor_list").html(c); $("#thread_action_temp").html("倒序"); }); })();