vimからgoogle docsを操作したい 〜その1〜

はてなプラグインに続いてgoogle docsvimを連携させようじゃないの計画始動。
めんどくさがりやなので、テキストのみのUPLOAD/DOWNLOADに限定します。

さて、text fileのアップロードとdocs一覧の取得を試しに実装してみた。

#encoding=utf-8

from gdata.docs.service import DocsService
from gdata.data import MediaSource
from common.mys import mylogger, S, U, BT

email = 'hogehoge@gmail.com'
password = 'hagehage'

class MGoogle:
    def __init__(self, email, password):
        self.email = email
        self.password = password
        self.client = self.connect()

    # Google認証
    def connect(self):
        try:
            client = DocsService()
            client.ClientLogin(self.email, self.password)
            mylogger.info('Authentication succeeded %s' % repr(client))
        except Exception, e:
            mylogger.error(U(BT()))
            client = None
        return client

    # テキストファイルのアップロード
    # TODO utf-8 以外のテキストファイルは文字化ける
    def uploadTxt(self, file_path, title=u'テスト', content_type='text/plain'):
        src  = MediaSource(file_path=file_path, content_type=content_type)
        entry = self.client.Upload(src, title)
        #print entry.GetAlternateLink().href

    # ダウンロード (TODO ファイル保存じゃなくて直接テキスト欲しいんですけど
    def downloadTxt(self):
        # TODO entryの特定
        for entry in self.client.GetDocumentListFeed().entry:
            print U(entry.title.text), type(entry.title.text)


if __name__ == '__main__':
    import unittest
    class Tests(unittest.TestCase):
        def setup(self):
            pass
        @unittest.skip('')
        def testUpload(self):
            g = MGoogle(email, password)
            g.uploadTxt('memo.txt')
        @unittest.skip('')
        def testDownload(self):
            g = MGoogle(email, password)
            g.downloadTxt()

    unittest.main(verbosity=2)