github mlp2069/aiosports v1.6.2

latest releases: v1.6.7, v1.6.6
3 hours ago

v1.6.2 (2026-09-21)

Three things a viewer should notice, and one they should not. Streams start quicker, because the addon now tells a player what a link holds before it opens it instead of letting it guess wrong and start over. The extra buffer added in v1.5.0 works for the first time — it had never once engaged on the sources it was written for, so a viewer who asked for ten extra seconds of cushion had been getting exactly what they would have got without asking. And the background sweep stops spending its time on hosts that no longer exist. The one nobody should notice is the test suite: six of its files had never been run since the day they were written, and the branch that carries every stream link to a player had no test at all.

Performance Improvements

  • streams: tell a player the link is a playlist before it opens it. A client works out how to open a stream by reading the path for an extension, and cuts the query off first — so on /api/manifest?url=<the real .m3u8> the only extension present was in the part being discarded. Unable to tell, a player opened the playlist as a video container, failed, probed the address to ask what it was, then threw itself away and started again, on every launch of every stream. Proxy links now carry a .m3u8 of their own, and the row repeats it as behaviorHints.filename and a declared response Content-Type for clients that read one signal and not the other (75c6afe)

Bug Fixes

  • liveDelay: make the retention probe work, so the extra buffer does. These sources publish about fifteen seconds of playlist and a player already starts twelve seconds from the end, so the only way to widen the cushion is to serve a window deeper than the source's own — built from segments it has stopped listing, and only once the host has been shown to still answer for them. That evidence comes from one probe, and the probe threw every time: it called the shared connection agent, which is an instance and not a factory, and it asked undici to follow redirects, which undici refuses when handed an agent. Both throws were caught and recorded as "this host does not keep its segments", so the answer was no on every host from the day the feature shipped (8416611)
  • streams: stop asking a host whose name does not resolve. ENOTFOUND is definitive in the way a 404 is, so it is no longer retried, and the host is written off for six hours — a stream on a host already written off is dropped without a network call at all. Written off by observation rather than by name, so the next host to disappear costs one failed lookup instead of a code change; timeouts and refused connections are still retried as before (62df9eb)
  • server: readdress a proxy link whatever its path. Stream rows are minted with the server's own address on the front, which inside a container is one nothing outside it can reach, and a response rewriter swaps it for the host the request arrived on. It matched the proxy route only when the path ended there, so a path carrying an extension was left as minted. It now treats /api/manifest and /api/manifest.m3u8 as one route and tolerates a future .mpd, and it moves out of the response middleware into its own module, where it can be tested — it had been the only untested branch in the path every stream link takes to a player (e372750)
  • tests: run every suite, not the thirteen that were listed. live-delay, live-status, verify-retry, remint and name-folding were each written alongside the fix they cover and never added to the test script, so nothing had run them since. The suite now covers 21 files (97d87b4)

Don't miss a new aiosports release

NewReleases is sending notifications on new releases.