平衡点
2020/03/02
_ automaticruby を設定したり
昨今の情勢を鑑みるに, イロイロなイベントが中止になるのはしょうがないと思ったりもするわけですが.
口頭通知とか紙の回覧よりはマシではあるし, 一応メールでの通知も設定できるのだけれども, 情報は結局内部回線から接続する必要があるわけで, 面倒な事この上ない.
内部サイトの情報を取得整形して通知することを目的として, 久々に Plagger なんてひっぱりだしたが, 昔の記憶が定かでないうえに, Perl脳が衰退していて, まったく上手く動かせない(まあ, 元データが Shift-JIS
だったりするのもアレなんだけど).
まあ, 今時 Plagger かよ, という意見もあるわけだが
Plagger は諦めて
を使ってみたら, さっくりと動いて感動したり.
メール通知が欲しいので Publish::Sendmail
をでっちあげた.
# -*- coding: utf-8 -*-
# Name:: Automatic::Plugin::Publish::Sendmail
# Author:: Youhei SASAKI <uwabami@gfd-dennou.org>
# Created:: Mar 02, 2020
# Updated:: Mar 02, 2020
# Copyright:: Copyright (c) 2020 Youhei SASAKI <uwabami@gfd-dennou.org>
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
module Automatic::Plugin
class PublishSendmail
require 'pp'
require 'nkf'
require 'time'
def initialize(config, pipeline=[])
@config = config
@pipeline = pipeline
end
def run
@from = @config['from']
@rcpt = @config['rcpt']
@sendmail = @config['command'] || '/usr/sbin/sendmail'
@pipeline.each {|feeds|
unless feeds.nil?
feeds.items.each {|feed|
IO.popen(@sendmail<<' -t','w') do |p|
p.print <<EOT
From: #{@from}
To: #{@rcpt}
Subject: #{NKF.nkf('-WjMm0',feed.title)}
Date: #{Time.parse(feed.dc_date.to_s).strftime("%a, %d %b %Y %X %z")}
Mime-version: 1.0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE html><html lang="ja"><head><meta charset="utf-8"></head><body>
#{feed.description.gsub(/[\s ]/,'')}
</body></html>
EOT
end
}
end
}
@pipeline
end
end
end
あとはこれを cron でまわしておくなど.