howm-to-はてな
30分プログラム、その89。
howmの内容をはてなに自動投稿するスクリプト。実際には、はてダラで投稿できる形式に変換するだけ。内容は、はてな記法で書かれていることが前提。
使い方
$ perl howm-hatena.pl # 今日の分のファイルを生成 $ perl howm-hatena.pl 2007 07 24 # 日付を指定して生成 $ perl howm-hatena.pl yesterday # 昨日の分 :D
yesterdayは許してください。自動投稿の都合上、昨日の分を簡単に生成できるようにしたかったんです。
コード
#! /usr/bin/perl # -*- mode:perl enconding:utf-8 -*- # # howm-hatena.pl - howm to hatena poster # # Copyright(C) 2007 by mzp # Author: MIZUNO Hiroki <hiroki1124@gmail.com> # http://mzp.sakura.ne.jp/ # # Timestamp: 2007/07/24 20:33:03 # # This program is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. # ######################################## # Setting ######################################## my $HOWM_DIR = '~/howm'; ######################################## use strict; use warnings; use Time::Local; my ($year,$mon,$day); if(@ARGV == 3){ ($year,$mon,$day) = @ARGV; }else{ my @time = localtime(time); $year = sprintf('%04d',1900+$time[5]); $mon = sprintf('%02d',1+$time[4]); $day = sprintf('%02d',$time[3]); $day -- if(@ARGV==1 and $ARGV[0] eq 'yesterday'); # :D } my @files = glob "$HOWM_DIR/$year/$mon/$year-$mon-$day-*.howm"; open DIARY,">$year-$mon-$day.txt"; print DIARY,"\n"; while(@files){ my $file = shift @files; my ($hour,$min,$sec); if($file =~ /-(\d{2})(\d{2})(\d{2})\.howm\Z/){ $hour = $1; $min = $2; $sec = $3; } my $time = timelocal($sec,$min,$hour,$day,$mon-1,$year-1900); open HOWM,$file; while(<HOWM>){ s/\A= /*$time*/g; print DIARY $_; } close HOWM; } close DIARY;