Source code for discopat.core.entities.movie

from __future__ import annotations

from typing_extensions import Self

from discopat.core.entities.annotation import Track
from discopat.core.entities.frame import Frame
from discopat.core.entities.metadata import Metadata


[docs] class Movie(Metadata): def __init__(self, name: str, frames: list[Frame], tracks: list[Track]): self.name = name self.frames = frames self.tracks = tracks
[docs] @classmethod def printable_fields(cls) -> list[str]: return ["name", "frames", "tracks"]
[docs] def to_dict(self) -> dict: output = super().to_dict() output["frames"] = [frame.to_dict() for frame in self.frames] output["tracks"] = [track.to_dict() for track in self.tracks] return output
[docs] @classmethod def from_dict(cls, data_as_dict: dict) -> Self: return cls( name=data_as_dict["name"], frames=[ Frame.from_dict(frame_as_dict) for frame_as_dict in data_as_dict["frames"] ], tracks=[ Track.from_dict(track_as_dict) for track_as_dict in data_as_dict["tracks"] ], )
def __len__(self): return len(self.frames)