export background
This commit is contained in:
@@ -208,6 +208,7 @@ class VSETB_PT_exports(VSETB_main, Panel):
|
||||
tracker_label = settings.tracker_name.title().replace('_', ' ')
|
||||
layout.operator('vse_toolbox.upload_to_tracker', text=f'Upload to {tracker_label}', icon='EXPORT')
|
||||
layout.operator('vse_toolbox.export_spreadsheet', text='Export Spreadsheet', icon='SPREADSHEET')
|
||||
layout.operator('vse_toolbox.export_edl', text='Export edl', icon='SEQ_SEQUENCER')
|
||||
|
||||
|
||||
class VSETB_PT_casting(VSETB_main, Panel):
|
||||
|
||||
+72
-6
@@ -3,6 +3,7 @@
|
||||
import bpy
|
||||
import os
|
||||
from pathlib import Path
|
||||
import re
|
||||
|
||||
from bpy.props import (
|
||||
BoolProperty,
|
||||
@@ -16,7 +17,8 @@ from bpy.types import PropertyGroup, UIList
|
||||
from pprint import pprint as pp
|
||||
from vse_toolbox.bl_utils import get_addon_prefs, get_scene_settings
|
||||
from vse_toolbox.constants import ASSET_PREVIEWS, TRACKERS, PREVIEWS_DIR
|
||||
from vse_toolbox.file_utils import norm_str
|
||||
from vse_toolbox.file_utils import norm_str, parse
|
||||
from vse_toolbox.sequencer_utils import get_strip_sequence_name
|
||||
|
||||
|
||||
def get_episodes_items(self, context):
|
||||
@@ -187,7 +189,7 @@ def get_custom_name_items(self, context):
|
||||
|
||||
class SpreadsheetExport(PropertyGroup):
|
||||
use_custom_cells: BoolProperty(default=False)
|
||||
format : EnumProperty(items=[(i, i, '') for i in ('CSV', 'XLSX')])
|
||||
format : EnumProperty(items=[(i, i, '') for i in ('csv', 'xlsx', 'Clipboard')])
|
||||
separator : StringProperty(default='\\n')
|
||||
delimiter : StringProperty(default=';')
|
||||
export_path : StringProperty(default='//export')
|
||||
@@ -245,7 +247,16 @@ class Project(PropertyGroup):
|
||||
name="Shot Name", default="{sequence}_sh{index:04d}")
|
||||
|
||||
render_template : StringProperty(
|
||||
name="Render Name", default="//render/{strip_name}.{ext}")
|
||||
name="Movie Path", default="//render/{project_basename}.{ext}")
|
||||
|
||||
render_strip_template : StringProperty(
|
||||
name="Strip Path", default="//render/shots/{strip}.{ext}")
|
||||
|
||||
render_per_strip: BoolProperty(name="Per Strip", default=True)
|
||||
render_single_file: BoolProperty(name="Single File", default=False)
|
||||
|
||||
export_edl_template : StringProperty(
|
||||
name="Edl Path", default="//render/{project_basename}.edl")
|
||||
|
||||
episode_name : EnumProperty(items=get_episodes_items, update=on_episode_updated)
|
||||
episodes : CollectionProperty(type=Episode)
|
||||
@@ -260,6 +271,23 @@ class Project(PropertyGroup):
|
||||
|
||||
type : StringProperty()
|
||||
|
||||
@property
|
||||
def active_episode(self):
|
||||
return self.episodes.get(self.episode_name)
|
||||
|
||||
@property
|
||||
def format_data(self):
|
||||
data = {}
|
||||
|
||||
data['project'] = norm_str(self.name)
|
||||
data['project_basename'] = data['project']
|
||||
|
||||
if self.active_episode:
|
||||
data['episode'] = norm_str(self.episode_name)
|
||||
data['project_basename'] = f"{data['project']}_{data['episode']}"
|
||||
|
||||
return data
|
||||
|
||||
def get_cell_types(self):
|
||||
settings = get_scene_settings()
|
||||
project = settings.active_project
|
||||
@@ -293,7 +321,7 @@ class Project(PropertyGroup):
|
||||
cell = spreadsheet.cells.add()
|
||||
cell.name = cell_name
|
||||
cell.export_name = 'Name' if cell_name == 'Shot' else cell_name
|
||||
cell.field_name = cell_name.upper()
|
||||
cell.field_name = norm_str(cell_name, format=str.upper)
|
||||
cell.type = "SHOT"
|
||||
|
||||
for metadata_type in self.metadata_types:
|
||||
@@ -309,7 +337,7 @@ class Project(PropertyGroup):
|
||||
cell = spreadsheet.cells.add()
|
||||
cell.name = asset_type.name
|
||||
cell.export_name = asset_type.name
|
||||
cell.field_name = asset_type.name.upper()
|
||||
cell.field_name = norm_str(asset_type.name, format=str.upper)
|
||||
cell.type = "ASSET_TYPE"
|
||||
|
||||
def set_strip_metadata(self):
|
||||
@@ -337,6 +365,8 @@ class Project(PropertyGroup):
|
||||
setattr(Metadata, field_name, prop)
|
||||
|
||||
|
||||
|
||||
|
||||
class VSETB_UL_casting(UIList):
|
||||
|
||||
order_by_type : BoolProperty(default=False)
|
||||
@@ -489,8 +519,24 @@ class VSETB_PGT_scene_settings(PropertyGroup):
|
||||
def active_episode(self):
|
||||
project = self.active_project
|
||||
if project:
|
||||
return project.episodes.get(project.episode_name)
|
||||
return project.active_episode
|
||||
|
||||
@property
|
||||
def format_data(self):
|
||||
data = {}
|
||||
digit_matches = re.findall(r'(\d+)', bpy.data.filepath)
|
||||
if len(digit_matches) == 1:
|
||||
data['version'] = int(digit_matches[-1])
|
||||
|
||||
elif len(digit_matches) > 1:
|
||||
data['increment'] = int(digit_matches[-1])
|
||||
data['version'] = int(digit_matches[-2])
|
||||
|
||||
suffix = Path(bpy.context.scene.render.frame_path()).suffix
|
||||
data['ext'] = suffix[1:]
|
||||
|
||||
return data
|
||||
|
||||
|
||||
class VSETB_PGT_strip_settings(PropertyGroup):
|
||||
casting : CollectionProperty(type=AssetCasting)
|
||||
@@ -506,6 +552,26 @@ class VSETB_PGT_strip_settings(PropertyGroup):
|
||||
except IndexError:
|
||||
return
|
||||
|
||||
@property
|
||||
def strip(self):
|
||||
sequences = bpy.context.scene.sequence_editor.sequences_all
|
||||
return next(s for s in sequences if s.vsetb_strip_settings == self)
|
||||
|
||||
@property
|
||||
def format_data(self):
|
||||
scn = bpy.context.scene
|
||||
settings = get_scene_settings()
|
||||
project = settings.active_project
|
||||
strip = self.strip
|
||||
|
||||
data = parse(strip.name, template=project.shot_template)
|
||||
data['index'] = int(data['index'])
|
||||
data['sequence'] = get_strip_sequence_name(strip)
|
||||
data['strip'] = strip.name
|
||||
#data['shot'] = project.shot_template
|
||||
|
||||
return data
|
||||
|
||||
classes = (
|
||||
Asset,
|
||||
AssetCasting,
|
||||
|
||||
Reference in New Issue
Block a user