예제 #1
0
파일: edl.py 프로젝트: DIT-Tools/python-edl
 def apply(self, stack, line):
     evt = None
     m = re.search(self.regexp, line.strip())
     if m:
         matches = m.groups()
         keys = [
             'num', 'reel', 'track', 'tr_code', 'aux', 'src_start_tc',
             'src_end_tc', 'rec_start_tc', 'rec_end_tc'
         ]
         values = map(self.stripper, matches)
         evt = Event(dict(zip(keys, values)))
         t = evt.tr_code
         if t == 'C':
             if len(stack) > 0:
                 stack[-1].next_event = evt
             evt.transition = Cut()
         elif t == 'D':
             evt.transition = Dissolve()
         elif re.match('W\d+', t):
             evt.transition = Wipe()
         elif t == 'K':
             evt.transition = Key()
         else:
             evt.transition = None
         evt.src_start_tc = pytimecode.PyTimeCode('24', evt.src_start_tc)
         evt.src_end_tc = pytimecode.PyTimeCode('24', evt.src_end_tc)
         evt.rec_start_tc = pytimecode.PyTimeCode('24', evt.rec_start_tc)
         evt.rec_end_tc = pytimecode.PyTimeCode('24', evt.rec_end_tc)
         stack.append(evt)
     return evt
예제 #2
0
 def test_drop_frame(self):
     tc = pytimecode.PyTimeCode('59.94', '13:36:59:59', drop_frame=True)
     timecode = tc.next()
     assert timecode == "13:37:00:04"
     tc = pytimecode.PyTimeCode('29.97', '13:36:59:29', drop_frame=True)
     timecode = tc.next()
     assert timecode == "13:37:00:02"
     tc = pytimecode.PyTimeCode('59.94', '13:39:59:59', drop_frame=True)
     timecode = tc.next()
     assert timecode == "13:40:00:00"
     tc = pytimecode.PyTimeCode('29.97', '13:39:59:29', drop_frame=True)
     timecode = tc.next()
     assert timecode == "13:40:00:00"
예제 #3
0
 def test_instan(self):
     timeobj = pytimecode.PyTimeCode('24', '00:00:00:00')
     timeobj = pytimecode.PyTimeCode('23.98', '00:00:00:00')
     timeobj = pytimecode.PyTimeCode('29.97', '00:00:00:00')
     timeobj = pytimecode.PyTimeCode('30', '00:00:00:00')
     timeobj = pytimecode.PyTimeCode('60', '00:00:00:00')
     timeobj = pytimecode.PyTimeCode('59.94', '00:00:00:00')
     timeobj = pytimecode.PyTimeCode('ms', '03:36:09:230')
     timeobj = pytimecode.PyTimeCode('ms', '03:36:09.230')
     timeobj = pytimecode.PyTimeCode('24',
                                     start_timecode=None,
                                     frames=12000)
예제 #4
0
 def __init__(self,reel,warp_fps,tc,fps):
     self.reverse=False
     self.reel=reel
     self.fps=fps
     self.warp_fps=float(warp_fps)
     self.timecode=pytimecode.PyTimeCode(fps)
     self.timecode.set_timecode(tc)
예제 #5
0
 def seek(self, ns):
     tc = pytimecode.PyTimeCode(self.frame_rate,
                                start_seconds=ns / float(gst.SECOND))
     debug("Requesting tc: %s" % tc)
     self._cmd_q.put([CMD_SEEK, tc])
     debug("Seek comand queued")
     self.finish_ccn_loop()
예제 #6
0
    def test_drop_frame(self):
        tc = pytimecode.PyTimeCode('59.94', '13:36:59;59')
        timecode = tc.next()
        self.assertEquals("13:37:00;04", timecode)

        tc = pytimecode.PyTimeCode('29.97', '13:36:59;29')
        timecode = tc.next()
        self.assertEquals("13:37:00;02", timecode)

        tc = pytimecode.PyTimeCode('59.94', '13:39:59;59')
        timecode = tc.next()
        self.assertEquals("13:40:00;00", timecode)

        tc = pytimecode.PyTimeCode('29.97', '13:39:59;29')
        timecode = tc.next()
        self.assertEquals("13:40:00;00", timecode)
예제 #7
0
    def test_case_1(self):
        start = pytimecode.PyTimeCode('29.97', "01:00:00;00")
        self.assertEquals(start.frames, 107892)

        end = pytimecode.PyTimeCode('29.97', "01:01:00;02")
        self.assertEquals(end.frames, 109692)

        diff = end - start
        self.assertEquals(diff.frames, 1800)  # 1800
        self.assertEquals(diff.make_timecode(), "00:01:00;02")  # 00:00:59;28

        end.add_frames(10)
        self.assertEquals(end.make_timecode(), "01:01:00;12")
        self.assertEquals(end.frames, 109702)  # 109700?

        start.sub_frames(10)
        self.assertEquals(start.make_timecode(), "00:59:59;20")
        self.assertEquals(start.frames, 107882)

        diff2 = end - start
        self.assertEquals(diff2.frames, 1820)
        self.assertEquals(diff2.make_timecode(), "00:01:00;22")
예제 #8
0
 def test_repr_overload(self):
     timeobj = pytimecode.PyTimeCode('24', '01:00:00:00')
     assert timeobj.__repr__() == '01:00:00:00'
     timeobj = pytimecode.PyTimeCode('23.98', '20:00:00:00')
     assert timeobj.__repr__() == '20:00:00:00'
     timeobj = pytimecode.PyTimeCode('29.97', '00:09:00:00')
     assert timeobj.__repr__() == '00:09:00:00'
     timeobj = pytimecode.PyTimeCode('30', '00:10:00:00')
     assert timeobj.__repr__() == '00:10:00:00'
     timeobj = pytimecode.PyTimeCode('60', '00:00:09:00')
     assert timeobj.__repr__() == '00:00:09:00'
     timeobj = pytimecode.PyTimeCode('59.94', '00:00:20:00')
     assert timeobj.__repr__() == '00:00:20:00'
     timeobj = pytimecode.PyTimeCode('ms', '00:00:00:900')
     assert timeobj.__repr__() == '00:00:00:900'
     timeobj = pytimecode.PyTimeCode('24', start_timecode=None, frames=49)
     print timeobj.int_framerate
     assert timeobj.__repr__() == '00:00:02:01'
예제 #9
0
 def test_repr_overload(self):
     timeobj = pytimecode.PyTimeCode('24', '01:00:00:00')
     self.assertEquals('01:00:00:00', timeobj.__repr__())
     timeobj = pytimecode.PyTimeCode('23.98', '20:00:00:00')
     self.assertEquals('20:00:00:00', timeobj.__repr__())
     timeobj = pytimecode.PyTimeCode('29.97', '00:09:00:00')
     self.assertEquals('00:09:00:00', timeobj.__repr__())
     timeobj = pytimecode.PyTimeCode('30', '00:10:00:00')
     self.assertEquals('00:10:00:00', timeobj.__repr__())
     timeobj = pytimecode.PyTimeCode('60', '00:00:09:00')
     self.assertEquals('00:00:09:00', timeobj.__repr__())
     timeobj = pytimecode.PyTimeCode('59.94', '00:00:20:00')
     self.assertEquals('00:00:20:00', timeobj.__repr__())
     timeobj = pytimecode.PyTimeCode('ms', '00:00:00:900')
     self.assertEquals('00:00:00.900', timeobj.__repr__())
     timeobj = pytimecode.PyTimeCode('24', start_timecode=None, frames=49)
     self.debug(timeobj.int_framerate)
     self.assertEquals('00:00:02:01', timeobj.__repr__())
예제 #10
0
    def fetch_seek_query(self, tc):
        debug("Fetching segment number for %s" % tc)
        interest = pyccn.Interest(childSelector=1)
        interest.exclude = pyccn.ExclusionFilter()

        exc_tc = tc + 1
        interest.exclude.add_name(pyccn.Name([exc_tc.make_timecode()]))
        interest.exclude.add_any()

        #debug("Sending interest to %s" % self._name_frames)
        #debug("Interest: %s" % interest)
        co = self._get_handle.get(self._name_frames, interest)
        if not co:
            raise Exception("Some bullshit exception")
        debug("Got segment: %s" % co.content)

        tc = pytimecode.PyTimeCode(exc_tc.framerate,
                                   start_timecode=co.name[-1])
        segment = int(co.content)

        return tc, segment
예제 #11
0
    def fetch_last_frame(self):
        assert (self.frame_rate)

        interest = pyccn.Interest(childSelector=1)

        if self._duration_last:
            interest.exclude = pyccn.ExclusionFilter()
            interest.exclude.add_any()
            interest.exclude.add_name(pyccn.Name([self._duration_last]))

        co = self._get_handle.get(self._name_frames, interest)
        if co:
            print ">%s<" % co.name
            self._duration_last = co.name[-1]

        print ">%s<" % self._duration_last
        if self._duration_last:
            self.last_frame = pytimecode.PyTimeCode(
                self.frame_rate, start_timecode=self._duration_last)
        else:
            self.last_frame = "00:00:00:00"
예제 #12
0
    def test_24_hour_limit(self):
        tc = pytimecode.PyTimeCode('24', '00:00:00:21')
        tc2 = pytimecode.PyTimeCode('24', '23:59:59:23')
        self.assertEquals('00:00:00:20', (tc + tc2).make_timecode())
        self.assertEquals('02:00:00:00', (tc2 + 159840001).make_timecode())

        tc = pytimecode.PyTimeCode('29.97', '00:00:00:21')
        tc2 = pytimecode.PyTimeCode('29.97', '23:59:59:29')
        self.debug((tc + tc2).frames)
        self.assertEquals('00:00:00:20', (tc + tc2).make_timecode())
        self.assertEquals('02:00:00:00', (tc2 + 18360001).make_timecode())

        tc = pytimecode.PyTimeCode('29.97', '00:00:00;01')
        tc2 = pytimecode.PyTimeCode('29.97', '23:59:59;29')
        tc3 = (tc2 + 21)
        self.debug('yp1', tc.frames, tc2.frames, tc3.frames,
                   tc.make_timecode())
        self.assertEquals('00:00:00;20', tc3.make_timecode())

        tc = pytimecode.PyTimeCode('29.97', '00:00:00;21')
        tc2 = pytimecode.PyTimeCode('29.97', '23:59:59;29')
        tc3 = (tc + tc2)
        self.debug('yp2', tc.frames, tc2.frames, tc3.frames,
                   tc.make_timecode())
        self.assertEquals('00:00:00;20', tc3.make_timecode())

        tc = pytimecode.PyTimeCode('29.97', '04:20:13;21')
        tc2 = pytimecode.PyTimeCode('29.97', '23:59:59;29')
        tc3 = (tc + tc2)
        self.debug('yp2', tc.frames, tc2.frames, tc3.frames,
                   tc.make_timecode())
        self.assertEquals('04:20:13;20', tc3.make_timecode())

        tc = pytimecode.PyTimeCode('59.94', '04:20:13;21')
        tc2 = pytimecode.PyTimeCode('59.94', '23:59:59;59')
        tc3 = (tc + tc2)
        self.debug('yp2', tc.frames, tc2.frames, tc3.frames,
                   tc.make_timecode())
        self.assertEquals('04:20:13;20', tc3.make_timecode())
예제 #13
0
 def test_timecode_init(self):
     tc = pytimecode.PyTimeCode('29.97', '00:00:00;01')
     self.assertEquals(1, tc.frames)
     tc = pytimecode.PyTimeCode('29.97', '03:36:09;23')
     self.assertEquals(388703, tc.frames)
     tc = pytimecode.PyTimeCode('29.97', '03:36:09:23')
     self.assertEquals(389093, tc.frames)
     tc = pytimecode.PyTimeCode('30', '03:36:09:23')
     self.assertEquals(389093, tc.frames)
     tc = pytimecode.PyTimeCode('25', '03:36:09:23')
     self.assertEquals(324248, tc.frames)
     tc = pytimecode.PyTimeCode('59.94', '03:36:09:23')
     self.assertEquals(778163, tc.frames)
     tc = pytimecode.PyTimeCode('60', '03:36:09:23')
     self.assertEquals(778163, tc.frames)
     tc = pytimecode.PyTimeCode('59.94', '03:36:09;23')
     self.assertEquals(777383, tc.frames)
     tc = pytimecode.PyTimeCode('23.98', '03:36:09:23')
     self.assertEquals(311279, tc.frames)
     tc = pytimecode.PyTimeCode('24', '03:36:09:23')
     self.assertEquals(311279, tc.frames)
     tc = pytimecode.PyTimeCode('ms', '03:36:09:230')
     self.assertEquals(3, tc.hrs)
     self.assertEquals(36, tc.mins)
     self.assertEquals(9, tc.secs)
     self.assertEquals(230, tc.frs)
     tc = pytimecode.PyTimeCode('24', start_timecode=None, frames=12000)
     self.assertEquals('00:08:20:00', tc.make_timecode())
     tc = pytimecode.PyTimeCode('29.97',
                                start_timecode=None,
                                frames=2589407,
                                drop_frame=True)
     self.assertEquals('23:59:59;29', tc.make_timecode())
     tc = pytimecode.PyTimeCode('29.97',
                                start_timecode=None,
                                frames=2589408,
                                drop_frame=True)
     self.assertEquals('00:00:00;00', tc.make_timecode())
     tc = pytimecode.PyTimeCode('59.94',
                                start_timecode=None,
                                frames=5178815,
                                drop_frame=True)
     self.assertEquals('23:59:59;59', tc.make_timecode())
     tc = pytimecode.PyTimeCode('59.94',
                                start_timecode=None,
                                frames=5178816,
                                drop_frame=True)
     self.assertEquals('00:00:00;00', tc.make_timecode())
예제 #14
0
    def test_op_overloads_mult(self):
        tc = pytimecode.PyTimeCode('29.97', '00:00:09;23')
        tc2 = pytimecode.PyTimeCode('29.97', '00:00:29;23')
        d = tc * tc2
        f = tc * 4
        self.debug(tc.frames, tc2.frames)
        self.assertEquals("02:25:30;11", d.make_timecode())
        self.assertEquals(261649, d.frames)
        self.assertEquals("00:00:39;02", f.make_timecode())
        self.assertEquals(1172, f.frames)

        tc = pytimecode.PyTimeCode('29.97', '00:00:09:23')
        tc2 = pytimecode.PyTimeCode('29.97', '00:00:29:23')
        d = tc * tc2
        f = tc * 4
        self.assertEquals("02:25:21:19", d.make_timecode())
        self.assertEquals(261649, d.frames)
        self.assertEquals("00:00:39:02", f.make_timecode())
        self.assertEquals(1172, f.frames)

        tc = pytimecode.PyTimeCode('30', '03:36:09:23')
        tc2 = pytimecode.PyTimeCode('30', '00:00:29:23')
        d = tc * tc2
        f = tc * 893
        self.assertEquals("01:13:21:19", d.make_timecode())
        self.assertEquals(347460049, d.frames)
        self.assertEquals("01:13:21:19", f.make_timecode())
        self.assertEquals(347460049, f.frames)

        tc = pytimecode.PyTimeCode('25', '03:36:09:23')
        tc2 = pytimecode.PyTimeCode('25', '00:00:29:23')
        d = tc * tc2
        f = tc * 748
        self.assertEquals("06:51:40:04", d.make_timecode())
        self.assertEquals(242537504, d.frames)
        self.assertEquals("06:51:40:04", f.make_timecode())
        self.assertEquals(242537504, f.frames)

        tc = pytimecode.PyTimeCode('59.94', '03:36:09:23')
        tc2 = pytimecode.PyTimeCode('59.94', '00:00:29:23')
        d = tc * tc2
        f = tc * 1763
        self.assertEquals("15:23:42:49", d.make_timecode())
        self.assertEquals(1371901369, d.frames)
        self.assertEquals("15:23:42:49", f.make_timecode())
        self.assertEquals(1371901369, f.frames)

        tc = pytimecode.PyTimeCode('60', '03:36:09:23')
        tc2 = pytimecode.PyTimeCode('60', '00:00:29:23')
        d = tc * tc2
        f = tc * 1763
        self.assertEquals("15:23:42:49", d.make_timecode())
        self.assertEquals(1371901369, d.frames)
        self.assertEquals("15:23:42:49", f.make_timecode())
        self.assertEquals(1371901369, f.frames)

        tc = pytimecode.PyTimeCode('59.94', '03:36:09;23')
        tc2 = pytimecode.PyTimeCode('59.94', '00:00:29;23')
        d = tc * tc2
        f = tc * 1763
        self.assertEquals("15:22:48;45", d.make_timecode())
        self.assertEquals(1370526229, d.frames)
        self.assertEquals("15:22:48;45", f.make_timecode())
        self.assertEquals(1370526229, f.frames)

        tc = pytimecode.PyTimeCode('23.98', '03:36:09:23')
        tc2 = pytimecode.PyTimeCode('23.98', '00:00:29:23')
        d = tc * tc2
        f = tc * 719
        self.assertEquals("22:23:20:01", d.make_timecode())
        self.assertEquals(223809601, d.frames)
        self.assertEquals("22:23:20:01", f.make_timecode())
        self.assertEquals(223809601, f.frames)

        tc = pytimecode.PyTimeCode('24', '03:36:09:23')
        tc = pytimecode.PyTimeCode('23.98', '03:36:09:23')
        tc2 = pytimecode.PyTimeCode('23.98', '00:00:29:23')
        d = tc * tc2
        f = tc * 719
        self.assertEquals("22:23:20:01", d.make_timecode())
        self.assertEquals(223809601, d.frames)
        self.assertEquals("22:23:20:01", f.make_timecode())
        self.assertEquals(223809601, f.frames)

        # tc = pytimecode.PyTimeCode('ms', '03:36:09:230')
        # tc2 = pytimecode.PyTimeCode('ms', '01:06:09:230')
        # d = tc * tc2
        # f = tc * 719
        # self.debug(tc.frames, tc2.frames, d.frames)
        # self.assertEquals("12:39:52:900", d.make_timecode())
        # self.assertEquals(45592900, d.frames)
        # self.assertEquals("22:14:36:370", f.make_timecode())
        # self.assertEquals(80076370, f.frames)

        tc = pytimecode.PyTimeCode('24', start_timecode=None, frames=12000)
        tc2 = pytimecode.PyTimeCode('24', start_timecode=None, frames=485)
        d = tc * tc2
        f = tc * 719
        self.assertEquals("19:21:40:00", d.make_timecode())
        self.assertEquals(5820000, d.frames)
        self.assertEquals("03:51:40:00", f.make_timecode())
        self.assertEquals(8628000, f.frames)
예제 #15
0
    def test_op_overloads_add(self):
        tc = pytimecode.PyTimeCode('29.97', '03:36:09;23')
        tc2 = pytimecode.PyTimeCode('29.97', '00:00:29;23')
        d = tc + tc2
        f = tc + 893
        self.debug(tc.frames, tc2.frames)
        self.assertEquals("03:36:39;16", d.make_timecode())
        self.assertEquals(389596, d.frames)
        self.assertEquals("03:36:39;16", f.make_timecode())
        self.assertEquals(389596, f.frames)

        tc = pytimecode.PyTimeCode('29.97', '03:36:09:23')
        tc2 = pytimecode.PyTimeCode('29.97', '00:00:29:23')
        d = tc + tc2
        f = tc + 893
        self.assertEquals("03:36:39:16", d.make_timecode())
        self.assertEquals(389986, d.frames)
        self.assertEquals("03:36:39:16", f.make_timecode())
        self.assertEquals(389986, f.frames)

        tc = pytimecode.PyTimeCode('30', '03:36:09:23')
        tc2 = pytimecode.PyTimeCode('30', '00:00:29:23')
        d = tc + tc2
        f = tc + 893
        self.assertEquals("03:36:39:16", d.make_timecode())
        self.assertEquals(389986, d.frames)
        self.assertEquals("03:36:39:16", f.make_timecode())
        self.assertEquals(389986, f.frames)

        tc = pytimecode.PyTimeCode('25', '03:36:09:23')
        tc2 = pytimecode.PyTimeCode('25', '00:00:29:23')
        d = tc + tc2
        f = tc + 748
        self.assertEquals("03:36:39:21", d.make_timecode())
        self.assertEquals(324996, d.frames)
        self.assertEquals("03:36:39:21", f.make_timecode())
        self.assertEquals(324996, f.frames)

        tc = pytimecode.PyTimeCode('59.94', '03:36:09:23')
        tc2 = pytimecode.PyTimeCode('59.94', '00:00:29:23')
        d = tc + tc2
        f = tc + 1763
        self.assertEquals("03:36:38:46", d.make_timecode())
        self.assertEquals(779926, d.frames)
        self.assertEquals("03:36:38:46", f.make_timecode())
        self.assertEquals(779926, f.frames)

        tc = pytimecode.PyTimeCode('60', '03:36:09:23')
        tc2 = pytimecode.PyTimeCode('60', '00:00:29:23')
        d = tc + tc2
        f = tc + 1763
        self.assertEquals("03:36:38:46", d.make_timecode())
        self.assertEquals(779926, d.frames)
        self.assertEquals("03:36:38:46", f.make_timecode())
        self.assertEquals(779926, f.frames)

        tc = pytimecode.PyTimeCode('59.94', '03:36:09;23')
        tc2 = pytimecode.PyTimeCode('59.94', '00:00:29;23')
        d = tc + tc2
        f = tc + 1763
        self.assertEquals("03:36:38;46", d.make_timecode())
        self.assertEquals(779146, d.frames)
        self.assertEquals("03:36:38;46", f.make_timecode())
        self.assertEquals(779146, f.frames)

        tc = pytimecode.PyTimeCode('23.98', '03:36:09:23')
        tc2 = pytimecode.PyTimeCode('23.98', '00:00:29:23')
        d = tc + tc2
        f = tc + 719
        self.assertEquals("03:36:39:22", d.make_timecode())
        self.assertEquals(311998, d.frames)
        self.assertEquals("03:36:39:22", f.make_timecode())
        self.assertEquals(311998, f.frames)

        tc = pytimecode.PyTimeCode('24', '03:36:09:23')
        tc = pytimecode.PyTimeCode('23.98', '03:36:09:23')
        tc2 = pytimecode.PyTimeCode('23.98', '00:00:29:23')
        d = tc + tc2
        f = tc + 719
        self.assertEquals("03:36:39:22", d.make_timecode())
        self.assertEquals(311998, d.frames)
        self.assertEquals("03:36:39:22", f.make_timecode())
        self.assertEquals(311998, f.frames)

        tc = pytimecode.PyTimeCode('ms', '03:36:09:230')
        tc2 = pytimecode.PyTimeCode('ms', '01:06:09:230')
        d = tc + tc2
        f = tc + 719
        self.debug(tc.frames, tc2.frames, d.frames)
        self.assertEquals("04:42:18.460", d.make_timecode())
        self.assertEquals(16938460, d.frames)
        self.assertEquals("03:36:09.949", f.make_timecode())
        self.assertEquals(12969949, f.frames)

        tc = pytimecode.PyTimeCode('24', start_timecode=None, frames=12000)
        tc2 = pytimecode.PyTimeCode('24', start_timecode=None, frames=485)
        d = tc + tc2
        f = tc + 719
        self.assertEquals("00:08:40:05", d.make_timecode())
        self.assertEquals(12485, d.frames)
        self.assertEquals("00:08:49:23", f.make_timecode())
        self.assertEquals(12719, f.frames)
예제 #16
0
 def test_op_overloads_add(self):
     tc = pytimecode.PyTimeCode('29.97', '03:36:09:23', drop_frame=True)
     tc2 = pytimecode.PyTimeCode('29.97', '00:00:29:23', drop_frame=True)
     d = tc + tc2
     f = tc + 893
     print tc.frames, tc2.frames
     assert d.make_timecode() == "03:36:39:18"
     assert d.frames == 389598
     assert f.make_timecode() == "03:36:39:18"
     assert f.frames == 389598
     tc = pytimecode.PyTimeCode('29.97', '03:36:09:23')
     tc2 = pytimecode.PyTimeCode('29.97', '00:00:29:23')
     d = tc + tc2
     f = tc + 893
     assert d.make_timecode() == "03:36:39:16"
     assert d.frames == 389986
     assert f.make_timecode() == "03:36:39:16"
     assert f.frames == 389986
     tc = pytimecode.PyTimeCode('30', '03:36:09:23')
     tc2 = pytimecode.PyTimeCode('30', '00:00:29:23')
     d = tc + tc2
     f = tc + 893
     assert d.make_timecode() == "03:36:39:16"
     assert d.frames == 389986
     assert f.make_timecode() == "03:36:39:16"
     assert f.frames == 389986
     tc = pytimecode.PyTimeCode('25', '03:36:09:23')
     tc2 = pytimecode.PyTimeCode('25', '00:00:29:23')
     d = tc + tc2
     f = tc + 748
     assert d.make_timecode() == "03:36:39:21"
     assert d.frames == 324996
     assert f.make_timecode() == "03:36:39:21"
     assert f.frames == 324996
     tc = pytimecode.PyTimeCode('59.94', '03:36:09:23')
     tc2 = pytimecode.PyTimeCode('59.94', '00:00:29:23')
     d = tc + tc2
     f = tc + 1763
     assert d.make_timecode() == "03:36:38:46"
     assert d.frames == 779926
     assert f.make_timecode() == "03:36:38:46"
     assert f.frames == 779926
     tc = pytimecode.PyTimeCode('60', '03:36:09:23')
     tc2 = pytimecode.PyTimeCode('60', '00:00:29:23')
     d = tc + tc2
     f = tc + 1763
     assert d.make_timecode() == "03:36:38:46"
     assert d.frames == 779926
     assert f.make_timecode() == "03:36:38:46"
     assert f.frames == 779926
     tc = pytimecode.PyTimeCode('59.94', '03:36:09:23', drop_frame=True)
     tc2 = pytimecode.PyTimeCode('59.94', '00:00:29:23', drop_frame=True)
     d = tc + tc2
     f = tc + 1763
     assert d.make_timecode() == "03:36:38:50"
     assert d.frames == 779150
     assert f.make_timecode() == "03:36:38:50"
     assert f.frames == 779150
     tc = pytimecode.PyTimeCode('23.98', '03:36:09:23')
     tc2 = pytimecode.PyTimeCode('23.98', '00:00:29:23')
     d = tc + tc2
     f = tc + 719
     assert d.make_timecode() == "03:36:39:22"
     assert d.frames == 311998
     assert f.make_timecode() == "03:36:39:22"
     assert f.frames == 311998
     tc = pytimecode.PyTimeCode('24', '03:36:09:23')
     tc = pytimecode.PyTimeCode('23.98', '03:36:09:23')
     tc2 = pytimecode.PyTimeCode('23.98', '00:00:29:23')
     d = tc + tc2
     f = tc + 719
     assert d.make_timecode() == "03:36:39:22"
     assert d.frames == 311998
     assert f.make_timecode() == "03:36:39:22"
     assert f.frames == 311998
     tc = pytimecode.PyTimeCode('ms', '03:36:09:230')
     tc2 = pytimecode.PyTimeCode('ms', '01:06:09:230')
     d = tc + tc2
     f = tc + 719
     print tc.frames, tc2.frames, d.frames
     assert d.make_timecode() == "04:42:18:460"
     assert d.frames == 16938460
     assert f.make_timecode() == "03:36:09:949"
     assert f.frames == 12969949
     tc = pytimecode.PyTimeCode('24', start_timecode=None, frames=12000)
     tc2 = pytimecode.PyTimeCode('24', start_timecode=None, frames=485)
     d = tc + tc2
     f = tc + 719
     assert d.make_timecode() == "00:08:40:05"
     assert d.frames == 12485
     assert f.make_timecode() == "00:08:49:23"
     assert f.frames == 12719
예제 #17
0
    def test_exceptions(self):
        e = None
        try:
            tc = pytimecode.PyTimeCode('24', '01:20:30:303')
        except ValueError as e:
            self.debug(type(e), e)
            self.assertEquals("Timecode string parsing error: '01:20:30:303'",
                              e.__str__())

        try:
            tc = pytimecode.PyTimeCode('23.98', '01:20:30:303')
        except ValueError as e:
            self.debug(type(e), e)
            self.assertEquals("Timecode string parsing error: '01:20:30:303'",
                              e.__str__())

        try:
            tc = pytimecode.PyTimeCode('29.97', '01:20:30:303')
        except ValueError as e:
            self.debug(type(e), e)
            self.assertEquals("Timecode string parsing error: '01:20:30:303'",
                              e.__str__())

        try:
            tc = pytimecode.PyTimeCode('30', '01:20:30:303')
        except ValueError as e:
            self.debug(type(e), e)
            self.assertEquals("Timecode string parsing error: '01:20:30:303'",
                              e.__str__())

        try:
            tc = pytimecode.PyTimeCode('60', '01:20:30:303')
        except ValueError as e:
            self.debug(type(e), e)
            self.assertEquals("Timecode string parsing error: '01:20:30:303'",
                              e.__str__())

        try:
            tc = pytimecode.PyTimeCode('59.94', '01:20:30:303')
        except ValueError as e:
            self.debug(type(e), e)
            self.assertEquals("Timecode string parsing error: '01:20:30:303'",
                              e.__str__())

        try:
            tc = pytimecode.PyTimeCode('ms', '01:20:30:3039')
        except ValueError as e:
            self.debug(type(e), e)
            self.assertEquals("Timecode string parsing error: '01:20:30:3039'",
                              e.__str__())

        try:
            tc = pytimecode.PyTimeCode('60', '01:20:30;30')
        except ValueError as e:
            self.debug(type(e), e)
            self.assertEquals(
                'Drop frame with 60fps not supported, only 29.97 & 59.94.',
                e.__str__())

        tc = pytimecode.PyTimeCode('29.97', '00:00:09;23')
        tc2 = 'bum'
        try:
            d = tc * tc2
        except ValueError as e:
            self.assertEquals(
                "Type <class 'str'> not supported for arithmetic.",
                e.__str__())

        tc = pytimecode.PyTimeCode('30', '00:00:09:23')
        tc2 = 'bum'
        try:
            d = tc + tc2
        except ValueError as e:
            self.assertEquals(
                "Type <class 'str'> not supported for arithmetic.",
                e.__str__())

        tc = pytimecode.PyTimeCode('24', '00:00:09:23')
        tc2 = 'bum'
        try:
            d = tc - tc2
        except ValueError as e:
            self.assertEquals(
                "Type <class 'str'> not supported for arithmetic.",
                e.__str__())

        tc = pytimecode.PyTimeCode('ms', '00:00:09:237')
        tc2 = 'bum'
        try:
            d = tc / tc2
        except (TypeError, ValueError) as e:
            self.assertEquals(
                "unsupported operand type(s) for /: 'PyTimeCode' and 'str'",
                e.__str__())

        tc1 = pytimecode.PyTimeCode('24', '00:00:00:00')
        tc2 = pytimecode.PyTimeCode('24', '00:00:00:00')
        self.assertTrue(tc1 == tc2)
        self.assertFalse(tc1 > tc2)
        self.assertTrue(tc1 >= tc2)
        self.assertFalse(tc1 < tc2)
        self.assertTrue(tc1 <= tc2)

        tc2 = pytimecode.PyTimeCode('24', '00:00:00:01')
        self.assertTrue(tc2 > tc1)
        self.assertTrue(tc1 < tc2)
        self.assertTrue(tc1 != tc2)

        tc2 = pytimecode.PyTimeCode('24', '01:00:00:00')
        self.assertTrue(tc2 > tc1)
        self.assertTrue(tc1 < tc2)
        self.assertTrue(tc1 != tc2)

        tc2 = pytimecode.PyTimeCode('24', '00:01:00:00')
        self.assertTrue(tc2 > tc1)
        self.assertTrue(tc1 < tc2)
        self.assertTrue(tc1 != tc2)

        tc2 = pytimecode.PyTimeCode('24', '00:00:01:00')
        self.assertTrue(tc2 > tc1)
        self.assertTrue(tc2 >= tc1)
        self.assertTrue(tc1 < tc2)
        self.assertTrue(tc1 <= tc2)
        self.assertTrue(tc1 != tc2)

        tc3 = pytimecode.PyTimeCode('25', '00:00:00:00')
        self.assertTrue(tc1 == tc3)

        tc3 = pytimecode.PyTimeCode('25', '00:00:00:01')
        tc4 = pytimecode.PyTimeCode('24', '00:00:00:01')
        self.assertTrue(tc3 < tc4)

        tc3 = pytimecode.PyTimeCode('25', '00:00:01:00')
        tc4 = pytimecode.PyTimeCode('24', '00:00:01:00')
        self.assertTrue(tc3 == tc4)
예제 #18
0
 def test_frame_to_tc(self):
     tc = pytimecode.PyTimeCode('29.97', '00:00:00:01', drop_frame=True)
     tc.frames_to_tc()
     print tc.hrs, tc.mins, tc.secs, tc.frs
     assert tc.hrs == 0
     assert tc.mins == 0
     assert tc.secs == 0
     assert tc.frs == 1
     assert tc.make_timecode() == '00:00:00:01'
     tc = pytimecode.PyTimeCode('29.97', '03:36:09:23', drop_frame=True)
     tc.frames_to_tc()
     print tc.hrs, tc.mins, tc.secs, tc.frs
     assert tc.hrs == 3
     assert tc.mins == 36
     assert tc.secs == 9
     assert tc.frs == 23
     tc = pytimecode.PyTimeCode('29.97', '03:36:09:23')
     print tc.hrs, tc.mins, tc.secs, tc.frs
     assert tc.hrs == 3
     assert tc.mins == 36
     assert tc.secs == 9
     assert tc.frs == 23
     tc = pytimecode.PyTimeCode('30', '03:36:09:23')
     print tc.hrs, tc.mins, tc.secs, tc.frs
     assert tc.hrs == 3
     assert tc.mins == 36
     assert tc.secs == 9
     assert tc.frs == 23
     tc = pytimecode.PyTimeCode('25', '03:36:09:23')
     print tc.hrs, tc.mins, tc.secs, tc.frs
     assert tc.hrs == 3
     assert tc.mins == 36
     assert tc.secs == 9
     assert tc.frs == 23
     tc = pytimecode.PyTimeCode('59.94', '03:36:09:23')
     print tc.hrs, tc.mins, tc.secs, tc.frs
     assert tc.hrs == 3
     assert tc.mins == 36
     assert tc.secs == 9
     assert tc.frs == 23
     tc = pytimecode.PyTimeCode('60', '03:36:09:23')
     print tc.hrs, tc.mins, tc.secs, tc.frs
     assert tc.hrs == 3
     assert tc.mins == 36
     assert tc.secs == 9
     assert tc.frs == 23
     tc = pytimecode.PyTimeCode('59.94', '03:36:09:23', drop_frame=True)
     print tc.hrs, tc.mins, tc.secs, tc.frs
     assert tc.hrs == 3
     assert tc.mins == 36
     assert tc.secs == 9
     assert tc.frs == 23
     tc = pytimecode.PyTimeCode('23.98', '03:36:09:23')
     print tc.hrs, tc.mins, tc.secs, tc.frs
     assert tc.hrs == 3
     assert tc.mins == 36
     assert tc.secs == 9
     assert tc.frs == 23
     tc = pytimecode.PyTimeCode('24', '03:36:09:23')
     print tc.hrs, tc.mins, tc.secs, tc.frs
     assert tc.hrs == 3
     assert tc.mins == 36
     assert tc.secs == 9
     assert tc.frs == 23
     tc = pytimecode.PyTimeCode('ms', '03:36:09:230')
     tc.frames_to_tc()
     print tc.hrs, tc.mins, tc.secs, tc.frs
     assert tc.hrs == 3
     assert tc.mins == 36
     assert tc.secs == 9
     assert tc.frs == 230
     tc = pytimecode.PyTimeCode('24', start_timecode=None, frames=12000)
     assert tc.make_timecode() == '00:08:20:00'
     assert tc.hrs == 0
     assert tc.mins == 8
     assert tc.secs == 20
     assert tc.frs == 0
예제 #19
0
 def test_timecode_init(self):
     tc = pytimecode.PyTimeCode('29.97', '00:00:00:01', drop_frame=True)
     assert tc.frames == 1
     tc = pytimecode.PyTimeCode('29.97', '03:36:09:23', drop_frame=True)
     assert tc.frames == 388703
     tc = pytimecode.PyTimeCode('29.97', '03:36:09:23')
     assert tc.frames == 389093
     tc = pytimecode.PyTimeCode('30', '03:36:09:23')
     assert tc.frames == 389093
     tc = pytimecode.PyTimeCode('25', '03:36:09:23')
     assert tc.frames == 324248
     tc = pytimecode.PyTimeCode('59.94', '03:36:09:23')
     assert tc.frames == 778163
     tc = pytimecode.PyTimeCode('60', '03:36:09:23')
     assert tc.frames == 778163
     tc = pytimecode.PyTimeCode('59.94', '03:36:09:23', drop_frame=True)
     assert tc.frames == 777383
     tc = pytimecode.PyTimeCode('23.98', '03:36:09:23')
     assert tc.frames == 311279
     tc = pytimecode.PyTimeCode('24', '03:36:09:23')
     assert tc.frames == 311279
     tc = pytimecode.PyTimeCode('ms', '03:36:09:230')
     assert tc.hrs == 3
     assert tc.mins == 36
     assert tc.secs == 9
     assert tc.frs == 230
     tc = pytimecode.PyTimeCode('24', start_timecode=None, frames=12000)
     assert tc.make_timecode() == '00:08:20:00'
     tc = pytimecode.PyTimeCode('29.97',
                                start_timecode=None,
                                frames=2589407,
                                drop_frame=True)
     assert tc.make_timecode() == '23:59:59:29'
     tc = pytimecode.PyTimeCode('29.97',
                                start_timecode=None,
                                frames=2589408,
                                drop_frame=True)
     assert tc.make_timecode() == '00:00:00:00'
     tc = pytimecode.PyTimeCode('59.94',
                                start_timecode=None,
                                frames=5178815,
                                drop_frame=True)
     assert tc.make_timecode() == '23:59:59:59'
     tc = pytimecode.PyTimeCode('59.94',
                                start_timecode=None,
                                frames=5178816,
                                drop_frame=True)
     assert tc.make_timecode() == '00:00:00:00'
예제 #20
0
 def test_exceptions(self):
     e = None
     try:
         tc = pytimecode.PyTimeCode('24', '01:20:30:303')
     except pytimecode.PyTimeCodeError as e:
         pass
     print type(e), e
     assert e.__str__() == 'Timecode string parsing error. 01:20:30:303'
     try:
         tc = pytimecode.PyTimeCode('23.98', '01:20:30:303')
     except pytimecode.PyTimeCodeError as e:
         pass
     print type(e), e
     assert e.__str__() == 'Timecode string parsing error. 01:20:30:303'
     try:
         tc = pytimecode.PyTimeCode('29.97', '01:20:30:303')
     except pytimecode.PyTimeCodeError as e:
         pass
     print type(e), e
     assert e.__str__() == 'Timecode string parsing error. 01:20:30:303'
     try:
         tc = pytimecode.PyTimeCode('30', '01:20:30:303')
     except pytimecode.PyTimeCodeError as e:
         pass
     print type(e), e
     assert e.__str__() == 'Timecode string parsing error. 01:20:30:303'
     try:
         tc = pytimecode.PyTimeCode('60', '01:20:30:303')
     except pytimecode.PyTimeCodeError as e:
         pass
     print type(e), e
     assert e.__str__() == 'Timecode string parsing error. 01:20:30:303'
     try:
         tc = pytimecode.PyTimeCode('59.94', '01:20:30:303')
     except pytimecode.PyTimeCodeError as e:
         pass
     print type(e), e
     assert e.__str__() == 'Timecode string parsing error. 01:20:30:303'
     try:
         tc = pytimecode.PyTimeCode('ms', '01:20:30:3039')
     except pytimecode.PyTimeCodeError as e:
         pass
     print type(e), e
     assert e.__str__() == 'Timecode string parsing error. 01:20:30:3039'
     try:
         tc = pytimecode.PyTimeCode('60', '01:20:30:30', drop_frame=True)
     except pytimecode.PyTimeCodeError as e:
         pass
     print type(e), e
     assert e.__str__(
     ) == 'Drop frame with 60fps not supported, only 29.97 & 59.94.'
     tc = pytimecode.PyTimeCode('29.97', '00:00:09:23', drop_frame=True)
     tc2 = 'bum'
     try:
         d = tc * tc2
     except pytimecode.PyTimeCodeError as e:
         pass
     assert e.__str__() == "Type <type 'str'> not supported for arithmetic."
     tc = pytimecode.PyTimeCode('30', '00:00:09:23')
     tc2 = 'bum'
     try:
         d = tc + tc2
     except pytimecode.PyTimeCodeError as e:
         pass
     assert e.__str__() == "Type <type 'str'> not supported for arithmetic."
     tc = pytimecode.PyTimeCode('24', '00:00:09:23')
     tc2 = 'bum'
     try:
         d = tc - tc2
     except pytimecode.PyTimeCodeError as e:
         pass
     assert e.__str__() == "Type <type 'str'> not supported for arithmetic."
     tc = pytimecode.PyTimeCode('ms', '00:00:09:237')
     tc2 = 'bum'
     try:
         d = tc / tc2
     except pytimecode.PyTimeCodeError as e:
         pass
     assert e.__str__() == "Type <type 'str'> not supported for arithmetic."
예제 #21
0
 def test_24_hour_limit(self):
     tc = pytimecode.PyTimeCode('24', '00:00:00:21')
     tc2 = pytimecode.PyTimeCode('24', '23:59:59:23')
     assert (tc + tc2).make_timecode() == '00:00:00:20'
     assert (tc2 + 159840001).make_timecode() == '02:00:00:00'
     tc = pytimecode.PyTimeCode('29.97', '00:00:00:21')
     tc2 = pytimecode.PyTimeCode('29.97', '23:59:59:29')
     print(tc + tc2).frames
     assert (tc + tc2).make_timecode() == '00:00:00:20'
     assert (tc2 + 18360001).make_timecode() == '02:00:00:00'
     tc = pytimecode.PyTimeCode('29.97', '00:00:00:01', drop_frame=True)
     tc2 = pytimecode.PyTimeCode('29.97', '23:59:59:29', drop_frame=True)
     tc3 = (tc2 + 21)
     print 'yp1', tc.frames, tc2.frames, tc3.frames, tc.make_timecode()
     assert tc3.make_timecode() == '00:00:00:20'
     tc = pytimecode.PyTimeCode('29.97', '00:00:00:21', drop_frame=True)
     tc2 = pytimecode.PyTimeCode('29.97', '23:59:59:29', drop_frame=True)
     tc3 = (tc + tc2)
     print 'yp2', tc.frames, tc2.frames, tc3.frames, tc.make_timecode()
     assert tc3.make_timecode() == '00:00:00:20'
     tc = pytimecode.PyTimeCode('29.97', '04:20:13:21', drop_frame=True)
     tc2 = pytimecode.PyTimeCode('29.97', '23:59:59:29', drop_frame=True)
     tc3 = (tc + tc2)
     print 'yp2', tc.frames, tc2.frames, tc3.frames, tc.make_timecode()
     assert tc3.make_timecode() == '04:20:13:20'
     tc = pytimecode.PyTimeCode('59.94', '04:20:13:21', drop_frame=True)
     tc2 = pytimecode.PyTimeCode('59.94', '23:59:59:59', drop_frame=True)
     tc3 = (tc + tc2)
     print 'yp2', tc.frames, tc2.frames, tc3.frames, tc.make_timecode()
     assert tc3.make_timecode() == '04:20:13:20'
예제 #22
0
 def test_op_overloads_mult(self):
     tc = pytimecode.PyTimeCode('29.97', '00:00:09:23', drop_frame=True)
     tc2 = pytimecode.PyTimeCode('29.97', '00:00:29:23', drop_frame=True)
     d = tc * tc2
     f = tc * 4
     print tc.frames, tc2.frames
     assert d.make_timecode() == "02:25:30:13"
     assert d.frames == 261651
     assert f.make_timecode() == "00:00:39:02"
     assert f.frames == 1172
     tc = pytimecode.PyTimeCode('29.97', '00:00:09:23')
     tc2 = pytimecode.PyTimeCode('29.97', '00:00:29:23')
     d = tc * tc2
     f = tc * 4
     assert d.make_timecode() == "02:25:21:19"
     assert d.frames == 261649
     assert f.make_timecode() == "00:00:39:02"
     assert f.frames == 1172
     tc = pytimecode.PyTimeCode('30', '03:36:09:23')
     tc2 = pytimecode.PyTimeCode('30', '00:00:29:23')
     d = tc * tc2
     f = tc * 893
     assert d.make_timecode() == "01:13:21:19"
     assert d.frames == 132049
     assert f.make_timecode() == "01:13:21:19"
     assert f.frames == 132049
     tc = pytimecode.PyTimeCode('25', '03:36:09:23')
     tc2 = pytimecode.PyTimeCode('25', '00:00:29:23')
     d = tc * tc2
     f = tc * 748
     assert d.make_timecode() == "06:51:40:04"
     assert d.frames == 617504
     assert f.make_timecode() == "06:51:40:04"
     assert f.frames == 617504
     tc = pytimecode.PyTimeCode('59.94', '03:36:09:23')
     tc2 = pytimecode.PyTimeCode('59.94', '00:00:29:23')
     d = tc * tc2
     f = tc * 1763
     assert d.make_timecode() == "15:23:42:49"
     assert d.frames == 3325369
     assert f.make_timecode() == "15:23:42:49"
     assert f.frames == 3325369
     tc = pytimecode.PyTimeCode('60', '03:36:09:23')
     tc2 = pytimecode.PyTimeCode('60', '00:00:29:23')
     d = tc * tc2
     f = tc * 1763
     assert d.make_timecode() == "15:23:42:49"
     assert d.frames == 3325369
     assert f.make_timecode() == "15:23:42:49"
     assert f.frames == 3325369
     tc = pytimecode.PyTimeCode('59.94', '03:36:09:23', drop_frame=True)
     tc2 = pytimecode.PyTimeCode('59.94', '00:00:29:23', drop_frame=True)
     d = tc * tc2
     f = tc * 1763
     assert d.make_timecode() == "15:22:25:57"
     assert d.frames == 3317437
     assert f.make_timecode() == "15:22:25:57"
     assert f.frames == 3317437
     tc = pytimecode.PyTimeCode('23.98', '03:36:09:23')
     tc2 = pytimecode.PyTimeCode('23.98', '00:00:29:23')
     d = tc * tc2
     f = tc * 719
     assert d.make_timecode() == "22:23:20:01"
     assert d.frames == 1934401
     assert f.make_timecode() == "22:23:20:01"
     assert f.frames == 1934401
     tc = pytimecode.PyTimeCode('24', '03:36:09:23')
     tc = pytimecode.PyTimeCode('23.98', '03:36:09:23')
     tc2 = pytimecode.PyTimeCode('23.98', '00:00:29:23')
     d = tc * tc2
     f = tc * 719
     assert d.make_timecode() == "22:23:20:01"
     assert d.frames == 1934401
     assert f.make_timecode() == "22:23:20:01"
     assert f.frames == 1934401
     tc = pytimecode.PyTimeCode('ms', '03:36:09:230')
     tc2 = pytimecode.PyTimeCode('ms', '01:06:09:230')
     d = tc * tc2
     f = tc * 719
     print tc.frames, tc2.frames, d.frames
     assert d.make_timecode() == "12:39:52:900"
     assert d.frames == 45592900
     assert f.make_timecode() == "22:14:36:370"
     assert f.frames == 80076370
     tc = pytimecode.PyTimeCode('24', start_timecode=None, frames=12000)
     tc2 = pytimecode.PyTimeCode('24', start_timecode=None, frames=485)
     d = tc * tc2
     f = tc * 719
     assert d.make_timecode() == "19:21:40:00"
     assert d.frames == 1672800
     assert f.make_timecode() == "03:51:40:00"
     assert f.frames == 333600
예제 #23
0
    def test_frame_to_tc(self):
        tc = pytimecode.PyTimeCode('29.97', '00:00:00;01')
        tc.frames_to_tc()
        self.debug(tc.hrs, tc.mins, tc.secs, tc.frs)
        self.assertEquals(0, tc.hrs)
        self.assertEquals(0, tc.mins)
        self.assertEquals(0, tc.secs)
        self.assertEquals(1, tc.frs)
        self.assertEquals('00:00:00;01', tc.make_timecode())

        tc = pytimecode.PyTimeCode('29.97', '03:36:09;23')
        tc.frames_to_tc()
        self.debug(tc.hrs, tc.mins, tc.secs, tc.frs)
        self.assertEquals(3, tc.hrs)
        self.assertEquals(36, tc.mins)
        self.assertEquals(9, tc.secs)
        self.assertEquals(23, tc.frs)

        tc = pytimecode.PyTimeCode('29.97', '03:36:09:23')
        self.debug(tc.hrs, tc.mins, tc.secs, tc.frs)
        self.assertEquals(3, tc.hrs)
        self.assertEquals(36, tc.mins)
        self.assertEquals(9, tc.secs)
        self.assertEquals(23, tc.frs)

        tc = pytimecode.PyTimeCode('30', '03:36:09:23')
        self.debug(tc.hrs, tc.mins, tc.secs, tc.frs)
        self.assertEquals(3, tc.hrs)
        self.assertEquals(36, tc.mins)
        self.assertEquals(9, tc.secs)
        self.assertEquals(23, tc.frs)

        tc = pytimecode.PyTimeCode('25', '03:36:09:23')
        self.debug(tc.hrs, tc.mins, tc.secs, tc.frs)
        self.assertEquals(3, tc.hrs)
        self.assertEquals(36, tc.mins)
        self.assertEquals(9, tc.secs)
        self.assertEquals(23, tc.frs)

        tc = pytimecode.PyTimeCode('59.94', '03:36:09:23')
        self.debug(tc.hrs, tc.mins, tc.secs, tc.frs)
        self.assertEquals(3, tc.hrs)
        self.assertEquals(36, tc.mins)
        self.assertEquals(9, tc.secs)
        self.assertEquals(23, tc.frs)

        tc = pytimecode.PyTimeCode('60', '03:36:09:23')
        self.debug(tc.hrs, tc.mins, tc.secs, tc.frs)
        self.assertEquals(3, tc.hrs)
        self.assertEquals(36, tc.mins)
        self.assertEquals(9, tc.secs)
        self.assertEquals(23, tc.frs)

        tc = pytimecode.PyTimeCode('59.94', '03:36:09;23')
        self.debug(tc.hrs, tc.mins, tc.secs, tc.frs)
        self.assertEquals(3, tc.hrs)
        self.assertEquals(36, tc.mins)
        self.assertEquals(9, tc.secs)
        self.assertEquals(23, tc.frs)

        tc = pytimecode.PyTimeCode('23.98', '03:36:09:23')
        self.debug(tc.hrs, tc.mins, tc.secs, tc.frs)
        self.assertEquals(3, tc.hrs)
        self.assertEquals(36, tc.mins)
        self.assertEquals(9, tc.secs)
        self.assertEquals(23, tc.frs)

        tc = pytimecode.PyTimeCode('24', '03:36:09:23')
        self.debug(tc.hrs, tc.mins, tc.secs, tc.frs)
        self.assertEquals(3, tc.hrs)
        self.assertEquals(36, tc.mins)
        self.assertEquals(9, tc.secs)
        self.assertEquals(23, tc.frs)

        tc = pytimecode.PyTimeCode('ms', '03:36:09:230')
        tc.frames_to_tc()
        self.debug(tc.hrs, tc.mins, tc.secs, tc.frs)
        self.assertEquals(3, tc.hrs)
        self.assertEquals(36, tc.mins)
        self.assertEquals(9, tc.secs)
        self.assertEquals(230, tc.frs)

        tc = pytimecode.PyTimeCode('24', start_timecode=None, frames=12000)
        self.assertEquals('00:08:20:00', tc.make_timecode())
        self.assertEquals(0, tc.hrs)
        self.assertEquals(8, tc.mins)
        self.assertEquals(20, tc.secs)
        self.assertEquals(0, tc.frs)
예제 #24
0
    def test_iteration(self):
        tc = pytimecode.PyTimeCode('29.97', '03:36:09;23')  # 388703 fr
        # self.debug(tc.frames)
        for x in range(60):
            t = tc.next()
            assert t
        self.assertTrue(tc.drop_frame)
        self.assertEquals("03:36:11;23",
                          t)  # 388767     (03:36:11;23 -> 388763 fr)
        self.assertEquals(388763, tc.frames)  # +4 fr

        tc = pytimecode.PyTimeCode('29.97', '03:36:09:23')  # 389093 fr
        for x in range(60):
            t = tc.next()
            assert t
        self.assertEquals("03:36:11:23", t)
        self.assertEquals(389153, tc.frames)

        tc = pytimecode.PyTimeCode('30', '03:36:09:23')
        for x in range(60):
            t = tc.next()
            assert t
        self.assertEquals("03:36:11:23", t)
        self.assertEquals(389153, tc.frames)

        tc = pytimecode.PyTimeCode('25', '03:36:09:23')
        for x in range(60):
            t = tc.next()
            assert t
        self.assertEquals("03:36:12:08", t)
        self.assertEquals(324308, tc.frames)

        tc = pytimecode.PyTimeCode('59.94', '03:36:09:23')
        for x in range(60):
            t = tc.next()
            assert t
        self.assertEquals("03:36:10:23", t)
        self.assertEquals(778223, tc.frames)

        tc = pytimecode.PyTimeCode('60', '03:36:09:23')
        for x in range(60):
            t = tc.next()
            assert t
        self.assertEquals("03:36:10:23", t)
        self.assertEquals(778223, tc.frames)

        tc = pytimecode.PyTimeCode('59.94', '03:36:09;23')
        for x in range(60):
            t = tc.next()
            assert t
        self.assertEquals("03:36:10;23", t)
        self.assertEquals(777443, tc.frames)

        tc = pytimecode.PyTimeCode('23.98', '03:36:09:23')
        for x in range(60):
            t = tc.next()
            assert t
        self.assertEquals("03:36:12:11", t)
        self.assertEquals(311339, tc.frames)

        tc = pytimecode.PyTimeCode('24', '03:36:09:23')
        for x in range(60):
            t = tc.next()
            assert t
        self.assertEquals("03:36:12:11", t)
        self.assertEquals(311339, tc.frames)

        tc = pytimecode.PyTimeCode('ms', '03:36:09:230')
        for x in range(60):
            t = tc.next()
            assert t
        self.assertEquals('03:36:09.290', t)
        self.assertEquals(12969290, tc.frames)

        tc = pytimecode.PyTimeCode('24', start_timecode=None, frames=12000)
        for x in range(60):
            t = tc.next()
            assert t
        self.assertEquals("00:08:22:12", t)
        self.assertEquals(12060, tc.frames)
예제 #25
0
파일: edl.py 프로젝트: DIT-Tools/python-edl
 def __init__(self, reel, fps, tc):
     self.reverse = False
     self.reel = reel
     self.fps = float(fps)
     self.timecode = pytimecode.PyTimeCode(25)
     self.timecode.set_timecode(tc)
예제 #26
0
 def test_iteration(self):
     tc = pytimecode.PyTimeCode('29.97', '03:36:09:23', drop_frame=True)
     for x in range(60):
         t = tc.next()
         assert t
     assert t == "03:36:11:27"
     assert tc.frames == 388767
     tc = pytimecode.PyTimeCode('29.97', '03:36:09:23')
     for x in range(60):
         t = tc.next()
         assert t
     assert t == "03:36:11:23"
     assert tc.frames == 389153
     tc = pytimecode.PyTimeCode('30', '03:36:09:23')
     for x in range(60):
         t = tc.next()
         assert t
     assert t == "03:36:11:23"
     assert tc.frames == 389153
     tc = pytimecode.PyTimeCode('25', '03:36:09:23')
     for x in range(60):
         t = tc.next()
         assert t
     assert t == "03:36:12:08"
     assert tc.frames == 324308
     tc = pytimecode.PyTimeCode('59.94', '03:36:09:23')
     for x in range(60):
         t = tc.next()
         assert t
     assert t == "03:36:10:23"
     assert tc.frames == 778223
     tc = pytimecode.PyTimeCode('60', '03:36:09:23')
     for x in range(60):
         t = tc.next()
         assert t
     assert t == "03:36:10:23"
     assert tc.frames == 778223
     tc = pytimecode.PyTimeCode('59.94', '03:36:09:23', drop_frame=True)
     for x in range(60):
         t = tc.next()
         assert t
     assert t == "03:36:10:27"
     assert tc.frames == 777447
     tc = pytimecode.PyTimeCode('23.98', '03:36:09:23')
     for x in range(60):
         t = tc.next()
         assert t
     assert t == "03:36:12:11"
     assert tc.frames == 311339
     tc = pytimecode.PyTimeCode('24', '03:36:09:23')
     for x in range(60):
         t = tc.next()
         assert t
     assert t == "03:36:12:11"
     assert tc.frames == 311339
     tc = pytimecode.PyTimeCode('ms', '03:36:09:230')
     for x in range(60):
         t = tc.next()
         assert t
     assert t == '03:36:09:290'
     assert tc.frames == 12969290
     tc = pytimecode.PyTimeCode('24', start_timecode=None, frames=12000)
     for x in range(60):
         t = tc.next()
         assert t
     assert t == "00:08:22:12"
     assert tc.frames == 12060