Added footage decode featue

This commit is contained in:
Jamie Hardt
2022-11-04 13:19:08 -07:00
parent a7b5adfffb
commit 8e043b7175
2 changed files with 19 additions and 6 deletions

View File

@@ -1,20 +1,18 @@
from fractions import Fraction
import re
import math
from collections import namedtuple
from typing import Optional
def footage_to_seconds(footage: str) -> Optional[Fraction]:
m = re.match(r'(\d+)\+(\d+)(\.\d+)?')
m = re.match(r'(\d+)\+(\d+)(\.\d+)?', footage)
if m is None:
return None
feet, frames = m.groups()
feet, frames, _ = m.groups()
feet, frames = int(feet), int(frames)
fps = 24
frames_per_foot = 16
total_frames = feet * 16 + frames
total_frames = feet * frames_per_foot + frames
return Fraction(total_frames, fps)
return Fraction(total_frames, fps)

View File

@@ -0,0 +1,15 @@
import unittest
from ptulsconv import footage
class TestFootage(unittest.TestCase):
def test_basic_footage(self):
r1 = "90+0"
f1 = footage.footage_to_seconds(r1)
self.assertEqual(float(f1 or 0), 60.0)
def test_feet_and_frames(self):
r1 = "1+8"
f1 = footage.footage_to_seconds(r1)
self.assertEqual(float(f1 or 0), 1.0)