Skip to content

Commit 6ae6bad

Browse files
committed
[yt-dlp] Update to 2026.01.29
* Closes: #15342 * Extend `_InfoDict` TypedDict based on `InfoExtractor` docstring ([see source](https://github.com/yt-dlp/yt-dlp/blob/bf5d8c2a663ac690711262aebc733c1b06a54b26/yt_dlp/extractor/common.py#L124))
1 parent c79275d commit 6ae6bad

File tree

3 files changed

+91
-14
lines changed

3 files changed

+91
-14
lines changed

stubs/yt-dlp/METADATA.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
version = "2025.12.08"
1+
version = "2026.01.29"
22
upstream_repository = "https://github.com/yt-dlp/yt-dlp"
33
requires = ["websockets"]

stubs/yt-dlp/yt_dlp/extractor/common.pyi

Lines changed: 89 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import re
2-
from _typeshed import Unused
2+
from _typeshed import Incomplete, Unused
33
from collections.abc import Callable, Collection, Iterable, Iterator, Mapping, Sequence
44
from functools import cached_property
55
from json.decoder import JSONDecoder
@@ -17,22 +17,99 @@ from ..YoutubeDL import YoutubeDL
1717

1818
@type_check_only
1919
class _InfoDict(TypedDict, total=False):
20-
age_limit: int
21-
availability: Literal["private", "premium_only", "subscriber_only", "needs_auth", "unlisted", "public"] | None
20+
id: Required[str]
21+
title: str | None
22+
formats: list[dict[str, Any]] | None
2223
available_at: int
23-
creator: str | None
24-
comment_count: int | None
24+
url: str | None
25+
ext: str | None
26+
format: str | None
27+
player_url: str | None
28+
direct: bool | None
29+
alt_title: str | None
30+
display_id: Incomplete
31+
thumbnails: list[dict[str, Incomplete]] | None
32+
thumbnail: str | None
33+
description: str | None
34+
uploader: str | None
35+
license: str | None
36+
creators: list[str] | None
37+
timestamp: int | float | None
38+
upload_date: Incomplete
39+
release_timestamp: Incomplete
40+
release_date: Incomplete
41+
release_year: Incomplete
42+
modified_timestamp: Incomplete
43+
modified_date: Incomplete
44+
uploader_id: Incomplete
45+
uploader_url: str | None
46+
channel: str | None
47+
channel_id: Incomplete
48+
channel_url: str | None
49+
channel_follower_count: int | None
50+
channel_is_verified: Incomplete
51+
location: Incomplete
52+
subtitles: Incomplete
53+
automatic_captions: Incomplete
2554
duration: int | None
26-
formats: list[dict[str, Any]] | None
27-
id: Required[str]
55+
view_count: int | None
56+
concurrent_view_count: int | None
57+
save_count: int | None
2858
like_count: int | None
59+
dislike_count: int | None
60+
repost_count: int | None
61+
average_rating: Incomplete
62+
comment_count: int | None
63+
comments: Incomplete
64+
age_limit: int
65+
webpage_url: str | None
66+
categories: list[str] | None
2967
tags: list[str] | None
30-
thumbnail: str | None
31-
timestamp: int | float | None
32-
title: str | None
33-
uploader: str | None
34-
url: str | None
68+
cast: list[Incomplete] | None
69+
is_live: bool | None
70+
was_live: bool | None
71+
live_status: Literal["is_live", "is_upcoming", "was_live", "not_live", "post_live"] | None
72+
start_time: Incomplete
73+
end_time: Incomplete
74+
chapters: Incomplete
75+
heatmap: Incomplete
76+
playable_in_embed: bool | str | None
77+
availability: Literal["private", "premium_only", "subscriber_only", "needs_auth", "unlisted", "public"] | None
78+
media_type: str | None
79+
_old_archive_ids: Incomplete
80+
_format_sort_fields: Incomplete
81+
chapter: str | None
82+
chapter_number: int | None
83+
chapter_id: str | None
84+
series: str | None
85+
series_id: str | None
86+
season: str | None
87+
season_number: int | None
88+
season_id: str | None
89+
episode: Incomplete
90+
episode_number: int | None
91+
episode_id: str | None
92+
track: str | None
93+
track_number: int | None
94+
track_id: str | None
95+
artists: list[str] | None
96+
composers: list[str] | None
97+
genres: list[str] | None
98+
album: str | None
99+
album_type: str | None
100+
album_artists: list[str] | None
101+
disc_number: int | None
102+
section_start: Incomplete
103+
section_end: Incomplete
104+
rows: int | None
105+
columns: int | None
35106
requested_formats: Iterable[_InfoDict]
107+
# deprecated fields:
108+
composer: Incomplete
109+
artist: Incomplete
110+
genre: Incomplete
111+
album_artist: Incomplete
112+
creator: str | None
36113

37114
_StrNoDefaultOrNone: TypeAlias = str | None | type[NO_DEFAULT]
38115
_T = TypeVar("_T")

stubs/yt-dlp/yt_dlp/utils/_utils.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ def extract_timezone(date_str: str, default: Any = None) -> tuple[timedelta, str
274274
def parse_iso8601(date_str: str, delimiter: str = "T", timezone: type[NO_DEFAULT] | Any | None = None) -> int: ...
275275
def date_formats(day_first: bool = True) -> list[str]: ...
276276
def unified_strdate(date_str: str, day_first: bool = True) -> str: ...
277-
def unified_timestamp(date_str: str, day_first: bool = True) -> int: ...
277+
def unified_timestamp(date_str: str, day_first: bool = True, tz_offset: float = 0) -> int: ...
278278
def determine_ext(url: str, default_ext: str = "unknown_video") -> str: ...
279279
def subtitles_filename(filename: str, sub_lang: str, sub_format: str, expected_real_ext: str | None = None) -> str: ...
280280
def datetime_from_str(date_str: str, precision: str = "auto", format: str = "%Y%m%d") -> datetime: ...

0 commit comments

Comments
 (0)