Feeds:
文章
留言

Archive for 二月 10th, 2010

從上次”[Python] 批次文件匯入 Google Sites”解決我文件檔案過多的問題,今天我想要解決另一個問題"Scrapbook",這是一個我非常喜歡的 Firefox 套件,我利用他收集了許多資料,我現在想要把資料轉匯到 Google Sites,因為匯出的資料會以條目名稱作為目錄名稱,並將本文內容存放在目錄下的 index.html。

所以我決定新增一個 docimport-scrapbook.py 負責這件事情,其實只是繼承 DocImport 然後改寫 doIt ,如下:

class DocsImportScrapbook(docimport.DocsImport):
  """
  批次匯入
  """
   
  def doIt(self, src, parent_name = None):
    print src
    parent = None
    log = logging.getLogger()
    formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
    h = logging.FileHandler('fail.log')
    h.setFormatter(formatter)
    log.addHandler(h)
    log.setLevel(logging.INFO)

    if not parent_name is None:
      # 取得上層 feed
      feed = self.client.GetContentFeed('https://sites.google.com/feeds/content/%s/%s?path=%s' %(self.dn, self.sn, parent_name))
      if len(feed.entry)>0:
        parent = feed.entry[0]
        

    for f in glob.glob(src + '\*'):      
        print f
        fn = f.split('\')[-1]        
        name = fn.split('.')[0]
        try:
          f = f+'\index.html'
          content=codecs.open(f, 'r', 'cp950').read()
        except UnicodeDecodeError, error:
          try:
            content=codecs.open(f, 'r', 'utf-8').read()            
          except UnicodeDecodeError, error:            
            print '%s =>open file fail, encode invalid' % name
            logl.info(name)
            continue
          
        self._import( name.decode('cp950'), ('<pre>%s</pre>' %content), parent )

執行結果:

image

 

又輕鬆解決我一個問題 ^^

Read Full Post »