Compare commits

..

2 Commits

Author SHA1 Message Date
3fe1faa18e Update changelog 2024-05-19 09:11:45 +02:00
a99a472ad3 add quotes to gql query 2024-05-19 09:09:02 +02:00
6 changed files with 29 additions and 10 deletions

View File

@ -3,6 +3,10 @@ twitch-dl changelog
<!-- Do not edit. This file is automatically generated from changelog.yaml.-->
### [2.3.1 (2024-05-19)](https://github.com/ihabunek/twitch-dl/releases/tag/2.3.1)
* Fix fetching access token (#155, thanks @KryptonicDragon)
### [2.3.0 (2024-04-27)](https://github.com/ihabunek/twitch-dl/releases/tag/2.3.0)
* Show more playlist data when choosing quality

View File

@ -1,3 +1,8 @@
2.3.1:
date: 2024-05-19
changes:
- "Fix fetching access token (#155, thanks @KryptonicDragon)"
2.3.0:
date: 2024-04-27
changes:

View File

@ -3,6 +3,10 @@ twitch-dl changelog
<!-- Do not edit. This file is automatically generated from changelog.yaml.-->
### [2.3.1 (2024-05-19)](https://github.com/ihabunek/twitch-dl/releases/tag/2.3.1)
* Fix fetching access token (#155, thanks @KryptonicDragon)
### [2.3.0 (2024-04-27)](https://github.com/ihabunek/twitch-dl/releases/tag/2.3.0)
* Show more playlist data when choosing quality

View File

@ -282,8 +282,7 @@ def _download_video(video_id: str, args: DownloadOptions) -> None:
return
base_uri = re.sub("/[^/]+$", "/", playlist.url)
target_dir = f".twitch_dl_{video_id}_{playlist.group_id}"
os.makedirs(target_dir, exist_ok=True)
target_dir = _crete_temp_dir(base_uri)
# Save playlists for debugging purposes
with open(path.join(target_dir, "playlists.m3u8"), "w") as f:
@ -297,7 +296,7 @@ def _download_video(video_id: str, args: DownloadOptions) -> None:
targets = [os.path.join(target_dir, f"{vod.index:05d}.ts") for vod in vods]
asyncio.run(download_all(sources, targets, args.max_workers, rate_limit=args.rate_limit))
join_playlist = make_join_playlist(vods, targets)
join_playlist = make_join_playlist(vods_m3u8, vods, targets)
join_playlist_path = path.join(target_dir, "playlist_downloaded.m3u8")
join_playlist.dump(join_playlist_path) # type: ignore
click.echo()

View File

@ -3,8 +3,7 @@ Parse and manipulate m3u8 playlists.
"""
from dataclasses import dataclass
from os.path import basename
from typing import Generator, List, Optional
from typing import Generator, List, Optional, OrderedDict
import click
import m3u8
@ -79,15 +78,23 @@ def enumerate_vods(
return vods
def make_join_playlist(vods: List[Vod], targets: List[str]) -> m3u8.Playlist:
def make_join_playlist(
playlist: m3u8.M3U8,
vods: List[Vod],
targets: List[str],
) -> m3u8.Playlist:
"""
Make a modified playlist which references downloaded VODs
Keep only the downloaded segments and skip the rest
"""
playlist = m3u8.M3U8()
org_segments = playlist.segments.copy()
for vod, target in zip(vods, targets):
playlist.add_segment(m3u8.Segment(uri=basename(target), duration=vod.duration))
path_map = OrderedDict(zip([v.path for v in vods], targets))
playlist.segments.clear()
for segment in org_segments:
if segment.uri in path_map:
segment.uri = path_map[segment.uri]
playlist.segments.append(segment)
return playlist

View File

@ -422,7 +422,7 @@ def get_access_token(video_id: str, auth_token: Optional[str] = None) -> AccessT
query = f"""
{{
videoPlaybackAccessToken(
id: {video_id},
id: "{video_id}",
params: {{
platform: "web",
playerBackend: "mediaplayer",