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()
          主站蜘蛛池模板: 砀山县| 甘德县| 紫金县| 金川县| 普宁市| 衡水市| 永胜县| 墨脱县| 龙井市| 和硕县| 乌兰浩特市| 惠东县| 阳春市| 沾益县| 崇信县| 怀安县| 赤城县| 宝兴县| 德令哈市| 永昌县| 清丰县| 南雄市| 灵璧县| 措勤县| 舒城县| 新竹市| 乐陵市| 石楼县| 军事| 隆安县| 克什克腾旗| 阿图什市| 资溪县| 安宁市| 太康县| 陆河县| 三台县| 固原市| 东丽区| 晋中市| 新余市|