Tampermonkey今日もまたコーディング。古いブログをWordPressに移行したいという。古いブログはMovableTypeなので、普通ならエクスポートインポートすればいいのだが、あまりに古いこともあり、もうMovableTypeの管理画面に入れないとのこと。画面から手作業でコピペをするのが辛いということだった。5.2試行錯誤など画面から取り出すということであれば、JavaScriptを使うのが良さそう。ChromeのTampermonkeyであれば、JavaScriptをねじこんで実行させることができる。DOMごと引っこ抜くのはできそうだ。データを抜いたら次はWordPressへの投稿だ。最初は昔懐かしい「PressThis」ブックマークレットで突っ込めないかと思ったのだが、4.9で標準機能から外されてプラグインになっていたうえに、どうもHTMLを拾わず、プレーンテキストで読み込んでしまうみたい。これだとあまり旨味がない。他にブックマークレットを探してもみたが、あまりこれ、というものがなかった。APIを使えばいい、と思いついた。最初はPHPを踏み台にするつもりだったが、JavaScriptからajaxで投げればなんとかなりそう。Password」プラグインを導入し、ユーザーの設定画面で専用のパスワードを生成する必要がある。日本語APIに投げるパスワードにうっかりログインパスワードを使ってしまうと失敗する。WordPressのユーザー設定画面で、専用パスワードを発行してそれを使う。APIが無効化されているという不思議な仕様がある。素人向けにはAPI開いておくの危険ということなのかもしれない。APIで404が返ってくる。記事はh2が日付、h3がタイトル、本文はだいたいpタグだった。画像もpタグに囲まれている。html4.1の時代なので、articleのように記事の明確な範囲を示すタグがないのは残念。記事のフッターのような感じでp.postedがあったので、これを目印に切り出すことにする。jQueryのnextUntil()メソッドが使えそうだ。記事の日付というか時刻表示もp.postedからslice()する方が早そう。記事の日付にちょっと不整合があった。月は1桁か2桁なのだが、日付だけがなぜか半角スペースで桁揃えされている。「2005年10月10日」これをJSで区別するのはめんどくさそうだなと思ったが、試しにMoment.jsを導入してみたら難なく差を吸収した。hh:mm');これはありがたい。WordPressに出力する時は.format('YYYY-MM-DDThh:mm:00')を使った。テスト環境では別ドメインのサーバーに投げるので、functions.phpに記述する。http://www.original_blog_domain");}add_action('init','add_cors_http_header');本番は同じドメイン上にあるから大丈夫なはず、かな。invocation」が出たときの対処Base64エンコードBase64のエンコードについては以下の記事が参考になる。'application/json',をajaxのパラメータに含める必要があった。これに気付かなかったばっかりに苦労した......。}).done().fail().always();とりあえずテスト投稿には成功。requestが拒否られる。APIで404が返ってくる。PRESSMAN*Techパーマリンク設定を変えたらたしかにCORSのヘッダーが表示されるようになった。Access-Control-Allow-Headersが戻ってないと言われる。ほかのヘッダーもどうも思った通りになっていない。WordPressの方で出しているヘッダーがあって、置き換えられていないみたい。一晩おいたらアクセス可能になった。ぇ?何かのキャッシュの問題のようだけども。flywheelでテーマを開発する際の手順。entryの正しい書き方と出力あのwebpackとbabelを二度三度。エンジニア文章、写真、デザイン、コーディングまで一通りこなす自走式フルスタックブロガー。読者になる@mogami74をフォローはてなブログをはじめよう!mogami74さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。