scrapbox書籍を作る工程
画像データの配列
タイトル
(optional) テキストデータの配列
画像データの配列に一対一対応させる
(optional)タイトルの配列
画像データの配列に一対一対応させる
(optional) タグデータ
各画像に紐付ける
工程
https://kakeru.app/6a309d3c785a3f959f4be787e7ae8ab9 https://i.kakeru.app/6a309d3c785a3f959f4be787e7ae8ab9.svg
最終的には、Gyazo URLとmetadataの組み合わせになる
分割するとこう
画像データを順番を維持してGyazo IDの配列にする
実装
画像データに対応したmetadataを作る
内容
タイトル名
タグデータ
etc.
metadataと分ける必要無いかも
実装
1. ファイルを一つにする
あとで形式を変えられるように、これはこれで一旦保存しておく
基本はこれ
2021-04-17 14:53:03 引用を止めた
編集がめんどくさい
code:js
import('/api/code/takker/scrapbox書籍を作る工程/sample2.js')
.then(({convert}) => convert('本のタイトル', '/api/table/your-project/title/table.csv'));
code:sample.js
import {join} from '../Gyazo_URLとOCRとタイトルを合体させるscript/script.js';
import {downloadObject} from '../web_browserから任意のデータをdownloadするscript/script.js';
export async function convert(title, metadataURL) {
const {title: filename, pages, lastModified} = await join(title, metadataURL);
downloadObject({title: filename, pages, lastModified}); // 一旦保存する
const json = {pages: []};
for (let i = 0; i < pages.length; i++) {
const nextLink = i + 1 === pages.length ? '': [${pages[i + 1].title} | ${filename} ${i + 1 + 1}];
const previousLink = i === 0 ? '': [${pages[i - 1].title} | ${filename} ${i}];
const link = ${page.title} | ${filename} ${i + 1};
const quotes = page.text.trim() !== '' ?
page.text.split(/\n/).flatMap(line => {
if (/^\s*$/.test(line)) return [];
return [${line.replace(/(?<!\w)\s+(?=\W)/g, '').replace(/\s?\[/g, '[').replace(/\s?\[/g, '[')}];
}) : [];
const fixedPage = {
title: link,
created: lastModified / 1000,
updated: lastModified / 1000,
lines: [
link,
[[${page.url}/raw#.png]],
<=${previousLink} | ${nextLink}=>,
...quotes,
],
};
json.pages.push(fixedPage);
}
downloadObject(json);
}
共通のタイトルをつけないver.
code:sample2.js
import {join} from '../Gyazo_URLとOCRとタイトルを合体させるscript/script.js';
import {downloadObject} from '../web_browserから任意のデータをdownloadするscript/script.js';
export async function convert(title, metadataURL, {start, end} = {}) {
const {title: filename, pages, lastModified} = await join(title, metadataURL, {start, end});
downloadObject({title: filename, pages, lastModified}); // 一旦保存する
const json = {pages: []};
for (let i = 0; i < pages.length; i++) {
const nextLink = i + 1 === pages.length ? '': [${pages[i + 1].title}];
const previousLink = i === 0 ? '': [${pages[i - 1].title}];
const link = page.title;
const quotes = page.text.trim() !== '' ?
page.text.split(/\n/).flatMap(line => {
if (/^\s*$/.test(line)) return [];
return [${line.replace(/(?<!\w)\s+(?=\W)/g, '').replace(/\s?\[/g, '[').replace(/\s?\[/g, '[')}];
}) : [];
const fixedPage = {
title: link,
created: lastModified / 1000,
updated: lastModified / 1000,
lines: [
link,
[[${page.url}/raw#.png]],
<=${previousLink} | ${nextLink}=>,
...quotes,
'',
...page.links.map(link => #${link}),
],
};
json.pages.push(fixedPage);
}
downloadObject(json);
}
事例