Module: Html2rss

Defined in:
lib/html2rss.rb,
lib/html2rss/item.rb,
lib/html2rss/utils.rb,
lib/html2rss/config.rb,
lib/html2rss/version.rb,
lib/html2rss/feed_builder.rb,
lib/html2rss/item_extractors.rb,
lib/html2rss/item_extractors/href.rb,
lib/html2rss/item_extractors/html.rb,
lib/html2rss/item_extractors/text.rb,
lib/html2rss/item_extractors/static.rb,
lib/html2rss/attribute_post_processors.rb,
lib/html2rss/item_extractors/attribute.rb,
lib/html2rss/item_extractors/current_time.rb,
lib/html2rss/attribute_post_processors/gsub.rb,
lib/html2rss/attribute_post_processors/template.rb,
lib/html2rss/attribute_post_processors/parse_uri.rb,
lib/html2rss/attribute_post_processors/substring.rb,
lib/html2rss/attribute_post_processors/parse_time.rb,
lib/html2rss/attribute_post_processors/sanitize_html.rb,
lib/html2rss/attribute_post_processors/html_to_markdown.rb,
lib/html2rss/attribute_post_processors/markdown_to_html.rb

Overview

The Html2rss namespace. Request HTML from an URL and transform it to a RSS 2.0 object.

Defined Under Namespace

Modules: AttributePostProcessors, ItemExtractors, Utils Classes: Config, FeedBuilder, Item

Constant Summary collapse

VERSION =
'0.9.0'.freeze

Class Method Summary collapse

Class Method Details

.feed(config) ⇒ RSS:Rss

Returns a RSS object which is generated from the provided config.

‘config`: can be a Hash or an instance of Html2rss::Config.

Example:

feed = Html2rss.feed(
  channel: { name: 'StackOverflow: Hot Network Questions', url: 'https://stackoverflow.com' },
  selectors: {
    items: { selector: '#hot-network-questions > ul > li' },
    title: { selector: 'a' },
    link: { selector: 'a', extractor: 'href' }
  }
)
# => #<RSS::Rss:0x00007fb2f48d14a0 ...>

Returns:

  • (RSS:Rss)


52
53
54
55
56
57
# File 'lib/html2rss.rb', line 52

def self.feed(config)
  config = Config.new(config) unless config.is_a?(Config)

  feed = FeedBuilder.new config
  feed.rss
end

.feed_from_yaml_config(file, name) ⇒ RSS:Rss

Returns a RSS object which is generated from the provided file.

‘file_path`: a File object of a YAML file `name`: the of the feed

Example:

feed = Html2rss.feed_from_yaml_config(File.join(['spec', 'config.test.yml']), 'nuxt-releases')
# => #<RSS::Rss:0x00007fb2f6331228

Returns:

  • (RSS:Rss)


23
24
25
26
27
28
29
30
31
32
33
# File 'lib/html2rss.rb', line 23

def self.feed_from_yaml_config(file, name)
  # rubocop:disable Security/YAMLLoad
  yaml = YAML.load(File.open(file))
  # rubocop:enable Security/YAMLLoad

  feed_config = yaml['feeds'][name]
  global_config = yaml.reject { |key| key == 'feeds' }

  config = Config.new(feed_config, global_config)
  feed(config)
end