def test_stereo_track(self): session = parse_document(self.path) self.assertEqual(session.tracks[1].name, 'MX WT (Stereo)') self.assertEqual(len(session.tracks[1].clips), 2) self.assertEqual(session.tracks[1].clips[0].clip_name, 'RobinHood.1-01.L') self.assertEqual(session.tracks[1].clips[1].clip_name, 'RobinHood.1-01.R')
def test_memory_locations(self): session = parse_document(self.path) self.assertEqual(len(session.markers), 1) self.assertEqual(session.markers[0].number, 1) self.assertEqual(session.markers[0].location, "01:00:00:00") self.assertEqual(session.markers[0].time_reference, 0) self.assertEqual(session.markers[0].units, "Samples")
def convert(input_file, major_mode, output=sys.stdout, warnings=True): session = parse_document(input_file) session_tc_format = session.header.timecode_format if major_mode == 'raw': output.write(MyEncoder().encode(session)) else: compiler = TagCompiler() compiler.session = session compiled_events = list(compiler.compile_events()) if major_mode == 'tagged': output.write(MyEncoder().encode(compiled_events)) else: generic_events, adr_lines = make_entities(compiled_events) # TODO: Breakdown by titles titles = set([x.title for x in (generic_events + adr_lines)]) assert len( titles) == 1, "Multiple titles per export is not supported" print(titles) if warnings: perform_adr_validations(adr_lines) if major_mode == 'doc': print_section_header_style("Creating PDF Reports") report_date = datetime.datetime.now() reports_dir = "%s_%s" % ( list(titles)[0], report_date.strftime("%Y-%m-%d_%H%M%S")) os.makedirs(reports_dir, exist_ok=False) os.chdir(reports_dir) scenes = sorted([ s for s in compiler.compile_all_time_spans() if s[0] == 'Sc' ], key=lambda x: x[2]) output_continuity(scenes=scenes, tc_display_format=session_tc_format, title=list(titles)[0], client="", supervisor="") # reels = sorted([r for r in compiler.compile_all_time_spans() if r[0] == 'Reel'], # key=lambda x: x[2]) reels = ['R1', 'R2', 'R3', 'R4', 'R5', 'R6'] create_adr_reports(adr_lines, tc_display_format=session_tc_format, reel_list=sorted(reels))
def test_header_export(self): session = parse_document(self.path) self.assertIsNotNone(session.header) self.assertEqual(session.header.session_name, 'Robin Hood Spotting') self.assertEqual(session.header.sample_rate, 48000.0) self.assertEqual(session.header.bit_depth, 24) self.assertEqual(session.header.timecode_fps, '29.97') self.assertEqual(session.header.timecode_drop_frame, False)
def test_all_sections(self): session = parse_document(self.path) self.assertIsNotNone(session.header) self.assertIsNotNone(session.files) self.assertIsNotNone(session.clips) self.assertIsNotNone(session.plugins) self.assertIsNotNone(session.tracks) self.assertIsNotNone(session.markers)
def test_a_track(self): session = parse_document(self.path) guy_track = session.tracks[5] self.assertEqual(guy_track.name, 'Guy') self.assertEqual(guy_track.comments, '[ADR] {Actor=Basil Rathbone} $CN=5') self.assertEqual(guy_track.user_delay_samples, 0) self.assertListEqual(guy_track.state, []) self.assertEqual(len(guy_track.clips), 16) self.assertEqual(guy_track.clips[5].channel, 1) self.assertEqual(guy_track.clips[5].event, 6) self.assertEqual(guy_track.clips[5].clip_name, "\"What's your name? You Saxon dog!\" $QN=GY106") self.assertEqual(guy_track.clips[5].start_timecode, "01:04:19:15") self.assertEqual(guy_track.clips[5].finish_timecode, "01:04:21:28") self.assertEqual(guy_track.clips[5].duration, "00:00:02:13") self.assertEqual(guy_track.clips[5].timestamp, None) self.assertEqual(guy_track.clips[5].state, 'Unmuted')
def test_a_track(self): session = parse_document(self.path) guy_track = session.tracks[4] self.assertEqual(guy_track.name, 'Robin') self.assertEqual(guy_track.comments, '[ADR] {Actor=Errol Flynn} $CN=1') self.assertEqual(guy_track.user_delay_samples, 0) self.assertListEqual(guy_track.state, []) self.assertEqual(len(guy_track.clips), 10) self.assertEqual(guy_track.clips[5].channel, 1) self.assertEqual(guy_track.clips[5].event, 6) self.assertEqual(guy_track.clips[5].clip_name, "\"Hold there! What's his fault?\" $QN=R106") self.assertEqual(guy_track.clips[5].start_timecode, "01:05:30;15") self.assertEqual(guy_track.clips[5].finish_timecode, "01:05:32;01") self.assertEqual(guy_track.clips[5].duration, "00:00:01;16") self.assertEqual(guy_track.clips[5].timestamp, None) self.assertEqual(guy_track.clips[5].state, 'Unmuted')
def test_a_track(self): session = parse_document(self.path) marian_track = session.tracks[6] self.assertEqual(marian_track.name, 'Marian') self.assertEqual(marian_track.comments, '[ADR] {Actor=Olivia DeHavilland} $CN=3') self.assertEqual(marian_track.user_delay_samples, 0) self.assertListEqual(marian_track.state, ['Solo']) self.assertEqual(len(marian_track.clips), 4) self.assertListEqual(marian_track.plugins, ['Channel Strip (mono)', 'ReVibe II (mono/5.1)']) self.assertEqual(marian_track.clips[2].channel, 1) self.assertEqual(marian_track.clips[2].event, 3) self.assertEqual( marian_track.clips[2].clip_name, "\"Isn't that reason enough for a Royal Ward who must obey her guardian?\" $QN=M103" ) self.assertEqual(marian_track.clips[2].start_timecode, "01:08:01:11") self.assertEqual(marian_track.clips[2].finish_timecode, "01:08:04:24") self.assertEqual(marian_track.clips[2].duration, "00:00:03:12") self.assertEqual(marian_track.clips[2].timestamp, "01:08:01:11") self.assertEqual(marian_track.clips[2].state, 'Unmuted')
def test_tracks(self): session = parse_document(self.path) self.assertEqual(len(session.tracks), 14) self.assertListEqual(["Scenes", "Robin", "Will", "Marian", "John", "Guy", "Much", "Butcher", "Town Crier", "Soldier 1", "Soldier 2", "Soldier 3", "Priest", "Guest at Court"], list(map(lambda t: t.name, session.tracks))) self.assertListEqual(["", "[ADR] {Actor=Errol Flynn} $CN=1", "[ADR] {Actor=Patrick Knowles} $CN=2", "[ADR] {Actor=Olivia DeHavilland} $CN=3", "[ADR] {Actor=Claude Raines} $CN=4", "[ADR] {Actor=Basil Rathbone} $CN=5", "[ADR] {Actor=Herbert Mundin} $CN=6", "[ADR] {Actor=George Bunny} $CN=101", "[ADR] {Actor=Leonard Mundie} $CN=102", "[ADR] $CN=103", "[ADR] $CN=104", "[ADR] $CN=105", "[ADR] {Actor=Thomas R. Mills} $CN=106", "[ADR] $CN=107"], list(map(lambda t: t.comments, session.tracks)))
def test_skipped_segments(self): session = parse_document(self.path) self.assertIsNone(session.files) self.assertIsNone(session.clips)
def test_plugins(self): session = parse_document(self.path) self.assertEqual(len(session.plugins), 2)
def test_header_export_df(self): session = parse_document(self.path) self.assertEqual(session.header.timecode_drop_frame, True)