본문 바로가기
Flow Production Tracking/Python api

API Reference(2)

by 르면가게 2024. 12. 25.

데이터 타입과 값

Addressing

  • : list
  • 형식: 리스트 안에 딕셔너리
[
    {
        'type': 'HumanUser' | 'Group',
        'id': int,
        ...
    },
    ...
]

Checkbox

  • : bool (True | False)

Color

  • : str
  • 예시:
    • 색상 값: "255,0,0"
    • pipeline_step: 파이프라인 스텝 색상을 상속

Currency

  • : float | None
  • 범위: -9999999999999.99 ~ 9999999999999.99

Date

  • : str | None
  • 범위: 연도 >= 1970
  • 형식: YYYY-MM-DD

DateTime

  • : datetime | None
  • 범위: 연도 >= 1970
  • 특징: 서버에서 UTC로 저장되며, 클라이언트의 로컬 시간대로 자동 변환됨. 필요 시 오버라이드 가능.

Duration

  • : int | None
  • 범위: -2147483648 ~ 2147483647
  • 설명: 시간 길이를 분 단위로 나타냄.

Entity

  • : dict | None
{
    'type': "string",
    'id': int,
    ...
}

Float

  • : float | None
  • 범위: -999999999.999999 ~ 999999999.999999

Footage

  • : str | None (FF-ff)
  • 범위: Frames는 Shotgrid 설정에서 정의한 "Advanced > Number of frames per foot of film" 값보다 작아야 함.

Image

  • : str | None
  • 설명: 이미지 필드는 세 가지 상태를 가질 수 있음.
    1. None: 썸네일 이미지 없음 또는 생성 실패.
    2. str: 임시 썸네일 URL.
    3. str: 최종 썸네일에 대한 서명된 URL.

List

  • : str | None

Multi-Entity

  • : list
  • 형식: 리스트 안에 딕셔너리
[
    {
        'type': "string",
        'id': int,
        ...
    },
    ...
]

Number

  • : int | None
  • 범위: -2147483648 ~ 2147483647

Password

  • : string | None
  • 보안: 반환 값이 ******로 대체됨.

Percent

  • : int | None
  • 범위: -2147483648 ~ 2147483647

Serializable

  • : dict | None

Status List

  • : str | None

Tag List

  • : list

Text

  • : str | None

Timecode

  • : int | None
  • 범위: -2147483648 ~ 2147483647
  • 설명: 시간 길이를 밀리초 단위로 나타냄 (1000 = 1초).

URL

  • : dict | None
{
    'content_type': "string",
    'link_type': "local" | "url" | "upload",
    'name': "string",
    'url': "string"
}
  • Local File Links 추가 키:
{
    'content_type': "string",
    'link_type': "local",
    'local_path': "string" | None,
    'local_path_linux': "string" | None,
    'local_path_mac': "string" | None,
    'local_path_windows': "string" | None,
    'local_storage': {dictionary},
    'name': "string",
    'url': "string",
}

이미지 필드 문자열 처리

이미지 필드의 값은 아래 세 가지 상태 중 하나일 수 있습니다.

  1. None: 이미지 없음.
  2. str: 임시 썸네일 URL.
  3. str: 최종 썸네일 URL.

Event Types 및 개요

Flow Production Tracking에서는 사용자가 데이터를 변경할 때마다 Event Log Entry 기록을 생성하여 변경 전후의 값을 캡처합니다. 또한, 추가적인 이벤트 로그를 통해 시스템 내 다양한 활동을 추적할 수 있습니다.

Event 기반 트리거

이벤트는 Flow Production Tracking Event Daemon과 같은 트리거 프레임워크에서 유용하게 사용됩니다. 이를 통해 특정 이벤트 발생 시 코드를 실행하는 플러그인을 작성할 수 있습니다.


이벤트 타입의 구조

이벤트 타입은 기본적으로 3가지 파트로 나뉩니다.

Application_EntityType_Action

  1. Application:
    • 기본값은 Shotgun이며, Flow Production Tracking 서버에서 자동으로 생성된 이벤트를 나타냅니다.
    • 예: Toolkit은 자체 로그를 남길 때 Application 값으로 Toolkit을 사용.
    • 스크립트나 도구를 위한 이벤트를 기록할 경우, 도구 이름을 Application 값으로 설정.
  2. EntityType:
    • 이벤트가 적용된 엔터티 유형.(예: Shot, Asset 등)
  3. Action:
    • 수행된 일반적인 작업. (예: New, Change, Retirement, Revival)

표준 이벤트 타입 (Standard Event Types)

각 엔터티 유형은 엔터티 생성, 수정, 삭제, 복원 시 아래 패턴에 따라 표준 이벤트 타입이 할당됩니다.

  1. Shotgun_EntityType_New:
    • 예: Shotgun_Task_New
  2. 새로운 엔터티가 생성됨.
  3. Shotgun_EntityType_Change:
    • 예: Shotgun_HumanUser_Change
  4. 엔터티가 수정됨.
  5. Shotgun_EntityType_Retirement:
    • 예: Shotgun_Ticket_Retirement
  6. 엔터티가 삭제됨.
  7. Shotgun_EntityType_Revival:
    • 예: Shotgun_CustomEntity03_Revival
  8. 엔터티가 복원됨.

추가 이벤트 타입 (Additional Event Types)

아래는 Flow Production Tracking에서 로그되는 추가적인 이벤트 타입의 예입니다.

  1. Shotgun_Attachment_View:
  2. 첨부 파일(Attachment)이 사용자에 의해 열람됨.
  3. Shotgun_Reading_Change:
    • 예: Note가 특정 사용자가 읽음으로 표시됨.(읽음 상태는 사용자별로 다름. ex. User Joe는 읽음, User Jane은 읽지 않음.)
  4. 스레드 엔터티가 읽음 또는 읽지 않음으로 표시됨.
  5. Shotgun_User_Login:
  6. 사용자가 Flow Production Tracking에 로그인함.
  7. Shotgun_User_Logout:
  8. 사용자가 Flow Production Tracking에서 로그아웃함.

사용자 정의 이벤트 타입 (Custom Event Types)

EventLogEntries는 별도의 엔터티이기 때문에 API를 통해 다른 엔터티와 동일하게 생성할 수 있습니다.

  • 스크립트나 도구를 통해 이벤트 로그를 남기고 싶다면 이벤트 타입의 명명 규칙을 정하여 API를 통해 EventLogEntry를 생성하면 됩니다.

참고 사항

  • EventLogEntries는 수정하거나 삭제할 수 없습니다. (기록의 목적을 방해하지 않기 위해서입니다.)

성능

  1. 데이터 크기:
    • Flow Production Tracking은 수백만 건의 기록도 잘 처리하지만, API 쿼리나 웹 애플리케이션에서 EventLogEntries를 표시할 때 성능 저하가 발생할 수 있습니다.
  2. Event Log 테이블은 매우 빠르게 커질 수 있습니다.
  3. 일반적인 서버 성능:
  4. 이벤트 로그 크기 증가는 서버 전반적인 성능에 영향을 주지 않지만, EventLogEntries와 관련된 작업(예: 웹 페이지 또는 API 요청)에서 성능 저하를 유발할 수 있습니다.

활용 팁

  • 이벤트 트리거를 사용하여 자동화된 워크플로우를 설계할 수 있습니다.
  • Custom Event Types를 정의하여 스크립트 또는 도구의 활동을 추적하세요.
  • 대규모 이벤트 로그를 관리할 경우 필터링아카이빙을 고려하세요.

Event Types 및 개요

Flow Production Tracking에서는 사용자가 데이터를 변경할 때마다 Event Log Entry 기록을 생성하여 변경 전후의 값을 캡처합니다. 또한, 추가적인 이벤트 로그를 통해 시스템 내 다양한 활동을 추적할 수 있습니다.

Event 기반 트리거

이벤트는 Flow Production Tracking Event Daemon과 같은 트리거 프레임워크에서 유용하게 사용됩니다. 이를 통해 특정 이벤트 발생 시 코드를 실행하는 플러그인을 작성할 수 있습니다.


이벤트 타입의 구조

이벤트 타입은 기본적으로 3가지 파트로 나뉩니다.

Application_EntityType_Action

  1. Application:
    • 기본값은 Shotgun이며, Flow Production Tracking 서버에서 자동으로 생성된 이벤트를 나타냅니다.
    • 예: Toolkit은 자체 로그를 남길 때 Application 값으로 Toolkit을 사용.
    • 스크립트나 도구를 위한 이벤트를 기록할 경우, 도구 이름을 Application 값으로 설정.
  2. EntityType:
    • 이벤트가 적용된 엔터티 유형.(예: Shot, Asset 등)
  3. Action:
    • 수행된 일반적인 작업. (예: New, Change, Retirement, Revival)

표준 이벤트 타입 (Standard Event Types)

각 엔터티 유형은 엔터티 생성, 수정, 삭제, 복원 시 아래 패턴에 따라 표준 이벤트 타입이 할당됩니다.

  1. Shotgun_EntityType_New:
    • 예: Shotgun_Task_New
  2. 새로운 엔터티가 생성됨.
  3. Shotgun_EntityType_Change:
    • 예: Shotgun_HumanUser_Change
  4. 엔터티가 수정됨.
  5. Shotgun_EntityType_Retirement:
    • 예: Shotgun_Ticket_Retirement
  6. 엔터티가 삭제됨.
  7. Shotgun_EntityType_Revival:
    • 예: Shotgun_CustomEntity03_Revival
  8. 엔터티가 복원됨.

추가 이벤트 타입 (Additional Event Types)

아래는 Flow Production Tracking에서 로그되는 추가적인 이벤트 타입의 예입니다.

  1. Shotgun_Attachment_View:
  2. 첨부 파일(Attachment)이 사용자에 의해 열람됨.
  3. Shotgun_Reading_Change:
    • 예: Note가 특정 사용자가 읽음으로 표시됨.(읽음 상태는 사용자별로 다름. ex. User Joe는 읽음, User Jane은 읽지 않음.)
  4. 스레드 엔터티가 읽음 또는 읽지 않음으로 표시됨.
  5. Shotgun_User_Login:
  6. 사용자가 Flow Production Tracking에 로그인함.
  7. Shotgun_User_Logout:
  8. 사용자가 Flow Production Tracking에서 로그아웃함.

사용자 정의 이벤트 타입 (Custom Event Types)

EventLogEntries는 별도의 엔터티이기 때문에 API를 통해 다른 엔터티와 동일하게 생성할 수 있습니다.

  • 스크립트나 도구를 통해 이벤트 로그를 남기고 싶다면 이벤트 타입의 명명 규칙을 정하여 API를 통해 EventLogEntry를 생성하면 됩니다.

참고 사항

  • EventLogEntries는 수정하거나 삭제할 수 없습니다. (기록의 목적을 방해하지 않기 위해서입니다.)

성능

  1. 데이터 크기:
    • Flow Production Tracking은 수백만 건의 기록도 잘 처리하지만, API 쿼리나 웹 애플리케이션에서 EventLogEntries를 표시할 때 성능 저하가 발생할 수 있습니다.
  2. Event Log 테이블은 매우 빠르게 커질 수 있습니다.
  3. 일반적인 서버 성능:
  4. 이벤트 로그 크기 증가는 서버 전반적인 성능에 영향을 주지 않지만, EventLogEntries와 관련된 작업(예: 웹 페이지 또는 API 요청)에서 성능 저하를 유발할 수 있습니다.

활용 팁

  • 이벤트 트리거를 사용하여 자동화된 워크플로우를 설계할 수 있습니다.
  • Custom Event Types를 정의하여 스크립트 또는 도구의 활동을 추적하세요.
  • 대규모 이벤트 로그를 관리할 경우 필터링아카이빙을 고려하세요.

Environment Variables in Flow Production Tracking API

SHOTGUN_API_CACERTS

  • 설명: 외부 SSL 인증서 파일의 경로를 지정하는 환경 변수입니다.
  • 용도: ca_certs 매개변수 대신 사용됩니다. 만약 둘 다 설정된 경우, ca_certs의 값이 우선 적용됩니다.

SHOTGUN_API_RETRY_INTERVAL

  • 설명: 요청 재시도 간 대기 시간을 밀리초 단위로 설정하는 환경 변수입니다.
  • 기본값: 3000 밀리초
  • 용도: 기본값을 변경하려면 이 환경 변수를 설정하거나, rpc_attempt_interval 속성을 직접 수정할 수 있습니다. 예를 들어:
  • sg = Shotgun(site_name, script_name, script_key) sg.config.rpc_attempt_interval = 1000 # 기본값을 1000ms로 설정
  • 우선순위: 둘 다 설정된 경우 rpc_attempt_interval의 값이 우선 적용됩니다.

SHOTGUN_API_ENABLE_ENTITY_OPTIMIZATION

  • 설명: 실험적 기능으로, 엔터티 최적화 기능을 활성화합니다. 이 기능은 기본적으로 비활성화되어 있으며, 네트워크 지연 시간과 서버 처리 시간을 줄여서 성능을 개선하는 데 사용됩니다.
  • : 1로 설정하면 활성화됩니다.
  • 참고: 만약 이 기능을 사용 중 문제가 발생하면 비활성화할 수 있습니다.
  • 예시: find 호출 시, 엔터티를 요청할 때 내부적으로 요청 크기를 줄여서 네트워크 효율을 높입니다. 예를 들어:이는 요청을 최적화하여 불필요한 데이터 전송을 줄입니다.

요청 내용:

sg.find('Asset', [['project', 'is', {
    'created_at': datetime.datetime(2015, 12, 16, 11, 2, 10, tzinfo),
    'id': 9999,
    'name': 'Demo: Game',
    'type': 'Project',
    # More entity attributes
}]])

내부적으로 변형되는 내용:

sg.find('Asset', [['project', 'is', {'id': 999, 'type': 'Project'}]])

Localization (언어 지원)

Flow Production Tracking API는 사용자의 언어에 맞춰 로컬화된 표시 이름을 반환할 수 있는 기능을 제공합니다. 이는 스크립트/API 사용자에게 사이트 설정에 맞춰 언어별 표시명을 제공합니다.

  • 지원되는 메서드:
    • Shotgun.schema_entity_read
    • Shotgun.schema_field_read
    • Shotgun.schema_read
  • 기본 설정: 로컬화는 기본적으로 비활성화되어 있습니다.
  • 로컬화 활성화 방법: localized 속성을 True로 설정하여 로컬화를 활성화합니다.

예시:

로컬화 비활성화 확인:

sg = Shotgun(site_name, script_name, script_key)
print(sg.config.localized)  # False (로컬화 비활성화 상태)

 

로컬화 활성화:

sg.config.localized = True  # 로컬화 활성화
schema = sg.schema_field_read('Shot')
print(schema['sg_vendor_groups']['name'])  # 일본어로 로컬화된 값 출력
  • 로컬화된 문자열 인코딩: Python 버전과 관계없이 로컬화된 문자열의 인코딩을 보장하려면 shotgun_api3.lib.six.ensure_text()를 사용할 수 있습니다.

요약

  • 환경 변수: SHOTGUN_API_CACERTS, SHOTGUN_API_RETRY_INTERVAL, SHOTGUN_API_ENABLE_ENTITY_OPTIMIZATION 등으로 Flow Production Tracking API의 동작을 최적화하고 설정할 수 있습니다.
  • 로컬화: 사용자의 언어 설정에 따라 API 응답을 로컬화하여 다양한 언어로 표시 이름을 반환할 수 있습니다. 로컬화는 기본적으로 비활성화되어 있으며, 설정을 통해 활성화할 수 있습니다.

'Flow Production Tracking > Python api' 카테고리의 다른 글

Handling Action Menu Item Calls  (0) 2024.12.25
API Usage Tips  (1) 2024.12.25
API Reference(1)  (1) 2024.12.25
Authentication  (2) 2024.12.25
Installation  (0) 2024.12.25