Praggerで重複チェック
にたまごほうれん草 - フィードの重複を取り除くプラグインFilter::deduped.rb
http://d.hatena.ne.jp/emergent/20070506/1178439299
cronで定期的にフィードを取得して(例えばはてダなどに)投稿する場合、
フィードの重複を取り除きたい場合があるかもしれません。
ローカルで実行するときに使わせていただいてたんだけど、
ファイル出力が私は必要なかったので
ファイル出力なし&rssの要素名を指定できるのをパクって作ったw
勝手にパクってすみません m(_)m
## Filter::chk_duplicate ## ## ** What's this ** ## Plugin to Checking for duplicate entries ## ## ** example ** ## ## - module: Filter::chk_duplicate ## config: ## item: ## - title ## - link ## - description ## ## etc... ## ## ** default ** ## ## config: ## item: ## - link ## require 'digest/md5' def chk_data(item, data) cache_hash = Hash::new result_data = data.select {|d| d_str = d.__send__(item).to_s rescue d.to_s if cache_hash.key?(Digest::MD5.hexdigest(d_str)) false else cache_hash[Digest::MD5.hexdigest(d_str)] = d rescue false end } return result_data end def chk_duplicate(config, data) if(config == nil || config['item'] == nil) item_name = 'link' # default else item_name = config['item'] end item_name.each {|i| data = chk_data(i, data) } return data end
config.yamlには
- module: Filter::chk_duplicate config: item: - title
ってな感じで重複チェックを行う要素名を指定。
- module: Filter::chk_duplicate
上記のようにconfigなしだと、
<link>〜</link>要素だけを重複チェック。
- module: Filter::chk_duplicate config: item: - title - link - description
複数指定しても、一応、動いてる、はず。
でも、ファイル出力しない版なんて、
探せばすでにどこかにありそうな気もするな… orz