Ruby アメブロのRSSから画像を取得する


アメブロのimage情報はsummaryの中に<img>として配置されている。

また、ブログ文中で使用されている絵文字も画像として取り扱われているので、私の場合、幅高さが150px以下の画像(多分、実サイズは96px)は認識しない画像として定義した。

画像サイズの取得は先日紹介したFastImageを使用した。

rss = Feedjira::Feed.fetch_and_parse blog.rss_url
rss.entries.each do |item|

  doc = Nokogiri::HTML.parse(item.summary, nil, "utf-8")
  image = nil
  doc.css('img').each do |src|
    image = src.attribute("src")&.value
    h_w = FastImage.size(image)
    #150以下は問題外
    if !h_w.nil? && (h_w[0] <= 150 || h_w[1] <= 150)
      image = nil
      next
    end
    #最初に見つかった画像を返す
    return image
end