読者です 読者をやめる 読者になる 読者になる

Milk+ea

Weblog Is My Hobby.

DetekitePadってフリーソフトでメモ取り

DetekitePadは、ショートカットでサクっとメモできるソフト。Alt+zで出してサクっとメモ帳を出してメモできます。
保存ボタンを押すとDetekitePadの中のmemoディレクトリに**.txtの形で保存されます。
便利なんだけどそのままだとファイルがばらばらで見づらいので1つにしてEvernoteに送って管理しようという。

これが元

C:\Users\%username%\DetekitePad\memo

こんな感じで%username%ディレクトリの中にRakefileとDetekitePadを入れてやってます。


Rakefile

# coding: utf-8
require 'mail'

class Memo
  @@memo = ""

  def self.get_memo
    @@memo
  end

  attr_reader :content, :ctime

  def initialize(name)
    @name = name
    @content = open(name, 'r') { |f| f.read.encode("UTF-8") }
    @ctime = File.ctime(name)
  end

  def add_memo_to_content
    @@memo << style(ctime.strftime("%H:%M"), content)
  end

  private
  def style(time, content)
    html = <<-EOH
    <div style="position:relative;">
    <span style="color:rgba(0,0,0,.4);font-size:15px;position:absolute;top:-1.5em;right:2em;">#{time}</span>
    <div style="font-size:15px;background:#f8f8f8;padding:1em;border:1px solid #cfcfcf;margin:2.5em 0;border-radius:2px;word-wrap:break-word;"><pre>#{content}</pre></div>
    </div>
    EOH
    html
  end
end

namespace :auto do
  desc 'DetekitePadのメモをEvernoteに送信'
  task :send_memo do
    texts = Dir.glob("DetekitePad/memo/*.txt")
    if texts.length == 0
      puts "メモがありませんでした"
      exit 1
    end

    files = texts.map do |f|
      Memo.new(f)
    end

    files.sort!{|i, j| i.ctime <=> j.ctime}

    files.each do |f|
      f.add_memo_to_content
    end

    # 前やったとこ
    mail = Mail.new do
      from    "hage@gmail.com"
      to      "hage.hage@m.evernote.com"
      subject "#{Time.now.strftime("[%m月%d日]メモ")} @メモ"
      body    "#{Memo.get_memo}"
    end

    mail.header['Content-type'] = 'text/html'

    mail.delivery_method :smtp, { address: 'smtp.gmail.com',
                                  port: 587,
                                  user_name: 'hage@gmail.com',
                                  password: 'Password',
                                  enable_ssl: true }

    mail.deliver!
    sh %Q{del /Q "DetekitePad\\memo\\*.txt"}
    puts "送信されました"
  endDete
end

memoディレクトリに.txtファイルがあったら、あるだけ読み込んで日付が早い順にソートした後1つに。
あとはそれをメールの本文に入れて送信。

%username%ディレクトリでrake auto:send_memoとするとEvernoteに送信されて、その後.txtファイルは全部削除。
するとこんな感じでEvernoteのメモノートブックに入ってる。

none

コマンドプロンプトのSCHTASKSとか言うので自動化できるかなぁ」とか考えてたけどうまくいかないんだけど。
ちくしょぉぉぉおぉぉおおおおおおオオオぁ