Beispiel #1
0
    def test_addition_non_default_base(self):
        tc1 = TimeCode(frames=25, base=30)
        tc2 = TimeCode(frames=24, base=30)

        new_tc = tc1 + tc2

        self.assertEquals(new_tc.base(), tc1.base())
        self.assertEquals(new_tc.frames(), 49)
Beispiel #2
0
    def test_subtraction_non_default_base(self):
        tc1 = TimeCode(frames=10, base=10)
        tc2 = TimeCode(frames=5, base=10)

        new_tc = tc1 - tc2

        self.assertEquals(new_tc.base(), tc1.base())
        self.assertEquals(new_tc.frames(), 5)
Beispiel #3
0
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
Beispiel #4
0
class Test_toFrames(unittest.TestCase):
    def setUp(self):
        self.tc = TimeCode()
        self.tc30 = TimeCode(base=30)

    def test_frames(self):
        self.assertEquals(self.tc.toFrames('00:00:00:01'), 1)

    def test_seconds(self):
        self.assertEquals(self.tc.toFrames('00:00:01:00'), 24)

    def test_seconds_30fps(self):
        self.assertEquals(self.tc30.toFrames('00:00:01:00'), 30)

    def test_minutes(self):
        self.assertEquals(self.tc.toFrames('00:01:00:00'), 1440)

    def test_minute_30fps(self):
        self.assertEquals(self.tc30.toFrames('00:01:00:00'), 1800)

    def test_hour(self):
        self.assertEquals(self.tc.toFrames('01:00:00:00'), 86400)

    def test_hour_30fps(self):
        self.assertEquals(self.tc30.toFrames('01:00:00:00'), 108000)

    def test_all_fields(self):
        self.assertEquals(self.tc.toFrames('01:02:03:04'), 89356)

    def test_all_fields_30fps(self):
        self.assertEquals(self.tc30.toFrames('01:02:03:04'), 111694)

    def test_negative_tc(self):
        self.assertEquals(self.tc.toFrames('-00:00:01:02'), -26)

    def test_invalid_codes(self):
        self.assertRaises(RuntimeError, self.tc.toFrames, 'abc')
        self.assertRaises(RuntimeError, self.tc.toFrames, '00:00:00')
        self.assertRaises(RuntimeError, self.tc.toFrames, '00:00')
        self.assertRaises(RuntimeError, self.tc.toFrames, '')
        self.assertRaises(RuntimeError, self.tc.toFrames, '00:00:00:00:00')
Beispiel #5
0
class Test_toFrames(unittest.TestCase):
    def setUp(self):
        self.tc = TimeCode()
        self.tc30 = TimeCode(base=30)
    
    def test_frames(self):
        self.assertEquals(self.tc.toFrames('00:00:00:01'), 1)

    def test_seconds(self):
        self.assertEquals(self.tc.toFrames('00:00:01:00'), 24)

    def test_seconds_30fps(self):
        self.assertEquals(self.tc30.toFrames('00:00:01:00'), 30)

    def test_minutes(self):
        self.assertEquals(self.tc.toFrames('00:01:00:00'), 1440)

    def test_minute_30fps(self):
        self.assertEquals(self.tc30.toFrames('00:01:00:00'), 1800)

    def test_hour(self):
        self.assertEquals(self.tc.toFrames('01:00:00:00'), 86400)

    def test_hour_30fps(self):
        self.assertEquals(self.tc30.toFrames('01:00:00:00'), 108000)

    def test_all_fields(self):
        self.assertEquals(self.tc.toFrames('01:02:03:04'), 89356)

    def test_all_fields_30fps(self):
        self.assertEquals(self.tc30.toFrames('01:02:03:04'), 111694)

    def test_negative_tc(self):
        self.assertEquals(self.tc.toFrames('-00:00:01:02'), -26)

    def test_invalid_codes(self):
        self.assertRaises(RuntimeError, self.tc.toFrames, 'abc')
        self.assertRaises(RuntimeError, self.tc.toFrames, '00:00:00')
        self.assertRaises(RuntimeError, self.tc.toFrames, '00:00')
        self.assertRaises(RuntimeError, self.tc.toFrames, '')
        self.assertRaises(RuntimeError, self.tc.toFrames, '00:00:00:00:00') 
Beispiel #6
0
class Test_basic_functions(unittest.TestCase):
    def setUp(self):
        self.tc1 = TimeCode(frames=4)
        self.tc2 = TimeCode(frames=3)

    def test_get_frames(self):
        self.assertEquals(self.tc1.frames(), 4)

    def test_addition(self):
        new_tc = self.tc1 + self.tc2
        self.assertEquals(new_tc.frames(), 7)

    def test_subtraction(self):
        new_tc = self.tc1 - self.tc2
        self.assertEquals(new_tc.frames(), 1)

    def test_addition_mixed_bases(self):
        tc1 = TimeCode(frames=25, base=25)
        tc2 = TimeCode(frames=24, base=24)

        # raise error when adding mixed bases
        self.assertRaises(TimeCodeError, tc1.__add__, tc2)

    def test_addition_non_default_base(self):
        tc1 = TimeCode(frames=25, base=30)
        tc2 = TimeCode(frames=24, base=30)

        new_tc = tc1 + tc2

        self.assertEquals(new_tc.base(), tc1.base())
        self.assertEquals(new_tc.frames(), 49)

    def test_subtraction_mixed_bases(self):
        tc1 = TimeCode(frames=25, base=25)
        tc2 = TimeCode(frames=25, base=24)

        self.assertRaises(TimeCodeError, tc1.__sub__, tc2)

    def test_subtraction_non_default_base(self):
        tc1 = TimeCode(frames=10, base=10)
        tc2 = TimeCode(frames=5, base=10)

        new_tc = tc1 - tc2

        self.assertEquals(new_tc.base(), tc1.base())
        self.assertEquals(new_tc.frames(), 5)

    def test_repr(self):
        self.assertEquals("<TimeCode:00:00:00:04>", repr(self.tc1))
Beispiel #7
0
class Test_basic_functions(unittest.TestCase):
    def setUp(self):
        self.tc1 = TimeCode(frames=4)
        self.tc2 = TimeCode(frames=3)
    
    def test_get_frames(self):
        self.assertEquals(self.tc1.frames(), 4)

    def test_addition(self):
        new_tc = self.tc1 + self.tc2
        self.assertEquals(new_tc.frames(), 7)

    def test_subtraction(self):
        new_tc = self.tc1 - self.tc2
        self.assertEquals(new_tc.frames(), 1)
Beispiel #8
0
class Test_basic_functions(unittest.TestCase):
    def setUp(self):
        self.tc1 = TimeCode(frames=4)
        self.tc2 = TimeCode(frames=3)

    def test_get_frames(self):
        self.assertEquals(self.tc1.frames(), 4)

    def test_addition(self):
        new_tc = self.tc1 + self.tc2
        self.assertEquals(new_tc.frames(), 7)

    def test_subtraction(self):
        new_tc = self.tc1 - self.tc2
        self.assertEquals(new_tc.frames(), 1)
Beispiel #9
0
 def test_tc(self):
     tc = TimeCode(tc='00:00:01:00')
     self.assertEquals(tc._base, 24)
     self.assertEquals(tc._frames, 24)
Beispiel #10
0
 def setUp(self):
     self.tc = TimeCode()
     self.tc30 = TimeCode(base=30)
Beispiel #11
0
 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)
Beispiel #12
0
 def test_defaults(self):
     tc = TimeCode()
     self.assertEquals(tc._base, 24)
     self.assertEquals(tc._frames, 0)
Beispiel #13
0
 def setUp(self):
     self.tc1 = TimeCode(frames=4)
     self.tc2 = TimeCode(frames=3)
Beispiel #14
0
 def test_tc(self):
     tc = TimeCode(tc="00:00:01:00")
     self.assertEquals(tc.base(), 24)
     self.assertEquals(tc._frames, 24)
Beispiel #15
0
 def test_frames_tc_empty(self):
     tc = TimeCode(tc='00:00:00:00', frames=0)
     self.assertEquals(tc._frames, 0)
Beispiel #16
0
 def setUp(self):
     self.tc1 = TimeCode(frames=4)
     self.tc2 = TimeCode(frames=3)
Beispiel #17
0
 def setUp(self):
     self.tc = TimeCode()
     self.tc30 = TimeCode(base=30)
Beispiel #18
0
 def test_frames(self):
     tc = TimeCode(frames=20)
     self.assertEquals(tc._base, 24)
     self.assertEquals(tc._frames, 20)
Beispiel #19
0
 def test_base(self):
     tc = TimeCode(base=30)
     self.assertEquals(tc._base, 30)
     self.assertEquals(tc._frames, 0)
Beispiel #20
0
 def test_base(self):
     tc = TimeCode(base=30)
     self.assertEquals(tc.base(), 30)
     self.assertEquals(tc._frames, 0)
Beispiel #21
0
 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)
Beispiel #22
0
 def test_negative_timecode(self):
     tc = TimeCode(tc="-00:00:01:01", base=25)
     self.assertEquals(tc.frames(), -26)
     self.assertEquals(tc.tc(), "-00:00:01:01")
Beispiel #23
0
 def test_create_from_msec(self):
     tc = TimeCode.from_msec(2520.0, base=25)
     self.assertEquals(tc.tc(), "00:00:02:13")
Beispiel #24
0
 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)
Beispiel #25
0
 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)
Beispiel #26
0
 def test_frames(self):
     tc = TimeCode(frames=20)
     self.assertEquals(tc.base(), 24)
     self.assertEquals(tc._frames, 20)