Diary

@ssig33

見てるページを全部保存するという行ない をもうずっとしていて、以下のような 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 とかをつけてあります。

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

03 Apr 2018 Tue 03:00 (UTC)