All Versions
64
Latest Version
Avg Release Cycle
20 days
Latest Release
-

Changelog History
Page 2

  • v5.0.5

    • ๐Ÿ›  Fixed an issue where sometimes the content length of a stream was equal to 1 due to an error in parsing.
    • ๐Ÿ›  Fixed an issue where an exception was thrown on videos that contained unplayable media streams. These streams are now ignored.
    • ๐Ÿ›  Fixed an issue where trying to get stream manifest on 360ยฐ videos resulted in an exception.
    • ๐Ÿ›  Fixed an issue where Engagement.ToString() was incorrectly formatting likes and dislikes. (Thanks @bcook254)
  • v5.0.4

    • ๐Ÿ›  Fixed an issue where the search query was not correctly escaped in SearchClient. (Thanks @Calle)
    • ๐Ÿ›  Fixed an issue where an exception "The given key was not present in the dictionary" was thrown when trying to get streams for some videos, due to recent YouTube changes.
  • v5.0.3

    • ๐Ÿ›  Fixed an issue where streams couldn't be extracted for some videos.
  • v5.0.2

    • โž• Added TryParse static method to ChannelId, UserName, PlaylistId, VideoId objects.
    • โž• Added an extension method to make it simpler to buffer an asynchronous list of videos in-memory. You can now do var videos = await youtube.Playlist.GetVideosAsync(...) on top of enumerating it with await foreach. The readme has been updated with new usage examples.
    • ๐Ÿ‘ป Simplified exception messages.
  • v5.0.1

    • Extended ClosedCaption with Parts property that contains separate parts of a caption, along with their individual timings. Note that not all tracks contain this information.
    • ๐Ÿ›  Fixed an issue where searching for videos sometimes failed with an exception.
    • โž• Added missing operators for FileSize, Bitrate, Framerate, VideoResolution, Container, Language, VideoId, PlaylistId, ChannelId, UserName.
  • v5.0

    • Reworked the entire library from the ground up.
    • ๐Ÿ“œ Video, playlist, channel IDs and usernames are now encapsulated in corresponding domain objects. This means that you no longer have to parse IDs manually -- e.g. if a method accepts a parameter of type VideoId, you can either specify an ID (bnsUkE8i0tU) or a URL (https://youtube.com/watch?v=bnsUkE8i0tU).
    • Playlist videos and search results are now returned as IAsyncEnumerable so you can enumerate through them without worrying about making too many or too few requests. If you want to buffer them in-memory, you can use an extension method called BufferAsync().
    • ๐Ÿ‘Œ Improved exceptions, exception messages, and everything related to exceptions. Additionally, all exception types now derive from YoutubeExplodeException, making them easier to catch.
    • โž• Added built-in retry mechanisms to work around transient errors on YouTube's side.
    • ๐Ÿ‘Œ Improved resilience of the library in general.
    • ๐Ÿ›  Fixed an issue where attempts to download some videos were periodically causing 403 Forbidden.
    • ๐Ÿ›  Fixed a metric ton of YouTube-related issues.
    • Many, many others improvements that I didn't think to mention.
    • โฌ‡๏ธ Dropped .NET Framework v4.5 target in favor of v4.6.1 and .NET Standard v1.1 target in favor of v2.0.
  • v4.7.16

    March 16, 2020
    • ๐Ÿ›  Fixed an issue where attempts to download some videos were periodically causing 403 Forbidden.
  • v4.7.15

    March 11, 2020
    • ๐Ÿ›  Fixed some issues revolving around videos marked with "content warning".
  • v4.7.14

    March 10, 2020
    • ๐Ÿ›  Fixed an issue where GetMediaStreamAsync and DownloadMediaStreamAsync threw an exception due to recent YouTube changes. As a side effect, age-restricted videos may no longer work, at least until a new workaround is found.
  • v4.7.13

    February 10, 2020
    • ๐Ÿ›  Fixed an issue where GetPlaylistAsync only returned 200 videos for some larger playlists. Thanks @polynoman.