スクリプトを書いた動機
ニコニコ静画に投稿されている画像を、コマンド一発で保存したかった。
調べてみると、APIがあるみたいなんだけど、保存できる画像サイズが小さくなってしまう。
投稿されているオリジナルサイズの画像を保存したかったので、自分でコードを書いてみました。
スクリプトコード
nico_seiga_dl.rb
#!/usr/bin/env ruby
require "nokogiri"
require 'mechanize'
LOGIN = 'https://secure.nicovideo.jp/secure/login?site=niconico'
agent = Mechanize.new
mail = "mailaddress" #write your mailaddress of niconico account
pass = "password" #write your password of niconico account
agent.post(LOGIN, 'mail' => mail, 'password' => pass)
id = 961724
sourceURL = "http://seiga.nicovideo.jp/image/source/"
url = sourceURL + id.to_s
data = agent.get(url)
doc = Nokogiri::HTML.parse(data.body)
illust = doc.css("div.illust_view_big")
img_src = illust.css("img").attr("src")
img_URL = "http://lohas.nicoseiga.jp" + img_src.to_s
title = doc.title.split
p title
`wget -O #{title[0]}.jpg -nc #{img_URL}`
処理の概要
大雑把に書くと、「オリジナルサイズの画像のURLを取得し、wgetで保存する」、というものです。この、オリジナルサイズの画像のURLは、
http://lohas.nicoseiga.jp/priv/(複雑な文字列)
となっており、画像のID(im〜、と、画像に付けられているもの。画像の青枠部分)では、このURLを取得することが出来ません。
そこで、
http://seiga.nicovideo.jp/image/source/(idの数字)
にアクセスし、オリジナルサイズの画像のURLを取得します。ニコニコ静画の認証をパスしなければHTML文書を取得できないため、mechanizeを使用してアクセスを行い、取得したHTML文書をnokogiriでパースして、URLを取り出します。