YoutubeExplode v5.0 Release Notes

    • 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.