広告

posted by fanblog
「ここにブログの名前を入れます」は更新を終了しました。記事はすべて新ブログ「Big Bang」に移転済みです。記事のタイトルをクリックすると新ブログの該当記事に移動します。そちらでお楽しみください。

Windowsでファンブログの全記事バックアップスクリプト

この記事は、技術のタマゴ「ドメイン以下のURLを完全に保持しながら無料ブログから移転する方法・予告」のコメント欄へ投稿した内容と同じです。

おそらく数百記事程度なら、数分で全記事のバックアップが取れると思います。


WSH(Windows Script Host)というWindowsの過去の遺産があって、それを使ってスクリプトを書いてみました。このスクリプトで、Windowsを使って、現在のファンブログから記事のバックアップが取れます。ただ、残念ながら以前もらったコメントはもう表示されてないので、取れません。

消えたコメントのサルベージに関しては、この記事の後半に書いてあります。

ソースコードと使い方

var name='ayzfqir5';
var min=1;
var max=20;

for(var i=min;i<=max;i++){
	var xhr=WScript.CreateObject('Msxml2.XMLHTTP');
	var fd=WScript.CreateObject('Adodb.Stream');

	xhr.Open('GET','https://fanblogs.jp/'+name+'/archive/'+i+'/0',false);

	xhr.SetRequestHeader('Pragma','no-cache');
	xhr.SetRequestHeader('Cache-Control','no-cache');
	xhr.SetRequestHeader('If-Modified-Since','Thu, 01 Jan 1970 00:00:00 GMT');

	xhr.Send();

	fd.Type=1;
	fd.Open();
	fd.Write(xhr.responseBody);
	fd.Savetofile(i+'.html',2);
	fd.Close();
}

WScript.Echo('finish');

まず、fanblogというフォルダを作ります。

次に、上のスクリプトをメモ帳にコピーして、fanblogフォルダの中にbackup.jseという名前で保存します。

この時に使うのはメモ帳です。WORD(ワード)を使ってはいけません。

保存した、backup.jseの1行目
var name='ayzfqir5';
のayzfqir5を自分のブログのhttps://fanblogs.jp/xxxxxx/のxxxxxxに変更します。

2行目の
var min=1;
の数字を読み込みたい記事の最小値に変更します。(通常は1でよい)
https://fanblogs.jp/xxxxxx/archive/123/0の123の部分のこと

3行目の
var max=20;
を最新記事の数字に変更します。
https://fanblogs.jp/xxxxxx/archive/123/0の123の部分のこと

たとえば、https://fanblogs.jp/parthaken/の1番目の記事から10番目の記事まで取得したい場合は下のようになります。

var name='parthaken';
var min=1;
var max=10;

修正したらbackup.jseを上書き保存。
そして、backup.jseをダブルクリックすると、記事の取得を開始します。

取得が終わると、finishと表示されるので、それまで待ちます。1000記事くらいなら10分以内に終わると思います。finishと表示されたらOKを押して終了です。これで、fanblogフォルダに記事がページごとに保存されています。

ただし、記事がない欠番ページも普通に取得します。これは404を返さないファンブログの仕様です。ファイルを開いて記事がなければ存在しない欠番記事ということです。

同じページの再取得

同じページを2回取得すると、重複した別ファイルを作らずに上書きします。記事を書き直したりしたときは再取得(上書き)してください。

もし、ファンブログがコメント欄を復活させて、以前のコメントが表示されるようになったらコメントも取得できます。その時は再取得して(コメントのないページに)上書きしてください。

追加取得の方法

記事を追加した時は追加取得できます。たとえば前回取得した記事が1〜100までで、その後、2記事増えた場合は

var min=101;
var max=102;

とすれば、https://fanblogs.jp/xxxxxx/101/0からhttps://fanblogs.jp/xxxxxx/102/0までを追加取得します。

1ページだけ取得したい場合

追加した記事が1つだけの場合、minとmaxに同じ数字を書いてください。

var min=101;
var max=101;

なら、https://fanblogs.jp/xxxxxx/101/0の1ページだけを取得します。

コメントのサルベージ

上記の方法で記事は取得できますが、これまでにもらったコメントは表示されないので、取得できません。

先日「消えたコメントはInternet Archiveを探せ!」という記事を書きましたが、確かめて見たら、Internet ArchiveよりGoogleのキャッシュの方がコメント保存率は高いことがわかりました。

Google検索で
site:fanblogs.jp/xxxxxx/archive
と打ち込めば一覧が表示されます。(/archiveまでつける)

xxxxxxは、自分のブログのhttps://fanblogs.jp/xxxxxx/の部分に書き換えてください。

検索結果の記事タイトルの下にURLが出ますが
fanblogs.jp/ayzfqir5/archive/13/‎ ▼
のように▼マークが出た記事は▼をクリックすればコメントも含めてキャッシュが読めます。


上のスクリプトで取得した「天女のはごろも」全データです。
http://api.dwm.me/fanblog/fanblog_nachi410247.zip

ZIP圧縮済です。解凍するとfanblogというフォルダに全記事が入っています。

ファイルは1.htmlから388.htmlまでありますが、上に書いたように欠番記事もファイルになっています。1.htmlから11.htmlまでは欠番なので、開いても記事はありません。

最初の記事は12.htmlの「自転車がぬすまれた!保険金でるの?」
最新の記事は388.htmlの「【FXブログ】人気コラムとご挨拶」

今、ファンブログで見られるものをそのまま落としているので、残念ながら、コメントは一切ないです。

新ブログ「Big Bang」で続きを読む