「フィルターされたNotionページによるMediaWiki」の版間の差分

Notion-MW
タグ: 差し戻し済み
Notion-MW
 
(同じ利用者による、間の2版が非表示)
37行目: 37行目:
大まかな流れは以下の通り。
大まかな流れは以下の通り。


* 上記データベースの内容をNotion APIから取得する。以下、各行ごとに処理。
# 上記データベースの内容をNotion APIから取得する。以下、各行ごとに処理。
* ページの内容を取得し、黄色い見出しだけ残す変換を行う。Notionのブロックのリストができる
# ページの内容を取得し、黄色い見出しだけ残す変換を行う。Notionのブロックのリストができる
* notion-to-mdのblocksToMarkdownでマークダウン形式に変換する。
# notion-to-mdのblocksToMarkdownでマークダウン形式に変換する。
* いくつか前処理を行う。
# いくつか前処理を行う。
* pandocを用いてMediaWikiに変換する。
# pandocを用いてMediaWikiに変換する。
* いくつか後処理(整形)を行う
# いくつか後処理(整形)を行う
* 完成した記事データをMediaWiki APIで投稿する。
# 完成した記事データをMediaWiki APIで投稿する。


その他、ページのリネーム、新規作成時のIDの反映(<code>&#45;</code>を数字に変える)、既存の記事を新規作成しようとした場合のエラーなど、前後に多少の処理がある。
その他、ページのリネーム、新規作成時のIDの反映(<code>&#45;</code>を数字に変える)、既存の記事を新規作成しようとした場合のエラーなど、前後に多少の処理がある。
64行目: 64行目:
=== pandocの実行 ===
=== pandocの実行 ===


<syntaxhighlight lang="python">
<syntaxhighlight lang="python">cp.spawn("pandoc", ["-f","gfm","-t", "mediawiki", "--shift-heading-level-by=1"]);</syntaxhighlight>
 
python
cp.spawn("pandoc", ["-f","gfm","-t", "mediawiki", "--shift-heading-level-by=1"]);</syntaxhighlight>
<code>gfm</code>(Github Flavored Markdown)から<code>mediawiki</code>に変換する。<code>&#45;&#45;shift&#45;heading&#45;level&#45;by&#61;1</code>は、[https://www.mediawiki.org/wiki/Help:Formatting/ja Help&#58;書式整形 &#45; MediaWiki]にもある通り、MediaWikiの記事内ではレベル1の見出しは非推奨だからである。
<code>gfm</code>(Github Flavored Markdown)から<code>mediawiki</code>に変換する。<code>&#45;&#45;shift&#45;heading&#45;level&#45;by&#61;1</code>は、[https://www.mediawiki.org/wiki/Help:Formatting/ja Help&#58;書式整形 &#45; MediaWiki]にもある通り、MediaWikiの記事内ではレベル1の見出しは非推奨だからである。


99行目: 96行目:


上記のような良い感じのMediaWikiに変換する目的と、単純にできたばかりでバグが多いため、色々変えている。
上記のような良い感じのMediaWikiに変換する目的と、単純にできたばかりでバグが多いため、色々変えている。
=== リポジトリ ===
[https://github.com/ge9/notion-to-md-mediawiki Githubリポジトリ]を作成したので、最新情報はそちらから。


=== 数式関連 ===
=== 数式関連 ===
120行目: 121行目:
コードにおいて、言語がpythonなどの良く知られたものに設定されていると、pandocによって<strong>syntaxhighlight</strong>タグに変えられてしまう。今回はSyntaxHightlight拡張機能が無効のMediaWikiを使っているので、言語にダミー文字列を付加する(付加ではなくダミー文字列だけにしても変わらないが、情報を落とすのは勿体ない気がしたので)。またpandoc側の問題で<code>visual basic</code>のように言語名にスペースが入っていると<code>visual</code>だけになってしまうようなので、スペースをアンダースコアに置換。
コードにおいて、言語がpythonなどの良く知られたものに設定されていると、pandocによって<strong>syntaxhighlight</strong>タグに変えられてしまう。今回はSyntaxHightlight拡張機能が無効のMediaWikiを使っているので、言語にダミー文字列を付加する(付加ではなくダミー文字列だけにしても変わらないが、情報を落とすのは勿体ない気がしたので)。またpandoc側の問題で<code>visual basic</code>のように言語名にスペースが入っていると<code>visual</code>だけになってしまうようなので、スペースをアンダースコアに置換。


<syntaxhighlight lang="python">
<syntaxhighlight lang="python">language = "dummy_str_"+language?.replace(" ", "_");//for MediaWiki without SyntaxHightlight extension</syntaxhighlight>
 
python
language = "dummy_str_"+language?.replace(" ", "_");//for MediaWiki without SyntaxHightlight extension</syntaxhighlight>
<span id="notion&#45;to&#45;mdts内"></span>
<span id="notion&#45;to&#45;mdts内"></span>
=== <code>notion&#45;to&#45;md.ts</code>内 ===
=== <code>notion&#45;to&#45;md.ts</code>内 ===
133行目: 131行目:
解説が面倒なのでコードだけとりあえず。
解説が面倒なのでコードだけとりあえず。


<syntaxhighlight lang="python">
<syntaxhighlight lang="javascript">//`のみcodeに変え、```は```のままという仕様の場合
 
javascript
//`のみcodeに変え、```は```のままという仕様の場合
           if (content.type === "text"){
           if (content.type === "text"){
             if (type == "code"){
             if (type == "code"){