Class: Html2rss::AutoSource::Scraper::MetaOembed

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/html2rss/auto_source/scraper/meta_oembed.rb

Overview

Scrapes OpenGraph meta tags and oEmbed JSON descriptors from HTML pages.

Constant Summary collapse

OG_META_SELECTOR =

Selector for OpenGraph meta tags.

'meta[property^="og:"], meta[property^="article:"], meta[name^="twitter:"]'
'link[rel="alternate"][type="application/json+oembed"][href]'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parsed_body, url:, request_session: nil, **_opts) ⇒ void

Parameters:

  • parsed_body (Nokogiri::HTML::Document)

    parsed HTML document

  • url (String, Html2rss::Url)

    base page URL

  • request_session (Html2rss::RequestSession, nil) (defaults to: nil)

    shared request session for follow-up fetches

  • _opts (Hash)

    unused scraper-specific options

Options Hash (**_opts):

  • :_reserved (Object)

    reserved for future scraper-specific options



53
54
55
56
57
# File 'lib/html2rss/auto_source/scraper/meta_oembed.rb', line 53

def initialize(parsed_body, url:, request_session: nil, **_opts)
  @parsed_body = parsed_body
  @url = Html2rss::Url.from_absolute(url)
  @request_session = request_session
end

Class Method Details

.articles?(parsed_body) ⇒ Boolean

Returns whether OpenGraph tags or oEmbed link exist.

Parameters:

  • parsed_body (Nokogiri::HTML::Document, nil)

    parsed HTML document

Returns:

  • (Boolean)

    whether OpenGraph tags or oEmbed link exist



39
40
41
42
43
44
# File 'lib/html2rss/auto_source/scraper/meta_oembed.rb', line 39

def articles?(parsed_body)
  return false unless parsed_body

  !parsed_body.at_css('meta[property="og:title"]').nil? ||
    !parsed_body.at_css(OEMBED_LINK_SELECTOR).nil?
end

.options_keySymbol

Returns scraper config key.

Returns:

  • (Symbol)

    scraper config key



34
# File 'lib/html2rss/auto_source/scraper/meta_oembed.rb', line 34

def self.options_key = :meta_oembed

Instance Method Details

#each {|article| ... } ⇒ Enumerator, void

Yields normalized article hash extracted from OpenGraph meta tags and optional oEmbed data.

Yield Parameters:

  • article (Hash{Symbol => Object})

    normalized article hash

Returns:

  • (Enumerator, void)

    enumerator when no block is given



64
65
66
67
68
69
# File 'lib/html2rss/auto_source/scraper/meta_oembed.rb', line 64

def each
  return enum_for(:each) unless block_given?

  article = build_article
  yield article if article
end