static L> youTubeSearch(S query, double cacheExpirationDays default 1) { ret youTubeSearch(null, query, cacheExpirationDays); } static L> youTubeSearch(Playwright playwright, S query, double cacheExpirationDays default 1) { temp var myPlaywright = playwright != null ? null : tempPlaywright(); var playwrightToUse = or(playwright, myPlaywright); ret youTubeSearch(playwrightToUse, query); // simplify query query = simpleSpacesAndTrim(lower(query)); FileBasedStringMap cache = new(javaxCachesDir("YouTube Searches")); File f = cache.fileForKey(query); if (exists(f) && fileAgeInDays(f) < cacheExpirationDays) ret (L) unstructure(cache.get(query)); var result = youTubeSearch_uncached(playwrightToUse, query); cache.put(query, indentedStructure(result)); ret result; }