SQLの窓

2014年07月18日


Ruby(Mechanize) : ココログギャラリー名の変更

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=ギャラリー番号&amp;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
関連する記事


タグ:ruby Mechanize
posted by lightbox at 2014-07-18 10:59 | Ruby | このブログの読者になる | 更新情報をチェックする
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり