Sha256: 6d8c0cd6fcc1e2d6cc7bf1721e2dfb12e87febebb6a638c6427f7e2e5e55560d

Contents?: true

Size: 606 Bytes

Versions: 4

Compression:

Stored size: 606 Bytes

Contents

require "nokogiri"
require "open-uri"

module Feed2Gram
  Post = Struct.new(:url, :images, :caption, keyword_init: true)

  class ParsesEntries
    def parse(feed_url)
      feed = Nokogiri::XML(URI.parse(feed_url).open)
      feed.xpath("//*:entry").map { |entry|
        html = Nokogiri::HTML(entry.xpath("*:content[1]").text)

        Post.new(
          url: entry.xpath("*:id[1]").text,
          images: html.xpath("//figure[1]/img").map { |img| img["src"] },
          caption: html.xpath("//figure[1]/figcaption").text.strip
        )
      }.reject { |post| post.images.empty? }
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
feed2gram-1.0.0 lib/feed2gram/parses_entries.rb
feed2gram-0.0.4 lib/feed2gram/parses_entries.rb
feed2gram-0.0.3 lib/feed2gram/parses_entries.rb
feed2gram-0.0.2 lib/feed2gram/parses_entries.rb