simotin13's message

simotin13といいます。記事の内容でご質問やご意見がありましたらお気軽にコメントしてください\^o^/

Rubyによるお宝データ探し

少し前の話ですが、elixirの勉強をしているのですが勉強がてら面白いスクリプトは書けないものかと考えていたら、はてなのホットトピックに面白い記事が上がっていました。

umihiro.hateblo.jp

サイトを見てみると美女の画像が沢山!

ということでElixirで画像を収集するスクリプトを書こうと考えているのですが、mixの使い方とかよくわからないので勉強が必要。


とりあえずRubyで書いてからそれをElixirに落としてみようということで書いてみました。

require 'net/http'
require 'uri'

url = URI.parse('http://umihiro.hateblo.jp/entry/20170925/1506349877')
req = Net::HTTP::Get.new(url.path)
res = Net::HTTP.start(url.host, url.port) do |http|
        http.request(req)
end

urls = res.body.scan(/https:\/\/lh3.googleusercontent.com\/.*JPG/)

urls.each do |url|
  treadure_url = URI.parse(url)
  req = Net::HTTP::Get.new(treadure_url.path)
  http = Net::HTTP.new(treadure_url.host, treadure_url.port)
  http.use_ssl = true
  res = http.request(req)

  filename = File.basename(treadure_url.path)
  File.open(filename, "wb") do |f|
    f.write(res.body)
  end
end

うむ。お宝ゲットだぜ。

スクリプトは20行前後。Rubyさん、サンクス。

umihiro.hateblo.jp

勝手ながら画像参照させて頂きます。ありがとうございます!
どの画像も、コンパニオンの皆さんが綺麗に撮られている・・・素晴らしい!

追記 [2017-10-18]

無事、Elixir でもお宝画像の集めのスクリプトがかけました。Rubyと比べてもステップ数的には遜色ない感じです。

まぁ Elixir をこんなことに使ってもあまりメリットを活かせているとは言えないとは思いますが・・・

mcommit.hatenadiary.com