使用 ActionMenuItem 从 Excel 导入缩略图

您可能需要将 Excel 表中的缩略图上传到 Shotgun。此时的问题是,缩略图存储在网站上且需要上传,不仅仅是在数据库中更新字段。幸运的是,有一种解决方法是增加一个小步骤便可完成您所需的操作。

但是,首先需要确保您熟悉如何创建协议处理程序以及如何使用 Shotgun API。您需要使用协议处理程序来连接 API 脚本。

按照以下步骤从 Excel 中导入您的缩略图。

步骤 1. 在缩略图要上传到的实体类型(本例使用镜头)上创建一个文本字段,名为“ThumbPath”。

步骤 2. 将缩略图路径导入到 ThumbPath 中。

使用导入器将该信息添加到 Shotgun。

Excel 表ThumbPath

步骤 3. 创建一个链接到镜头实体的新动作菜单项 (AMI)。

调用新 AMI“ThumbPath to Thumbnail”。

注意:您也可以将类似 AMI 链接到其他实体类型。该代码的作用不变。

步骤 4. 将 API 脚本连接到 Shotgun。

注意:示例协议处理程序名为 sgactionmenu。

下面是 API 脚本的代码:

!/usr/bin/env python
import sys,os
import urllib
import shotgun_api3 as shotgun

SERVER_PATH = 'https://my_site.shotgunstudio.com'
SCRIPT_USER = 'my_script'
SCRIPT_KEY = '3th4a5542d38f4a6j3s711fef4e6d24baa0885e4'

###
# Take the param string arg1=value1&arg2=value2&arg3... and return it in a key:value dictionary
###
def getParams(a):
        args = a.split("&")
        p = {}
        for arg in args:
                key, value = map(urllib.unquote, arg.split("=", 1))
                p[key] = value
        return p

###
# Take everything after the protocolhandler as an arg
# Return tuple of the action and a string of all the args
# in the format: arg1=value1&arg2=value2&arg3...
###
def getActionFullArgs(fp):
        action, fullArgs = fp.split("?", 1)
        action = action.strip("/")
        return action, fullArgs

###
# This takes a /path/filename from a text field and uploads it as the thumbnail for an entity
# This assumes the field for the thumbnail is in a column called "ThumbPath" (sg_thumbpath)
###
def copyThumbs(sg, params):

        project_id = params['project_id']
        selected_ids = params['selected_ids']
        entity_type = params['entity_type']

        # Loop through the selected IDs
        for id in selected_ids.split(','):
                filters=[['project','is',{'type':'Project','id':int(project_id)}],['id', 'is', int(id)]]
                fields = ['sg_thumbpath', 'image']
                result = sg.find(entity_type, filters, fields)
                sg.upload_thumbnail(entity_type, id, result[0]['sg_thumbpath'])

if __name__ == '__main__':
        # Get the arg string which is 'protocolhandler://action?key1=value1&key2=value2...'
        arg = sys.argv[1]

        # Shotgun!
        sg = Shotgun(SERVER_PATH, SCRIPT_USER, SCRIPT_KEY)

        protocol, fullPath = arg.split(":", 1)
        action, fullArgs = getActionFullArgs(fullPath)
        params = getParams(fullArgs)


        if action == "thumb":
                copyThumbs(sg, params)

步骤 5. 上传“ThumbPath”字段中引用的缩略图。

选择“ThumbPath”文本字段中具有 /paths/to/thumbnails 的版本。然后,单击鼠标右键,并选择“ThumbPath to Thumbnail”AMI。

上传缩略图

就是这样!现在,您便可以在 Shotgun 站点上看到磁盘上保存的缩略图了。

关注

0 评论

登录写评论。