如何使用新的 python-gdata (2.0.16) 上传文档?

发布于 2025-01-01 22:22:54 字数 1651 浏览 4 评论 0原文

在 python-gdata 2.0.14 中,我使用以下代码片段来创建和上传文档:

# To create a document
import gdata.docs
import gdata.docs.client
from gdata.data import MediaSource

gdClient = gdata.docs.client.DocsClient(source="my-app")
gdClient.ssl = True
gdClient.ClientLogin("login", "pa$$word", gdClient.source)
ms = MediaSource(file_path="temp.html", content_type="text/html")
entry = gdClient.Upload(ms, "document title")
print "uploaded, url is", entry.GetAlternateLink().href

但是

# To update a document
entry.title.text = "updated title"
entry = gdClient.Update(entry, media_source=ms, force=True)
print "updated, url is", entry.GetAlternateLink().href

,此代码不再适用于 python-gdata 2.0.16,因为 DocsClient 不再有 Upload更新功能。

我尝试使用这个

# Try to create a document
gdClient = gdata.docs.client.DocsClient(source="my-app")
gdClient.ssl = True
gdClient.ClientLogin("login", "pa$$word", gdClient.source)
ms = MediaSource(file_path="temp.html", content_type="text/html")
entry = gdata.docs.data.Resource(type=gdata.docs.data.DOCUMENT_LABEL, title="document title")
self.resource = gdClient.CreateResource(entry, media=ms)

......但我收到这个错误:

gdata.client.Unauthorized: Unauthorized - Server responded with: 401, 'Token invalid'

有人能告诉我我的错误在哪里以及我应该如何使用这个新的 API?

PS 文档尚未发布更新后仍然使用旧式代码。

With python-gdata 2.0.14, I used the following pieces of code to create and upload documents:

# To create a document
import gdata.docs
import gdata.docs.client
from gdata.data import MediaSource

gdClient = gdata.docs.client.DocsClient(source="my-app")
gdClient.ssl = True
gdClient.ClientLogin("login", "pa$word", gdClient.source)
ms = MediaSource(file_path="temp.html", content_type="text/html")
entry = gdClient.Upload(ms, "document title")
print "uploaded, url is", entry.GetAlternateLink().href

and

# To update a document
entry.title.text = "updated title"
entry = gdClient.Update(entry, media_source=ms, force=True)
print "updated, url is", entry.GetAlternateLink().href

However, this code does no longer work with python-gdata 2.0.16 because DocsClient class does no more have Upload and Update functions.

I tried to use this

# Try to create a document
gdClient = gdata.docs.client.DocsClient(source="my-app")
gdClient.ssl = True
gdClient.ClientLogin("login", "pa$word", gdClient.source)
ms = MediaSource(file_path="temp.html", content_type="text/html")
entry = gdata.docs.data.Resource(type=gdata.docs.data.DOCUMENT_LABEL, title="document title")
self.resource = gdClient.CreateResource(entry, media=ms)

… but I get this error:

gdata.client.Unauthorized: Unauthorized - Server responded with: 401, 'Token invalid'

Can anybody tell me where's my mistake and how should I use that new API?

P.S. The documentation hasn't been updated and still uses the old-style code.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沉睡月亮 2025-01-08 22:22:54

我最近也遇到了这个问题。这对我有用:

import gdata.docs.data
import gdata.docs.client

client = gdata.docs.client.DocsClient(source='your-app')
client.api_version = "3"
client.ssl = True
client.ClientLogin("[email protected]", "password", client.source)

filePath = "/path/to/file"
newResource = gdata.docs.data.Resource(filePath, "document title")

media = gdata.data.MediaSource()
media.SetFileHandle(filePath, 'mime/type')

newDocument = client.CreateResource(newResource, create_uri=gdata.docs.client.RESOURCE_UPLOAD_URI, media=media)

编辑:添加了要导入的包以避免混淆

I was having issues with this recently too. This worked for me:

import gdata.docs.data
import gdata.docs.client

client = gdata.docs.client.DocsClient(source='your-app')
client.api_version = "3"
client.ssl = True
client.ClientLogin("[email protected]", "password", client.source)

filePath = "/path/to/file"
newResource = gdata.docs.data.Resource(filePath, "document title")

media = gdata.data.MediaSource()
media.SetFileHandle(filePath, 'mime/type')

newDocument = client.CreateResource(newResource, create_uri=gdata.docs.client.RESOURCE_UPLOAD_URI, media=media)

Edit: Added the packages to import to avoid confusion

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文