平衡点


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 でまわしておくなど.


連絡先など
最近の日記
  • 2020/05/16
    • 1. IPv6: PPPoe → IPoE @ OCN with ドコモ光
  • 2020/04/27
    • 1. Exim4 のローカル設定
  • 2020/04/19
    • 1. 単一の org ファイルから複数のスライドを作成し, かつまとめたスライドも作成する
  • 2020/04/11
    • 1. Google Home Miniに火を入れた.
  • 2020/04/06
    • 1. delight, diminish → blackout