Move entities to entites.py

This commit is contained in:
Ivan Habunek 2024-08-24 20:16:22 +02:00
parent 52b96aab15
commit 141ecb7f29
No known key found for this signature in database
GPG Key ID: 01DB3DD0D824504C
3 changed files with 81 additions and 70 deletions

View File

@ -1,5 +1,5 @@
from dataclasses import dataclass from dataclasses import dataclass
from typing import Any, Mapping, Optional from typing import Any, List, Literal, Mapping, Optional, TypedDict
@dataclass @dataclass
@ -20,6 +20,73 @@ class DownloadOptions:
max_workers: int max_workers: int
ClipsPeriod = Literal["last_day", "last_week", "last_month", "all_time"]
VideosSort = Literal["views", "time"]
VideosType = Literal["archive", "highlight", "upload"]
class AccessToken(TypedDict):
signature: str
value: str
class User(TypedDict):
login: str
displayName: str
class Game(TypedDict):
id: str
name: str
class VideoQuality(TypedDict):
frameRate: str
quality: str
sourceURL: str
class ClipAccessToken(TypedDict):
id: str
playbackAccessToken: AccessToken
videoQualities: List[VideoQuality]
class Clip(TypedDict):
id: str
slug: str
title: str
createdAt: str
viewCount: int
durationSeconds: int
url: str
videoQualities: List[VideoQuality]
game: Game
broadcaster: User
class Video(TypedDict):
id: str
title: str
description: str
publishedAt: str
broadcastType: str
lengthSeconds: int
game: Game
creator: User
class Chapter(TypedDict):
id: str
durationMilliseconds: int
positionMilliseconds: int
type: str
description: str
subDescription: str
thumbnailURL: str
game: Game
# Type for annotating decoded JSON # Type for annotating decoded JSON
# TODO: make data classes for common structs # TODO: make data classes for common structs
Data = Mapping[str, Any] Data = Mapping[str, Any]

View File

@ -6,7 +6,7 @@ from typing import Any, Callable, Generator, List, Optional, TypeVar
import click import click
from twitchdl import utils from twitchdl import utils
from twitchdl.twitch import Clip, Video from twitchdl.entities import Clip, Video
T = TypeVar("T") T = TypeVar("T")

View File

@ -4,81 +4,25 @@ Twitch API access.
import logging import logging
import time import time
from typing import Any, Dict, Generator, List, Literal, Mapping, Optional, Tuple, TypedDict, Union from typing import Any, Dict, Generator, List, Mapping, Optional, Tuple, Union
import click import click
import httpx import httpx
from twitchdl import CLIENT_ID from twitchdl import CLIENT_ID
from twitchdl.entities import Data from twitchdl.entities import (
AccessToken,
Chapter,
Clip,
ClipAccessToken,
ClipsPeriod,
Data,
Video,
VideosSort,
VideosType,
)
from twitchdl.exceptions import ConsoleError from twitchdl.exceptions import ConsoleError
ClipsPeriod = Literal["last_day", "last_week", "last_month", "all_time"]
VideosSort = Literal["views", "time"]
VideosType = Literal["archive", "highlight", "upload"]
class AccessToken(TypedDict):
signature: str
value: str
class User(TypedDict):
login: str
displayName: str
class Game(TypedDict):
id: str
name: str
class VideoQuality(TypedDict):
frameRate: str
quality: str
sourceURL: str
class ClipAccessToken(TypedDict):
id: str
playbackAccessToken: AccessToken
videoQualities: List[VideoQuality]
class Clip(TypedDict):
id: str
slug: str
title: str
createdAt: str
viewCount: int
durationSeconds: int
url: str
videoQualities: List[VideoQuality]
game: Game
broadcaster: User
class Video(TypedDict):
id: str
title: str
description: str
publishedAt: str
broadcastType: str
lengthSeconds: int
game: Game
creator: User
class Chapter(TypedDict):
id: str
durationMilliseconds: int
positionMilliseconds: int
type: str
description: str
subDescription: str
thumbnailURL: str
game: Game
class GQLError(click.ClickException): class GQLError(click.ClickException):
def __init__(self, errors: List[str]): def __init__(self, errors: List[str]):