No.5428, No.5427, No.5426, No.5425, No.5424, No.5423[6件]
by admin. ⌚2025年9月23日(火) 00:05:04〔9時間前〕 <365文字> 編集
昔に使っていた色々な日記ツールのログをてがろぐへ移植・統合する作業を行ったことがある者です。20年ほど昔にnickyを数ヶ月だけ使ったことがあるのを思い出し、古いデータを探してみたらログファイルを見つけたので試してみました。
以下、WindowsのPCをお使いで、nickyのログがPC内にあることと、てがろぐCGIを既にダウンロード済みであることを想定しています。
5426で既に書いて下さっている通り、nickyのログは西暦のフォルダ内に日付ごとの.nky形式のファイルが生成されていて
2005
├ 0101A.nky
├ 0102A.nky
├ …
…という感じです。この.nky形式のファイルをテキストエディタで開くと
2005/01/01(Sat)00:00[SOH]タイトル[SOH]本文本文本文本文<br>本文本文本文本文本文<br>[SOH]添付画像ファイル名[SOH]フラグ1[SOH]フラグ2[SOH][SOH][SOH][SOH]
…という構成になっています。※[SOH]の部分は制御文字(0x01)です。半角スペースやタブではありません
・フォルダ内にあるnky形式のデータを1つにまとめる
・文字コードをUTF-8に変換
・[SOH]の部分をてがろぐのxmlに則ったタグに変換
・日付に含まれている曜日の部分を除去
・nickyでは記録されていない、投稿日時の秒を00秒として補完
これらの処理を一括でWindows PowerShellで行います。
任意の場所に新しいフォルダを作り、.nky形式のファイルすべてを1つのフォルダにまとめてコピーしておくと楽です。
スタートメニュー
→「PowerShell」と検索
→「Windows PowerShell」を右クリックして「管理者として実行」を左クリック
PowerShellが起動したら、PowerShellが処理を行う場所を.nkyファイルがあるフォルダにするコマンドを入力します。
たとえば.nkyをまとめてあるフォルダが
C:\hoge\nickey\all
だったら
cd C:\hoge\nickey\all
と入力してEnterを押します。PowerShellの表示が
PS C:\hoge\nickey\all> _ ←アンダーバーが点滅
となればOKです。
次に、以下のコードの全文をコピーしてから、PowerShellの画面で右クリックして下さい。コピーしたコードが貼り付けられて実行されるはずです。
※PowerShellコマンドはAIに補助してもらいながら書きました。当方の手持ちの.nkyファイル数個で変換するところまでは動作確認済みですが、実際のてがろぐでの表示までは確認していませんのでご了承下さい。
長いので折り畳み
$output = "nicky2tegalog.txt"
Remove-Item $output -ErrorAction SilentlyContinue
$allLines = @()
Get-ChildItem *.nky | Sort-Object Name | ForEach-Object {
$bytes = Get-Content $_ -Encoding Byte
$raw = [System.Text.Encoding]::GetEncoding("euc-jp").GetString($bytes)
$raw = $raw -replace '\([A-Za-z]{3}\)', ''
$raw = $raw -replace '(\d{4}/\d{2}/\d{2})(\d{2}:\d{2})', '$1 $2'
$lines = $raw -split "`r?`n"
$allLines += $lines
}
$id = $allLines.Count
foreach ($line in $allLines) {
$fields = $line -split [char]1
if ($fields.Count -ge 4) {
$date = $fields[0].Trim()
if ($date -match '^\d{4}/\d{2}/\d{2} \d{2}:\d{2}$') {
$date += ":00"
}
$title = $fields[1].Trim()
$body = $fields[2].Trim()
$image = $fields[3].Trim()
$body = $body -replace '<br>', '<br/>'
if ($image -ne '') {
$body += "<br/>[PICT:$image]"
}
$entry = "<log><date>$date</date><id>$id</id><user>admin</user><cat></cat><comment>$title<br/>$body</comment></log>"
Add-Content $output $entry
$id--
}
}
Write-Host "処理完了:$output に保存されました"
処理が終わると、フォルダの中に「nicky2tegalog.txt」というtxtファイルが生成されます。これをテキストエディタで開いて中身をすべてコピーし、てがろぐのxmlファイル内の<tegalog>と</tegalog>の間に貼り付ければOKです。
あとはてがろぐ側の設定画面にある「投稿の一括調整」から、日付順に並び替えたり記事Noを採番し直したりして調整して下さい。記事のユーザー名をadminにしていますので、任意のユーザー名にしたい場合はテキストエディタで一括置換するなりして下さい。
画像はてがろぐをセットアップしたフォルダのimagesにまとめてアップロードすれば表示されるはずです。
1点気になったのが、当方のnickyのログの中に記事の投稿時刻が入力されておらず、日付と曜日しか記録されていないものが1件ありました。(「2004/11/27/(Sat)」となっていた)
上記のコードでは時刻の補完まではしていないので、てがろぐのxmlに貼り付けた後に<date>2004/11/27/</date>という風になっているものが含まれていないか念のため確認して、<date>2004/11/27 00:00:00</date>となるように手動で時刻を追加・修正して下さい。
by sakura. ⌚2025年9月22日(月) 21:55:41〔11時間前〕 <2899文字> 編集
ログデータはおそらく独自の形式でタイトルや画像URLを半角の空白で区切る1行タイプ。ログファイルは1投稿1ファイルです
by admin. ⌚2025年9月22日(月) 20:21:56〔12時間前〕 <92文字> 編集
http://sec-suzuki.com/usr/bin/perl/NICKI/%8E%E6%90%E0/...
データ形式は素人なのでわからないですけども……;;
by admin. ⌚2025年9月22日(月) 19:08:25〔14時間前〕 <175文字> 編集
ということはWordpressのXMLならいけます?
nickyからWP形式というphpを発見したのですが〜
もしくはMT形式…のほうがあんまいないかしら
by admin. ⌚2025年9月22日(月) 18:31:45〔14時間前〕 回答/返信 <86文字> 編集
🥞Re:5421◆てがろぐのデータファイルはXMLっぽいテキストファイルなので、手動で編集がしやすいと思います。なので、nickyのデータをtegalog.xml形式に書き換えれば移行しやすいかも知れません。
ただ、私はnickyのデータ形式を知らないので何とも言い難いのですけども。どなたか実際に実践された方がいらっしゃれば良いのですが。
だれか~~~
by nishishi. ⌚2025年9月22日(月) 14:56:55〔18時間前〕 回答/返信 <266文字> 編集
"integrity" 及び crossorigin="anonymous" の値が設定されていないのが少し気になります。
利用しているCDNそれぞれで
https://releases.jquery.com/
https://cdnjs.com/libraries/lightbox2
属性が付与されたスクリプトタグをappendChildで挿入する形にして頂けると、SRIが担保されると思うので嬉しいです。
ユーザー側で設定するlightbox系ライブラリのJavaScriptやCSSファイルの読み込みでもこれらの値が設定できるといいんですが…。
ご検討どうぞよろしくお願いいたします。