画像の Wordpress XML を解析するこのメソッドを作成しました。
def get_image(doc, id)
# Select all images in post
images = Nokogiri::HTML(doc.xpath('//item')[id].xpath('content:encoded').text).xpath('//img')
# Count number of images.
i = images.size
if i == 0
"No images found"
# We don't want icon images..
elsif !images[0].attribute("src").to_s.scan("icon").empty?
if i == 1
"Only 1 picture that is icon - no image"
else
t = 0
#Loop all images and take the first that is not a smiley.
loop do
t += 1
images[t].attribute("src").to_s
break if images[t].attribute("src").to_s.scan("icon").empty? || t > i
end
end
else
images[0].attribute("src").to_s
end
end
このメソッドの目的は、アイコン (スマイリー) ではない画像を取得することです。
のこぎり XML フィード アイテム(ブログ投稿)である doc と、アイテム番号を参照する ID を引数に取ります。
メソッドでループを作成するにはどうすればよいですか? post(i) の合計画像に達するか、属性に「アイコン」が含まれなくなるまでループしたいと思います。
okliv に触発されたソリューションを更新します。
def get_image(doc, id)
images = Nokogiri::HTML(doc.xpath('//item')[id].xpath('content:encoded').text).xpath('//img')
images_not_icons = images.collect{|image| image.attribute("src").to_s unless !image.attribute("src").to_s.scan("icon").empty?}.compact
if images_not_icons.empty? || images_not_icons.nil?
"no image"
else
images_not_icons.first
end
end