2010年1月11日月曜日

SkyDrive に Python からアクセスする


Pythonスクリプトから SkyDrive を読み書きしたいと思って、
以下のような作戦を考えた。

  1. SkyDrive Explorer をインストール
  2. Python と comtypes も、未だならインストール
  3. COMをつかって、SkyDrive Explorer のアイテムを取得する

Gmail Drive の場合はこれでうまくいくのだけれど、
SkyDriveの場合は、なぜかうまくいかない。

-----------------------------------------------------------------------------
import comtypes.client

skydrive_item_name = u"SkyDrive Explorer"

def listSkyDriveItems():

    shell_app = comtypes.client.CreateObject("Shell.Application")
    my_computer = shell_app.NameSpace(0x11)

    skydrive_item = None
    for item in my_computer.Items():
        if item.Name==skydrive_item_name:
            skydrive_item = item
   
    if not skydrive_item:
        print "skydrive not found."
        return
   
    folder_obj = skydrive_item.GetFolder
   
    # FIXME : ここで、なぜかaccess violationが発生する
    for i in folder_obj.Items():
        print i.Name
   
    print "finished"   

listSkyDriveItems()
-----------------------------------------------------------------------------
 Traceback (most recent call last):
  File "skydrive.py", line 27, in
    listSkyDriveItems()
  File "skydrive.py", line 22, in listSkyDriveItems
    for i in folder_obj.Items():
  File "c:\python26\lib\site-packages\comtypes\automation.py", line 507, in next

    item, fetched = self.Next(1)
  File "c:\python26\lib\site-packages\comtypes\automation.py", line 528, in Next

    self.__com_Next(celt, v, fetched)
WindowsError: exception: access violation writing 0x00000000


-----------------------------------------------------------------------------
 さて、、、

0 件のコメント:

コメントを投稿