basyura's blog

あしたになったらほんきだす。

hatena.vim を読む その11

"指定先から一日分のエントリを取得。
"return: dictionary {
"   diary_title, day_title, timestamp, rkm, body, fenc
"}
function! HatenaLoadContent(base_url,user,year,month,day,cookie_file)
    " 編集ページを取得
    " curl -k --silent "http://d.hatena.ne.jp/basyura/edit?date=20090415" 
    "      -b "/Users/basyura/.vim/plugin/hatena/cookies/basyura"
    "
    "  -k       セキュアじゃないアクセスを許可する
    "  --silent メッセージ表示しない
    "  -b       cookie の指定
    "
    let content = system(s:curl_cmd . ' "' . a:base_url . a:user 
                            . '/edit?date=' . a:year.a:month.a:day 
                            . '" -b "' . a:cookie_file . '"')
    " base_url が g.hatena の場合
    if a:base_url =~ 'g.hatena'
        "iconv({expr}, {from}, {to})  *iconv()*
        "    文字列{expr}をエンコーディング{from}からエンコーディング{to}に
        "    変換した文字列を返す。
        "    変換が失敗したときは空文字列を返す。
        let content = iconv(content, 'utf-8', &enc)
        let fenc = 'utf-8'
    else
        " 取得した contents の euc-jp を規定のエンコードに変換
        let content = iconv(content, 'euc-jp', &enc)
        let fenc = 'euc-jp'
    endif
    " HatenaParseContent を呼び出してパースする
    let result=s:HatenaParseContent(content)
    " パースした結果に設定
    let result['fenc']=fenc
    let result['year']=a:year
    let result['month']=a:month
    let result['day']=a:day
    return result
endfunction