Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@ssig33
Created March 16, 2013 07:24
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ssig33/5175383 to your computer and use it in GitHub Desktop.
Save ssig33/5175383 to your computer and use it in GitHub Desktop.
クローラーの設計
$ fastladder-crawler export.opml 'http://url_of_fastladder'

とかコマンドうつとクローラーが起動してガンガンクロールして RPC 経由で更新する感じですかね。

フィードにアクセスしまくらないように CrawlStatus というのが Fastladder 側にあるんだけど、これは無視して自前でなんとかするのがよい感じする。なるべく Fastladder から切り離す。

フィード全文化とかはオプションで選択出来るようにする。広告除去もそんな感じ。

こんなもんか?

@mala
Copy link

mala commented Mar 16, 2013

ふーむ、どうせならクロールすべきフィードの一覧を返すAPI、があった方がより疎結合になるかな。
(認証の方法は別途考えるとして)

あと記事の更新方法もいくつかアプローチがありますね。

記事一件単位でとにかくPOSTしまくる

  • どの記事が更新されているのかが判別できないので、フィード中の全記事を投げないといけない
  • シンプルだが1件毎に投げてたら非効率、レンサバではキツイかも

pubsubhubbub 風

  • 前回との差分取って更新された分だけをXMLで投げる
  • Web側かクローラ側で最終取得時のフィードを保持しておかないといけない。。

フィードそのまま or JSONに変換して複数記事一度に投げる

  • Web側で更新された記事を判断
  • 場合によっては1リクエストの処理時間が長くなる、レンサバではキツイかも

まずlink一覧投げる → digest一覧返す → 更新された記事の分だけ投げる

  • 疎結合、1フィード更新に2リクエスト必要。

@mala
Copy link

mala commented Mar 16, 2013

そのへん考えるとOPMLじゃないほうがよいな

@ssig33
Copy link
Author

ssig33 commented Mar 17, 2013

https://github.com/fastladder/fastladder/blob/master/app/controllers/rpc_controller.rb#L19 クロールすべきフィード一覧を返す API はある

@ssig33
Copy link
Author

ssig33 commented Mar 17, 2013

クローラーが手元で digest 計算 -> Fastladder に投げる -> Fastladder は持ってない奴を返す -> その分だけ記事を送りつける

というような感じの動作のための API を作った。

@mala
Copy link

mala commented Mar 17, 2013

あーこれだとダメですね。feedlink,link,digestでユニーク。digestがかぶる別の記事はありうる。
itemは分割されてないのか(なつかしい)

この実装だとmemberに管理者フラグ的なものがいると思います。itemが共用なので、他人が購読してるフィードの記事内容を好きに変更できてしまう。

つまり

  • 管理者フラグのある人のexport: 全てのフィードを取ってくることが出来る
  • 一般ユーザー: 自分が更新権限のあるフィードを取ってくることが出来る。

一般ユーザーはfeedlinkに特殊なURLを指定した仮想フィード的なものを作って、update_feedに投げるとあらゆるものを購読できるイメージ。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment