본문 바로가기
Flow Production Tracking/Help

Custom Protocol

by 르면가게 2024. 12. 25.

Flow Production Tracking에서 Custom Protocol 설정하기

Flow Production Tracking에서 사용자 지정 프로토콜(Custom Protocol)을 설정하여 로컬 애플리케이션 또는 스크립트를 실행할 수 있습니다. 이를 통해 shotgrid://와 같은 프로토콜을 통해 특정 작업을 실행하도록 구성할 수 있습니다.


1. Custom Protocol 설정의 개요

사용자 지정 프로토콜은 URL 스킴을 정의하여 애플리케이션이 지정된 URL을 처리하도록 구성합니다. 예를 들어:

  • URL: shotgrid://processVersion?id=123
  • 목적: 특정 Python 스크립트를 실행하여 버전 엔터티를 처리.

2. 설정 방법

1단계: Custom Protocol 등록

Linux에서 설정

  1. 핸들러 스크립트 생성
  • /usr/local/bin/shotgrid-handler 파일을 생성:
#!/usr/bin/env bash
request="${1#*://}" # 'shotgrid://' 제거
action="${request%%\\?*}" # URL에서 액션 추출 (processVersion 등)
params="${request#*\\?}" # URL에서 파라미터 추출
params="${params//&/ }" # &를 공백으로 변환

# Python 스크립트 실행 (Python 스크립트와 연결)
python3 /path/to/sgTriggerScript.py "$action" $params
  • 실행 권한 부여:
sudo chmod +x /usr/local/bin/shotgrid-handler

 

데스크톱 파일 생성

  • /usr/share/applications/shotgrid-handler.desktop 파일 생성:
[Desktop Entry]
Name=ShotGrid URL Handler
GenericName=ShotGrid Handler
Comment=Handle ShotGrid URL Protocol
Exec=/usr/local/bin/shotgrid-handler %u
Terminal=false
Type=Application
MimeType=x-scheme-handler/shotgrid;
Icon=shotgrid-icon
Categories=Development;Utility;

 

MIME 타입 등록

xdg-mime default /usr/share/applications/shotgrid-handler.desktop x-scheme-handler/shotgri

 

MIME 데이터베이스 업데이트

sudo update-desktop-database

2단계: Python 스크립트 작성

  1. Python 스크립트 생성:
    • /path/to/sgTriggerScript.py 파일:
    • import sys
      from urllib.parse import parse_qs
      
      def main(args):
          if len(args) < 1:
              sys.exit("URL을 제공해야 합니다.")
      
          # URL에서 프로토콜과 나머지 데이터 분리
          protocol, path = args[0].split("://", 1)
          action, params = path.split("?", 1) if "?" in path else (path, "")
      
          # 파라미터 파싱
          parsed_params = parse_qs(params)
          print(f"Action: {action}")
          print(f"Parameters: {parsed_params}")
      
          # 특정 작업 수행
          if action == "processVersion":
              print("버전 처리 실행")
              # 추가 처리 로직 삽입
      
      if __name__ == "__main__":
          main(sys.argv[1:])
      ​
       
    • 실행 권한 부여:
chmod +x /path/to/sgTriggerScript.py
  1. 스크립트 예제 동작:
    • URL: shotgrid://processVersion?id=123&user=admin
    • 출력 결과:
Action: processVersion
Parameters: {'id': ['123'], 'user': ['admin']}

 


3단계: Flow Production Tracking에서 AMI 생성

  1. ShotGrid 인터페이스에서 AMI 생성:
    • URL 필드에 shotgrid://processVersion?id={id}와 같은 사용자 지정 URL 삽입.
    • AMI를 특정 엔터티 유형(예: Version)에 연결.
  2. 동작 확인:
    • Flow Production Tracking에서 엔터티를 선택하고 생성한 AMI 실행.
    • 로컬 스크립트(sgTriggerScript.py)가 실행되고 전달된 데이터를 처리.

3. 사용 예제

  1. AMI에서 호출된 URL:

shotgrid://processVersion?id=123&user=admin
  1. 스크립트 출력:
Action: processVersion
Parameters: {'id': ['123'], 'user': ['admin']}
  1. 활용 사례:
    • 로컬 애플리케이션 실행.
    • 데이터 처리 후 ShotGrid API를 통해 업데이트.
    • 보고서 생성(PDF, CSV 등) 후 사용자에게 반환.

4. 추가 참고사항

  • 브라우저에서 프로토콜 실행 시 "Launch Application" 팝업이 나타날 수 있으며, "Remember my choice"를 선택하여 자동 실행 가능.
  • 위 방법은 Linux뿐만 아니라 Windows, macOS 환경에도 응용 가능.

 

https://askubuntu.com/questions/527166/how-to-set-subl-protocol-handler-with-unity?newreg=02d84da7e486456da13ff97c62d07f29

 

How to set subl:// protocol handler with Unity?

My web app generates clickable URLs like the following when an error occurs: subl://open?url=file://%2Fusr%2Flocal%2Fwebenginex%2Fclass%2Fmodels%2Fwxclient.php&line=123 When I click it I get ...

askubuntu.com