def test_creation_with_attributes(self): mi = TimeCode('00:00:00:01') mo = TimeCode('00:00:00:03') gi = TimeCode('00:00:01:01') go = TimeCode('00:00:02:01') e = Edit(mi, mo, gi, go, name='stuff', number=1, blerg='wek') self.assertEquals(e.attributes(), {'name': 'stuff', 'number': 1, 'blerg': 'wek'})
def setUp(self): self.mi = TimeCode('00:00:00:01') self.mo = TimeCode('00:00:00:03') self.gi = TimeCode('00:00:01:01') self.go = TimeCode('00:00:02:01') self.e = Edit(self.mi, self.mo, self.gi, self.go, name='stuff', number=1, blerg='wek')
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
class TestEditMethods(unittest.TestCase): def setUp(self): self.mi = TimeCode('00:00:00:01') self.mo = TimeCode('00:00:00:03') self.gi = TimeCode('00:00:01:01') self.go = TimeCode('00:00:02:01') self.e = Edit(self.mi, self.mo, self.gi, self.go, name='stuff', number=1, blerg='wek') def test_get_media_in(self): self.assertEquals(self.e.mediaIn(), self.mi) def test_get_media_out(self): self.assertEquals(self.e.mediaOut(), self.mo) def test_get_global_in(self): self.assertEquals(self.e.globalIn(), self.gi) def test_get_global_in_with_ref_tc(self): ref_tc = TimeCode('00:00:02:00') self.assertEquals(self.e.globalIn(ref_tc).frames(), -23) def test_get_global_out(self): self.assertEquals(self.e.globalOut(), self.go) def test_get_global_out_with_ref_tc(self): ref_tc = TimeCode('00:00:02:00') self.assertEquals(self.e.globalOut(ref_tc).frames(), 1) def test_get_mediaInOut(self): self.assertEquals(self.e.mediaInOut(), (self.mi, self.mo)) def test_get_globalInOut(self): self.assertEquals(self.e.globalInOut(), (self.gi, self.go)) def test_get_globalInOut_with_ref_tc(self): ref_tc = TimeCode('00:00:02:00') g_in, g_out = self.e.globalInOut(ref_tc) self.assertEquals(g_in.frames(), -23) self.assertEquals(g_out.frames(), 1) def test_set_mediaIn(self): new_TC = TimeCode('00:00:00:05', base=24) self.e.setMediaIn(new_TC) self.assertEquals(self.e.mediaIn(), new_TC) def test_set_mediaIn_wrongBase(self): new_TC = TimeCode('00:00:00:05', base=10) with self.assertRaises(EditError): self.e.setMediaIn(new_TC) def test_set_mediaOut(self): new_TC = TimeCode('00:00:00:15', base=24) self.e.setMediaOut(new_TC) self.assertEquals(self.e.mediaOut(), new_TC) def test_set_mediaOut_wrongBase(self): new_TC = TimeCode('00:00:00:15', base=10) with self.assertRaises(EditError): self.e.setMediaOut(new_TC) def test_set_globalIn(self): new_TC = TimeCode('00:00:00:04', base=24) self.e.setGlobalIn(new_TC) self.assertEquals(self.e.globalIn(), new_TC) def test_set_globalIn_wrongBase(self): new_TC = TimeCode('00:00:00:04', base=10) with self.assertRaises(EditError): self.e.setGlobalIn(new_TC) def test_set_globalOut(self): new_TC = TimeCode('00:00:00:04', base=24) self.e.setGlobalOut(new_TC) self.assertEquals(self.e.globalOut(), new_TC) def test_set_globalOut_wrongBase(self): new_TC = TimeCode('00:00:00:04', base=10) with self.assertRaises(EditError): self.e.setGlobalOut(new_TC) def test_attribute_set_get(self): self.e.set('integer', 15) self.e.set('float', 1.0) self.e.set('string', 'this is') self.e.set('bool', False) self.assertEquals(self.e.get('integer'), 15) self.assertEquals(self.e.get('float'), 1.0) self.assertEquals(self.e.get('string'), 'this is') self.assertEquals(self.e.get('bool'), False) def test_attribute_get_default(self): assert self.e.get('get me some None') is None self.assertEquals(self.e.get('get me some defaults', 'default'), 'default') def test_repr(self): self.assertEquals(str(self.e), '< Edit: 00:00:01:01[00:00:00:01;00:00:00:03]00:00:02:01>')