アクション メニュー アイテムを使用して Excel からサムネイルを読み込む

Excel シートにあるサムネイルを Shotgun にアップロードすることが必要な場合があります。ここでの問題は、サムネイルが Web サイトに保存されているため、データベースのフィールドを更新するだけでなく、アップロードする必要もある点です。幸いなことに、簡単な手順を 1 つ追加するだけで必要な操作を完了できる回避策があります。

ただし最初に、プロトコル ハンドラを作成する方法と 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 と指定されたバージョンを選択します。次に、右クリックして AMI である ThumbPath to Thumbnail を選択します。

サムネイルをアップロードする

これで完成です。Shotgun サイトでディスクに保存されたサムネイルを表示できるようになりました。

フォローする

0 コメント

ログインしてコメントを残してください。