posts - 403, comments - 310, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          將VIM Calender中的日記發布到blogger.com的腳本

          Posted on 2008-05-12 22:04 ZelluX 閱讀(1282) 評論(0)  編輯  收藏 所屬分類: Scripting
          VIM Calender是個很好用的寫日記的插件(http://www.vim.org/scripts/script.php?script_id=52)

          水木上的rmrf寫了一個同步VIM Calender和Google Calender的腳本(http://code.google.com/p/diaryvgc/downloads/list)

          想到blogger.com支持通過發送郵件發布日志,于是我也寫了個把VIM Calender中的日記發布到blogger.com的腳本。

          這個腳本把發布情況記錄在diary/poster.log中,以后每次執行只會發布最新的日志,同時考慮到當天的日記可能會被修改(blogger.com似乎不支持通過email修改日志),所以當天的日記不會被發布。

          使用的時候修改開頭幾行的配置信息即可

          #!/usr/bin/python

          #?A?script?for?posting?diaries?created?by?VIM?Calender?to?blogger.com
          #
          ?Author:?Wang?Yuanxuan?<zellux@gmail.com>

          import?smtplib,?os,?re,?datetime
          from?email.mime.text?import?MIMEText

          fromaddr?
          =?xxxxx@fudan.edu.cn'
          toaddr?
          =?xxxx.xxxx@blogger.com'
          smtpserver?
          =?'mail.fudan.edu.cn'
          diarydir?
          =?'/home/user_name/diary'
          username?
          =?'xxxxxx'
          password?
          =?'xxxxxx'
          logpath?
          =?diarydir?+?'/poster.log'

          def?PostMail(title,?content):
          ????msg?
          =?MIMEText(content?+?'\r\n#end\r\n')
          ????msg[
          'Subject']?=?title
          ????msg[
          'From']?=?fromaddr
          ????msg[
          'To']?=?toaddr

          ????server?
          =?smtplib.SMTP(smtpserver)
          ????server.login(username,?password)
          ????
          #?server.set_debuglevel(1)
          ????server.sendmail(fromaddr,?[toaddr],?msg.as_string())
          ????server.quit()

          #?Load?log?file.?Create?a?new?one?if?not?exist.
          posted?=?[]
          if?os.path.isfile(logpath):
          ????temp?
          =?open(logpath,?'r')
          ????posted?
          =?[line[:-1]?for?line?in?temp.readlines()]
          ????log?
          =?open(logpath,?'a')
          else:
          ????
          print?"A?new?poster?log?has?been?created?at?"?+?logpath
          ????log?
          =?open(logpath,?'w')

          pattern?
          =?r'(\d{4})/(\d{1,2})/(\d{1,2}).cal$'
          scanner?
          =?re.compile(pattern)

          for?(top,?dirname,?filenames)?in?os.walk(diarydir):
          ????
          for?filename?in?filenames:
          ????????fullpath?
          =?os.path.join(top,?filename)
          ????????
          if?scanner.search(fullpath):
          ????????????(year,?month,?day)?
          =?scanner.search(fullpath).groups()
          ????????????filedate?
          =?datetime.date(int(year),?int(month),?int(day))
          ????????????title?
          =?filedate.isoformat()
          ????????????
          if?filedate?==?datetime.date.today():
          ????????????????
          continue
          ????????????
          if?fullpath?not?in?posted:
          ????????????????log.write(fullpath?
          +?'\n')
          ????????????????text?
          =?open(fullpath).read()
          ????????????????PostMail(title,?text)
          ????????????????
          print?'The?diary?'?+?title?+?'?has?been?posted'

          log.close()
          主站蜘蛛池模板: 聂荣县| 千阳县| 信丰县| 呈贡县| 乌审旗| 江安县| 凌海市| 荥经县| 通河县| 石渠县| 阜城县| 厦门市| 德安县| 大英县| 巨野县| 湄潭县| 青河县| 伊春市| 柏乡县| 景东| 盈江县| 长寿区| 博湖县| 长宁县| 西安市| 安化县| 陈巴尔虎旗| 郓城县| 阜城县| 神农架林区| 乌兰浩特市| 河西区| 蓬溪县| 虎林市| 社旗县| 静宁县| 玛纳斯县| 保靖县| 沙坪坝区| 萨迦县| 台南市|