2015/12/18 : Google Chrome でダウンロード可能にしました
拡張子がスクリプトのままだと、Google Chrome がダウンロードさせてくれないので、 .lightbox としています。その為、【最初に set_script.bat を実行して、拡張子を .wsf に変更するようにしています】2015/02/04 : 再び、正常に動作するように修正しました2013/01/19 : 正常に動作するように修正しましたbk.wsf
<JOB> <COMMENT> ************************************************************ EXPORT ( バッチ処理用 ) Seesaa からブログのバックアップデータを取得する ************************************************************ </COMMENT> <OBJECT id="objHTTP" progid="Msxml2.ServerXMLHTTP" /> <OBJECT id="Stream" progid="ADODB.Stream" /> <SCRIPT language=VBScript> ' *********************************************************** ' 正規表現用 ' *********************************************************** Set regEx = New RegExp ' *********************************************************** ' タイムアウト用 ' *********************************************************** lResolve = 60 * 1000 lConnect = 60 * 1000 lSend = 60 * 1000 lReceive = 60 * 1000 ' *********************************************************** ' 処理開始 ' *********************************************************** bDebug = False target_year1 = WScript.Arguments(0) target_month1 = WScript.Arguments(1) target_year2 = WScript.Arguments(2) target_month2 = WScript.Arguments(3) emailData = "メールアドレス" passData = "パスワード" ' バックアップしたいブログの ID を指定します blogData = "9999999" ' ログインページの取得 Call objHTTP.Open("GET","https://ssl.seesaa.jp/auth",False) Call objHTTP.setTimeouts(lResolve, lConnect, lSend, lReceive) Call objHTTP.Send() ' ページ全体 strPage = objHTTP.responseText ' 投稿用のキーを取得 regEx.IgnoreCase = True regEx.Global = True regEx.Pattern = "authpost""><input value=""([^""]+)""" Set Matches = regEx.Execute( strPage ) For Each Match in Matches strPostKey = Match.SubMatches(0) Exit For Next ' *********************************************************** ' (1) : POST ' *********************************************************** ' ログイン URL Call objHTTP.Open("POST","https://ssl.seesaa.jp/auth",False) ' POST 用ヘッダ Call objHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") strData = "" strData = strData & "aXt=" & strPostKey strData = strData & "&email=" & emailData strData = strData & "&password=" & passData strData = strData & "&return_to=http%3A%2F%2Fblog.seesaa.jp%2F" Call objHTTP.SetRequestHeader("Content-Length",Len(strData)) Call objHTTP.Send(strData) strHeaders = objHTTP.getAllResponseHeaders() if bDebug then Wscript.Echo strHeaders end if ' *********************************************************** ' (2) : GET ' *********************************************************** ' 対象ブログ URL Call objHTTP.Open("GET","https://blog.seesaa.jp/cms/home/switch?blog_id="&blogData&"&goto=/cms/article/regist/input" , False) Call objHTTP.setTimeouts(lResolve, lConnect, lSend, lReceive) Call objHTTP.Send() 'Set OutObj = Fs.OpenTextFile( "log.txt", 2, True ) 'OutObj.Write objHTTP.responseText 'OutObj.Close if bDebug then Wscript.Echo "開始" end if ' *********************************************************** ' (3) : GET ' *********************************************************** ' 投稿ページ Call objHTTP.Open("GET","https://blog.seesaa.jp/cms/tools/mt/export/input" , False) Call objHTTP.setTimeouts(lResolve, lConnect, lSend, lReceive) Call objHTTP.Send() ' 投稿用のキーを取得 strPage = objHTTP.responseText regEx.Pattern = "enctype=""multipart/form-data""><input value=""([^""]+)""" Set Matches = regEx.Execute( strPage ) For Each Match in Matches strPostKey = Match.SubMatches(0) Exit For Next ' *********************************************************** ' カテゴリ ID リストの取得 ( 2015/02/04 追加 ) ' *********************************************************** regEx.Pattern = "name=""category_id"" value=""([^""]+)""" regEx.Global = True Set Matches = regEx.Execute( strPage ) Wscript.Sleep(2000) ' 2秒間の間を置く ' *********************************************************** ' (3) : Export 用データ準備 ' *********************************************************** boundary = DateDiff("s", "1970/1/1 0:00:00",DateAdd("h",-9,now)) h_boundary = "---------------------------" & boundary target_year1 = WScript.Arguments(0) target_month1 = WScript.Arguments(1) target_year2 = WScript.Arguments(2) target_month2 = WScript.Arguments(3) ' ソース内テキストデータの表示 str = RegTrim(GetResource("myTextData")) str = Replace( str, "$B", boundary ) str = Replace( str, "$YEAR1", target_year1 ) str = Replace( str, "$MONTH1", target_month1 ) str = Replace( str, "$YEAR2", target_year2 ) str = Replace( str, "$MONTH2", target_month2 ) str = Replace( str, "$AXT", strPostKey ) if bDebug then Wscript.Echo str end if ' *********************************************************** ' カテゴリ ID リストの設定 ( 2015/02/04 追加 ) ' *********************************************************** bFlg = False For Each Match in Matches if bFlg <> False then bFlg = True else str = str & vbCrLf end if str = str & "Content-Disposition: form-data; name=""category_id""" & vbCrLf & vbCrLf str = str & Match.SubMatches(0) & vbCrLf str = str & "-----------------------------" & boundary Next str = str & "--" & vCrLf ' *********************************************************** ' (4) : Export 用データ送信 ' *********************************************************** Call objHTTP.Open( "POST","https://blog.seesaa.jp/cms/tools/mt/export/do_export", False ) ' POST 用 HTTP ヘッダ Call objHTTP.setRequestHeader("Content-Type", "multipart/form-data; boundary=" & h_boundary) ' 念のため Call objHTTP.setRequestHeader("Referer", "https://blog.seesaa.jp/cms/tools/mt/export/input" ) Call objHTTP.SetRequestHeader("Content-Length",Len(str)) Call objHTTP.setTimeouts(lResolve, lConnect, lSend, lReceive) Call objHTTP.Send(str) Stream.Open Stream.Type = 1 ' バイナリ Stream.Write objHTTP.responseBody Stream.SaveToFile "seesaa_" & blogData & "_" & target_year1 & target_month1 & "_" & target_year2 & target_month2 & ".log", 2 Stream.Close Wscript.Echo "処理が終了しました:" & target_year1 & target_month1 & "〜" & target_year2 & target_month2 ' *********************************************************** ' 文字列前後の漢字スペースを含むホワイトスペースの削除 ' *********************************************************** Function RegTrim( strValue ) Dim regEx, str Set regEx = New RegExp regEx.IgnoreCase = True regEx.Pattern = "^[ \s]+" str = regEx.Replace( strValue, "" ) regEx.Pattern = "[ \s]+$" RegTrim = regEx.Replace( str, "" ) End Function </SCRIPT> <COMMENT> ************************************************************ ソース内テキストデータ ************************************************************ </COMMENT> <RESOURCE id="myTextData"> <![CDATA[ -----------------------------$B Content-Disposition: form-data; name="aXt" $AXT -----------------------------$B Content-Disposition: form-data; name="encode" utf8 -----------------------------$B Content-Disposition: form-data; name="from_year_month" $YEAR1-$MONTH1 -----------------------------$B Content-Disposition: form-data; name="to_year_month" $YEAR2-$MONTH2 -----------------------------$B ]]> </RESOURCE> </JOB>
オリジナルのシステムで範囲指定が指定可能なのでエクスポートが便利になっています。 ▼ バッチファイル例は以下のようになりましたcscript.exe bk.wsf 2009 04 2010 03 sleep.vbs cscript.exe bk.wsf 2010 04 2011 03 sleep.vbs cscript.exe bk.wsf 2011 04 2012 03 sleep.vbs cscript.exe bk.wsf 2012 04 2013 03バックアップには、ブログの id 番号が必要です
===================================================================== 拡張子がスクリプトのままだと、Google Chrome がダウンロードさせてくれないので、 .lightbox としています。その為、 【最初に set_script.bat を実行して下さい】 ===================================================================== ■ 1) seesaa_backup.bat の中の範囲指定部分を適宜変更して利用して下さい。 例) 2012/4月 〜 2013/3月 cscript.exe bk.wsf 2012 04 2013 03 範囲を広くしすぎると、エラーになるおそれがあるので年単位が妥当だと思います ■ 2) bk.wsf の以下の部分を変更して、seesaa.bat を実行して下さい (行は36〜39) emailData = "メールアドレス" passData = "パスワード" ' バックアップしたいブログの ID を指定します blogData = "9999999" ブログの ID は、https://blog.seesaa.jp/cms/home/index で、該当 するブログの名前のリンク内の URL から取り出します。 例) blog_id の番号 https://blog.seesaa.jp/cms/home/switch?blog_id=9999999&goto=/cms/article/regist/input ■ 著作権その他 このプログラムはフリーです。どうぞ自由に御使用ください。 著作権は作者である私(lightbox)が保有しています。 また、本ソフトを運用した結果については、作者は一切責任を 負えせんのでご了承ください。
|
【Seesaaの最新記事】
- Seesaa のスマホページで表示される広告が左に寄りすぎでみっともないので CSS( 属性セレクター ) で調整する
- テンプレートでその記事の編集画面に直接リンクする
- Seesaaブログのテンプレート内で使用できる page_name 変数を JavaScript で使用する
- Seesaa のテンプレートのタイトル部分 ( 2015年2月現在 ) ☀
- Seesaa に VBScript でログインする
- Seesaa ブログの記事一覧の一括編集時に一括設定できるようにする Greasemonkey
- Seesaa : 単一記事ページのナビゲート文字列の調整
- Seesaa : 記事テンプレートの同一カテゴリのリンクのタイトル表示を完全にする