/** * Is the url already cached? * * @param url * the url to check * @return true/false */ public static boolean isCached(String url) { return CACHE.get(url) != null; }
/** * Cleanup the map checking the time to live for each entry */ public void cleanup() { cleanup(false); }
/** * for TV_SHOW only, called with getShowDetails */ @Override protected void processXmlContent(String xmlDetails, MediaMetadata md, MediaSearchResult result) throws Exception { if (xmlDetails == null || StringUtils.isEmpty(xmlDetails)) { LOGGER.warn("Cannot process empty Xml Contents."); return; } LOGGER.debug("******* BEGIN XML ***********"); LOGGER.debug(xmlDetails); LOGGER.debug("******* END XML ***********"); Document xml = parseXmlString(xmlDetails); addMetadata(md, xml.getDocumentElement()); String showId = md.getId(scraper.getProviderInfo().getId()).toString(); // String episodeUrl = DOMUtils.getElementValue(xml.getDocumentElement(), EPISODEGUIDE); // might be multiple!! String episodeUrl = innerXml(DOMUtils.getElementByTagName(xml.getDocumentElement(), EPISODEGUIDE)); if (StringUtils.isEmpty(episodeUrl)) { LOGGER.error("No Episode Data!"); } else { KodiMetadataProvider.XML_CACHE.put(scraper.getProviderInfo().getId() + "_" + showId + "_" + "EPISODEGUIDE_URL", episodeUrl); md.addExtraData(EPISODEGUIDE, episodeUrl); result.setMetadata(md); } LOGGER.debug("MetaData: " + md.toString()); KodiMetadataProvider.XML_CACHE.put(scraper.getProviderInfo().getId() + "_" + showId + "_" + result.getId(), xmlDetails); }
String episodeguide = KodiMetadataProvider.XML_CACHE.get(scraper.getProviderInfo().getId() + "_" + showId + "_" + "EPISODEGUIDE_URL"); if (episodeguide == null || episodeguide.isEmpty()) { if (options.getMetadata() != null) { String epListXml = KodiMetadataProvider.XML_CACHE.get(scraper.getProviderInfo().getId() + "_" + showId + "_" + EPISODEGUIDE); if (epListXml == null) { KodiUrl url = new KodiUrl(episodeguide); epListXml = processor.getEpisodeList(url); KodiMetadataProvider.XML_CACHE.put(scraper.getProviderInfo().getId() + "_" + showId + "_" + EPISODEGUIDE, epListXml); KodiMetadataProvider.XML_CACHE.put(scraper.getProviderInfo().getId() + "_" + showId + "_S" + lz(season) + "_E" + lz(ep), epXml);
String epXml = KodiMetadataProvider.XML_CACHE.get(scraper.getProviderInfo().getId() + "_" + showId + "_S" + lz(seasonNr) + "_E" + lz(episodeNr)); if (epXml == null) { getEpisodeList(mso); epXml = KodiMetadataProvider.XML_CACHE.get(scraper.getProviderInfo().getId() + "_" + showId + "_S" + lz(seasonNr) + "_E" + lz(episodeNr)); KodiMetadataProvider.XML_CACHE.put(scraper.getProviderInfo().getId() + "_" + showId + "_S" + lz(season) + "_E" + lz(ep) + "_DETAIL", xmlDetails);
public static void clearCache() { CACHE.cleanup(true); }
@Override public void run() { while (true) { try { Thread.sleep(cleanupInterval * 1000); } catch (InterruptedException ex) { break; } cleanup(); } } });