bool CMusicInfoScanner::ResolveMusicBrainz(const std::string &strMusicBrainzID, const ScraperPtr &preferredScraper, CScraperUrl &musicBrainzURL) { // We have a MusicBrainz ID // Get a scraper that can resolve it to a MusicBrainz URL & force our // search directly to the specific album. bool bMusicBrainz = false; try { musicBrainzURL = preferredScraper->ResolveIDToUrl(strMusicBrainzID); } catch (const ADDON::CScraperError &sce) { if (sce.FAborted()) return false; } if (!musicBrainzURL.m_url.empty()) { Sleep(2000); // MusicBrainz rate-limits queries to 1 p.s - once we hit the rate-limiter // they start serving up the 'you hit the rate-limiter' page fast - meaning // we will never get below the rate-limit threshold again in a specific run. // This helps us to avoidthe rate-limiter as far as possible. CLog::Log(LOGDEBUG,"-- nfo-scraper: %s",preferredScraper->Name().c_str()); CLog::Log(LOGDEBUG,"-- nfo url: %s", musicBrainzURL.m_url[0].m_url.c_str()); bMusicBrainz = true; } return bMusicBrainz; }