首页 > 解决方案 > 创建后无法将资产发布或处理为内容

问题描述

我将 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()

标签: pythoncontentfulcontentful-management

解决方案


您正在上传文件,但未在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()

推荐阅读