Pembungkus deklaratif, berorientasi objek untuk kueri ftrack. Interaksi gaya fungsional yang kuat dengan koleksi yang dihasilkan.
Trackteroid tergantung pada FTRACK dan Python API -nya, A Management dan Perangkat Lunak Pelacakan Produksi yang dirancang khusus untuk industri media dan hiburan. Ini umumnya digunakan di bidang film, televisi, animasi, efek visual, dan game.
Instal dan Perbarui Menggunakan PIP:
pip install trackteroidKami telah memutuskan untuk membangun API pembungkus di sekitar API Python FTRACK untuk mengatasi beberapa batasan dan tantangan yang muncul ketika berinteraksi secara langsung dengan API Python. Sementara FTRACK Python API menawarkan banyak fleksibilitas, ada aspek -aspek tertentu yang dapat membuat pengembangan dan pemeliharaan lebih rumit dan kurang intuitif. Dengan membuat API pembungkus, kami bertujuan untuk mengatasi tantangan ini dan memberikan pengalaman yang lebih ramping dan ramah pengembang. Berikut adalah alasan utama keputusan ini:
Menyederhanakan kueri
Mengoptimalkan kinerja kueri
Abstrak Kompleksitas Skema Database
Meningkatkan koleksi yang dihasilkan
Aksesibilitas lapangan yang ditingkatkan
Singkatnya Trackeroid mencoba memberdayakan pengembang dengan memberikan cara yang lebih intuitif dan efisien untuk berinteraksi dengan platform FTRACK, pada akhirnya mempercepat pengembangan, meningkatkan kualitas kode, dan meningkatkan pengalaman pengguna secara keseluruhan.
Dengan trackteroid ...
# Calculate and display the total time duration logged for
# AssetBuild types within specified Shots and Folders.
#
# output:
# Found 9 assetbuilds.
# Found 1 assetbuilds with timelogs.
# {16.0: ['Drone Craft'],
# 'No time tracked yet.': ['Drawer Cabinet 01',
# 'Gothic Commode 01',
# 'Shelf 01',
# 'Side Table 01',
# 'Small Wooden Table 01',
# 'Vintage Wooden Drawer 01',
# 'Wooden Table 01',
# 'Wooden Table 02']}
from pprint import pprint
from trackteroid import (
Query ,
AssetBuild ,
Folder ,
Task ,
Project
)
assetbuild_collection = Query ( AssetBuild ).
by_name ( Project , "sync" , "showroom" ).
by_name ( Folder , "Asset%" , "Delivery 3" ).
get_all (
projections = [
Task . Timelog ,
Task . Timelog . duration
]
)
print (
f"Found { len ( assetbuild_collection ) } assets. n "
f"Found { assetbuild_collection . count ( lambda ac : ac . Task . Timelog ) } assetbuilds with timelogs."
)
pprint (
assetbuild_collection . group_and_map (
lambda abc : abc . Task . Timelog . fold (
0 ,
lambda current , tc : current + tc . duration [ 0 ] / 3600
) or "No time tracked yet." ,
lambda abc : abc . sort (
lambda abc : abc . name
). name
)
)... Berbeda dengan FTRACK Python API .
# Calculate and display the total time duration logged for
# AssetBuild types within specified Shots and Folders.
#
# output:
# Found 9 assetbuilds.
# Found 1 assetbuilds with timelogs.
# {16.0: ['Drone Craft'],
# 'No time tracked yet.': ['Drawer Cabinet 01',
# 'Gothic Commode 01',
# 'Shelf 01',
# 'Side Table 01',
# 'Small Wooden Table 01',
# 'Vintage Wooden Drawer 01',
# 'Wooden Table 01',
# 'Wooden Table 02']}
from pprint import pprint
import ftrack_api
session = ftrack_api . Session ( auto_connect_event_hub = False , auto_populate = False )
project_names = ( "sync" , "showroom" )
folder_specific = "Delivery 3"
folder_unspecific = "Asset%"
query = (
f"select id, name, assets.name, parent.name, project.name, "
f"assets.versions.task.timelogs, assets.versions.task.timelogs.duration "
f"from AssetBuild where project has (name in { project_names } ) "
f"and parent[Folder] has (name is ' { folder_specific } ' or name like ' { folder_unspecific } ')"
)
assetbuilds_no_duration = [ "No time tracked yet." , []]
assetbuilds_timelog_duration = [ 0 , []]
assetbuilds = session . query ( query ). all ()
for assetbuild in assetbuilds :
has_duration = False
for asset in assetbuild [ "assets" ]:
for version in asset [ "versions" ]:
durations = [ _ [ "duration" ] for _ in version [ "task" ][ "timelogs" ]]
if any ( durations ):
for duration in durations :
assetbuilds_timelog_duration [ 0 ] += duration / 3600
if not has_duration :
has_duration = True
if has_duration :
assetbuilds_timelog_duration [ 1 ]. append ( assetbuild [ "name" ])
else :
assetbuilds_no_duration [ 1 ]. append ( assetbuild [ "name" ])
print (
f"Found { len ( assetbuilds ) } assetbuilds. n "
f"Found { len ( assetbuilds_timelog_duration [ 1 ]) } assetbuilds with timelogs."
)
assetbuilds_no_duration [ 1 ]. sort ()
assetbuilds_timelog_duration [ 1 ]. sort ()
pprint (
dict (
[ assetbuilds_no_duration , assetbuilds_timelog_duration ]
)
)Lihat dokumentasi terbaru untuk detail penggunaan.