You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.3 KiB
Plaintext
73 lines
2.3 KiB
Plaintext
9 years ago
|
#!/usr/bin/env ruby
|
||
|
#
|
||
|
# Copyright (c) 2009, neingeist <neingeist@bl0rg.net>
|
||
|
# Copyright (c) 2005, Joe Mason <joe@notcharles.ca>
|
||
|
#
|
||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||
|
# copy of this software and associated documentation files (the
|
||
|
# "Software"), to deal in the Software without restriction, including
|
||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||
|
# distribute, sublicense, and/or sell copies of the Software, and to permit
|
||
|
# persons to whom the Software is furnished to do so, subject to the
|
||
|
# following conditions:
|
||
|
#
|
||
|
# The above copyright notice and this permission notice shall be included
|
||
|
# in all copies or substantial portions of the Software.
|
||
|
#
|
||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||
|
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||
|
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
||
|
# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||
|
# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||
|
# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||
|
# USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||
|
#
|
||
|
# Usage: rss-title-filter <list of titles to include>
|
||
|
#
|
||
|
# Skips all items which do NOT include the given titles.
|
||
|
#
|
||
|
# Example: to include all entries with the title "meme", "quiz" or
|
||
|
# "picture post", do:
|
||
|
#
|
||
|
# rss-title-filter meme quiz "picture post"
|
||
|
#
|
||
|
# Requires the Ruby RSS module, which is included in Ruby 1.8.3 or
|
||
|
# higher and available for older versions of Ruby at
|
||
|
# http://raa.ruby-lang.org/project/rss/.
|
||
|
#
|
||
|
# based on "rss-tag-filter" by Joe Mason.
|
||
|
|
||
|
|
||
|
require 'rss/2.0'
|
||
|
|
||
|
# if no titles were given, no parsing needed
|
||
|
if ARGV.empty? then
|
||
|
STDIN.each do |line|
|
||
|
STDOUT.puts(line)
|
||
|
end
|
||
|
exit(0)
|
||
|
end
|
||
|
|
||
|
# parse the RSS
|
||
|
rss_source = STDIN.collect.join
|
||
|
begin
|
||
|
rss = RSS::Parser.parse(rss_source)
|
||
|
rescue RSS::InvalidRSSError
|
||
|
rss = RSS::Parser.parse(rss_source, false) # no validation
|
||
|
end
|
||
|
|
||
|
# filter out all items NOT in the cmd-line args
|
||
|
rss.channel.items.reject! do |item|
|
||
|
found = false
|
||
|
ARGV.each do |arg|
|
||
|
if Regexp.new(arg, Regexp::IGNORECASE).match(item.title)
|
||
|
found = true
|
||
|
end
|
||
|
end
|
||
|
!found
|
||
|
end
|
||
|
|
||
|
# write the modified rss
|
||
|
STDOUT.puts(rss)
|
||
|
|