您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
スレ本文を検索してカタログでスレッド監視しちゃう
当前为
- // ==UserScript==
- // @name futaba_thread_highlighter
- // @namespace https://github.com/himuro-majika
- // @description スレ本文を検索してカタログでスレッド監視しちゃう
- // @include http://*.2chan.net/*/futaba.php?mode=cat*
- // @version 1.2
- // @require http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js
- // @grant GM_registerMenuCommand
- // @grant GM_getValue
- // @grant GM_setValue
- // @grant GM_addStyle
- // ==/UserScript==
- this.$ = this.jQuery = jQuery.noConflict(true);
- (function ($) {
- var akahukuloadstat;
- init();
- function init(){
- console.log("futaba_thread_highlighter: " + GM_getValue("_futaba_thread_search_words"));
- GM_registerMenuCommand("スレッド検索ワード編集", editWords);
- setStyle();
- makecontainer();
- highlight();
- setInterval(check_akahuku_reload, "100");
- }
- /*
- *検索文字列の設定
- */
- function editWords(){
- var userinput; //検索文字列入力値
- userinput = prompt("スレ本文に含まれる語句を入力してください。 | を挟むと複数指定できます。正規表現使用可。\n例 : img|dat村|mayちゃん|junくん|dec",
- GM_getValue("_futaba_thread_search_words") )
- if ( userinput != null ){
- GM_setValue("_futaba_thread_search_words", userinput);
- highlight();
- }
- console.log("futaba_thread_highlighter: " + GM_getValue("_futaba_thread_search_words"));
- }
- /*
- *スレピックアップ表示エリアの設定
- */
- function makecontainer() {
- var $pickup_thread_container = $("<div>", {
- id: "futaba_thread_highlighter_highlighted_threads",
- css: {
- "overflow": "hidden"
- }
- });
- $("body > table[align]").before($pickup_thread_container);
- var $container_header = $("<div>", {
- id: "futaba_thread_highlighter_container_header",
- text: "スレッド検索該当スレッド",
- css: {
- backgroundColor: "#F0E0D6",
- fontWeight: "bolder"
- }
- });
- $pickup_thread_container.append($container_header);
- //設定ボタン
- var $button = $("<span>", {
- id: "futaba_thread_highlighter_searchword",
- text: "[設定]",
- css: {
- cursor: "pointer",
- },
- click: function() {
- editWords();
- }
- });
- $button.hover(function () {
- $(this).css({ backgroundColor:"#EEAA88" });
- }, function () {
- $(this).css({ backgroundColor:"#F0E0D6" });
- });
- $container_header.append($button);
- }
- /*
- *赤福の動的リロードの状態を取得
- */
- function check_akahuku_reload() {
- if ( get_akahuku_reloading_status() == 0 || get_akahuku_reloading_status() == 1 ) {
- akahukuloadstat = true;
- }
- else if ( get_akahuku_reloading_status() == 2 || get_akahuku_reloading_status() == 3 ) {
- if ( akahukuloadstat ) {
- highlight();
- }
- akahukuloadstat = false;
- }
- function get_akahuku_reloading_status() {
- var $acrs = $("#akahuku_catalog_reload_status"); //赤福
- var $fvw = $("#fvw_mes"); //ふたクロ
- var relstat;
- if ( $acrs.length ) {
- //赤福
- if ( $acrs.text().match(/ロード中/) ) {
- relstat = 0;
- }
- else if ( $acrs.text().match(/更新中/) ) {
- relstat = 1;
- }
- else if ( $acrs.text().match(/完了しました/) ) {
- relstat = 2;
- }
- else {
- relstat = 3;
- }
- }
- if ( $fvw.length ){
- //ふたクロ
- if ( $fvw.text().match(/Now Loading/) ) {
- relstat = 0;
- }
- else if ( $fvw.text().match(/更新しました/) ) {
- relstat = 2;
- }
- else {
- relstat = 3;
- }
- }
- return relstat;
- }
- }
- /*
- *カタログを検索して強調表示
- */
- function highlight() {
- var Start = new Date().getTime();//count parsing time
- var words = GM_getValue("_futaba_thread_search_words")
- var re = new RegExp(words, "i");
- if ( words != "" ) {
- $(".futaba_thread_highlighter_highlighted").removeClass("futaba_thread_highlighter_highlighted");
- $("body > table[align] td small").each(function(){
- if( $(this).text().match(re) ) {
- if ( !$(this).children(".futaba_thread_highlighter_matchedword").length ) {
- $(this).html($(this).html().replace(re, "<span class='futaba_thread_highlighter_matchedword'>" +
- $(this).text().match(re) + "</span>"));
- }
- if ( $(this).parent("a").length ) { //文字スレ
- $(this).parent().parent("td").addClass("futaba_thread_highlighter_highlighted");
- } else {
- $(this).parent("td").addClass("futaba_thread_highlighter_highlighted");
- }
- }
- });
- pickup_highlighted();
- }
- console.log('Parsing: '+((new Date()).getTime()-Start) +'msec');//log parsing time
- }
- /*
- *強調表示したスレを先頭にピックアップ
- */
- function pickup_highlighted() {
- if ( $("#futaba_thread_highlighter_highlighted_threads .futaba_thread_highlighter_pickuped").length ) {
- $("#futaba_thread_highlighter_highlighted_threads .futaba_thread_highlighter_pickuped").remove();
- }
- var highlighted = $("body > table .futaba_thread_highlighter_highlighted").clone();
- $("#futaba_thread_highlighter_highlighted_threads").append(highlighted);
- //要素の中身を整形
- highlighted.each(function(){
- if ( !$(this).children("small").length ) { //文字スレ
- //console.log($(this).children("a").html());
- //$(this).children("a").replaceWith("<div class='futaba_thread_highlighter_pickuped_caption'>" + $(this).html() + "</div>");
- } else {
- $(this).children("small").replaceWith("<div class='futaba_thread_highlighter_pickuped_caption'>" +
- $(this).children("small").html() + "</div>");
- $(this).children("br").replaceWith();
- }
- $(this).replaceWith("<div class='futaba_thread_highlighter_pickuped'>" + $(this).html() + "</div>");
- });
- set_img_height_width();
- /*
- *ピックアップしたスレ画像の高さと幅に合わせる
- */
- function set_img_height_width(){
- var $pickuped = $(".futaba_thread_highlighter_pickuped");
- var img_height_ary = new Array;
- $pickuped.each(function(){
- var height = $(this).find("img").attr("height");
- if (height) {
- img_height_ary.push(parseInt(height));
- }
- var width = $(this).find("img").attr("width");
- $(this).css({
- //スレ画の幅に合わせる
- width: width,
- });
- $(this).children("div").css({
- width: width,
- });
- });
- //画像の高さの最大値を取得
- var max_height_num = Math.max.apply(null, img_height_ary);
- $pickuped.css({
- height: (max_height_num + 110) + "px",
- });
- }
- }
- /*
- *スタイル設定
- */
- function setStyle() {
- var css =
- //マッチ文字列の背景色
- ".futaba_thread_highlighter_matchedword {" +
- " background-color: #ff0;" +
- "}" +
- //セルの背景色
- ".futaba_thread_highlighter_highlighted {" +
- " background-color: #FFDFE9;" +
- "}" +
- //ピックアップスレ
- ".futaba_thread_highlighter_pickuped {" +
- " min-width: 70px;" +
- " margin: 1px;" +
- " background-color: #FFDFE9;" +
- " border-radius: 5px;" +
- " float: left;" +
- " word-wrap: break-word;" +
- "}" +
- //ピックアップスレ本文
- ".futaba_thread_highlighter_pickuped_caption {" +
- " min-width: 70px;" +
- " font-size: 12px;" +
- " background-color: #ffdfe9;" +
- " height: 80px;" +
- " overflow: hidden;" +
- "}" +
- ".futaba_thread_highlighter_pickuped_caption:hover {" +
- " position: absolute;" +
- " height: auto;" +
- " z-index: 100;" +
- "}";
- GM_addStyle(css);
- }
- })(jQuery);