From f5a80b3bdfa0c61c53864eb4d63989f394fadadb Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Tue, 25 May 2021 12:03:24 -0700 Subject: [PATCH] Character reports --- ptulsconv/commands.py | 9 +++++- ptulsconv/pdf/common.py | 3 +- ptulsconv/pdf/summary_log.py | 59 +++++++++++++++++++++++++----------- 3 files changed, 51 insertions(+), 20 deletions(-) diff --git a/ptulsconv/commands.py b/ptulsconv/commands.py index 0bccfbd..6634b6e 100644 --- a/ptulsconv/commands.py +++ b/ptulsconv/commands.py @@ -49,6 +49,7 @@ adr_field_map = ((['Title', 'PT.Session.Name'], 'Title', str), (['OMIT'], 'Omit', str), (['ADLIB'], 'Adlib', str), (['OPT'], 'Optional', str), + (['DONE'], 'Done', str), (['Movie.Filename'], 'Movie', str), (['Movie.Start_Offset_Seconds'], 'Movie Seconds', float), ) @@ -156,8 +157,14 @@ def convert(input_file, output_format='fmpxml', start=None, end=None, select_ree os.chdir("Supervisor Logs") output_supervisor_1pg(parsed) - print_status_style("Creating Scripts directory and reports") os.chdir("..") + print_status_style("Creating Director's Logs director and reports") + os.makedirs("Director Logs", exist_ok=True) + os.chdir("Director Logs") + output_summary(parsed, by_character=True) + + os.chdir("..") + print_status_style("Creating Scripts directory and reports") os.makedirs("Talent Scripts", exist_ok=True) os.chdir("Talent Scripts") output_talent_sides(parsed) diff --git a/ptulsconv/pdf/common.py b/ptulsconv/pdf/common.py index 33ede77..b96312f 100644 --- a/ptulsconv/pdf/common.py +++ b/ptulsconv/pdf/common.py @@ -8,6 +8,7 @@ from reportlab.platypus.frames import Frame from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont + # This is from https://code.activestate.com/recipes/576832/ for # generating page count messages class ReportCanvas(canvas.Canvas): @@ -87,7 +88,7 @@ def time_format(mins, zero_str=""): else: m = round(mins) hh, mm = divmod(m, 60) - return "%ih%i" % (hh, mm) + return "%i:%02i" % (hh, mm) def draw_header_footer(a_canvas, title_box, doc_title_box, footer_box, record, doc_title=""): diff --git a/ptulsconv/pdf/summary_log.py b/ptulsconv/pdf/summary_log.py index 8d60b24..602f574 100644 --- a/ptulsconv/pdf/summary_log.py +++ b/ptulsconv/pdf/summary_log.py @@ -23,7 +23,16 @@ def build_aux_data_field(line): tag_field = "" for tag in line.keys(): if line[tag] == tag and tag != 'ADR': - tag_field += "" + tag + " " + fcolor = 'white' + bcolor = 'black' + if tag == 'ADLIB' or tag == 'TBW': + bcolor = 'darkmagenta' + elif tag == 'EFF': + bcolor = 'red' + elif tag == 'TV': + bcolor = 'blue' + + tag_field += "%s " % (bcolor, fcolor, tag) entries.append(tag_field) @@ -47,16 +56,16 @@ def build_story(lines): ('LEFTPADDING', (0, 0), (0, 0), 0.0), ('BOTTOMPADDING', (0, 0), (-1, -1), 24.)] - if 'Omitted' in line.keys(): - cue_number_field = "" + line['Cue Number'] + "
" + \ - line['Character Name'] + "" - table_style.append(('BACKGROUND', (0, 0), (-1, 0), colors.lightpink)) - elif 'Effort' in line.keys(): - cue_number_field = "" + line['Cue Number'] + "
" + \ - line['Character Name'] + "" - table_style.append(('BACKGROUND', (0, 0), (-1, 0), colors.lightgreen)) - else: - cue_number_field = line['Cue Number'] + "
" + line['Character Name'] + "" + # if 'Omitted' in line.keys(): + # cue_number_field = "" + line['Cue Number'] + "
" + \ + # line['Character Name'] + "" + # table_style.append(('BACKGROUND', (0, 0), (-1, 0), colors.lightpink)) + # elif 'Effort' in line.keys(): + # cue_number_field = "" + line['Cue Number'] + "
" + \ + # line['Character Name'] + "" + # table_style.append(('BACKGROUND', (0, 0), (-1, 0), colors.lightgreen)) + # else: + cue_number_field = line['Cue Number'] + "
" + line['Character Name'] + "" time_data = time_format(line.get('Time Budget Mins', 0.)) @@ -89,16 +98,30 @@ def build_story(lines): return story -def output_report(records, page_size=portrait(letter)): - lines = sorted(records['events'], key=lambda line: line['PT.Clip.Start_Seconds']) +def generate_report(page_size, records, character_number=None): + lines = records['events'] + if character_number is not None: + lines = [r for r in lines if r['Character Number'] == character_number] + title = "%s ADR Report (%s)" % (lines[0]['Title'], lines[0]['Character Name']) + document_header = "%s ADR Report" % (lines[0]['Character Name']) + else: + title = "%s ADR Report" % (lines[0]['Title']) + document_header = 'ADR Report' + + lines = sorted(lines, key=lambda line: line['PT.Clip.Start_Seconds']) - title = "%s ADR Report" % (lines[0]['Title']) filename = title + ".pdf" - doc = make_doc_template(page_size=page_size, filename=filename, document_title=title, - record=lines[0], document_header='ADR Report') - + record=lines[0], document_header=document_header) story = build_story(lines) - doc.build(story) + + +def output_report(records, page_size=portrait(letter), by_character=False): + if by_character: + character_numbers = set((r['Character Number'] for r in records['events'])) + for n in character_numbers: + generate_report(page_size, records, n) + else: + generate_report(page_size, records)