我正在将Python客户端用于Contentful Content Management API,目前无法处理或发布资产。在每种情况下,API都会返回:
contentful_management.errors. NotFoundError: HTTP status code: 404 Message: The resource could not be found. Details: The requested Asset could not be found.
创建资产后,我可以访问其ID,因此假设那时我应该能够处理和发布。我的代码如下。有人知道我可能在做错什么吗?
"""
Creating an asset requires three steps and API calls:
1. Create an asset.
2. Process an asset.
3. Publish an asset.
"""
def create_asset(self, path):
p = os.path.abspath(path)
return self.authorised_user.uploads(self.test_space_id).create(p)
def process_asset(self, asset_id):
asset = self.authorised_user.assets(self.test_space_id, self.test_environment_id).find(asset_id)
asset.process()
def publish_asset(self, asset_id):
asset = self.authorised_user.assets(self.test_space_id, self.test_environment_id).find(asset_id)
asset.publish()
答案 0 :(得分:0)
您正在上传文件,但没有在create_asset
函数中创建资产。这是执行所有步骤的代码:
import os
import time
from contentful_management import Client
client = Client(os.environ['CMA_TOKEN'])
space_id = 'space_id'
environment_id = 'master'
title = 'Title'
file_to_upload = '/path/to/file/image.jpeg'
fileName = os.path.basename
contentType = 'image/jpeg'
new_upload = client.uploads(space_id).create(file_to_upload)
file_attributes = {
'fields': {
'title': {
'en-US': title
},
'file': {
'en-US': {
'fileName': fileName,
'contentType': contentType,
'uploadFrom': new_upload.to_link().to_json()
}
}
}
}
new_asset = client.assets(space_id, environment_id).create(
None, # change this to a string if you want to specify the asset ID
file_attributes
)
new_asset.process()
# it might take a few seconds for the asset processing to complete
while new_asset.url is None:
time.sleep(1)
new_asset.reload()
new_asset.publish()