インフォメーション
2008.09.26 (Fri)
FC2ブログでファイルを一括アップロード(英語環境対応) - UWSC
FC2ブログでファイルを一括アップロード - UWSC
このコードを英語環境で動かしたら・・・というコメントをいただき、
ちょうどこのパソコンのVirtualPCにも英語版XPが入っていたので喜び勇んで英語環境対応にしました。
ちゃんと日本語環境でも使えます。
使い方は以前と同じ
1.USERIDにFC2ブログのユーザーID、PASSWORDにパスワードを入れるか、IEでFC2ブログにログインしておく(ログイン状態であればID,パスワードは不要)
2.任意の場所にフォルダを作成し(D:\Temp\updirとか)、アップロードしたいファイルを作成したフォルダに入れる
3.「SRC_DIR」に2.で作成したフォルダのパスを入れる
4.UWSCで以下のスクリプトを実行
注)指定したフォルダ内のすべてのファイルをアップロードしようとするので、アップロードし終わったファイルは削除してください
FC2ブログ一括アップロード.txt
↑拡張子を.UWSに変更して使用してください
↓中身
とりあえず動くので、コメントやメッセージは日本語のままです。
修正箇所はIELINK(日本語)->IE.Navigate(URL)に変えたーとか
フォームの取得方法をgetElementsByName->document.forms[]に変えたくらい。
それにしても英語OSで英語版のfc2blogトップページからログインしても、日本語版のblog管理画面になるんだな。
もし英語版の管理画面になるんだとしたら、URLとかの修正が必要になってくるかも。
追加修正
IE7で正しく動かなかったので、IE7でも動くように修正しました。
修正内容はアップロードファイルのパスを入れる動作を修正。
↓これを
↓これに変えた
元々このtype=fileのボックスにファイルパスを入れる動作は気になっていたところでした。
後者のIESETDATAを使うとクリップボードにファイルパスが入ってしまうのがどうも気になってしまって、
他の方法を探して前者のsendstrで無理やり入れてました。
やっぱIESETDATAで入れたほうが安全だな。
このコードを英語環境で動かしたら・・・というコメントをいただき、
ちょうどこのパソコンのVirtualPCにも英語版XPが入っていたので喜び勇んで英語環境対応にしました。
ちゃんと日本語環境でも使えます。
使い方は以前と同じ
1.USERIDにFC2ブログのユーザーID、PASSWORDにパスワードを入れるか、IEでFC2ブログにログインしておく(ログイン状態であればID,パスワードは不要)
2.任意の場所にフォルダを作成し(D:\Temp\updirとか)、アップロードしたいファイルを作成したフォルダに入れる
3.「SRC_DIR」に2.で作成したフォルダのパスを入れる
4.UWSCで以下のスクリプトを実行
注)指定したフォルダ内のすべてのファイルをアップロードしようとするので、アップロードし終わったファイルは削除してください
FC2ブログ一括アップロード.txt
↑拡張子を.UWSに変更して使用してください
↓中身
// *****************
// 基本設定
// *****************
PUBLIC USERID = "user"
PUBLIC PASSWORD = "pass"
PUBLIC SRC_DIR = "D:\Temp\updir" //アップロードフォルダ
// *****************
// 設定内容の確認
// *****************
ifb SRC_DIR = "" then
msgbox("アップロード対象フォルダが設定されていません")
exit
endif
try
// ファイルの取得
filecount = GetDir(SRC_DIR)
// アップロードするファイルがない場合終了
ifb filecount = 0 then
msgbox("アップロード対象ファイルが見つかりません。<#cr>" + SRC_DIR)
exit
endif
except
// 例外が発生したら終了
msgbox("エラー:" + TRY_ERRMSG)
exit
endtry
PUBLIC IE = CreateOLEObj("InternetExplorer.Application")
PUBLIC ID = HNDTOID(ie.hwnd)
// *****************
// メイン処理
// *****************
IE.Visible = true;
// FC2ブログhpを開く
IE.Navigate("http://blog.fc2.com/");
REPEAT
SLEEP(1)
UNTIL !IE.busy AND IE.readystate=4
// ログインフォームが存在する場合
ifb IE.document.forms["login"] > 0 then
frm = IE.document.forms["login"]
IE.document.getElementById("acid").value = USERID
IE.document.getElementById("passwd").value = PASSWORD
frm.submit()
else
IE.Navigate("http://blog.fc2.com/?admin")
endif
REPEAT
SLEEP(1)
UNTIL !IE.busy AND IE.readystate=4
ifb pos("fc2.com/control.php", IE.LocationURL) = 0 then
// ログインできなかったら終了
msgbox("ログインできませんでした。")
exit
endif
// アップロード画面を開く
tmp = Copy(IE.LocationURL, 1, POS("control.php", IE.LocationURL) + Length("control.php") - 1)
IE.Navigate(tmp + "?mode=control&process=upload")
REPEAT
SLEEP(1)
UNTIL !IE.busy AND IE.readystate=4
// ファイル数分アップロード
for i = 0 to filecount - 1
// フォーム取得
frm = IE.document.forms["upload"]
// ファイルパス
filepath = SRC_DIR + "\" + GETDIR_FILES[i]
// 最小化してるとファイル名が入らないので戻す
if STATUS(ID, ST_ICON) then CTRLWIN(ID, NORMAL)
ifb GetIEVersion() = 6 then
// ファイル入力ボックスにフォーカスを当てる
frm.upfile.focus()
// sendstrで入力
sendstr(ID, filepath)
endif
ifb GetIEVersion() = 7 then
KBD(VK_CTRL, DOWN)
IESETDATA(IE, filepath, "upfile")
KBD(VK_CTRL, UP)
endif
inputs = frm.getElementsByTagName("input")
// type=submitを探す
for j = 0 to inputs.length - 1
ifb inputs.item(j).type = "submit" then
// 見つかったらクリックしてアップロード
inputs.item(j).click
break
endif
next
REPEAT
SLEEP(1)
UNTIL !IE.busy AND IE.readystate=4
next
msgbox("完了")
FUNCTION GetIEVersion()
FS = CreateOLEObj("Scripting.FileSystemObject")
// GetFileVersionでIEのバージョンを取得。
//IE.FullNameはiexplore.exeのフルパス
strVersion = FS.GetFileVersion(IE.FullName)
// 6.0.2900...って感じの文字なので、"."より前の肝心な部分だけ数値として取り出す
intVersion = Val(Copy(strVersion, 1, Pos(".", strVersion) - 1))
RESULT = intVersion
FEND
とりあえず動くので、コメントやメッセージは日本語のままです。
修正箇所はIELINK(日本語)->IE.Navigate(URL)に変えたーとか
フォームの取得方法をgetElementsByName->document.forms[]に変えたくらい。
それにしても英語OSで英語版のfc2blogトップページからログインしても、日本語版のblog管理画面になるんだな。
もし英語版の管理画面になるんだとしたら、URLとかの修正が必要になってくるかも。
追加修正
IE7で正しく動かなかったので、IE7でも動くように修正しました。
修正内容はアップロードファイルのパスを入れる動作を修正。
↓これを
// ファイル入力ボックスにフォーカスを当てる
frm.upfile.focus()
// sendstrで入力
sendstr(ID, filepath)
↓これに変えた
KBD(VK_CTRL, DOWN)
IESETDATA(IE, filepath, "upfile")
KBD(VK_CTRL, UP)
元々このtype=fileのボックスにファイルパスを入れる動作は気になっていたところでした。
後者のIESETDATAを使うとクリップボードにファイルパスが入ってしまうのがどうも気になってしまって、
他の方法を探して前者のsendstrで無理やり入れてました。
やっぱIESETDATAで入れたほうが安全だな。
スポンサーサイト

| BLOGTOP |
とりあえずですが違う形でのアップロードをするタイプのもの(XML-RPC)を作りました。
h上野メモFC2ブログ用ファイルアップロード1.0.4.3久しぶりに使わせて頂きました!
ログイン失敗やセッション取得失敗になり、
アップロードできませんでした。。。ダンFC2ブログ用ファイルアップロード1.0.4.3Re: お礼どうも報告ありがとうございます。
無事動いてよかったです。上野メモFC2ブログ用ファイルアップロード1.0.4.3お礼ログイン&一括アップロード無事できるようになりました。
対応ありがとうございました!
いつも大変お世話になっていましたのでとても助かりました!じゅりるなのままFC2ブログ用ファイルアップロード1.0.4.3Re: ご対応ありがとうございました報告ありがとうございます。これで問題なさそうですね。
最近普通にブラウザでfc2ブログ開こうとして接続できませんでしたってなること多いからfc2側が何かやってるんでし上野メモFC2ブログ用ファイルアップロード1.0.4.3ご対応ありがとうございました「アップロード失敗表示」の件、早速ご対応いただき誠にありがとうございます。
引き続きありがたく使わせていただきます。
ちなみにログイン失敗のエラーの件についkazFC2ブログ用ファイルアップロード1.0.4.3素早い対応ありがとうございました!!
もはやこのソフト無しでは生きていけない身体になりました(´ω`*)