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 とかをつけてあります。

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