Hatena::Groupkakisute

g5nの書き殴り

2007-12-13

コマンドラインで twitter から自分のタイムラインをとってくる

05:18 |  コマンドラインで twitter から自分のタイムラインをとってくる - g5nの書き殴り を含むブックマーク はてなブックマーク -  コマンドラインで twitter から自分のタイムラインをとってくる - g5nの書き殴り

時刻を知りたくてつくった。だいたい3時間まえとかいわれてもうれしくない。

twitteer-archive.rb

require "rubygems"
require "twitter"
require "date"

def getpass(prompt = "Password: ")
  begin
    STDERR.print prompt
    system "stty -echo"
    passwd = readline.chomp
  ensure
    system "stty echo"
  end
  STDERR.puts
  return passwd
end

STDERR.print("Login: ")
login = gets.chomp
passwd = getpass
twit = Twitter::Base.new(login, passwd)
twit.timeline(:user).reverse.each{|m|
  time = DateTime.parse(m.created_at).new_offset(Rational(9,24))
  text = m.text.gsub(/&#(\d+);/){[$1.to_i].pack("U*")}
  printf("%s %s\n", time.strftime("%H:%M"), text);
}

日本語のIMAPフォルダ名のデコード

16:38 |  日本語のIMAPフォルダ名のデコード - g5nの書き殴り を含むブックマーク はてなブックマーク -  日本語のIMAPフォルダ名のデコード - g5nの書き殴り

% ruby -r net/imap -e 'puts Net::IMAP.decode_utf7("&hAwwSAAK-")'

ここにいたる道筋

考えたことなかったので、最初 Courier imapd に依存してるかと思って次のようにぐぐった

  • courier imapd フォルダ名 日本語

そしたら次のヒントが検索結果に

フォルダ名の国際化はRFCで決まってるお

そこで rfc 2060 を見に行った。

% rfc 2060

どうも modified UTF-7 というらしい(5.1.3. Mailbox International Naming Convention)。

つぎに imap.rb を grep した。

% grep utf7 /usr/local/lib/ruby/1.8/net/imap.rb
    # mailbox names to and from utf7.
    def self.decode_utf7(s)
    def self.encode_utf7(s)
%

おお、Net::IMAP.decode_utf7 というのがあるよ。偉いよ shugo さん。

JasonGuabsJasonGuabs2017/01/25 04:19печать брошюр http://wkrolik.com.ua/products/katalog