Ejemplo n.º 1
0
 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')
Ejemplo n.º 2
0
    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")
Ejemplo n.º 3
0
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))
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
 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')
Ejemplo n.º 7
0
    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')
Ejemplo n.º 8
0
    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')
Ejemplo n.º 9
0
    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)))
Ejemplo n.º 10
0
 def test_skipped_segments(self):
     session = parse_document(self.path)
     self.assertIsNone(session.files)
     self.assertIsNone(session.clips)
Ejemplo n.º 11
0
 def test_plugins(self):
     session = parse_document(self.path)
     self.assertEqual(len(session.plugins), 2)
Ejemplo n.º 12
0
 def test_header_export_df(self):
     session = parse_document(self.path)
     self.assertEqual(session.header.timecode_drop_frame, True)