Home / Diary / 2007年11月のログ

12

目次

  1. Pragger用プラグインを公開
  2. LivedoorReaderがフィードを取得してくれない件
  3. RSSの不具合を修正
  4. Pragger始めた
  5. キングスフィールド3 リアルタイムアタック
  6. 続・ニコニコ動画視聴補助スクリプト for Opera

Pragger用プラグインを公開

Praggerの動作やらRuby自体に苦戦しつつも、そこそこプラグインを書けるようになってきたので公開。

Pragger用プラグイン

ニッチなプラグインばかりだが、暇を見てちょくちょく増やそうと思う。

とりあえずこしらえたのが下記4本。

mixiの指定ユーザーの最新日記一覧を取得する
最初はマイミクシィだけにしようとしてたが、どうせならID列挙して一括取得でよくね? ということになった。外部ブログには非対応っつーか、そっちのフィードを登録しなさい。
ニコニコ動画の検索から新着を取得する
作者かファンがアップされ次第マイリストに登録するなら、そちらを利用すればいいが、そうでない場合は律儀に検索する必要があるので作成した。
音泉から各番組の放送を取得する
更新チェックして開くのが面倒になってきたんで、asxファイルへのリンクを付けてRSS化。
アニメイトTV Webラジオから各番組の放送を取得
上と同じ。各話内容をdescriptionに入れようとしたが、どうもHTMLを手書きで作成しているようで、一部タグが抜けていたり、他番組のタイトルがコメントに残ってたりと非常にカオスだったので断念。ぱにらじ二期まだー?

大体のコツを掴めたので、次はRSS非対応サイトからRSSを作ることにする。

Info

2007
1130

Tagsruby

LivedoorReaderがフィードを取得してくれない件

前回の続きというか続報。RSSを修正したところ、FeedBurnerのエラーは発生しなくなった。そしてFastladderが取りに来てくれるようになったが、LivedoorReaderがまだだ。

FeedBurnerのUAに「livedoor HttpClient/0.1」が残ってるということは、一応毎日確認しに来てるっぽいのだが、そのままお帰りに。なぜだ。

とりあえずFeedBurner側での最適化を全てキャンセルした上でオリジナルとFeedBurner側のRSSがValidになっていることを確認。これでもダメならどうしよう。

追記

問い合わせたら深夜にもかかわらず1時間くらいで反映された。対応早っ。どうもありがとうございます。

Info

2007
1121

Tagssite

RSSの不具合を修正

GoogleReaderで文字化けするという苦情を頂いたので原因を調査。

どうやらGoogleReaderはEUC-JPがダメっぽい? ためしにそのままUTF-8にしたら化けなかった。

FeedBurnerを見てみたら、こちらから取得したRSSをそのまま返してた。以前はスタイルシートを挟みつついろいろ追加してくれてた記憶があるんだが、アレやめたのか。

それまではFeedBurder側でUTF-8にしてくれていたが、やめたおかげでEUC-JPのものがそのまま表示され、GoogleReaderでエラーで化けた、と。こういうこと?

ってゆーか、エンコードをちゃんと明記してそのとおりにエンコードしてりゃあなんでもいいと思ったんだが、Google的には違うのか。

というわけで、こちら側でUTF-8にしたものをFeedBurnerに渡すようにしたんで多分大丈夫なはず。どっかでエラーが出るようなら指摘してください。

追記

FeebBurnerの購読数がエラい減ってる件。どうやらLivedoorReaderからのリファラが無いようだ。こちらの更新間隔が長くなったからRSS取りに来る間隔が長くなったんだな・・・

・・・って、なんかゴッソリ落ちてる。レポートを見てみると9月22日を最後に、23日以降は一切LivedoorReaderから来てないようだ。一体なぜ?

再びFeedBurnerのフィード・メディックを見てみると、エラーが列記されてた。こっちが直ればLDRも来てくれるような気がしないでもないのでとりあえず様子見。

Info

2007
1118

Tagssite

Pragger始めた

Rubyの勉強も兼ねてPraggerを弄ることにした。

インストール

PRagger - Tracにある通り、SubversionをインストールしてPraggerをチェックアウト。ActiveRubyも入れて動作確認。が、動かない。なぜだ!?

Rubyのライブラリコードを追うなど、試行錯誤を繰り返したが動作せず、結局ActiveRuby入れなおしたら何事も無かったかのように動いた。所要時間3時間。疲れた。

RSSを置いてないページからRSSを作る

PluginList - PRaggerまとめサイト それPraを参考にしてyamlを記述していく。

custom_feedというプラグインを使えば良いいようだ。

  1. captureに記事の繰り返しを含む部分を取得する正規表現を記述。
  2. splitに、記事と記事を分けるための正規表現を記述。
  3. 記事として分割された部分からtitleとlinkとして抜き出すための正規表現を記述。
  4. 最後にRSS::saveで保存する。

yamlはこのような感じになった。

- module: Feed::custom_feed
  config:
    url: http://www.insertcredit.com/
    capture: <!-- Begin news segments -->(.*?)<!-- Begin sidebar segments -->
    split: ^\s<table border="0" cellspacing="0" cellpadding="2" width="590">(.*?)</table>\s*?</table>\s*?<br>
    title: <p id="title" align="left">(.*?)<
    date: <p id="date">(.*?)</td>
    link: <a href="http://www\.insertcredit\.com/(archives/\d+\.html)"><font color="#EEEEEE">\[p\]</font>
- module: RSS::save
  config:
    title: insert credit
    about: http://www.insertcredit.com/
    description: insert credit
    link: http://www.insertcredit.com/
    filename: insertcredit.rdf

praggerを実行すると見事にrdfファイルが作成された。ちゃんとタイトルとリンクが入ってる。

custom_feedが使いづらい

まず、linkに無駄な#が入る。普通は抽出ページからの相対パスだろうから、#が必要になるとは思えない。

次にdescription。splitで分割した後のものがそのまま入るので、すごい中途半端なHTMLタグが混入して美しくない。

そこでcustom_feedを改造することにした。

custom_feedを改造

plugin/feed/custom_feed.rbをplugin/myplugin/とでもフォルダを作成してコピー。以後、コピー先を弄る。

まずはlinkの調整。#を追加しないようにする。

mylink = config['url'] ? (config['url'] + '#' + $1) : $1 
↓
mylink = config['url'] ? (config['url'] + $1) : $1

次にdescriptionで本文っぽいのを取らせたいので

  if(config['description'])
    description = Regexp.new(config['description'])
    items.each do|i|
      if i =~ description
        mydescription = $1
        i.instance_eval do 
          @description = mydescription
          def description
            @description
          end
        end
      end
    end
  end

  return items
end

ソースファイルの最後をこのような感じにする。title取得部分をコピペしてdescriptionにしただけだが。

最後にプラグイン名が同じだとアレなのでファイル名をcustom_custom_feed.rbにしてメソッド名も同様に変える。で、yamlも書き換えて完成。

- module: myplugin::custom_custom_feed
  config:
    url: http://www.insertcredit.com/
    capture: <!-- Begin news segments -->(.*?)<!-- Begin sidebar segments -->
    split: ^\s<table border="0" cellspacing="0" cellpadding="2" width="590">(.*?)</table>\s*?</table>\s*?<br>
    title: <p id="title" align="left">(.*?)<
    date: <p id="date">(.*?)</td>
    link: <a href="http://www\.insertcredit\.com/(archives/\d+\.html)"><font color="#EEEEEE">\[p\]</font>
    description: <p id="text"><font color="#EEEEEE">([\s\S]*?)</font></p>
- module: RSS::save
  config:
    title: insert credit
    about: http://www.insertcredit.com/
    description: insert credit
    link: http://www.insertcredit.com/
    filename: insertcredit.rdf

無事に本文の抽出に成功。んむ、美しい。出来上がったRSSはこんなかんじ。

insertcredit.rdf

感想

仕組みが複雑ではないので、Ruby初心者の自分にとっては勉強用として丁度良い。

WWW::mechanizeを使うことでフォーム等の操作が可能になるので、今度はそっちに挑戦するつもり。

余談

正規表現を記述する際はHTMLソースとにらめっこするわけだが、マッチするはずなのにしないなーと思ったら、ご丁寧にもFirefoxが<br>を<br />に変えてくれてました。余計なことすんな、橙パンダ。

Info

2007
1117

Tagsruby

キングスフィールド3 リアルタイムアタック

ねんがんの 1じかんぎりをたっせいしたぞ!

4年前に挑戦した時は満足な結果が残せなかったので、今回はルートを再構築してタイムの短縮だけでなくクリア率の安定化も図った結果、1時間を切ることに成功。実プレイ時間55分37秒。もちろん継承バグ無しで。

再挑戦当初は予想もしなかった場所で死にまくって、4年前の俺はどうやってここを突破したんだ? と首をかしげていたわけだが、ルートの再構築をしていて分かった。単に運が良かったか、当時のアチョースキルが高かっただけだった。

最終的には運次第の場所がラストの2箇所のみ。他は非常に安定したが、ここばかりはどうしようもない。ラスボスに至っては開幕の動けないところにライトニングボルト撃ってくるし。アホか。

さらに襲い掛かるフリーズの恐怖。ワープすると10分の1くらいでフリーズする。このワープにはシーンの切り替わりが含まれる。ベストタイムでラスボスに突入してフリーズした時はさすがに参った。

というわけで、プレイ環境をPS2から旧PSに移行することでフリーズしなくなり、ようやく達成。長かった。

Info

2007
1116

Tagsgame

続・ニコニコ動画視聴補助スクリプト for Opera

いいかげんなボタン配置等がいかにも自分用。

nico2assist.user.js

このスクリプトを導入するとページ左上にボタンが4個できる。それぞれをクリックすることで効果発動。

基本的に、ニコニコ動画を小ウインドウで見るスクリプトnico2windower.user.jsと合わせて使うものだと思いねぇ。

設定

デフォルトはwrapper利用に合わせているので、利用していないならflvplayer_wrapper = falseにしておく。

動画情報のトグル表示

一番上のボタン。基本的に切り離したウインドウで見るので、いちいちスクロールするのがめどい。

フルスクリーン

上から2番目のボタン。

拡大率をモニタに合わせて設定して、ボタン1つでフルスクリーンサイズに拡大。あとはF11を押してOperaもフルスクリーンにする。(小ウインドウではフルスクリーンにできないので、動画次第で開き方を変えるとよい)

公式で用意されているものは上下に余計なものがついた状態で拡大されるのに対し、こちらは純粋に動画部分のみを拡大する。

デフォルトでは1280*1024モニタに合わせているので適宜修正する。

画質向上

上から3番目のボタン。

向上するらしい。iroiro.jsからパクった。

ソフトリロード

一番下にあるボタン。F5を介さずにリロード。局所的に使う。

市場手動化

ページ開いた時に、市場読み込み待ちでカーソルが砂時計になっているのが非常に嫌だから。

その他諸々CSS

このスクリプトを導入すると、基本的に動画ページはプレイヤーと市場手動表示ボタンしか表示されなくなる。

せっかくだから時報キャンセラー

スクリプトと関係無いけど。

コンテンツブロックにhttp://www.nicovideo.jp/api/getmarquee*を追加。

Info

2007
1114

Tagsoperauserjs

暴満館

最新のエントリ
注目のエントリ(はてな)
ゲーム攻略

暴満館 ~The House of Full Violence~
Powered by WordPress.
About | Contact | 新着のエントリ情報 RSS

ページ内の見出し一覧
Pragger用プラグインを公開
LivedoorReaderがフィードを取得してくれない件
RSSの不具合を修正
Pragger始めた
キングスフィールド3 リアルタイムアタック
続・ニコニコ動画視聴補助スクリプト for Opera