Movabletype.net の方で書いてた記事もとりあえずこっちに持ってきた。
mersy.net
https://bitpart.movabletype.io...
これからは普通に評価版として使っていこうかな、と。
先日はMTからエントリを持ってきたわけですが。
2019-04-30
今回は 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...
これである程度は移行できたんじゃないかなー。
バラバラになってたのをひとまとめにできた気はする。