Memoize youtube channel ID and feed data.
commit20dd397e9ee01031cc11be0d473056ed204f0f22
authorauouymous <au@qzx.com>
Sun, 27 Feb 2022 09:52:06 +0000 (27 02:52 -0700)
committerauouymous <au@qzx.com>
Sun, 27 Feb 2022 09:52:06 +0000 (27 02:52 -0700)
treeb2026a5781b28a46fef74452f9d9754673600217
parentbe64fdda43c6036ad73934403a230f1ff029ef28
Memoize youtube channel ID and feed data.

Internal youtube support and the youtube-dl extension both cause the
youtube feed URL to be fetched three times per update. Caching the feed
data from feedcore allows internal support to only load the feed once.
The lru_cache removes one of the youtube-dl fetches, not perfect, but
two is better than three. I saw a 40% decrease in update times when
using the internal youtube code.

Throwing an exception from get_channel_id_url() prevents get_cover() and
get_channel_desc() from attempting to fetch a None URL, and provides
more accurate errors.

The lru_cache on get_youtube_id() saves 1ms per youtube channel when
updating. Which adds up with a lot of channels, and might be more on
slower devices.
src/gpodder/feedcore.py
src/gpodder/model.py
src/gpodder/youtube.py
tests/test_feedcore.py