Ruby 2.0.0-p481 を Windows にインストールしてコマンドプロンプトから処理しています。
昔同様の処理を行っていましたが、NIFTY のログインの仕様が変わっていました。また、agent.follow_meta_refresh を使って Mechanize がページを取得するようになっています。結局は、とても短い簡潔なコードで更新できました
# ココログのギャラリー名の変更
require 'mechanize'
agent = Mechanize.new
agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
agent.follow_meta_refresh = true
agent.user_agent = 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko'
page = agent.get("https://sso.nifty.com/pub/login.cgi?service=cocologin&back=https%3a%2f%2fwww.cocolog-nifty.com%2fdispatch%2f&am=1.2.0")
# FORM に name 属性が設定されていたので、それで選択
form = page.form_with(:name => 'login')
form["username"] = "ユーザ"
form["password"] = "パスワード"
page = form.submit
# ギャラリー名の変更ページ
# set_id に番号をセット
page = agent.get("http://app.cocolog-nifty.com/t/app/gallery/configure?set_id=508074")
# FORM がひとつしか無かったので .first
form = page.forms.first
form["name"] = "ギャラリーA"
page = form.submit
print "update OK!"
以下は、昔さくらインターネットで動作していたコードです。
1) ENV の中は 環境変数( HTTP_* 等 )
2) sub は 1回 gsub は 全て
3) 式の改行は前の行に継続として演算子を残す
#!/usr/local/bin/ruby
print "Content-type: text/html\n\n"
require "cgi"
cgi = CGI.new
ENV['GEM_HOME']="/home/lightbox/gems"
$LOAD_PATH.push('/home/lightbox/lib')
require 'rubygems'
require 'mechanize'
agent = WWW::Mechanize.new
#@nifty にログイン
page = agent.get("https://login.nifty.com/service/login")
form = page.forms.first
form["username"] = "ユーザID"
form["password"] = "パスワード"
page = form.submit
fp = open("./log_01.txt", "w")
fp.puts(page.body)
# 環境変数等を読みやすい形で出力
str = ENV.inspect
str = str.gsub(/,/,"\n")
fp.puts(str)
fp.close
# ************************************
# return :
# <html><meta http-equiv="Refresh" content="0;URL=http://www.nifty.com/"></html>
# ************************************
print "login<br>"
# 対象ギャラリーの設定ページ
page = agent.get('http://app.cocolog-nifty.com/t/app/gallery/configure?set_id='+
cgi['no'][0])
fp = open("./log_02.txt", "w")
fp.puts(page.body)
fp.close
# ************************************
# return :
# <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
# <head>
# <meta http-equiv="Content-Type" content="text/html;charset=utf-8"></meta>
# <META
# HTTP-EQUIV="Refresh"
# CONTENT="0;URL=http://app.cocolog-nifty.com/t/app/gallery/configure?set_id=ギャラリー番号&nwsThough=1"
# ></META>
# </head>
# <body>
# <!--result=ターゲット URL(CONTENTと同じ)-->
# </body>
# </html>
# ************************************
print "request target page<br>"
# 設定ページ
page = agent.get('http://app.cocolog-nifty.com/t/app/gallery/configure?set_id='+
cgi['no'][0]+
'&nwsThough=1')
fp = open("./log_03.txt", "w")
fp.puts(page.body)
fp.close
print "response real page<br>"
# 更新処理
form = page.forms.first
form["name"] = "_"+cgi['gn'][0]
form.submit
関連する記事