早速、CustomFeed::MixiScraperの作者さんにBBSのトピック毎にfeedを分ける部分を取り込んでもらえました。ありがとうございます。
画像に関しては、フィルタで対応するのが適切だろうとの指摘をもらいましたので、暇ができたら考えてみたいと思います。
と、言うことでまだ最新のCustomFeed::MixiScraperを取り込んでいないのですが、フィルタと合わせて再度差分を掲載したいと思います。
なんの差分かと言うと、今までは重複を省くのに、Rule::Freshを使っていました。Mixiのときはこれで問題ないのですが、rssを処理しようと思うと、plaggerがcrawlした時間よりも前の作成時間を持つ記事を取りこぼしてしまいます。(記事を一度下書きで投稿して、時間が確定した後で、なんどか推敲してから公開するような場合)
で、Rule::Dedupedを使うように変えてみたのですが、Dedupedはpermalinkとdateを比較して重複を判断します。(compare_body=0の場合)
で、標準のCustomFeed::MixiScraperだと、entryのpermalinkに現在のコメント数が含まれるため、コメントが増えるとpermalinkが変わってしまい、毎回新しいentryとして登録されてしまいます。
と、言うわけでこの辺の対応について後でまとめようかなと。
さて、今日のネタは、PlaggerのStore::Fastladderで記事をDBに入れて、fastladderで読んでいる場合に、fastladderからfeedを登録できるようにする方法です。
まずは、以下の内容でPlaggerの設定ファイルを作成します。
fastladder.yaml(plaggerに食わせる設定ファイル)
fastladder/config/initializers/constants.rb に config.feeds.yamlのパスを設定する。
あ、これだと手抜きでmemberが複数いる場合はうまくいかないので、複数に対応するにはファイル名にmemberidとかをつける必要がありますね。
削除には対応してないので、削除は手動で。
画像に関しては、フィルタで対応するのが適切だろうとの指摘をもらいましたので、暇ができたら考えてみたいと思います。
と、言うことでまだ最新のCustomFeed::MixiScraperを取り込んでいないのですが、フィルタと合わせて再度差分を掲載したいと思います。
なんの差分かと言うと、今までは重複を省くのに、Rule::Freshを使っていました。Mixiのときはこれで問題ないのですが、rssを処理しようと思うと、plaggerがcrawlした時間よりも前の作成時間を持つ記事を取りこぼしてしまいます。(記事を一度下書きで投稿して、時間が確定した後で、なんどか推敲してから公開するような場合)
で、Rule::Dedupedを使うように変えてみたのですが、Dedupedはpermalinkとdateを比較して重複を判断します。(compare_body=0の場合)
で、標準のCustomFeed::MixiScraperだと、entryのpermalinkに現在のコメント数が含まれるため、コメントが増えるとpermalinkが変わってしまい、毎回新しいentryとして登録されてしまいます。
と、言うわけでこの辺の対応について後でまとめようかなと。
さて、今日のネタは、PlaggerのStore::Fastladderで記事をDBに入れて、fastladderで読んでいる場合に、fastladderからfeedを登録できるようにする方法です。
まずは、以下の内容でPlaggerの設定ファイルを作成します。
fastladder.yaml(plaggerに食わせる設定ファイル)
include: path_to_feeds.yaml/config.feeds.yaml recipes: - feeds 以下、元のconfig.yamlの内容。mixiとかconfig.feeds.yaml
define_recipes: feeds: - module: Subscription::Config config: feed: 既に購読済みのfeedがあれば、ここに書く両ファイルはplaggerを動かすユーザが読める必要があり、config.feeds.yamlはmongrelを動かすユーザが書ける必要があります。
fastladder/config/initializers/constants.rb に config.feeds.yamlのパスを設定する。
FEEDS_CONFIG_FILE = "path_to_feeds.yaml/config.feeds.yaml"fastladder/app/controller/api/feed_controller.rb の subscribe_feedを以下のようにする。
def subscribe_feed(feedlink, options) open(FEEDS_CONFIG_FILE, "a") { |feedsfile| feedsfile.puts(" - url: " + feedlink) } member.subscribe_feed(feedlink, options) end後は、mongrelを再起動すればfastladderのUIからfeedが追加できるようになります。
あ、これだと手抜きでmemberが複数いる場合はうまくいかないので、複数に対応するにはファイル名にmemberidとかをつける必要がありますね。
def subscribe_feed(feedlink, options) open(FEEDS_CONFIG_FILE + "." + member.id, "a") { |feedsfile| feedsfile.puts(" - url: " + feedlink) } member.subscribe_feed(feedlink, options) endとかにして、config.feeds.yaml.1とかにすれば行けるかなあ。試してないけど。
削除には対応してないので、削除は手動で。
カテゴリ
FreeBSDトラックバック(0)
このブログ記事を参照しているブログ一覧: fastladderインストール(6)
このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/1438
コメントする