オープンソースの画像生成AIをセットアップから使い方まで解説する『Stable Diffusion AI画像生成ガイドブック』(ソシム刊)発売中(→本のサポートページ

はてなブログライターのヘッダ部分をCharu3で簡単に挿入する

はてなブログライターのヘッダ部分を手で入力するのは大変だ

はてなブログライタースプリッタを使うと、はてなブログの全エントリを1つのテキストファイルで管理できる。詳しい方法は以下。

この場合、新しいエントリの日付や投稿日時、カテゴリなどは自分で入力することになる。たとえば以下のような内容である。

2019-02-04_01:Charu3ではてなブログライターのヘッダ部分を簡単に挿入する
date: 2019-02-04 18:00:00 +0900
category: hatena

はてダラのときは新規エントリでも「2019-02-04:」だけ書けばよかったし、はてなブログライターを単品で使うなら「hbw.rb new」でヘッダが自動生成される。はてなブログライタースプリッタ向けのテキストファイル上では入力内容がちょっと多くて、記事を書き始めるたびに手で入力するのはわずらわしい。

そこで自分は「Charu3」を使って、ヘッダ部分を自動生成させている。

Charu3はクリップボードの履歴を取ったり定型文を入力したりするためのソフトウェアである。現在の日時をもとにした定型文も入力できる。たとえば下のように設定する。

f:id:Imamura:20190203225645p:plain

「テキスト編集」の内容

<charuMACRO>$Y-$M-$D_01:【title】
date: $Y-$M-$D 00:00:00 +0900
category: </charuMACRO>

この項目をポップアップから選択すると、下のように入力される。

2019-02-04_01:【title】
date: 2019-02-04 00:00:00 +0900
category:

「【title】」の部分はデフォルトで入力されるタイトルで、自由に変更してよい。また投稿時刻は投稿時に決めたいので「00:00:00」で決め打ちにしているが、書き始めた時刻を入力したいとき(「hbw.rb new」と同じ)は以下のようにする。

  • この行を:date: $Y-$M-$D 00:00:00 +0900
  • こう書く:date: $Y-$M-$D $H:$m:$s +0900

「$~」は下のような書き方が可能である。

日時マクロ

日時に置換されるマクロです。色々組み合わせて使うことが出来ます。また、マクロテンプレートに色々登録されていますので利用してください。

■マクロ ■ 意味 ■ 出力例
$Y 西暦4桁 2000
$y 西暦2桁 00
$WH 和暦2桁 12
$MM 月英語表記 Jun
$M 月2桁 06
$D 日付数字2桁 07
$ddd 曜日英語 TuesDay
$dd 曜日英語簡易表記 Tue
$d 曜日
$H 時間24時間表記 23
$h 時間12時間表記 11
$m 59
$s 59
$ampm 午前午後 午後
$AMPM 午前午後英語表記 PM

※出力例は 2000年6月7日23時59分59秒の場合です。

便利な機能を使ってみたい - Charu3ドキュメント

「マクロテンプレート」は「編集」ダイアログボックスのプルダウンメニューから入力する。

f:id:Imamura:20190203225646p:plain

「×日目」をタイトルに入れる

タイトルに特定の日からの日数を入れるには、Charu3用の「コンソールアプリ起動プラグイン」とnkfPerlを使う。(ここでの話はUnicode版Charu3の使用を前提にしている)

コンソールアプリ起動プラグインの使い方
Keijiweb ver 6.24 - Unicode版Charu3で「コンソールアプリ起動プラグイン」を使う。(http://keijiweb.com/dView.pl?m=2&m2=prev&user=neko&thid=20070419121918&tid=20071128135912
nkfのダウンロード元
nkf.exe nkf32.dll Windows用の詳細情報 : Vector ソフトを探す!(https://www.vector.co.jp/soft/dl/win95/util/se295331.html)※ここからダウンロードできるnkfは2.1.1と古い。nkfのプロジェクトページ(https://ja.osdn.net/projects/nkf/)によると最新の2.1.5が昨年末にリリースされているがWindows用のバイナリは見つけられなかった
「\vc2005\win32(98,Me,NT,2000,XP,Vista,7)Windows-31J」にある「nkf32.exe」を「nkf.exe」にリネームして、Charu3がインストールされているフォルダの「plugin」フォルダに入れた
Perlのインストールについて
はてなブログにインポートしたダイアリーの内容をまとめて修正できるようにする方法 - ただいま村(http://ima.hatenablog.jp/entry/2019/02/01/170000#Perlをインストール

「テキスト編集」の内容

<charuMACRO>$Y-$M-$D_01:</charuMACRO><charuMACRO>$PLUG-IN<.\plugin\Charu3ExecEx_Uni.dll,>$PLUG-IN</charuMACRO>日目
<charuMACRO>date: $Y-$M-$D 00:00:00 +0900
category: </charuMACRO>

(このコマンドを呼び出した時刻を入れたい場合は例によって、「date: $Y-$M-$D 00:00:00 +0900」を「date: $Y-$M-$D $H:$m:$s +0900」と書けばよい)

「拡張マクロ」の内容

ExecCmd=cmd /c perl .\plugin\scripts\today.pl | nkf -w16L0

today.pl

「拡張マクロ」で呼び出しているtoday.plは以下。Charu3をインストールしたフォルダ-「plugin」-「script」に保存する。

#! /usr/local/bin/perl
use utf8;
use Time::Piece;
binmode STDOUT, ':encoding(cp932)';

$startday = '2001-01-01'; #基準日の年-月-日

$day = Time::Piece->strptime($startday, '%Y-%m-%d');
$dd =localtime() - $day;
$days = int( $dd -> days);
$now = localtime;
$today = $now -> ymd;

1 while $days =~ s/(.*\d)(\d\d\d)/$1,$2/; #「×日目」の数字を3桁区切りにしないときは行頭に半角の「#」を追加

$out = $today . "_01:" . $days . "日目\ndate: " . $today . " 00:00:00 +0900\ncategory: ";

print $out;

以上ののち、Charu3に登録した項目を選択すると以下のように入力される。

2019-02-04_01:6,608日目
date: 2019-02-04 00:00:00 +0900
category:

2001年1月1日からの日数がタイトルの「6,608日」となる。「today.pl」の「開始日の年月日」を変えれば、好きな日からの日数を出力できる。

nkfの参考リンク