1 名前:ミスターオミトロン [2006/11/13(月) 17:00:32 ID:oCAoIukD0] このスレは作成依頼されたフィルタを有志により作るスレッドPart4です アップローダー wind.prohosting.com/proxmine/cgi-bin/uploader/ proxo.hp.infoseek.co.jp/cgi-bin/sn_uploader/upload.html Proxomitron等に関するWiki abc.s65.xrea.com/prox/wiki/ Thinking Archive(仮) vird2002.s8.xrea.com/ CastleCops Proxomitron Filters www.castlecops.com/f65-Proxomitron_Filters.html >>2-10 にいろいろと
445 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/05(月) 23:25:27 ID:4aRF74xu0] www.jtw.zaq.ne.jp/animesong/ ↑のサイトの歌詞を表示してるページで コピペや右クリックができるフィルタ希望です
446 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/05(月) 23:36:20 ID:E9YpSH1g0] 華麗にスルー
447 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/05(月) 23:41:29 ID:2RxO/zSP0] www.jtw.zaq.ne.jp/animesong/y.js への接続を遮断するだけ
448 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/05(月) 23:42:34 ID:gh6EZIJM0] >>445 from <BODY BGCOLOR="#CCFF99" onselectstart="return false" oncontextmenu="return false"> to <BODY BGCOLOR="#CCFF99" onselectstart="return true" oncontextmenu="return true">
449 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/06(火) 12:11:59 ID:iB1jvKZy0] 任意のタグ群から任意の要素群を除去するフィルタを書いてみた。 とりあえずはbodyとimgからoncontextmenu, onselectstaart, oncopyを除去できる感じに。 ひどいスパデティ状態だけど要は<body >みたいなスペースが入らないようにしたかったので。 [Patterns] Name = "oncontextmenu deleter" Active = TRUE Limit = 256 Match = "$NEST(<(body(^(^\s))|img(^(^\s)))\#,((\s|)on(contextmenu|selectstart|copy)=$AV(*)|((\s|)[^=\s]+(=$AV(*)|))\#)+,>)" Replace = "<\@>"
450 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/06(火) 12:13:41 ID:iB1jvKZy0] 書き忘れてたけどサンプル before : <body onselectstart="return false" oncontextmenu="return false" bgcolor="#ccff99"> after : <body bgcolor="#ccff99">
451 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/06(火) 14:43:34 ID:9zhYO6rw0] Firefox のように、ブラウザ側で コンテキストメニューを強制的に使用可能にする手もある。フィルタ不要だし。
452 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/06(火) 19:03:44 ID:mTAaejSY0] >>449 要望者ではないがGJ
453 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/06(火) 20:12:47 ID:5wFR0ABi0] >>449 恐ろしく細かなところなんだが JISコードのページで「alt="連携"」と言う文字が含まれてたりするとダメだよね? 2バイト目が「"」とかの文字だと$AV系は誤爆するから
454 名前:think ◆MM0nnAOCiQ mailto:sage [2007/03/06(火) 20:57:29 ID:74I35w2I0] >>449-450 そのフィルタは <body bgcolor="#ccff99"> にもマッチしてしまう問題を持っていますね。 ((\s|)[^=\s]+(=$AV(*)|))\# を (([^>]++)\#\son(contextmenu|selectstart|copy)=$AV(*))+{1,*} に変更してはどうでしょうか? [Patterns] Name = "oncontextmenu deleter type2 [2007/03/06]" Active = TRUE URL = "$TYPE(htm)" Limit = 256 Match = "<(body|img)\#(^(^\s))" "(([^>]++)\#\son(contextmenu|selectstart|copy)=$AV(*))+{1,*}" Replace = "<\@"
455 名前:名無しさん@お腹いっぱい。 [2007/03/06(火) 22:42:58 ID:+rFDbjSB0] Proxymoitronのフィルターなんですけど 以下のレスを参考にしたんですが、 もう少しキレイにするならどうしたらいいでしょう。 >【デボジット】Google AdSense初心者スレ 8PIN目 >pc9.2ch.net/test/read.cgi/affiliate/1171772889/370 > >370 名前:クリックで救われる名無しさんがいる[] 投稿日:2007/03/05(月) 08:17:45 ID:5uG+lPlH0 >こんなの見つけたんだけど便利かな? >ttp://isawseashell.blogspot.com/2007/02/adsense.html > >俺にはちょっとハードル高いんだけど、安心感が得られるならやろうかと思ってる。 [Patterns] Name = "Adsense" Active = TRUE URL = "*.googlesyndication.com/$TYPE(htm)" Limit = 1024 Match = "<a\s\0href="*123456789012" Replace = "<a \0 href="about:blank" これでやると、about:blank&nm=13 みたいに about:blnakの後ろにパラか残ってしまうんです。 実際のURLは pagead2.googlesyndication.com/pagead/iclk?sa=l&ai=&num=1&adurl=http://hoge.hoge/&client=ca-pub-123456789012&nm=17 みたいに入ってきてるんですが、タグ全体がフレームの中なので見えなくて どうやったら調べたりしたらいいかわからず困ってます。
456 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/06(火) 23:18:09 ID:ToBVIAPe0] マッチの部分をhref=$AV(*12345678912*) にすりゃいいのでは。about:blnakはともかくProxymoitronってなんやねん。
457 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/07(水) 17:22:42 ID:/8mO2Jfl0] $NEST(<a\s(*href=$AV(\1)*|)&(*title=$AV(\3)*|)&(^(*(href|title)*)\7|)[^>]+>,\0,</a>) aタグのhrefとtitleの値を\1,\3に順不同で入れるのには成功したんですが、 それ以外のものを\7に入れる事ができません。 とりあえず(^(*(href|title)*)\7|)としてますが効きません。 助言お願いします。 ソース例 <a href="/aaa/bbb/ここは1に" title="これは3に" class="これは7に">ここは0に</a>
458 名前:449 mailto:sage [2007/03/07(水) 18:08:54 ID:JUv0ENxk0] 思ったよりも反響があったようでビックリ。 >453 なるほど、そういうケースもあり得るのでしたら汎用フィルタとした使うためには手を加える必要がありますね。 手っ取り早いのは$AV(*)を使う代わりに [^=]+=[^ ]+ とすることでしょうか。 これでもまだ誤爆例がありましたら教えてください。 #ところで今までずっと[^\s]としていたのですがこれは大きな誤りであると分かりましたorz >454 確かに、例えば <body> で終わらない全てのbodyタグに(極端な例では<body >にも)マッチしますが、そこに何か問題があるとは思えません。 <body bgcolor="#ccff99"> を挙げれば、それ全体を\#に代入して<\@>で出力しているので一見してムダではありますが。 そこで試しにプロファイルで速度比較をしてみました。 私のver1とthinkさんのver2では、ver2がver1の1.5倍多くの時間が掛かるようです。 <img alt="hogehoge" src="hogehoge.jpeg"> を29986バイト分だけコピペしたサンプルでの計測です。 <img alt="hogehoge" src="hogehoge.jpeg" oncopy="hogehoge"> とした場合も速度比はほぼ同じでした。 もしマッチングさせたくないという場合にはver2を選択すると良いでしょう。
459 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/07(水) 18:16:46 ID:eYPYjnoZ0] 肝心の445が出てこない件
460 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/07(水) 18:23:04 ID:JUv0ENxk0] >457 目的がよく分からなんのですが、\1と\2と\3と\0に属性値を入れるわけですね。 \1はhrefに対応しなければならないんですか? たいていの場合は必ずしもそういう対応関係を成り立たせなければならないわけではないと思いますが。 例えば (href|title|((^(href|title)[^=])+))\1=$AV(\2) \s (href|title|((^(href|title)[^=])+))\3=$AV(\4) \s (href|title|((^(href|title)[^=])+))\5=$AV(\6) とでもすれば\1と\2や\3と\4はセットなので、何が入ろうともかまわないということになります。 これで問題があるかはフィルタで何をしたいかによります。 ちなみにアスタリスク"*"をそういうふうに使う場合は aタグを$NEST()で独立させたほうが良いです。 $NEST($NEST(<a\s,*hogehoge*,>),\0,</a>) もう一度フィルタの目的をよく考えてから作り直しては?
461 名前:449 mailto:sage [2007/03/07(水) 18:28:11 ID:JUv0ENxk0] >458について日本語のミスがありましたorz >私のver1とthinkさんのver2では、ver2がver1の1.5倍多くの時間が掛かるようです。 1.5倍の時間が掛かる、もしくは0.5倍多くの時間が掛かる、に訂正します。 例えばver1で2sec要する場合にver2はおよそ3sec要します。
462 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/07(水) 18:36:28 ID:/8mO2Jfl0] >>460 目的はtitle欄にhref以下のurlその他をぶち込んでマウスを当てると見えるようにするためです。 ORで分岐すると順不同(hrefの前にtitleが来たり)のとき面倒なので&を使ってます。 ですから>>457 の場合だとreplece欄でtitle="\1 \3"みたいに続けて記述します。
463 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/07(水) 18:46:47 ID:JUv0ENxk0] >462 つまりtitle要素があれば中身をhrefで書き換え、title要素がない場合はtitle="href属性値"を追加するということ? 言い換えればtitle要素があれば除去し、title="href属性値"を追加する、とでもすればうまくいきそうですな。 やり方はいくつもあると思うけど私ならこうやります。 その場合は&を使うよりはスタックを使ったほうがよさそうです。
464 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/07(水) 18:57:41 ID:JUv0ENxk0] チープな>449の焼き回しですが、一例として マッチ欄 $NEST(<a(^(^\s)),(\s(title=$AV(*)|href=$AV(\0)|([^= ]+=$AV(*))\#))+,>) 置換テキスト <a href="\0" title="\0" \@) サンプル例 before : <a href="ljilfejalfejla" src="ljfiejlajflea" title="fea.fae"> after : <a href="ljilfejalfejla" title="ljilfejalfejla" src="ljfiejlajflea")
465 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/07(水) 19:06:34 ID:/8mO2Jfl0] >>463 あらかじめtitleの無い場合は,titleにhrefを入れます。 titleのある場合は、既にあるtitle+hrefにします。 具体的には <a href ="\1" title="\3 \1" \7>\0</a> 3は既にあるタイトルで空の場合もとりあえず入れときますw 記述してくださった$NESTの入れ子を試してみたところ7にその他のものが入ってくれました。 $NEST($NEST(<(a|area)\s,(*href=$AV(\1)*|)&(*title=$AV(\3)*|) \7,>),\0,</a>) ただこれだと\7に既にあるhrefやtitleも入ってしまいますが <a href ="\1" \7 title="\3 \1" >\0</a> こうすれば大丈夫みたいです。 ありがとうございました。
466 名前:think ◆MM0nnAOCiQ mailto:sage [2007/03/07(水) 19:37:31 ID:O0RWiz+R0] >>456 > そこに何か問題があるとは思えません。 "oncontextmenu deleter" でマッチすると、他のフィルタで <body> にマッチしなくなるという問題がありますが、"oncontextmenu deleter" を優先するなら些細な問題かもしれませんね。 アプローチの仕方が違うだけとも言えるので、好みの問題だと思います。 > 私のver1とthinkさんのver2では、ver2がver1の1.5倍多くの時間が掛かるようです。 検証お疲れ様です。 >454は読み取るバイト数が少ないので、速いと思っていましたが $NEST の方が速くなるんですね。 せっかくなので、速度重視で最適化してみました。(下記の状況で、+{1,*} が効かない理由は解りません) [Patterns] Name = "oncontextmenu deleter type3.1 [2007/03/07]" Active = TRUE URL = "$TYPE(htm)" Limit = 256 Match = "$NEST(<(body|img)\#(^(^\s))," "\#\son(contextmenu|selectstart|copy)=$AV(*)" "(\#\son(contextmenu|selectstart|copy)=$AV(*))+" "\#,>)" Replace = "<\@>" ところで、>454で示したフィルタは "type2" であって、「最新のフィルタ」として掲示したわけではないですよ。(^^; 449氏の作成したフィルタを引き継いで改良したなんて、おこがましいことは言えません。 私の経験,ポリシーに則って作成した別のフィルタだと思っています。
467 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/07(水) 20:02:01 ID:JUv0ENxk0] >466 一度マッチした部分にはほかのフィルタはマッチしないというのは不覚にも知りませんでした。 ちょっとしたテストをしてみましたが、確かにそのようです。 フィルタ同士でループしないようにとのことでしょう。 こうだと分かると何でもかんでもマッチングしてしまう>>449 のフィルタは曲者ですね。 thinkさんの>466が正当な改良版だと思いますよ。 >456の段階では単にver違いという意味で書いたのですが。
468 名前:think ◆MM0nnAOCiQ mailto:sage [2007/03/07(水) 23:41:26 ID:O0RWiz+R0] >>467 > 一度マッチした部分にはほかのフィルタはマッチしない これは下記URLの「再帰的なマッチングを使う方法」を読むと、よく理解できると思います。 Tips and Tricks ttp://www.pluto.dti.ne.jp/~tengu/proxomitron/help/Tips_And_Tricks.html > >456の段階では単にver違いという意味で書いたのですが。 それは失礼しました。 ただ、ver違いというニュアンスだと後継版と受け取られがちなので、念のため釈明させていただきました。
469 名前:think ◆MM0nnAOCiQ mailto:sage [2007/03/07(水) 23:43:05 ID:O0RWiz+R0] >>465 仰ることが正確に掴めていませんが... > $NEST($NEST(<(a|area)\s,(*href=$AV(\1)*|)&(*title=$AV(\3)*|) \7,>),\0,</a>) > <a href ="\1" \7 title="\3 \1" >\0</a> どちらの表現でも、 <a id="test" title="string" href="URL"> のHTMLソースにマッチしないという問題が残っているようです。 >464の表現を使い回しするとこれに対応できますが、「全てのa要素にマッチしてしまう」という問題がまだ残ります。 HTML4.01仕様書によれば、 ------------ ユーザエージェントは、CDATA型属性値の、冒頭あるいは末尾の空白文字を無視してよい。 (例えば「 myval 」を「myval」として解釈してよい。) 著者は、冒頭あるいは末尾に空白文字のある属性値を宣言することを避けるべきである。 www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/types.html#type-cdata ------------ とあり、空白文字のみの属性値によるUAの動作を明示していません。(「してよい」は「しなくてもよい」とも受け取れる表現だからです。) 可能なら、「空の属性値」「空白のみの属性値」は避けるべきだと思います。
470 名前:think ◆MM0nnAOCiQ mailto:sage [2007/03/07(水) 23:52:20 ID:O0RWiz+R0] >469の続き。 この条件なら二重に$NESTを使うまでもなく、</a> までマッチさせずとも、<a> の開始タグのみにマッチさせるだけで十分だと思います。 期待する動作を、「href属性のあるa要素があったとき、title属性にhref属性値を挿入する」とすると。 [Patterns] Name = "Insert <a> title [2007/03/07] test2" Active = TRUE URL = "$TYPE(htm)" Limit = 256 Match = "$NEST((<a(rea|)\s)\#(^(^[^>]++href=$AV(\0)))," "(\#)title=$AV(\1)$SET(2=\1 \0)\#|" "$SET(2=\0)\#" ",>)" Replace = "\@ title="\2">" (^(^[^>]++href=$AV(\0))) は & に読み替えてもらっても構いません。 (\#) は置換スタックのバグ回避のための暫定措置です。 ttp://abc.s65.xrea.com/prox/wiki/MatchingRules/#stack-bug | と $SET を組み合わせているのは、title属性値の先頭に空白を含めないためですが、title属性値を格納した変数を $TST で判定して分岐させてもよいかもしれません。
471 名前:457,462,465 mailto:sage [2007/03/08(木) 00:30:23 ID:yKKFo5Ex0] >>469-470 まだ理解してませんが、参考になります。 titleにあらゆる属性をつっこもうとしてまして (例えばaタグの後にimgタグが来た場合のhrefも)。 470を検討してみます。ありがとうございます。
472 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 00:45:41 ID:4XFeP5Uk0] aタグ内にimgがある場合に対応させようとするなら↓のようにすればいいよ $NEST($NEST(<a\s,*hogehoge*,>), \0((<img[^>]++src=$AV(\3)[^>]+>)\1\2|), </a>) で置換部分は <a>\0\1\2<\a> とすれば良いし、srcの属性値は\3に入っている。 >(例えばaタグの後にimgタグが来た場合のhrefも)。 但し、これをhrefじゃなくてsrcのことだと解釈しての話。 *hogehoge* を>470に置き換えればそのまま動くはず。
473 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 00:54:47 ID:yKKFo5Ex0] >>472 ありがとう。やってみますね。
474 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 01:16:31 ID:7b1HZB3B0] ぶった切ってすみませんが、YOUTUBEで再生のデフォルトを、 全画面にするフィルター(リンク追加でもかまいません)がもしできたらお願いします。
475 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 07:26:27 ID:2LOjLWQX0] >>474 [Patterns] Name = "YouTube fullscreen" Active = TRUE URL = "$TYPE(htm)(www.|)youtube.com/watch\?" Limit = 256 Match = "<!DOCTYPE$SET(0=<!--)" "|" "-->" "|" "new\sSWFObject\(\"/player2.swf\?(video_id=[^"]+)\1\"" "$SET(0=--><meta http-equiv="refresh" content="0;url=www.youtube.com/player2.swf?\1">\k )" Replace = "\0"
476 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:21:59 ID:vBpwNiv90] ところで>>445 のフィルタまだ?
477 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:52:03 ID:BEkyhjCe0] JavaScriptをOFFにすればいいんじゃね?
478 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 18:34:06 ID:2LOjLWQX0] >>476 超適当だけど一応作ってみた [Patterns] Name = "www.jtw.zaq.ne.jp/animesong/ kasi kopipe" Active = TRUE URL = "www.jtw.zaq.ne.jp/animesong/" Limit = 256 Match = "<script type="text/javascript" src="../../y.js"></script>" "|" "<NOSCRIPT><META HTTP-EQUIV="Refresh" CONTENT="0;URL=index.html"></NOSCRIPT>" "|" "on(selectstart|contextmenu)="return false""
479 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 19:18:02 ID:K/9AXNBV0] >476 ttp://www.kenichimaehashi.com/kmsoftlab/lyricsmaster/
480 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 23:09:23 ID:yKKFo5Ex0] >>470 ,>>472 を使ってあれこれいじってましたが $NESTを使うと<img*>の記述のある場合と無い場合でうまくいかなかったので 単純にして全部作り直してしまいました ;; リンクをクリックすれば_selfで、右に出るblanktab.gifをクリックすれば_blankで開きます。 (blanktab.gifはなんでもいいです) >>470 ,>>472 はかなり参考になりました。またよろしくお願いします。 おかしなところ多々あると思いますが、以下source
481 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 23:11:26 ID:OXZVhBSr0] \(^^)/ ←ソース
482 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 23:11:58 ID:yKKFo5Ex0] Name = "Insert title & blankGIF [2007/03/08]" Active = TRUE Bounds = "<(a|area)\s[^>]+>(^(\>|click here|<dd>|ID:))*</a>" Limit = 2048 Match = "<(a(rea|))\9\s(*(*href=$AV(\1)*|)&(*title=$AV(\2)*|) *)\5[^>]+>" "\7((<img\s(*src=$AV(\3)*|)&(*alt=$AV(\4)*|) *[^>]+>)\6|)" "</(a(rea|))>" Replace = "<\9 target="_self" \5 target="_self" title="[URL]\1\r\[TITLE]\2\r[SRC]\3\r[ALT]\4">\7\6\8</\9>" "<\9 target="_blank" \5 target="_blank" title="[URL]\1\r\[TITLE]\2\r[SRC]\3\r[ALT]\4">" "<img border="0" src="Local.ptron/blanktab.gif" alt="[URL]\1\r\[TITLE]\2\r[SRC]\3\r[ALT]\4"></\9>"
483 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 23:13:17 ID:yKKFo5Ex0] >>481 間違えました
484 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/09(金) 01:00:08 ID:bjxVpHmZ0] 誤爆ありまくりなので$NESTつけました・・ Name = "Insert title & blankgif set [2007/03/08]" Active = TRUE Bounds = "<a(rea|)\s[^>]+>(^(\>|click here|<dd>|ID:))*</a(rea|)>" Limit = 1024 Match = "$NEST(<(a(rea|))\9\s,(*(*href=$AV(\1)*|)&(*title=$AV(\2)*|) *)\5,>" "\7((<img\s(*src=$AV(\3)*|)&(*alt=$AV(\4)*|) *[^>]+>)\6|)" "</(a(rea|))>)" Replace = "<\9 target="_self" \5 target="_self" title="[URL]\1\r\[TITLE]\2\r[SRC]\3\r[ALT]\4">\7\6</\9>" "<\9 target="_blank" \5 target="_blank" title="[URL]\1\r\[TITLE]\2\r[SRC]\3\r[ALT]\4"> "<img border="0" src="Local.ptron/blanktab.gif" alt="[URL]\1\r\[TITLE]\2\r[SRC]\3\r[ALT]\4"></\9>"
485 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/09(金) 02:11:39 ID:3Cl7ivfL0] 自分で考えてフィルタを作りたいならもう少しプログラミング(論理学でもいい)の基礎を勉強したほうがいいよ。 もしくはほかの人がこれまでに書いてきたものを読んで理解したほうがいい。 例えば <a(rea|)>...</a(rea|)> としたんじゃ <a>...</area> にも <area>....</a> にもマッチするし、たぶんそれは意図していないマッチングだろう。 もう一つだけど最初のうちはアスタリスクを乱用しないほうがいい。 初心者にとってのアスタリスクというのはおそらく面倒なことをブラックボックスに詰め込んでどっかにやるためのツールなんだろうけど それじゃ何も上達しないし理解もすすまないだろう。 >(*href=$AV(\1)*|)&(*title=$AV(\2)*|) これなんかはアスタリスク乱用の好例だね。 やりたいことはhrefがあればその属性値を\1に代入し、titleがあればその属性値を\2に代入する、ということなんだろうけど hrefとtitle以外の属性値をすべて無視してしまえば、もっとシンプルな場合わけができるはずだ。 <a>, <a href>, <a href title>, <a title>, <a title href> というように。 あとはこのスペースを[^>]++で置き換えてやればhrefとtitle以外の属性値を上手に無視することができる。 例えばこうなる。 <a\s ([^>]++href=$AV(*)([^>]++title=$AV(*)|)[^>]+>|[^>]++title=$AV(*)([^>]++href=$AV(*)|)[^>]+>|[^>]+>) #これは<a>にはマッチしないけど、現実的にはそれでも問題はないだろう。 >(*href=$AV(\1)*|)&(*title=$AV(\2)*|) は初心者の好むブラックボックス化で ><a\s ([^>]++href=$AV(*)([^>]++title=$AV(*)|)[^>]+>|[^>]++title=$AV(*)([^>]++href=$AV(*)|)[^>]+>|[^>]+>) は論理的思考にある程度慣れた人が好むブラックボックス化だと考えてくれてもいいと思う。(優劣の問題にあらず) 論理学的には中身はまったく一緒だけどよりシンプルでより破綻しづらいのは後者。 { (A|B)&(C|D) = (AC|AD|BC|BD) } Proxomitronでのアスタリスクは賢い上に速度も最速な便利な道具だけど慣れるまでは上記のようなスタンスで取り組んだほうがいい。 高速化チューニングはその後からやってもいいんだから。
486 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/09(金) 02:47:07 ID:3Cl7ivfL0] 属性値と要素を混同している部分があるけど、適宜読み替えてほしい。 <a(rea|)>...</a(rea|)> について。 残念ながらProxomitronの仕様ではこれに多少の修正を加えることで「意図」通りに動かすということはできない。 方法は二つ。 一つは括弧を閉じないやり方。 Proxomitronからすれば一番合理的なやり方だけど、人間からすれば読みづらいしフィルタサイズが大きくなるわ追加・修正が面倒だわ。 <a(rea...>...</area> | ...>....</a>) もう一つはTSTを利用するやり方。 <a(rea...>(\1)<\area> | ...>(\1)<\a>)$TST(\1=foobar) これなら人間にとって把握しやすいし修正が楽になるというメリットがある。 後者は同じようなことをANDやBoundsを使って表現することもできる。 ANDとBoundsとTSTでどれが一番早いかは……不明。
487 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/09(金) 03:15:52 ID:3Cl7ivfL0] 簡単なテストでANDとDOUBLEANDとTSTの速度比較をしてみた。 AND : <a\s([^>]+>&href=$AV(*)) TST : <a\s([^>]+)\0>$TST(\0=*href=$AV(*)*) DAND : <a\s([^>]+>&&*href=$AV(*)*) フィルタとしては考え得る限りで同一の動作をすると思う。 結果から言うと所要時間は AND ≒ DAND < TST でした。 TSTが一番遅いだろうとは思ってたけどANDとDANDがほぼ同じというのは少し意外。 #もちろんサンプルによっては結果は異なると思うので、本来なら色々なサンプルでテストしてみるべきところだが #今回は二つのサンプルでほぼ同一の結果(所要時間の比率)を得たのでよしとした。 AND/DANDとTSTの速度差は数回の平均を取った場合で0.7%。 ANDとDANDの差は誤差範囲内。 ちなみに <a\s[^>]++href=$AV(*)[^>]+> は上記三つの約7倍の速さだった。 [^>]++をアスタリスクに置換すると更に6%早くなった。(但しこのアスタリスクの使い方は非推奨) 長い文字列に対しては$NESTを使うことで更に早くなる場合もあるがそれはケースバイケース。
488 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/09(金) 04:45:32 ID:hFs8erHf0] ニコニコ動画から直接.flvをDLできるフィルタきぼん
489 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/09(金) 05:15:16 ID:edKiCEkR0] 間接キスでガマンして
490 名前:名無しさん@お腹いっぱい。 [2007/03/09(金) 05:36:25 ID:TLLxfe8n0] 素人な人は、ここで質問して作ってもらったフィルターは、すぐに試さない方がいいかもしれない。 半日程度寝かして、否定的なコメントが出ないぐらいまで待った方が良いかもね。 とんでもないスクリプトを混ぜられるかもしれん。
491 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/09(金) 07:20:42 ID:bjxVpHmZ0] >>485-487 どうも 作成途中の段階で冗長になりすぎてわけがわからなくなったので 全部おじゃんにして作り直して出来たと思った途端に半端なまま UPしてしまいました。 出直します..
492 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/10(土) 03:18:00 ID:uXHetq1x0] <a(rea|)>...</a(rea|)> についてすっかり忘れていたことがあったので追記します。 >残念ながらProxomitronの仕様ではこれに多少の修正を加えることで「意図」通りに動かすということはできない。 これはまったくの誤りで実はもう一つの(比較的小規模な修正で意図通りに動かせる)方法がある。 第三の方法は変数をフラグとして用いてOR関数で分岐させるというもの。 例: <a(\s$SET(flag=0)|real\s$SET(flag=1))[^>]+>*<($TST(flag=0)/a|$TST(flag=1)/area)> 但しこの手法ではローカル変数は使えないので、グローバル変数を使うことになるが使用後に解放することを忘れずに。 解放のやりかたは不要になった段階で$SET(flag=)というように空でSETすれば良い。 グローバル変数自体は基本的にほかのフィルタに値を渡すために使うためのもので、フラグとして使うというのはトリッキーな部類に属すのだが Proxomitronの仕様上、ローカル変数をフラグとして利用することができない(一度使ったローカル変数をマッチ欄で再度使うことができない)ので仕方がない。
493 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/10(土) 03:35:34 ID:650fW3oU0] ttp://vipup.org/ このサイトの広告を消すフィルタを作っていただけないでしょうか。よろしくお願いします。
494 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/10(土) 04:37:51 ID:Q+Oc8G1J0] Name = "3d>>>2 d" Active = TRUE URL = "$TYPE(htm)vipup.org/" Limit = 256 Match = "$NEST(<a\shref=$AV(click.t2z.jp/* ),</a>)|" "<a\shref=$AV(ofuda.cc/ )*</a>"
495 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/10(土) 06:38:33 ID:650fW3oU0] >>494 遅くなりましたが、ありがとうございます。
496 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/10(土) 08:02:57 ID:pr+9tzs+0] firefoxのadblockplusで^click\. とofuda.cc/を弾いてる漏れには無縁
497 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/10(土) 10:08:04 ID:FcJ4cSpA0] オミトロン入れてるのにadblockplusとかアホちやうかと思う。
498 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/10(土) 10:57:17 ID:v1L9WvH00] >>492 一生懸命なとこ申し訳ないけど、日本語訳ヘルプサイトのマッチングコマンドページの $TSTの説明文のところにそれと同じことをローカル変数で実現する例が載ってる。 あとその方法でやるなら$TSTはもっと後ろに置くべき。 </a>、</area>の後ろで。 >>470 置換スタックに代入するためだけに先頭の<aを()で囲うのは 処理速度の低下になるから高速化に拘るのであれば避けるべき。
499 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/10(土) 14:15:10 ID:uXHetq1x0] >498 $TST(\0)の存在を完全に忘れてた。使い所はまだあまり思い浮かばないけど参考になったよ。 <([a-z]+)\1*</$TST(\1)> すごく……スマートです。 >置換スタックに代入するためだけに先頭の<aを()で囲うのは >処理速度の低下になるから高速化に拘るのであれば避けるべき。 該当部分を $NEST(<a(\s|rea\s)\#, .....) に変えて 置換テキストの先頭に <a を加えたほうが良いということ? 前後での速度変化は検知すら不可能な気がするけど調べてないから何とも言えない。 しかし個人的には修正するときに弄る箇所が多くなる可能性があるフィルタというのは使い勝手がよくないと思う。
500 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/10(土) 14:16:49 ID:nGbrcGZM0] myspace(例えばwww.myspace.com/hellogoodbye )で 一番上に出る"今週のお勧めアーティスト"のバナーを消したいのと、 おそらくインターネットオプションの言語が日本語だと メニューが中途半端に日本語になるのがいやなのですが(英語のままがいいです)、 フィルターで解決できますでしょうか? もしできるのであればどなたか作っていただけませんか? よろしくおねがいします。
501 名前:think ◆MM0nnAOCiQ mailto:sage [2007/03/10(土) 14:58:13 ID:iZYl65vB0] >>498 > 置換スタックに代入するためだけに先頭の<aを()で囲うのは処理速度の低下になる 今回はa要素かarea要素かを覚え込ませる必要があるので、置換スタックを使わざるを得ませんでした。 (rea|) で変数に格納した方が望ましいということでしょうか?
502 名前:think ◆MM0nnAOCiQ mailto:sage [2007/03/10(土) 15:00:25 ID:iZYl65vB0] ところで、何の前提も無しに私がフィルタを作成しようと思ったら、$NESTは使わないと思います。 $NESTを使用すると、最小限のマッチが実現しにくくなる(マッチしなくても良いところまでマッチする)場合があり、今回はその状況なので…。 [Patterns] Name = "Insert <a> title [2007/03/10] test4" Active = TRUE URL = "$TYPE(htm)" Limit = 256 Match = "(<a(rea|)\s)\#(^(^[^>]++href=$AV(\2)))" "(([^>]++)\#title=$AV(\1)$SET(#=title="<a title>: \1\r\n<a href>: \2)|" "$SET(#=title="<a href>: \2))" "(" "[^>]+>(^<img\s[^>]++title=)" "(<img\s(" "[^>]++src=$AV(\3)$SET(#=\r\n<img src>: \3)&" "([^>]++alt=$AV(\4)$SET(#=\r\n<img alt>: \4)|)" ")|)" ")\9" Replace = "\@"\9" ---- サンプルソース <a id="a_id" title="a_title" href="a_href"><img alt="img_alt" src="img_src" title="img_title" /></a> <a id="a_id" title="a_title" href="a_href"><img alt="img_alt" src="img_src" /></a> <a id="a_id" title="a_title" href="a_href">text</a> IE7とSyleraで検証したところ、img要素のtitle属性が存在するときは、img要素のtitle属性がツールチップに表示されるようです。 そのため、img要素のtitle属性が存在する状況ではマッチしないようにしてあります。 どうせなら、img要素用のフィルタがあっても良いかもしれません。
503 名前:think ◆MM0nnAOCiQ mailto:sage [2007/03/10(土) 15:06:46 ID:iZYl65vB0] >502の続き。 「最小限のマッチ」を最優先で考えるならば、>502のフィルタは \9 ではなく「肯定先読み」を使うべきですが、それでは置換スタックに該当テキストが代入されませんでした。 仕方がないので、ローカル変数で代替えしていますが、他に良い手段があれば改善したい部分です。
504 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/10(土) 17:25:14 ID:S0lPbdUa0] ニコニコ動画から直接.flvをDLできるフィルタきぼん
505 名前:think ◆MM0nnAOCiQ mailto:sage [2007/03/10(土) 17:52:21 ID:iZYl65vB0] >>325 遅レスですが、作成したのを忘れていました。(汗) [Patterns] Name = "Mooter: Kill ad [2007/02/09] test1" Active = TRUE URL = "$TYPE(htm)www.mooter.co.jp/moot/\?" Limit = 2048 Match = "$NEST(<td[ >],[^>]++bgcolor=$AV(*)*<div\s[^>]++id=$AV(sponsor)*,</td>)" "$SET(0=\r\n<!-- Kill Mooter ad -->\r\n)|" "<div(^(^\s[^>]++id=$AV(sp)))$SET(0=<div style="display: none")$STOP()" Replace = "\0" 参考までに、どんな時に「Mooter」で検索するのか、聞かせていただけると嬉しいです。
506 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/11(日) 01:45:50 ID:QC5rXZw90] みなさんのアドバイスをいただきたいです。 proxo.hp.infoseek.co.jp./cgi-bin/sn_uploader/src/pr0071.txt 相対リンクを絶対リンクに直すリストを作ったのですが、思ったように動きません。 相対リンクなら絶対リンクに直し、絶対リンクならそのままにグローバル変数ABSにURLを格納するのですが それを正しく呼び出すことができません。 $SET(ABS=\8\9) のようにセットしているのですが $GET(ABS)と\8\9が一致していないということです。 置換テキストで $GET(ABS) の代わりに\8\9を使うとこちらの環境では大部分のウェブサイトで動作を確認できました。
507 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/11(日) 02:41:41 ID:LLusi//q0] パスを変換するフィルタはときどき話題になるけど、面倒な問題だと思う。 自分も以前考えたことがあったけど、 わざわざパスを変換しなくても目的さえ達成できればいいかと考えて、 まったく別の見方からフィルタを書くことで解決した。 パスを書き換えることが本当に必要なのかを考え直すのも手だと思う。
508 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/11(日) 02:45:15 ID:woTiePuf0] >>502 457ですが ありがとうございます。
509 名前:498 mailto:sage [2007/03/11(日) 14:17:22 ID:LSOWJrEn0] >>499 >>501 >置換テキストの先頭に <a を加えたほうが良い >(rea|) で変数に格納した方が望ましい そうです。 でもこれは’高速化を重視する場合は’という条件での 話なので必ずこう書かなければいけないということではないです。 >>470 は高速化のために$NESTを使ってると思ったので>>498 のレスを 付けたんですが、>>502 を読むとどうやら違ったみたいです。 こちらの勘違いだったようなのですみませんが忘れて下さい。
510 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/11(日) 15:31:59 ID:LSOWJrEn0] >>503 (^(^$SET(#=…)))は使えないようですね。 (^(^$SET(ローカル変数=…)))は動いたのでこれで代用してはいかがでしょうか。
511 名前:名無しさん@お腹いっぱい。 [2007/03/11(日) 17:50:01 ID:0EO6G7xs0] title要素内の改行をスペースに置換するにはどうしたらいいでしょう。
512 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/11(日) 20:45:54 ID:LSOWJrEn0] >>506 試してないので推測ですが、wikiの$SETの説明文に書いてある現象が 起きていると思われるので最短一致にならない書き方にすれば直ると思います。 >>511 改行は\r\n。
513 名前:511 [2007/03/11(日) 21:44:41 ID:0EO6G7xs0] >>512 それは知っています。
514 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/11(日) 21:57:38 ID:qs13JhQR0] アメーバ動画をDLできるフィルタきぼん
515 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/11(日) 23:37:09 ID:LSOWJrEn0] >>513 一応確認なんですが>>502 のフィルターのことですよね?
516 名前:511 [2007/03/12(月) 00:16:20 ID:/2yG7ZeG0] >>515 違います。 私は既存のどのフィルターに対しても言及していません。 ただ、私のやりたいことについて言っているのです。 改行をスペースに置換する方法は知ってるんです。 それをtitle要素に限定する方法がわからないのです。
517 名前:think ◆MM0nnAOCiQ mailto:sage [2007/03/12(月) 00:32:23 ID:zgeKaTdr0] >>510 ローカル変数で万事OKでした。多謝。 # まさか、置換スタックの制限だったとは…。$SET が使えないものと想定していました。 [Patterns] Name = "Insert <a> title [2007/03/12] test4.1" Active = TRUE URL = "$TYPE(htm)" Limit = 256 Match = "(<a(rea|)\s)\#(^(^[^>]++href=$AV(\2)))" "(([^>]++)\#title=$AV(\1)$SET(#=title="<a title>: \1\r\n<a href>: \2)|" "$SET(#=title="<a href>: \2))" "(^(^" "[^>]+>(^<img\s[^>]++title=)" "(<img\s(" "[^>]++src=$AV(\3)$SET(\8=\r\n<img src>: \3)&" "([^>]++alt=$AV(\4)$SET(\9=\r\n<img alt>: \4)|)" ")|)" "))" Replace = "\@\8\9"" >>511 ,513,516 $NEST でマッチ範囲を制限してみてはどうでしょうか?
518 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/12(月) 00:46:37 ID:awFCazQV0] どなたかSHOUTcast Song HistoryをShift-JISで表示する ヘッダフィルタをお願いしマス
519 名前:think ◆MM0nnAOCiQ mailto:sage [2007/03/12(月) 00:52:44 ID:zgeKaTdr0] >>511 ,513,516 もしくは、「title要素の開始タグから次のタグまでの文字列」に制限する方法ですね。 <title>[^<]++[\r\n]... title要素は、内容モデルで文字列のみを許可しているので、HTMLに即した書き方である限り、他のタグが現れることはありません。 ttp://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/global.html#h-7.4.2 最も、"<>" を文字列としてそのまま書いたりするサイトもあるので(本来は実体参照で書くべきところです)、$NESTの方が確実ではあります…。 見やすいフィルタを作るなら、Bounds でも良いです。
520 名前:511 [2007/03/12(月) 01:35:35 ID:/2yG7ZeG0] >>517 ,519 ありがとうございます。 私、$NEST()の使い方がどうもわからないのです。 Match = "$NEST(<title*>,\r\n,</title>)" Replace = " " と書いてみたんですが、駄目でした。おそらくこれは間違った書き方なんでしょう。 正しい書き方をご教示願います。
521 名前:think ◆MM0nnAOCiQ mailto:sage [2007/03/12(月) 02:28:08 ID:zgeKaTdr0] >>520 "$NEST(<title*>,\r\n,</title>)" は "<title>\r\n</title>" にマッチします。 $NEST の第二引数 (上例では "\r\n") は完全一致ですので、「改行を含む文字列」を指定してやれば良いでしょう。 「改行を含む文字列」の簡単な例は *(\r\n|[\r\n])* ですが、これでは一つの改行しか置換できません。 複数の改行を置換するためには、「グループ化を利用して、再帰的にマッチ」させる必要があります。 ttp://www.pluto.dti.ne.jp/~tengu/proxomitron/help/Tips_And_Tricks.html (「再帰的なマッチングを使わない方法」を参照) (*(\r\n|[\r\n]))+{1,*}* この表現で期待通りにマッチすると思います。 後は、置換スタックに格納して、変換してあげてください。 改行が見つかったときに、$SET で置換スタックに半角空白を格納するのがポイントです。
522 名前:think ◆MM0nnAOCiQ mailto:sage [2007/03/12(月) 02:38:10 ID:zgeKaTdr0] 今更ですが。 title要素内の「空白」と「改行」は同様に「空白としてWebブラウザに解釈される」ので、ブラウザの挙動を変更したいのなら、ご希望のフィルタは期待通りに動作しません。 今回は別の意図が質問者さんにあるのかと思っていたのですが、やはり、気になってしまいました…。
523 名前:511 [2007/03/12(月) 06:33:53 ID:/2yG7ZeG0] thinkさんのレスを参考にして、title要素内の改行をスペースに置換するフィルターを作りました。 [Patterns] Name = "Opera History Saver" Active = TRUE Multi = TRUE Bounds = "<title(\s*|)>*</title>" Limit = 256 Match = "(\#(\r\n|[\r\n])$SET(\#= ))+\1" Replace = "\@\1" これで適切なのかどうか不安ですが、テストをした限りでは私の望み通り働いてくれます。 thinkさんありがとうございました。 なぜtitle要素内の改行を空白に置換したかったのかといいますと… Operaの履歴ファイルがたまに破損するから調べてみると、原因はタイトルに含まれる改行らしい。 そこで、Proxomitronを使って、改行を空白に置換してしまえと思ったわけです。 でもですね、もっとよく調べてみると、メディアタイプがapplication/xhtml+xmlの場合において タイトルに改行を含むと履歴ファイルが破損するらしく、text/htmlならセーフみたいなんです。 だからHTTPヘッダーフィルターでapplication/xhtml+xmlをtext/htmlに書き換えれば済む話でした。 せっかく作った "Opera History Saver" ですが、存在意義がなさそうです…。
524 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/12(月) 12:32:18 ID:sFZoAlND0] 以前このスレでYahooBlog検索の右側にあるニュースとかを消すフィルターを作ってもらったものですが Name = "test" Active = TRUE URL = "blog-search.yahoo.co.jp/" Limit = 50 Match = "(<!-- [%b1][%a6]\w --> )\1<td [^>]+>$SET(#=\1<td style="display: none;">)" Replace = "\@" これがいつのまのか通用しなくなってしまいました。どこをどう変えればいいのかご教示してくれれば幸いです。
525 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/12(月) 12:55:47 ID:tVcyCE360] IEが受け取れないメディアタイプを指定するほどのニッチなウェブサイトがタイトル要素に改行を含めるなんてなかなか飲み込めない話だね。 もしかしてインデントでもしてるのかな。 どちらにしろそんなウェブサイトは見る価値がないだろうと思うのでURL killfile.txtに追加するのも一つ。 <title> タイトル </title>
526 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/12(月) 14:44:55 ID:aCYQ5JIW0] >>485 >もう一つだけど最初のうちはアスタリスクを乱用しないほうがいい。 >初心者にとってのアスタリスクというのはおそらく面倒なことをブラックボックスに詰め込ん>>でどっかにやるためのツールなんだろうけど >それじゃ何も上達しないし理解もすすまないだろう。 >>(*href=$AV(\1)*|)&(*title=$AV(\2)*|) >これなんかはアスタリスク乱用の好例だね。 Tips and Tricks ttp://www.pluto.dti.ne.jp/~tengu/proxomitron/help/Tips_And_Tricks.html アンパサンド「&」を使用すれば、タグの属性を、見つけた順番に関係なく 取り込むことができます。 たとえば、「<img ... >」タグを書き換えて、あなたが持っている画像と置き換え、 元の「width」と「height」の値はそのまま残す、という例を考えてみましょう。 その場合、以下のようにします... Matching: <img ( (*(height=\w)\1*| ) & (*(width=\w)\2*| ) ) > この表現真似したんだろ。少し意地悪過ぎないか?
527 名前:511 [2007/03/12(月) 21:51:58 ID:xzItuT7B0] >>525 私のOperaの履歴が破損する原因だったサイトは――こんな言い方するとそのサイトが悪い見たいだけど、 もちろん悪いのはOperaのバグ――IEからのリクエストが来たらtext/htmlを吐くように配慮しているサイトでした。 ところで「ニッチなウェブサイト」って何でしょう。
528 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/12(月) 23:09:22 ID:Xw0bZVnJ0] >ニッチ【niche】 >西洋建築で,壁面を半円または方形にくぼめた部分。 >彫刻などを飾ったり噴水を設けたりする。壁龕(へきがん)。 >転じて,広く,隙間をいう。 スキマ産業的Webサイト???
529 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/12(月) 23:26:51 ID:Tn7hpqvH0] ニッチもサッチもどうにもこうにもブルドッグ
530 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/12(月) 23:30:23 ID:IhbXMcJV0] >525 ttp://www.faireal.net/ application/xhtml+xml の際のソース参照。
531 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/13(火) 02:12:22 ID:O2zL+zL90] google imageまたダメになった?
532 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/13(火) 02:35:52 ID:mu+tlPQe0] >>531 Google Image: Image Change (070115)だったら <a href="\+e\+b.m\+"><imgを <a href="\+e\+b.n\+"><imgにすればいいよ
533 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/13(火) 02:38:39 ID:O2zL+zL90] >>532 おお、ありがとう。
534 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/13(火) 13:37:19 ID:6oKDUNzC0] >>524 とりあえず作り直してみた。 Name = "Yahoo blog search" Active = TRUE URL = "blog-search.yahoo.co.jp/" Limit = 80 Match = "<td [^>]+>( <!-- [%a5][%c8])\1$SET(#=<td style="display: none;">\1)" Replace = "\@"
535 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/13(火) 19:16:45 ID:POt57Fu+0] >>534 ありがとうございます・・・しかし私の環境では右側のキーワードの注目度、評判、ニュース記事などが消えませんでした。 blog-search.yahoo.co.jp/search?ei=UTF-8&fr=sfp&p=%E6%88%B8%E7%94%B0%E6%81%B5%E6%A2%A8%E9%A6%99
536 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/13(火) 22:36:25 ID:+r6UlnCI0] xhtmlって要素内に改行入れちゃいけないの? ってそんなことあるわけないか。
537 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/14(水) 08:04:48 ID:nHF3h8Zy0] >>535 トップページがEUCで検索した後のページがUTF8 …… なのか? これで動くはず。 Name = "Yahoo blog search" Active = TRUE URL = "blog-search.yahoo.co.jp/" Limit = 80 Match = "<td [^>]+>( <!-- [%a5][%c8][%a5][%d4])\1$SET(#=<td style="display: none;">\1)" "|</head>$SET(#=<style>\n<!--\ntd#rightcol { display: none; }\n-->\n</style>\n</head>)" Replace = "\@"
538 名前:think ◆MM0nnAOCiQ mailto:sage [2007/03/14(水) 08:25:50 ID:VvDEM1HD0] おはようございます。 最近、書くだけ書いて投稿を忘れてしまうことが多い気が…(汗)。遅レスですみません。 >>523 なるほど、そういう訳でしたか。 > これで適切なのかどうか不安ですが、テストをした限りでは私の望み通り働いてくれます。 比較的、良くできていると思います。少しアドバイスしますと -- <title(\s*|)> を <title(\s[^>]+|)> に変更 アスタリスクは制限された領域でない限り、2つ連続で使わない方がよいです。 ttp://vird2002.s8.xrea.com/proxomitron/meta_character/m-chara_asterisk.html -- \1 を \# に変更 置換テキストを \@ のみにできます。 -- Multi を外す。 私の書き方も悪かったのですが、このやり方はProxomitronHelp記述上の「再帰的なマッチングを使わない方法」です。 ヘルプ上のマッチという表現は「フィルタのマッチ」を指していると思われますが、私は「ある表現部分のマッチ」という意味で用いていましたので、ややこしくなっていました…。 Multiに依存しない表現を使う場合は、Multi を外した方が高速化されますし、誤爆を最小限に抑えられます。
539 名前:think ◆MM0nnAOCiQ mailto:sage [2007/03/14(水) 09:16:00 ID:VvDEM1HD0] >>536 br要素のことでしたら、XHTML1.1 でも使用できます。 <p> で括るべきところで <br /> を使うのはNGですが、論理構造にそってマークアップされていれば仕様上は問題ありません。 最も、「論理要素でないbr要素は非推奨」というポリシーの方もいるようで、それも納得できる話ですけど…。 余談ですが、XHTML2.0 では br要素 は廃止され、新しい要素として l要素 ("line"を意味し、空要素ではなくなります) が導入される見込みです。 ですので、前方互換性を考慮するなら、br要素は使わない方が良いと思います。 >>537 > トップページがEUCで検索した後のページがUTF8 …… なのか? Yahoo!ブログ検索 - 「Proxomitron」の検索結果 ttp://blog-search.yahoo.co.jp/search?p=Proxomitron ↑の検索結果はEUC-JPで出力されているようですが、そのフィルタではコメント部分がマッチしていないようです。 つまり、<td ... id="rightcol"> へのスタイルのみが適用されているわけですが、これで必要条件を満たしているように思えます。 [%a5][%c8][%a5][%d4] をデコードしてみると、"トピ" となりましたがこれはどの部分にマッチさせようとしているのでしょうか? Proxomitronによる改変前のhtmlソースを検索してみましたが、HITしませんでした。
540 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/14(水) 14:35:09 ID:2lOdeE9F0] >>537 完璧です!本当にありがとうございました。お手数をおかけしました。
541 名前:536 mailto:sage [2007/03/14(水) 18:17:41 ID:72ybzZdr0] >>539 やはりOKでしたか、どうもありがとう。
542 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/14(水) 18:49:24 ID:PpkryFJv0] >>542 よっ大将!見事ですね。
543 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/15(木) 04:00:02 ID:ridcyRuU0] ( ´ー`)。oO(…ぬう、何者かがいきなり自画自賛を・・・・)
544 名前:537 mailto:sage [2007/03/15(木) 12:43:08 ID:M2i2oHhr0] >>539 > トップページがEUCで検索した後のページがUTF8 …… なのか? ↑ この文字コード云々……というコメントは全然関係なくて、自分の勘違いでした。 > つまり、<td ... id="rightcol"> へのスタイルのみが適用されているわけですが、これで必要条件を満たしているように思えます。 検索結果のページの右側の部分には <td valign="top" id="rightcol"> という風に idが振られているんですが、 トップページ ttp://blog-search.yahoo.co.jp/ の同じ <td>タグの箇所にはidとかclassが無いんですよ。 それで仕方なく後続のコメント(<!--トピックス関連検索-->)にマッチするような書き方になりました。
545 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/15(木) 13:02:15 ID:M2i2oHhr0] そうそう、質問しに来たんですが…… ttp://www.amazon.co.jp/dp/4480062858/ たとえばこのページに行って、「マーケットプレイスに出品する」のボタンを押して、次の画面で ALT + 1キーを押すと「商品説明」のフォームにフォーカスが行くようにしたいんです。 それで以下のようなフィルタを書いたんですが、上手くいきません。 Name = "test" Active = TRUE URL = "s1.amazon.co.jp/" Limit = 100 Match = "(name=$AV(sdp-sai-condition-comments))\1$SET(#=accesskey="1" \1)" Replace = "\@" テスト画面ではちゃんとマッチするのですが、実際の画面ではマッチしてないようです。何が原因でしょうか?