今風の更新チェッカーの話

大昔にwgetを利用したWeb更新チェッカー作ってたんだけど、同じ事を今やろうとしたら大変なのを最近知った。

主に以下の理由なんだよね。

・Ajax使ってるところは素直にとれない。

小説家になろうサイトみたいに素直な構造ならいいけど、世の中そう単純ではないらしい。
これ対策として、以下を実際に試作してみた事がある。

★Windows上でミニマムなダウンローダを作り動作させる。

異種OSで再現に四苦八苦するより、こっちが楽で確実ですわな。
ただし全部Windowsで書くのも面倒なんで、大部分はUNIX likeですませましたんで、
Windowsなのにcygwin+Apacheがいるという妙にクリティカルなシロモノになりましたが ^^;;

1.概要

チェッカーのアクセス部にwebBrowserコンポーネントを使う。
これはIEの部品そのものなんで、あとはレジストリで「うちはIE10ナリ」と言い放ちながらアクセスさせたんですね。

それから、Ajaxなどの対策に、単にロード完了を待つだけでなく、しばらく待機して処理完了を待つ。
(ロード完了は単にダウンロード完了なので、各種プログラムの動作完了にはもう少しかかる。テキストの変更待ちをすればいいみたい)
このあたりは泥臭い処理になるけど、まぁブラウザ対応なんて昔から泥臭いもんですし。
で、あとはそのゲットしたものをあれこれ比較して履歴をとり、更新チェッカーに用いるわけですな。

全体の実装方法は色々あるんですが、制御はRubyでやりました。
これはRubyのユーザスレッドを使いたかったからですね。
Rubyも最近はネイティブスレッドがあるけど、環境問わず類似の結果が得られるユーザスレッドが僕は好きです。

んー、まじめにゼロから作り直そうかな。
でも需要ないよなぁ……。

なろうツール(仮名)試作中

スクリーンショット 2016-02-19 08.31.50

要するに、なろうサイトのテキストを表示したり、クリップボードにコピーして棒読みちゃんとかに読ませるためのツール。使い方はこれだけ。

  1. URLをいれて「GO」を押すとアクセスし、ページを上半分に表示する。
  2. 本文またはインデックスが見つかったら、テキストを抜き出して下半分に表示する。
  3. 「音」ボタンを押すと、内容をクリップボードにコピー。
  4. 本文が出ている時に「戻」「進」ボタンを押すと、次のページを取りに行く。

需要なんてないと思うけど、まとまってきたらどこかにアップしよっと。

WPFでwebBrowserを使い、さらにスクレイピングしてみる。

お恥ずかしい事だけど、Windowsはあまり得意ではない。
だから、.NET+WPFな環境で、webBrowserコンポーネントが使えるなんて知らなかった。昨日まで。

ちょうど最近よく.NETで遊んでいたもので、さっそくやってみた。

スクリーンショット 2016-02-11 12.20.45

おーすげえ、動く動く XD

詳しくはこっちで → WPFでスクレイピングを

[C#][wpf] なろう小説簡易サポートツールを作ってみた。

小説家になろうサイトに小説を投稿するための個人用サポートツール。
基本的に、ひとつの作品=フォルダ一個で、ファイルは章ごとに 作品コード-001.txt みたいに番号がつけられている。ちなみに作品設定は 作品コード-setting.txt に書く前提になっているが、こちらは情報をとるだけで手出しはしない。

スクリーンショット 2015-04-13 08.30.05 続きを読む [C#][wpf] なろう小説簡易サポートツールを作ってみた。

[C#] Threadはもう古い?(Task編)

Speech関係でThreadを使っていたが、ある時「Threadはもう古い。コスト高いしやめときな」という記事を見る。
ちょうど謎のOut of Memory問題でThreadを疑っていたので「そんじゃどうすんの?」となった。
で、ふたつの方法があったのだけど。 続きを読む [C#] Threadはもう古い?(Task編)

[C#] 謎のエラーに悩まされる(FatalExecutionEngineError)

普通に使っていると問題ないが、一日ずーっと負荷をかけ続けていると止まってしまうアプリがあった。なんでやねんと悩みつつエラーを確認。

FatalExecutionEngineError が検出されました。
Message: ランタイムの重大なエラーが発生しました。エラーのアドレスは……

なんですかこれ面妖な。 続きを読む [C#] 謎のエラーに悩まされる(FatalExecutionEngineError)