puppeteerでScrapboxにimport
public.icon
puppeteerでScrapboxにimportするコード
node.js
/ras/NodeでPrivateなscrapboxの情報を取得するのように、sidをセットして動かす
とりあえず動くレベル
雰囲気でjavascriptを書いてるので色々と雑
$と$xが混在したりしてるけど後で直す
importが動いている間に別ブラウザで開いているページはoverwriteされないっぽい?
いや違うな
「Importing Pages...」になった時点で、ブラウザを閉じようが関係ないのかな?
これも違うな
元々なかったページのコピーは毎回成功するけど、上書き処理がうまくいかない場合がある
条件がわからない、、
code: .js
const puppeteer = require('puppeteer');
const sid = "YOUR SID"
const project = "experiment-blu3mo";
(async () => {
const url = new URL(https://scrapbox.io/projects/${project}/settings/page-data);
const browser = await puppeteer.launch({
args: '--no-sandbox', '--disable-setuid-sandbox',
defaultViewport: {width: 800, height: 1024}
});
const page = await browser.newPage();
await page.setCookie({name: 'connect.sid', value: sid, domain: 'scrapbox.io'});
await page.goto(url.toString());
await page.waitFor(1000);
const inputUploadHandle = await page.$('inputname="import-file"');
inputUploadHandle.uploadFile("FILE.json");
await page.waitFor(1000);
const importSubmitButton = await page.$x("//buttoncontains(., 'Import Pages')");
await importSubmitButton0.click();
await browser.close();
})()
これを試してみてるtkgshn.icon
このFILE.jsonってどこからきたの?
適当なプロジェクトからJSONでexportして、ファイル名を変更して同じディレクトリに置いて$ node example.js したらとりあえず動いたけど、これをpuppeteerでScrapboxにimportではどうやって引っ張ってきてるのかわからない
blu3mo.iconこれは手動でexportする前提の物
エクスポートを自動でやりたければ、GASでScrapboxのexport APIを呼ぶでできる
blu3mo.iconpuppeteerでScrapboxにimportとGASでScrapboxのexport APIを呼ぶを組み合わせると、
scrapbox-duplicatorになる