Skip to content

Instantly share code, notes, and snippets.

@piayo
Created October 30, 2019 04:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save piayo/417f4db83bf7d999801e807e0d436875 to your computer and use it in GitHub Desktop.
Save piayo/417f4db83bf7d999801e807e0d436875 to your computer and use it in GitHub Desktop.
jsdoit から HTMLソースをバックアップ
// --------------------------
// jsdoit-backup-html.js
// jsdoit から HTMLソースをバックアップ
//
// usage:
// $ node jsdoit-backup-html.js
// --------------------------
var mkdirp = require('mkdirp');
var fs = require('fs');
var request = require('sync-request');
function getHTML( url ) {
const response = request('GET', url);
return response.body;
}
function getTitle( html ) {
const myRegexp = /<title>([\s\S]*?)<\/title>/i;
const match = myRegexp.exec( html );
let title;
title = match[1];
title = title.replace(/(^\s+)|(\s+$)/g, '');
return title;
}
function titleToFileName( url, title ) {
const slag = url.split("/").pop();
const fkey = title.replace(/[\/.\?:!]/g, "_");
const name = `[${slag}] - ${fkey}`;
return name;
}
async function saveFile( filePath, html ) {
fs.writeFile( filePath , html, (err) => {
if ( err ) {
console.log( "エラーが発生しました。" + err );
throw err
}
else {
// console.log( "ファイルが正常に書き出しされました" );
}
});
}
function job( url ) {
const html = getHTML( url );
const title = getTitle( html );
const name = titleToFileName( url, title );
const fileName = __dirname +`/dist/${name}.html`;
console.log( `>> 取得中... URL: ${url} / title: ${title}` );
saveFile( fileName, html );
}
/*
URL のリストは、devtools, 各ページで
copy(Array.from(document.querySelectorAll(".thumb a[rel='bookmark']")).map(a=>a.href).join("\n"))
をするといいかな。
*/
const myURLs = [
"http://jsrun.it/piayo/c2jr",
// ...
];
myURLs
.forEach( url => {
job( url );
});
@piayo
Copy link
Author

piayo commented Oct 31, 2019

■ 2019年10月31日にサービス終了 jsdo.itのファイルを保存する方法
https://iwb.jp/jsdoit-20191031-closed-backup-files-save/

https://iwb.jp/s/zip/jsdoit-save-all.zip -> save.js がすごかった!
これ使ったほうがいいです。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment