def parse(edl_path, start_tc=None): if not os.path.exists(edl_path): raise IOError('Path does not exist: %s' % edl_path) edl_file = open(edl_path, 'rt') edl_lines = edl_file.readlines() edl_file.close() # check if we there is a TITLE specified search = re.search(r'TITLE:\s+(.*)', edl_lines[0]) if not search: edl_name = 'edl' else: edl_name = search.groups(0)[0].strip() if start_tc: the_edl = EDL(edl_name, edl_path, start_timecode=TimeCode(start_tc)) else: the_edl = EDL(edl_name, edl_path) edit_number_exp = re.compile(r'(\d{3})') edit_search_exp = re.compile(r'\d{3}.*[A-Z]\s(.*)') edit_name_exp = re.compile(r'\*\sFROM\sCLIP\sNAME:\s(.*)') for i in range(2, len(edl_lines), 2): tc_line = edl_lines[i] name_line = edl_lines[i + 1] edit_search = re.search(edit_search_exp, tc_line) if edit_search: edit_tc = edit_search.groups(0)[0].strip() else: continue edit_number_search = re.search(edit_number_exp, tc_line) if edit_number_search: edit_number = int(edit_number_search.groups(0)[0]) else: edit_number = 1 edit_name_search = re.search(edit_name_exp, name_line) if edit_name_search: edit_name = edit_name_search.groups(0)[0].strip() else: edit_name = 'edit' tc_parts = edit_tc.split(' ') media_in_out = (TimeCode(tc_parts[0]), TimeCode(tc_parts[1])) global_in_out = (TimeCode(tc_parts[2]), TimeCode(tc_parts[3])) current_edit = Edit(edit_number, edit_name, media_in_out, global_in_out) the_edl.appendEdit(current_edit) return the_edl
def test_defaults(self): tc = TimeCode() self.assertEquals(tc._base, 24) self.assertEquals(tc._frames, 0)
def setUp(self): self.tc = TimeCode() self.tc30 = TimeCode(base=30)
def test_frames_tc_empty(self): tc = TimeCode(tc='00:00:00:00', frames=0) self.assertEquals(tc._frames, 0)
def setUp(self): self.tc1 = TimeCode(frames=4) self.tc2 = TimeCode(frames=3)
def test_frames_tc_frames_empty(self): tc = TimeCode(tc='00:00:00:12', frames=0) self.assertEquals(tc._base, 24) self.assertEquals(tc._frames, 12)
def test_frames_tc_tc_empty(self): tc = TimeCode(tc='00:00:00:00', frames=2) self.assertEquals(tc._base, 24) self.assertEquals(tc._frames, 2)
def test_tc(self): tc = TimeCode(tc='00:00:01:00') self.assertEquals(tc._base, 24) self.assertEquals(tc._frames, 24)
def test_frames(self): tc = TimeCode(frames=20) self.assertEquals(tc._base, 24) self.assertEquals(tc._frames, 20)
def test_base(self): tc = TimeCode(base=30) self.assertEquals(tc._base, 30) self.assertEquals(tc._frames, 0)