Changelog

Versions follow Calendar Versioning with the YYYY.M.D scheme.

2026.1.18

  • Make the --yt-dlp option default after (#37)

2026.1.16

  • Build Windows binary with the recent yt-dlp version

2026.1.2

  • Fix incorrect live stream end detection (#36)

2025.12.15

  • Allow now in date and time arithmetic (#34)

2024.12.23

  • Allow date and time arithmetic for dates in --interval (#30)

2024.9.9

  • Build Windows binary without --noconsole that caused no output in console

2024.9.8

  • Fix incorrect base URLs handling after redirects while retrying

  • Make sure fresh base URLs are used after retry everywhere

  • Wait between retries and use simple backoff strategy

2024.6.13

  • Implement the format spec mini-language

  • Add the -xx option to dry run until segment locating

  • Add the short -C option for --config

  • Print a notice message if input point hits a stream gap

2024.5.30

  • Make cutting non-default behavior and add the -c / --cut option

  • Start using Jinja templates for output path templates

  • Accept long option names for default option values in the config file

  • Change the format of composed MPEG-DASH MPDs from compact to full (#12)

  • Remove --from-playback from ytpb download

  • Rename -X / --dry-run to -x / --dry-run

  • Rename --segments-output-dir to -s / --segments-output-dir

2024.5.12

  • Add Windows support (#11)

  • Fix not cutting issue introduced in v2024.5.3 (b0e4f3d)

  • Replace all ffprobe calls to av’s function calls

  • Move ytpb.ffmpeg to ytpb.utils.ffmpeg

  • Add CI workflows to create test expectation files, build Windows binaries, publish on PyPI, and draft a GitHub release

  • Run CI tests on Linux, MacOS, and Windows

  • Start using dynamic versioning via hatch-vcs

  • Convert CHANGELOG from ReST to Markdown format

  • Apply patches from files in Containerfile to avoid merge conflicts

2024.5.3

  • Add support for resumable downloads (#13)

  • Change the segments output directory from the run temporary directory to a directory under the current working one

  • Add --ignore-resume, -S / --keep-segments, and --segments-output-dir options

  • Change the default output path to <title>_<id>_<input_start_date>

  • Rename the --no-cleanup option to --keep-temp

  • Replace the --preview option with --preview-start and --preview-end

2024.4.20

  • Fix wrong frame rate values of the video-only merged files when boundary segments are cut and encoded with H.264 (e1120bf)

  • Write metadata tags with basic and rewind information to merged files (aa7adf1)

  • Add the --no-metadata option to not write metadata tags to merged files

2024.4.12

  • Add the Python package page with the basic usage and API reference

  • Add the --version CLI option to show version number

  • Add ytpb.representations.RepresentationInfo.type property

  • Add ytpb.playback.RewindInterval.duration and ytpb.playback.RewindInterval.sequences properties

  • Accept Unix timestamps for moments and intervals (b7dcbaf)

  • Add ytpb.playback.RewindTreeMap to keep rewind history (91fd078)

Breaking changes

  • Rename ytpb.mpd to ytpb.representations

  • Rename ytpb.exceptions to ytpb.errors

  • Rename ytpb.playback.Playback.get_downloaded_segment to ytpb.playback.Playback.get_segment

  • Rename ytpb.representations.extract_representations_info to ytpb.representations.extract_representations

  • Remove unused ytpb.representations.strip_manifest

2024.3.27

  • Add Containerfile with instructions to build patched FFmpeg and MPV

Breaking changes

  • Change return value of ytpb.locate.SegmentLocator.find_sequence_by_time to ytpb.locate.LocateResult

2024.3.16

  • Add options to dump base (--dump-base-urls) and segment (--dump-segment-urls) URLs to the download command (#10)

  • Add the Cookbook documentation page

2024.3.13

  • Add the config.toml.example file

  • Add ability to use custom aliases in format specs

  • Add aliases for itags (@<itag>) as dynamic aliases

  • Fix allowing empty representations in the CLI commands

2024.3.9

  • Add the CHANGELOG file and documentation page

  • Change the first segment locating step: don’t limit it to two jumps (#8)