액션 메뉴 항목을 사용하여 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 댓글

댓글을 남기려면 로그인하세요.