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

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

          Posted on 2008-05-12 22:04 ZelluX 閱讀(1278) 評論(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()
          主站蜘蛛池模板: 安义县| 南通市| 龙口市| 临沧市| 东兰县| 察雅县| 睢宁县| 金川县| 银川市| 荥经县| 英超| 西丰县| 辽宁省| 云南省| 子洲县| 万载县| 邓州市| 海淀区| 佛坪县| 天门市| 烟台市| 磴口县| 普格县| 龙泉市| 当涂县| 灵台县| 贵定县| 黄浦区| 台北县| 湄潭县| 瑞安市| 湛江市| 温泉县| 平原县| 白朗县| 古浪县| 海林市| 分宜县| 宜章县| 韩城市| 承德县|