Movabletype.net の方で書いてた記事もとりあえずこっちに持ってきた。
mersy.net
https://bitpart.movabletype.io…
これからは普通に評価版として使っていこうかな、と。
先日はMTからエントリを持ってきたわけですが。
今回は Movabletype.net からってことでとりあえずテンプレートタグが全く同じではないので、JSONでの移行ではなくて、 atom でやることにした。
encode_json とか色々手間かかりそうだったので。
もともと用意されてる feed 用のテンプレートを元に調整。
とりあえずコード。
<$mt:HTTPContentType type="application/atom+xml"$><?xml version="1.0" encoding="<$mt:PublishCharset$>"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title><$mt:BlogName remove_html="1" escape="xml"$></title>
<link rel="alternate" type="text/html" href="<$mt:BlogURL escape="xml"$>" />
<link rel="self" type="application/atom+xml" href="<$mt:Link template="feed_recent"$>" />
<id>tag:<$mt:BlogHost exclude_port="1" escape="xml"$>,<$mt:TemplateCreatedOn format="%Y-%m-%d"$>:<$mt:BlogRelativeURL escape="xml"$><$mt:BlogID$></id>
<updated><mt:Entries blog_ids="children" include_with_website="1" lastn="1"><$mt:EntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></mt:Entries></updated>
<mt:If tag="BlogDescription"><subtitle><$mt:BlogDescription remove_html="1" escape="xml"$></subtitle></mt:If>
<generator uri="https://movabletype.net/"><$mt:ProductName version="1"$></generator>
<mt:Entries lastn="999">
<entry>
<title><$mt:EntryTitle remove_html="1" escape="xml"$></title>
<link rel="alternate" type="text/html" href="<$mt:EntryPermalink escape="xml"$>" />
<id><$mt:EntryAtomID$></id>
<slug>mn_<mt:Entrybasename></slug>
<published><$mt:EntryDate language="en"$></published>
<updated><$mt:EntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></updated>
<summary><$mt:EntryExcerpt remove_html="1" escape="xml"$></summary>
<author>
<name><$mt:EntryAuthorDisplayName escape="xml"$></name>
<mt:If tag="EntryAuthorURL"><uri><$mt:EntryAuthorURL escape="xml"$></uri></mt:If>
</author>
<tags><mt:EntryCategories>
<tag><$mt:CategoryLabel escape="xml"$></tag>
</mt:EntryCategories></tags>
<content type="html" xml:lang="<$mt:BlogLanguage ietf="1"$>" xml:base="<$mt:BlogURL escape="xml"$>">
<$mt:EntryBody regex_replace="/https:/\/bitpart\.movabletype\.io\/mersy\/.assets\//g","/assets/" regex_replace="/https:/\/bitpart\.movabletype\.io\/mersy\//g","/" escape="xml"$>
</content>
</entry>
</mt:Entries>
</feed>
MTEntriesの調整
<mt:entries lastn="999">
MTEntries がサイト内色々引っ張る感じになってて余計なのもインポートしてしまった。失敗。
識別用に slug を追加。URLもこれで変わるけどまぁ
<slug>mn_<mt:Entrybasename></slug>
日付は @tinybeans の教えをまもって変更
<published><$mt:EntryDate language="en"$></published>
カテゴリをタグとしてインポートするので tags/tag の構成に変更
<tags><mt:EntryCategories>
<tag><$mt:CategoryLabel escape="xml"$></tag>
</mt:EntryCategories></tags>
本文部分を置換する。
正規表現使えるようになってるのありがたい。
<$mt:EntryBody regex_replace="/https:/\/bitpart\.movabletype\.io\/mersy\/.assets\//g","/assets/" regex_replace="/https:/\/bitpart\.movabletype\.io\/mersy\//g","/" escape="xml"$>
画像が /.assets/ にはいってたんだけど、サイトから手動で丸っと引っ張ってきたときに /assets/ になったので置換。
regex_replace - タグリスト | MovableType.net
https://movabletype.net/tags/2…
gオプションの記載がないけど使えた。
サイトURLもかわるのでルートに置換。
記事内にサイト内リンクとかもあったかもしれないですが、そこは今回スルーで。
画像は手動で丸っととってきたのをサーバー上においた。
今回はassetsで、Craft のは asset にしてたから被らなかったけど、変に別れたのが気持ち悪い。
画像パス置換するんだから変更してもよかったかもなー。
画像とかはとりあえずSiteSuckerで取ってきた。
SiteSucker for macOS
https://ricks-apps.com/osx/sit…
これである程度は移行できたんじゃないかなー。
バラバラになってたのをひとまとめにできた気はする。