Diary

@ssig33

03/Apr/2018 (Tue) 03:00

見てるページを全部保存するという行ない をもうずっとしていて、以下のような user.js でページを全部保存してます。

// ==UserScript==
// @name         見たサイト全部保存
// @namespace    http://tampermonkey.net/
// @version      0.1
// @author       You
// @match        http://*/*
// @match        https://*/*
// @grant        GM_xmlhttpRequest
// @noframes
// ==/UserScript==

if(!!document.querySelector('title')){
  const title = document.querySelector("title").textContent;
  const url = location.href;
  GM_xmlhttpRequest({method: 'POST', url: '秘密の API', data: JSON.stringify({title: title, url: url})});
}

で秘密の API で受け取ったものを、あとから非同期処理で puppeteer でキャプチャと PDF を取得しています。

const puppeteer = require('puppeteer');

(async () => {
  try{
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto(process.argv[2]);
  await page.screenshot({path: 'data/'+process.argv[3]+'.thumbnail.png'});
  await page.screenshot({path: 'data/'+process.argv[3]+'.png', fullPage: true});
  await page.pdf({path: 'data/'+process.argv[3]+'.pdf'});
  await browser.close();
  } catch(e) { console.log(e) ; proccess.exit()}
})();

でまあいろいろあって Web からこんな感じでみられるようにしてます。

img

pupeteer で取得した PDF は Google Drive に Google Docs ドキュメントとしてアップロードもしてます。こうすると Google Drive を無料で使える全文検索エンジンとして利用することができ、最強ということになります。

Web 側の UI に Google Drive で検索してきて、それと関連するキャプチャとかを見られるような UI とかをつけてあります。

見たページをこういうかたちを全部保存しておくと、サイトが潰れたりしても大丈夫ですし、「どっかで見たと思うんだけどどこにあるか思い出せない」みたいな情報も「自分が見た範囲内から検索」ができるとあっさり見つかったりします。