class OgExtractor

Public Class Methods

new(article_url, debug: false) click to toggle source
# File lib/ogextractor.rb, line 13
def initialize(article_url, debug: false)

  @article_url, @debug = article_url, debug
  @properties = %w(title description image url type)
  @doc = Nokorexi.new(article_url).to_doc
  extract_metadata()

end

Private Instance Methods

extract_metadata() click to toggle source
# File lib/ogextractor.rb, line 24
def extract_metadata()

  @head = @doc.root.element('head')

  read_og_meta()
  read_twitter_meta()
  @url ||= @article_url    
  @image = @article_url[/^https?:/] + @image if @image and @image[/^\/\//]

  @to_h = if @card then

    {card: @card, title: @title, img: @image, desc: @description, url:  @url}
            
  else
    
    @card = 'summary'
                        
    if @image and @image.length > 1 then
      
      {card: @card, title: @title, img: @image, desc: @description, url:  @url}

    elsif title    
      
      {card: @card, title: @title, desc: @description, url:  @url}
    
    else

      nil
      
    end    

  end

end
read_meta(properties=@properties, attrx="property='og") click to toggle source
# File lib/ogextractor.rb, line 59
def read_meta(properties=@properties, attrx="property='og")

  properties.each do |x|
  
    e = @head.element("meta[@#{attrx}:#{x}']attribute::content")
    next unless e
    
    instance_variable_set('@' + x, e.to_s)
    
  end

end
read_og_meta() click to toggle source
# File lib/ogextractor.rb, line 72
def read_og_meta()

  read_meta()

end
read_twitter_meta() click to toggle source
# File lib/ogextractor.rb, line 78
def read_twitter_meta()

  read_meta(%w(card title description image), "name='twitter")

end