前に作ったワードミュート機能を改良したい……

  • 1◆bjkLbZx1IQ23/02/12(日) 15:40:42

    ぶっちゃけcustomblocker使える環境ならそれ使ったほうがいいんだけどそうじゃない人もいるし改良したい……





    というわけで機能改良の時間だおらー

  • 2◆bjkLbZx1IQ23/02/12(日) 15:41:45
  • 3◆bjkLbZx1IQ23/02/12(日) 15:46:33

    まあ例のごとくモノはできてる

    tampermonkeyとかユーザー定義のscriptを実行できる環境の人は↓をコピペ・保存したらとりあえず準備完了

    ※過去スレのワードミュート入れてない人は新規保存、既に入れてる人はそっちを上書き保存


    ワードミュートdocs.google.com


    機能使うためにTampermonkeyいれたり自作scriptの設定方法についてはそれぞれの環境にあわせて↓のどれか見てくれ


    pc、android用:↓の4~7(pc)とか29~30(android)

    レスをミュートする機能がほしい……|あにまん掲示板だけど管理人ちゃんの手を煩わせることはしたくない……というわけで機能自作の時間だおらーbbs.animanch.com

    ※iphone用:俺はiphoneわかんねえけど有識者がやってくれたやつ

    iphoneでも機能拡張を使いたい|あにまん掲示板こちらのスレでiphoneでのやり方を説明したものですhttps://bbs.animanch.com/board/519710/抜けが大きすぎて混乱を招いているので、スレ立てて説明し直しますやり方も…bbs.animanch.com
  • 4◆bjkLbZx1IQ23/02/12(日) 15:48:58

    これのソースの下のほうまでいくとconst RULESという定数がある
    これがミュートのルールの定義で、どのページに対してミュート処理を実行するか、ミュート対象のワード/要素は何かを定義している

    この画像の例でいうと

    ・ミュート処理するページ→"(前略)bbs.animanch.com/"
    ・ミュートワード→"このレスは削除されています"
    ・ミュート対象要素→"#reslist .list-group-item"(スレ内のレス)
    ・ミュートワードの検索対象要素→"#reslist .list-group-item .disabled"(削除済レスの本文)

    ってことでスレ内に削除済のレスがあったらそれをミュートするようになってる
    細かいこというと
    スレ内に削除済レスの本文要素が存在する+その要素の内容が「このレスは削除されています」と部分一致する場合に
    その削除済レスの本文要素を含むレス要素自体をミュートするって動作だけど

    ミュート処理するページのurlとミュートワードは正規表現が使えるのでわりと曖昧な指定の仕方も可能

    次以降でミュートのルール編集方法を書いてく

  • 5◆bjkLbZx1IQ23/02/12(日) 15:51:10

    1.ルールの追加(ミュートワードとミュート要素の追加)
    既にミュート処理する対象として定義済のページにルールを追加する場合は
    画像の62行目のようにMUTE_LISTの中で既存のミュートワードのうしろに

    ,{MUTE_WORD:"[ミュートワード(正規表現可)]", MUTE_ELEMENT:"[ミュート対象要素]", SEARCH_ELEMENT:"[ミュートワードの検索対象要素(省略可)]"}

    と書く(複数のルールがある場合、ふたつめ以降は先頭の「,」も必要)
    SEARCH_ELEMENTは画像のように特に指定しない("")でもいいけどその場合はSEARCH_ELEMENT=MUTE_ELEMENTとして扱う処理になってるから
    「ミュートしたい要素」と「ミュートワードが含まれているかチェックしたい要素」を分けたいときは
    61行目みたいにちゃんと指定しといたほうがいい

    ちなみに画像62行目のルールだとスレタイに「閲覧注意」とか「閲注」ってあるやつをスレ一覧からミュートできる
    各スレのレス内でリンク貼られるとミュートできないけど

  • 6◆bjkLbZx1IQ23/02/12(日) 15:56:07

    2.ルールの追加(ミュート対象のページ追加)
    ミュート処理する対象のページを追加する場合は画像65-70行目のようにRULESの中で

    ,{
    URL:"[ミュート対象のurl(正規表現可)]"
    ,MUTE_LIST :[
    {MUTE_WORD:"[ミュートワード(正規表現可)]", MUTE_ELEMENT:"[ミュート対象要素]", SEARCH_ELEMENT:"[ミュートワードの検索対象要素(省略可)]"}
    ]
    }

    と書く(複数のミュート対象ページがある場合、ふたつめ以降は先頭の「,」も必要)

    ちなみに画像65-70行目のルールだとあにまんchでカテゴリに「アニメ」とついてる記事がミュートされる

  • 7◆bjkLbZx1IQ23/02/12(日) 16:01:41

    3.ルールの削除

    ミュートのルールを削除したい場合は対象のルールを定義してる行を削除すればよし


    やっぱり本家でミュートとかやめたいなーってなったら

    >>6の画像65-70行目消して>>5の状態にしたらいいし


    閲覧注意のスレも一覧に出すかってなったら

    >>5の画像62行目消して>>4の状態にしたらそうなる

  • 8◆bjkLbZx1IQ23/02/12(日) 16:10:22

    以上

    まあいろいろ書いたけど改良前との変更点は
    「ミュートしたい要素」と「ミュートワードが含まれているかチェックしたい要素」を分けて指定できるようにしました
    ってだけだね


    あとは何か質問あるなら聞くよ
    答えられるかどうかは内容によるけど

  • 9二次元好きの匿名さん23/02/12(日) 16:23:07

    機能の質問じゃないけどおかずクレクレはしないことにしたの?

  • 10◆bjkLbZx1IQ23/02/12(日) 16:33:44

    言われて↓のリンク貼るの忘れてたことに気付いたよね

    私のワードミュート機能使ってる人にもできれば参照先で何か語っていってほしいんだ

    【乞食スレ】好きなファンタジー系えっちシチュを語っていってほしい|あにまん掲示板そしてそのネタを使わせてほしい何なら「これ言うほどファンタジー系か?」みたいに迷うようなやつでもいいのでとりあえず好きなのを語っていってくれbbs.animanch.com

    >>9

    今回はおかずクレクレならぬ書くネタのクレクレがしたい

  • 11二次元好きの匿名さん23/02/12(日) 18:30:14

    ちゃんとiPhoneでも機能しました
    ありがとうございます!!

  • 12◆bjkLbZx1IQ23/02/12(日) 23:01:46

    iphone動作確認ヨシ!(猫画像略)


    >>11

    俺が持ってないから動作確認できないんだよね

    ご報告ありがとー

  • 13◆bjkLbZx1IQ23/02/14(火) 21:07:40

    ageついでにこの機能の利用者が知りたいかもしれない情報
    正規表現で使う特殊文字

    「^」:行頭
    →「^あにまんまん」は行頭にある「あにまんまん」と一致する

    「$」:行末
    →「あにまんまん$」は行末にある「あにまんまん」と一致する

    「.」:(改行以外の)任意の文字
    →「.にまんまん」は「あにまんまん」や「かにまんまん」などと一致する
    →何なら「おにまんまん」などとも一致する

    「|」:「|」の左右の文字列のいずれか
    →「あにまんまん|めがが」は「あにまんまん」や「めがが」と一致する

    「[]」:「[]」内に指定した文字のいずれか
    →「[あか]にまんまん」は「あにまんまん」や「かにまんまん」と一致する
    →「おにまんまん」などとは一致しない

    「[^]」:「[]」内に指定した文字のいずれか以外
    →「[^あ]にまんまん」は「おにまんまん」や「かにまんまん」と一致する
    →「あにまんまん」とは一致しない

  • 14二次元好きの匿名さん23/02/17(金) 12:51:50

  • 15二次元好きの匿名さん23/02/18(土) 17:11:12

    スレミュートを大変ありがたく使わせて貰っているんだけど、金曜辺りから新しくミュート指定しても★はちゃんと赤くなるのにミュートされない…
    拡張機能から丸ごと入れ直したけど改善されず
    PC環境GoogleChrome
    特に今までと変えたものも無いし何故…

  • 16◆bjkLbZx1IQ23/02/18(土) 18:18:01

    >>15

    俺の環境でpc/chromeだと普通に動いてるな……

    スレミュート上限数120で


    1.適当なスレ1,スレ2,スレ3,...スレ120までミュート→ぜんぶミュートされる

    2.スレ1~120までミュートしてる状態でスレ121をミュート→スレ121がミュートされる+スレ1のミュートが解除される


    って想定通りの挙動してる


    前にスレミュートが変な挙動してるぞって話があったときはcookie「threadMute」に想定外の値が入ってたけど今回もそれかな

    ある時点でのcookie「threadMute」の値とその状態から適当なスレをミュートした直後のcookie「threadMute」の値を教えてほしい

    値の文字列が長すぎてレス本文に入力できなければtelegraph使うとかで


    TelegraphTelegra.ph is a minimalist publishing tool that allows you to create richly formatted posts and push them to the Web in just a click. Telegraph posts also get beautiful Instant View pages on Telegram.telegra.ph
  • 17◆bjkLbZx1IQ23/02/20(月) 22:22:10

    ageついでにこの機能の利用者が知りたいかもしれない情報
    正規表現で使う特殊文字(2)

    「()」:()内をグループ化する
    →「あにまん(まん|おじさん)」は「あにまんまん」や「あにまんおじさん」と一致する

    「*」:直前の文字またはグループの0回以上の連続
    →「あに(まん)*」は「あに」(「まん」が0回連続)や「あにまん」(「まん」が1回連続)や「あにまんまん」(「まん」が2回連続)などと一致する

    「+」:直前の文字またはグループの1回以上の連続
    →「あに(まん)+」は「あにまん」(「まん」が1回連続)や「あにまんまん」(「まん」が2回連続)などと一致する
    →「あに」(「まん」が0回連続)とは一致しない

    「?」:直前の文字またはグループの0~1回の連続
    →「あに(まん)?」は「あに」(「まん」が0回連続)や「あにまん」(「まん」が1回連続)と一致する

    「{N}」:直前の文字またはグループのN回の連続
    →「あに(まん){2}」は「あにまんまん」(「まん」が2回連続)と一致する

    「{min,max}」:直前の文字またはグループのmin回以上max回以下の連続
    →「あに(まん){0,2}」は「あに」(「まん」が0回連続)や「あにまん」(「まん」が1回連続)や「あにまんまん」(「まん」が2回連続)と一致する

    「{min,}」:直前の文字またはグループのmin回以上の連続
    →「あに(まん){1,}」は「あにまん」(「まん」が1回連続)や「あにまんまん」(「まん」が2回連続)などと一致する

  • 18◆bjkLbZx1IQ23/02/23(木) 21:11:18

    ageついでにこの機能の利用者が知りたいかもしれない情報
    正規表現で使う特殊文字(3)

    「(?!)」:?!の後に続く正規表現を含まない
    →「^(?!.*あにまんまん).*$」は「おにまんまん」や「かにまんまん」などと一致する
    →「あにまんまん」とは一致しない

    他の特殊文字と組み合わせて「^(?!.*[正規表現]).*$」とすることでその正規表現を含まない文字列だけを一致させられる
    ちなみに正規表現Aを含まないが正規表現Bを含むとかやりたい場合は「^(?!.*正規表現A).*[正規表現B].*$」のように書く

  • 19◆bjkLbZx1IQ23/02/25(土) 18:31:59

    ageついでにこの機能の利用者が知りたいかもしれない情報

    正規表現の最短一致と最長一致


    正規表現は基本的に可能な限り最長の範囲で一致するようになっている


    例えば「あにまんまん、ちんちん電車のうんちん上げる気まんまん」という文字列に対して

    「あに.*まん」や「あに.+」という正規表現は「[あにまんまん、ちんちん電車のうんちん上げる気まんまん]」の[]で括った部分全体に一致する

    「[あにまん]まん、ちんちん電車のうんちん上げる気まんまん」みたいに最短の範囲では一致させられない


    というわけで最短で一致させたい場合は「あに.*?まん」という風に「.*?」を使う

    これだと「[あにまん]まん、ちんちん電車のうんちん上げる気まんまん」の[]で括ったあに~まんの最短の範囲で一致させられる


    ただしこの最短一致は正確には左端/最短の一致なので要注意

    具体的にいうと例えば「まん.*?ちん」とすると「あにまん[まん、ちん]ちん電車のうんちん上げる気まんまん」じゃなくて

    「あに[まんまん、ちん]ちん電車のうんちん上げる気まんまん」に一致する

    文字数的には「まん、ちん」のほうが短いんだけど挙動としてまず左側の「まん」の部分で一致してから

    次に「ちん」が出てくる(最短の)範囲で一致するという挙動

    これを本当に最短である「まん、ちん」の部分に一致させるには>>18のXXを含まないってのと組み合わせて

    「まん(?!まん.*).*?ちん」でやると「まん~ちんの間にまんを含まない部分」の最短一致として

    「あにまん[まん、ちん]ちん電車のうんちん上げる気まんまん」の[]で括った部分に一致させられる



    ……例として挙げた文字列や正規表現は説明しやすい&わかりやすいかなってつもりでやったんだけど

    いざやってみるとまんとかちんとか卑猥なこと書いちゃってるような気がしてくるな

    まあそれくらいじゃ俺の清純派イメージは傷つかんだろうし別にいいか

  • 20◆bjkLbZx1IQ23/02/26(日) 21:18:53

    保守

    2週間くらいスレ生かしてるけど特に質問とか不具合の話もないしこのままスレ落ちちゃってもいいかな

    そもそもどれだけの人がこのスレ見てるかもよくわからんけど……


    >>15の件はちょっと気になるからまだ見てれば詳しく聞きたいね

  • 21二次元好きの匿名さん23/03/01(水) 17:22:12

    このレスは削除されています

  • 22◆bjkLbZx1IQ23/03/01(水) 20:29:44

    な、何が書いてあったんだ?

オススメ

このスレッドは過去ログ倉庫に格納されています