Files
ptulsconv/ptulsconv/footage.py
Jamie Hardt fd02d962d0 flake8
2023-07-21 13:45:47 -07:00

31 lines
754 B
Python

"""
Methods for converting string reprentations of film footage.
"""
from fractions import Fraction
import re
from typing import Optional
def footage_to_seconds(footage: str) -> Optional[Fraction]:
"""
Converts a string representation of a footage (35mm, 24fps)
into a :class:`Fraction`, this fraction being a some number of
seconds.
:param footage: A string reprenentation of a footage of the form
resembling "90+01".
"""
m = re.match(r'(\d+)\+(\d+)(\.\d+)?', footage)
if m is None:
return None
feet, frames, _ = m.groups()
feet, frames = int(feet), int(frames)
fps = 24
frames_per_foot = 16
total_frames = feet * frames_per_foot + frames
return Fraction(total_frames, fps)