甘辛LOVER

旧:where there is no haiku

はてなハイクのデータをはてなブログに移行する手順【前編】

ハイクのデータをはてなブログにインポートした手順を書いておきます。
Win10で、使ったツールは秀丸エディタExcel 2016です。
秀丸エディタシェアウェアなので、気に入ったら買ってね。
フォトライフの画像は直しますが、外部の画像はアドレスのままです。
あとYoutubeは直すけどニコニコはそのままです。埋め込みじゃなくていいわって人は置換をとばしても大丈夫。

■心がけたこと
CSVJSONの元のファイルを絶対触らないところにコピーしておく!
・最初は少なめの件数で試しにやる。うまくいったら件数を増やす。
・バックアップ(ファイルコピー)する。なんかまちがってもそこまで戻れるので。
・疲れてきたら休憩する。あるいは明日にする。



■Aパート はてなCSVの場合

(1)秀丸エディタで開き、 [正規表現]にチェックを入れて以下の置換を行います。screwflysolverになってるところはご自分のIDに書き換えてください。全部できたら保存します。

検索→置換
「\n」→「★改行★」
「★改行★(\d{10})」→「\n\1」
「★改行★」→「<br />」
http://cdn-ak.f.st-hatena.com/images/fotolife/s/screwflysolver/\d{8}/」→「f:id:screwflysolver:」
「(f:id:screwflysolver:\d{14}).jpg」→「\1j:image」
「(f:id:screwflysolver:\d{14}).png」→「\1p:image」
「(f:id:screwflysolver:\d{14}).gif」→「\1g:image」
https://www.youtube.com/watch\?v=」→「http://youtu.be/
http://www.youtube.com/watch\?v=」→「http://youtu.be/
「(http://youtu.be/...........)」→「\1\?feature=oembed"" width=""480"" height=""270"" frameborder=""0"" allowfullscreen=""""></iframe>」
http://youtu.be/」→「<iframe src=""https://www.youtube.com/embed/

 

(2)Excelに読み込ませます。Excel自体を起動して、外部データの取込から↑で作ったcsvを選択。[カンマやタブなどで区切られたデータ]を選んで[カンマ]だけチェックを入れて[UTF-8]を選んで[次へ][完了][OK]で取込完了。勝手にテーブルになったら右クリックして「範囲に変換」で。LibreOfficeの場合は単純にファイルを開いて上の方にあるUTF-8を選べばいくと思います。

 

(3)左から[created_on][URL][author][target_name][body_text]の5列で、一投稿一行で表示されるはず。されなかったらどっかで何かが違います。(1)でおかしくなったかもしれない行もここでチェック。大丈夫そうならCSVじゃない形式(xlsxとかodfとか)でファイルを保存しておきます。

 

(4)日付を変換します。F列あたりの2行目に「=(A2+32400)/86400+25569」を入れます。このセルの書式設定を「mm/dd/yyyy hh:mm:ss」にします。それっぽい投稿日時になったら、F列の一番下までオートフィル(F2セルを選んでセルの右下にマウスポインタを合わせて黒い十字が出たらダブルクリック)します。

 

(5)式を値にします。Excelの場合 F列を選択して右クリックから[コピー]、F列の上でもう一度右クリックして[形式を選択して貼り付け]で[値]を選んではりつける。LibreOfficeの場合 F列を選択して右クリックから[コピー]、F列の上でもう一度右クリックして[形式を選択して貼り付け]で[日付と時刻]だけにチェックをいれてはりつける。

 

いったんおわり。

 

■Aパート あっきぃJSONの場合

(1)秀丸エディタで開き、[正規表現]にチェックが入っていない状態で以下の置換を行います。終わったら保存します。

検索→置換
「{"keyword":"」→「{"linestart":"★行頭★","keyword":"」


(2)JSONCSVに変換してくれるところに行き、CSVファイルを作成します。


(3)(2)で作成したCSVファイルを秀丸エディタで開き、 [正規表現]にチェックを入れて以下の置換を行います。screwflysolverになってるところはご自分のIDに書き換えてください。全部できたら保存します。

検索→置換
「\n」→「★改行★」
「★改行★★行頭★」→「\n★行頭★」
「★改行★」→「<br />」
「http:/p://cdn-ak.f.st-hatena.com/images/fotolife/s/screwflysolver/\d{8}/」→「f:id:screwflysolver:」
「(f:id:screwflysolver:\d{14}).jpg」→「\1j:image」
「(f:id:screwflysolver:\d{14}).png」→「\1p:image」
「(f:id:screwflysolver:\d{14}).gif」→「\1g:image」
https://www.youtube.com/watch\?v=」→「http://youtu.be/
http://www.youtube.com/watch\?v=」→「http://youtu.be/
「(http://youtu.be/...........)」→「\1\?feature=oembed"" width=""480"" height=""270"" frameborder=""0"" allowfullscreen=""""></iframe>」
http://youtu.be/」→「<iframe src=""https://www.youtube.com/embed/

 

(4)Excelに読み込ませます。Excel自体を起動して、外部データの取込から↑で作ったcsvを選択。[カンマやタブなどで区切られたデータ]を選んで[カンマ]だけチェックを入れて[UTF-8]を選んで[次へ][完了][OK]で取込完了。勝手にテーブルになったら右クリックして「範囲に変換」で。LibreOfficeの方は単純にファイルを開いて上の方にあるUTF-8を選べばいくと思います。


(5)A列が[★行頭★]で始まる一投稿一行で表示されるはず。たぶんリプライの数によって列数が違う。されなかったらどっかで何かが違います。(3)でおかしくなったかもしれない行もここでチェック。大丈夫そうならCSVじゃない形式(xlsxとかodfとか)でファイルを保存しておきます。


(4)日付を変換します。A列にcreated_atがあるとしたら、その右に列をふたつ挿入して下記のように数式を入れます。B2に「=SUBSTITUTE(SUBSTITUTE(A2,"T"," "),"Z","")」C2に「=DATEVALUE(B2)+TIMEVALUE(B2)+(1/24*9)」


(5)C列の書式設定を「mm/dd/yyyy hh:mm:ss」にします。それっぽい投稿日時になったら、B列とC列を一番下までコピーします。


(6)数式を値にします。Excelの場合 C列を選択して右クリックから[コピー]、C列の上でもう一度右クリックして[形式を選択して貼り付け]で[値]を選んではりつける。LibreOfficeの場合 C列を選択して右クリックから[コピー]、C列の上でもう一度右クリックして[形式を選択して貼り付け]で[日付と時刻]だけにチェックをいれてはりつける。

 

いったんおわり。

 


■/////////休憩/////////■


ここまでの作業で前段階が終わりました。お疲れ様でした。
おやつでも食べながら読んでください。


このブログの過去記事を見ればわかりますが、私はタイトルの前に日付を6桁でつけ、カテゴリに元のキーワードとは別に「haiku」をつけ、投稿の最後にハイクでのURLをくっつけました。あと実況は一投稿にまとめました。
このあたりは好みなので、何が欲しいか欲しくないかタイトルはどうするかとかを考えてください。
IDページだけタイトルなしとか、表記揺れしちゃってるキーワードをまとめるとか、いっそ〇〇系はまとめちゃうとか、タイトルをキーワードにしてカテゴリはつけないとか、投稿自体を日付でまとめちゃうとか。
リプライは…私は使ってないけど(CSVからやったから)、うまく使えば便利そう。文脈いみふになってるのもあるし。
たぶん必須なのは投稿日時(DATE)と本文(BODY)だけで、タイトルとカテゴリはいらなければなしでいけます。
あ、タイトルあれば本文はなくてもいけるのかな…。

最終的なデータは↓みたいになります。Movable Typeです。基本的には改行のタイミングでセルが右に移るように書いて、タブを改行に置換して仕上げます。
あるいは必要な要素を★改行★をはさみながら1行になるように書いて、やっぱり最後に置換するか。

置換前1:
TITLE: 190214 id:screwflysolver DATE: 02/14/2019 22:19:53 CATEGORY: id:screwflysolver CATEGORY: haiku ----- BODY: なんでキジュンではじまってピルドクで終わるのかと思ったけど<br/>カナダラ順だとこうなるんだね<br/>いまだに頭に入ってないわ…<br/><br/><br/>Formerly Posted as h.hatena.ne.jp/screwflysolver/81813475514384528 --------

置換前2:
TITLE: 190214 id:screwflysolver★改行★DATE: 02/14/2019 22:19:53★改行★CATEGORY: id:screwflysolver★改行★CATEGORY: haiku★改行★-----★改行★BODY: ★改行★なんでキジュンではじまってピルドクで終わるのかと思ったけど<br/>カナダラ順だとこうなるんだね<br/>いまだに頭に入ってないわ…<br/><br/><br/>Formerly Posted as h.hatena.ne.jp/screwflysolver/81813475514384528★改行★--------★改行★

 

置換後:
TITLE: 190214 id:screwflysolver
DATE: 02/14/2019 22:19:53
CATEGORY: id:screwflysolver
CATEGORY: haiku
-----
BODY: 
なんでキジュンではじまってピルドクで終わるのかと思ったけど<br />カナダラ順だとこうなるんだね<br />いまだに頭に入ってないわ…<br /><br /><br />Formerly Posted as h.hatena.ne.jp/screwflysolver/81813475514384528
--------

キー名+コロン+半角スペースの後ろに値が来ます。
キーを並べる順番は気にしなくて大丈夫。
メタデータと本文のセクションは5個のハイフンで区切ります。
投稿と投稿は8個のハイフンで区切ります。

日付順とかに並んでる必要はないのと、インポートは何度かに分けてできるので、似たような加工したいものでシート分けて順にやってく、なんてのもありだと思います。


■//////休憩終わり//////■

 

Bパートは近いうちに公開予定ですが、ほぼほぼExcelのサンプルになると思うので、あんまり参考にはならないかも。最後の最後は出来上がったセル範囲をコピーして秀丸エディタに貼り付けて\tを\nに置換してutf-8で保存してインポートします。


うまくできなかったらコメント欄で。