Source code for pylav.nodes.api.responses.plugins.sponsorblock
from __future__ import annotations
import dataclasses
from typing import Literal
from pylav.nodes.api.responses.websocket import Message
__all__ = ("Segment", "SegmentsLoaded", "SegmentSkipped")
[docs]
@dataclasses.dataclass(repr=True, frozen=True, kw_only=True, slots=True)
class Segment:
category: str
start: str
end: str
[docs]
@dataclasses.dataclass(repr=True, frozen=True, kw_only=True, slots=True)
class SegmentsLoaded(Message):
op: Literal["event"] = "event"
guildId: str | None = None
type: Literal["SegmentsLoaded"] = "SegmentsLoaded"
segments: list[Segment | dict] = dataclasses.field(default_factory=list)
def __post_init__(self) -> None:
temp = []
for s in self.segments:
if isinstance(s, Segment) or (isinstance(s, dict) and (s := Segment(**s))):
temp.append(s)
object.__setattr__(self, "segments", temp)
[docs]
@dataclasses.dataclass(repr=True, frozen=True, kw_only=True, slots=True)
class SegmentSkipped(Message):
op: Literal["event"] = "event"
guildId: str | None = None
type: Literal["SegmentSkipped"] = "SegmentSkipped"
segment: Segment | dict = dataclasses.field(default_factory=dict)
def __post_init__(self) -> None:
if isinstance(self.segment, dict):
object.__setattr__(self, "segment", Segment(**self.segment))