jugem xml convert to markdown.
npm install -g jugem-xml-to-md
# or
yarn global add jugem-xml-to-md変換対象の xml ファイルが ./xml-data 内にある状態で下記のコマンドを実行してください。
markdownに変換されたファイルが ./result 上に出力されます。
(result ディレクトリが存在しない場合、スクリプト実行時に作成されます)
jugem-xml-to-mdまた、対象のディレクトリを第一引数に指定することで、指定したディレクトリ内の xml ファイルを処理対象とすることも可能です。
jugem-xml-to-md [target dir]-h, --help を第一引数に指定することで利用方法を確認することが出来ます。
jugem-xml-to-md -h
# or
jugem-xml-to-md --helpScripts start
npm run startScrpts Build (Production)
npm run buildDevelopment (Build and Start with development mode)
npm run devLint and Preitter
npm run fmtJugem XML をjsonに変換した場合の構造は下記のようになります。
実際の変換コードも下記となります。
変換には fast-xml-parser を用いています。
const { parse: xmlParse } = require("fast-xml-parser");
const { readFileSync, writeFileSync } = require("fs");
(async () => {
const xml = await readFileSync("./jugem.xml", "utf8");
const json = xmlParse(xml);
console.log(json);
})();json 変換後の構成
{
"blog": {
"name": "",
"description": "",
"users": {
"user": {
"name": "jugemのユーザ名",
"full_name": "",
"description": ""
}
},
"entries": {
"entry": [{
"title": "ブログタイトル",
"author": "執筆者",
"category": "カテゴリー(指定していない場合は空文字)",
"date": "投稿日(YYYY/MM/DD hh:mm:dd)",
"description": "ブログ内の本文。執筆環境によっては(?)、改行が'<BR>'で記述されることもある",
"sequel": "",
"comments": {
"comment": [{
"title": "コメントタイトル",
"description": "コメント本文",
"name": "コメントした人の名前",
"email": "",
"url": "",
"date": "コメント投稿日(YYYY/MM/DD hh:mm:dd)"
},
...]
},
"trackbacks": "トラックバック"
},
...]
}
}
}この json 型を下記のようなmarkdownに変換していきます。
---
title: entry.title
date: entry.date
category: entry.category
description: entry.description(100文字まで表示)
---
entry.description(全て展開)エクスポートした XML データの場合、画像パスが実際のサイト上で指しているものとは違うものが吐き出されるようです。
このパスにアクセスしても画像自体は見つからず 404 が返されます。
そのため、変換の合間に古い画像パスから現在の画像パスに変換する処理を挟んでいます。
(途中で画像パスの仕様が変わったのだが、エクスポート機能の方は未対応ということなのだろうか?)