gitextract_31q9a7rf/ ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ ├── documentation_improvement.yml │ │ └── feature_request.yml │ └── workflows/ │ ├── branch-detection.yml │ ├── compilation.yml │ ├── dotnet-setup.yml │ ├── git-info.yml │ ├── main.yml │ ├── metadata.yml │ ├── packaging.yml │ ├── publishing.yml │ └── release-notes.yml ├── .gitignore ├── .gitmodules ├── CONTRIBUTION.md ├── Directory.Build.props ├── LICENSE.txt ├── NuGet.config ├── README.md ├── Tubifarry/ │ ├── Blocklisting/ │ │ ├── BaseBlocklist.cs │ │ └── Blocklists.cs │ ├── Core/ │ │ ├── Model/ │ │ │ ├── AlbumData.cs │ │ │ ├── ApiCircuitBreaker.cs │ │ │ ├── AudioMetadataHandler.cs │ │ │ ├── FileCache.cs │ │ │ ├── PlaylistItem.cs │ │ │ └── TrustedSessionException.cs │ │ ├── Records/ │ │ │ ├── Lyric.cs │ │ │ ├── MappingAgent.cs │ │ │ ├── MusicBrainzData.cs │ │ │ └── YouTubeSession.cs │ │ ├── Replacements/ │ │ │ ├── ExtendedHttpIndexerBase.cs │ │ │ ├── FlexibleHttpDispatcher.cs │ │ │ └── IIndexerRequestGenerator.cs │ │ ├── Telemetry/ │ │ │ ├── ISearchContextBuffer.cs │ │ │ ├── ISentryHelper.cs │ │ │ ├── NoopSentryHelper.cs │ │ │ ├── SearchContextBuffer.cs │ │ │ ├── SentryEventFilter.cs │ │ │ ├── SentryHelper.cs │ │ │ ├── SlskdBufferedContext.cs │ │ │ ├── SlskdSentryEvents.cs │ │ │ ├── SlskdTrackingService.cs │ │ │ ├── TubifarrySentry.cs │ │ │ └── TubifarrySentryTarget.cs │ │ └── Utilities/ │ │ ├── AudioFormat.cs │ │ ├── CacheService.cs │ │ ├── CookieManager.cs │ │ ├── DynamicSchemaInjector.cs │ │ ├── DynamicStateSettings.cs │ │ ├── FileInfoParser.cs │ │ ├── IndexerParserHelper.cs │ │ ├── JsonConverters.cs │ │ ├── LazyRequestChain.cs │ │ ├── PermissionTester.cs │ │ ├── PluginSettings.cs │ │ ├── ReleaseFormatter.cs │ │ ├── RepositorySettingsResolver.cs │ │ └── UserAgentValidator.cs │ ├── Debug.targets │ ├── Download/ │ │ ├── Base/ │ │ │ ├── BaseDownloadManager.cs │ │ │ ├── BaseDownloadOptions.cs │ │ │ ├── BaseDownloadRequest.cs │ │ │ └── BaseHttpClient.cs │ │ └── Clients/ │ │ ├── DABMusic/ │ │ │ ├── DABMusicClient.cs │ │ │ ├── DABMusicDownloadManager.cs │ │ │ ├── DABMusicDownloadOptions.cs │ │ │ ├── DABMusicDownloadRequest.cs │ │ │ └── DABMusicProviderSettings.cs │ │ ├── Lucida/ │ │ │ ├── ILucidaRateLimiter.cs │ │ │ ├── LucidaClient.cs │ │ │ ├── LucidaDownloadManager.cs │ │ │ ├── LucidaDownloadOptions.cs │ │ │ ├── LucidaDownloadRequest.cs │ │ │ ├── LucidaInitiationResult.cs │ │ │ ├── LucidaMetadataExtractor.cs │ │ │ ├── LucidaProviderSettings.cs │ │ │ ├── LucidaRateLimitException.cs │ │ │ ├── LucidaRateLimiter.cs │ │ │ ├── LucidaTokenExtractor.cs │ │ │ └── LucidaWorkerState.cs │ │ ├── Soulseek/ │ │ │ ├── ISlskdApiClient.cs │ │ │ ├── ISlskdDownloadManager.cs │ │ │ ├── Models/ │ │ │ │ ├── DownloadKey.cs │ │ │ │ ├── SlskdDownloadDirectory.cs │ │ │ │ ├── SlskdDownloadFile.cs │ │ │ │ ├── SlskdDownloadItem.cs │ │ │ │ └── SlskdFileState.cs │ │ │ ├── SlskdApiClient.cs │ │ │ ├── SlskdClient.cs │ │ │ ├── SlskdDownloadManager.cs │ │ │ ├── SlskdProviderSettings.cs │ │ │ ├── SlskdRetryHandler.cs │ │ │ └── SlskdStatusResolver.cs │ │ ├── SubSonic/ │ │ │ ├── SubSonicClient.cs │ │ │ ├── SubSonicDownloadManager.cs │ │ │ ├── SubSonicDownloadOptions.cs │ │ │ ├── SubSonicDownloadRequest.cs │ │ │ └── SubSonicProviderSettings.cs │ │ ├── TripleTriple/ │ │ │ ├── TripleTripleClient.cs │ │ │ ├── TripleTripleDownloadManager.cs │ │ │ ├── TripleTripleDownloadOptions.cs │ │ │ ├── TripleTripleDownloadRequest.cs │ │ │ └── TripleTripleProviderSettings.cs │ │ └── YouTube/ │ │ ├── SponsorBlock.cs │ │ ├── TrustedSessionHelper.cs │ │ ├── YouTubeDownloadOptions.cs │ │ ├── YouTubeDownloadRequest.cs │ │ ├── YoutubeClient.cs │ │ ├── YoutubeDownloadManager.cs │ │ └── YoutubeProviderSettings.cs │ ├── ILRepack.targets │ ├── ImportLists/ │ │ ├── ArrStack/ │ │ │ ├── ArrMedia.cs │ │ │ ├── ArrSoundtrackImport.cs │ │ │ ├── ArrSoundtrackImportParser.cs │ │ │ ├── ArrSoundtrackImportSettings.cs │ │ │ └── ArrSoundtrackRequestGenerator.cs │ │ ├── LastFmRecommendation/ │ │ │ ├── LastFmRecomendRequestGenerator.cs │ │ │ ├── LastFmRecommend.cs │ │ │ ├── LastFmRecommendParser.cs │ │ │ ├── LastFmRecommendSettings.cs │ │ │ └── LastFmRecords.cs │ │ ├── ListenBrainz/ │ │ │ ├── ListenBrainzCFRecommendations/ │ │ │ │ ├── ListenBrainzCFRecommendationsImportList.cs │ │ │ │ ├── ListenBrainzCFRecommendationsParser.cs │ │ │ │ ├── ListenBrainzCFRecommendationsRequestGenerator.cs │ │ │ │ └── ListenBrainzCFRecommendationsSettings.cs │ │ │ ├── ListenBrainzCreatedForPlaylist/ │ │ │ │ ├── ListenBrainzCreatedForPlaylistImportList.cs │ │ │ │ ├── ListenBrainzCreatedForPlaylistParser.cs │ │ │ │ ├── ListenBrainzCreatedForPlaylistRequestGenerator.cs │ │ │ │ └── ListenBrainzCreatedForPlaylistSettings.cs │ │ │ ├── ListenBrainzPlaylist/ │ │ │ │ ├── ListenBrainzPlaylistImportList.cs │ │ │ │ ├── ListenBrainzPlaylistParser.cs │ │ │ │ ├── ListenBrainzPlaylistRequestGenerator.cs │ │ │ │ └── ListenBrainzPlaylistSettings.cs │ │ │ ├── ListenBrainzRecords.cs │ │ │ └── ListenBrainzUserStats/ │ │ │ ├── ListenBrainzUserStatsImportList.cs │ │ │ ├── ListenBrainzUserStatsParser.cs │ │ │ ├── ListenBrainzUserStatsRequestGenerator.cs │ │ │ └── ListenBrainzUserStatsSettings.cs │ │ └── Spotify/ │ │ ├── SpotifyUserPlaylistImport.cs │ │ └── SpotifyUserPlaylistImportSettings.cs │ ├── Indexers/ │ │ ├── DABMusic/ │ │ │ ├── DABMusicIndexer.cs │ │ │ ├── DABMusicIndexerSettings.cs │ │ │ ├── DABMusicParser.cs │ │ │ ├── DABMusicRecords.cs │ │ │ ├── DABMusicRequestGenerator.cs │ │ │ └── DABMusicSessionHelper.cs │ │ ├── DownloadProtocols.cs │ │ ├── Lucida/ │ │ │ ├── LucidaIndexer.cs │ │ │ ├── LucidaIndexerSettings.cs │ │ │ ├── LucidaRecords.cs │ │ │ ├── LucidaRequestGenerator.cs │ │ │ ├── LucidaRequestParser.cs │ │ │ └── LucidaServiceHelper.cs │ │ ├── Soulseek/ │ │ │ ├── ISlskdItemsParser.cs │ │ │ ├── Search/ │ │ │ │ ├── Core/ │ │ │ │ │ ├── ISearchStrategy.cs │ │ │ │ │ ├── QueryAnalyzer.cs │ │ │ │ │ ├── SearchContext.cs │ │ │ │ │ └── SearchPipeline.cs │ │ │ │ ├── Strategies/ │ │ │ │ │ ├── BaseSearchStrategy.cs │ │ │ │ │ ├── FallbackStrategy.cs │ │ │ │ │ ├── SpecialCaseStrategy.cs │ │ │ │ │ ├── TemplateSearchStrategy.cs │ │ │ │ │ └── VariationStrategy.cs │ │ │ │ ├── Templates/ │ │ │ │ │ └── TemplateEngine.cs │ │ │ │ └── Transformers/ │ │ │ │ ├── QueryBuilder.cs │ │ │ │ └── QueryNormalizer.cs │ │ │ ├── SlsdkRecords.cs │ │ │ ├── SlskdIndexer.cs │ │ │ ├── SlskdIndexerParser.cs │ │ │ ├── SlskdItemsParser.cs │ │ │ ├── SlskdRequestGenerator.cs │ │ │ ├── SlskdSettings.cs │ │ │ └── SlskdTextProcessor.cs │ │ ├── Spotify/ │ │ │ ├── SpotifyIndexerSettings.cs │ │ │ ├── SpotifyParser.cs │ │ │ ├── SpotifyRequestGenerator.cs │ │ │ ├── SpotifyToYouTubeEnricher.cs │ │ │ └── TubifarryIndexer.cs │ │ ├── SubSonic/ │ │ │ ├── SubSonicAuthHelper.cs │ │ │ ├── SubSonicIndexer.cs │ │ │ ├── SubSonicIndexerParser.cs │ │ │ ├── SubSonicIndexerSettings.cs │ │ │ ├── SubSonicRecords.cs │ │ │ └── SubSonicRequestGenerator.cs │ │ ├── TripleTriple/ │ │ │ ├── TripleTripleIndexer.cs │ │ │ ├── TripleTripleIndexerSettings.cs │ │ │ ├── TripleTripleParser.cs │ │ │ ├── TripleTripleRecords.cs │ │ │ └── TripleTripleRequestGenerator.cs │ │ └── YouTube/ │ │ ├── YoutubeIndexer.cs │ │ ├── YoutubeIndexerSettings.cs │ │ ├── YoutubeParser.cs │ │ └── YoutubeRequestGenerator.cs │ ├── Metadata/ │ │ ├── Converter/ │ │ │ ├── AudioConverter.cs │ │ │ ├── AudioConverterSettings.cs │ │ │ └── BitrateRules.cs │ │ ├── Lyrics/ │ │ │ ├── LyricEnhancerSettings.cs │ │ │ ├── LyricsEnhancer.cs │ │ │ ├── LyricsHelper.cs │ │ │ ├── LyricsProviders.cs │ │ │ └── TrackFileRepositoryHelper.cs │ │ ├── Proxy/ │ │ │ ├── MetadataProvider/ │ │ │ │ ├── AlbumMapper.cs │ │ │ │ ├── CustomLidarr/ │ │ │ │ │ ├── CustomLidarrMetadataProxy.cs │ │ │ │ │ ├── CustomLidarrMetadataProxySettings.cs │ │ │ │ │ ├── CustomLidarrProxy.cs │ │ │ │ │ └── ICustomLidarrProxy.cs │ │ │ │ ├── Deezer/ │ │ │ │ │ ├── DeezerAPIService.cs │ │ │ │ │ ├── DeezerAuthService.cs │ │ │ │ │ ├── DeezerMappingHelper.cs │ │ │ │ │ ├── DeezerMetadataProxy.cs │ │ │ │ │ ├── DeezerMetadataProxySettings.cs │ │ │ │ │ ├── DeezerProxy.cs │ │ │ │ │ ├── DeezerRecords.cs │ │ │ │ │ └── IDeezerProxy.cs │ │ │ │ ├── Discogs/ │ │ │ │ │ ├── DiscogsAPIService.cs │ │ │ │ │ ├── DiscogsMappingHelper.cs │ │ │ │ │ ├── DiscogsMetadataProxy.cs │ │ │ │ │ ├── DiscogsMetadataProxySettings.cs │ │ │ │ │ ├── DiscogsProxy.cs │ │ │ │ │ ├── DiscogsRecords.cs │ │ │ │ │ └── IDiscogsProxy.cs │ │ │ │ ├── Lastfm/ │ │ │ │ │ ├── ILastfmProxy.cs │ │ │ │ │ ├── LastfmApiService.cs │ │ │ │ │ ├── LastfmImageScraper.cs │ │ │ │ │ ├── LastfmMappingHelper.cs │ │ │ │ │ ├── LastfmMetadataProxy.cs │ │ │ │ │ ├── LastfmMetadataProxySettings.cs │ │ │ │ │ ├── LastfmProxy.cs │ │ │ │ │ ├── LastfmRecordConverter.cs │ │ │ │ │ └── LastfmRecords.cs │ │ │ │ ├── MetadataProviderWrapper.cs │ │ │ │ ├── Mixed/ │ │ │ │ │ ├── AdaptiveThresholdConfig.cs │ │ │ │ │ ├── AdaptiveThresholdManager.cs │ │ │ │ │ ├── ISupportMetadataMixing.cs │ │ │ │ │ ├── MixedMetadataProxy.cs │ │ │ │ │ ├── MixedMetadataProxySettings.cs │ │ │ │ │ ├── ProxyDecisionHandler.cs │ │ │ │ │ └── ProxyMetrics.cs │ │ │ │ └── SkyHook/ │ │ │ │ ├── SkyHookMetdadataProxy.cs │ │ │ │ └── SykHookMetadataProxySettings.cs │ │ │ ├── MixedProxyBase.cs │ │ │ ├── ProxyAttribute.cs │ │ │ ├── ProxyBase.cs │ │ │ ├── ProxyService.cs │ │ │ ├── ProxyServiceStarter.cs │ │ │ ├── ProxyWrapperBase.cs │ │ │ └── RecommendArtists/ │ │ │ ├── LastFmSimilarArtistsService.cs │ │ │ ├── SimilarArtistsProxy.cs │ │ │ └── SimilarArtistsProxySettings.cs │ │ └── ScheduledTasks/ │ │ ├── IProvideScheduledTask.cs │ │ ├── ScheduledTaskBase.cs │ │ ├── ScheduledTaskService.cs │ │ ├── ScheduledTaskServiceStarter.cs │ │ └── SearchSniper/ │ │ ├── SearchSniperRepositoryHelper.cs │ │ ├── SearchSniperTask.cs │ │ └── SearchSniperTaskSettings.cs │ ├── Notifications/ │ │ ├── FlareSolverr/ │ │ │ ├── FlareDetector.cs │ │ │ ├── FlareRecords.cs │ │ │ ├── FlareSolverrHttpInterceptor.cs │ │ │ ├── FlareSolverrNotification.cs │ │ │ ├── FlareSolverrService.cs │ │ │ ├── FlareSolverrSettings.cs │ │ │ └── IFlareSolverrService.cs │ │ ├── PlaylistExport/ │ │ │ ├── PlaylistExportNotification.cs │ │ │ ├── PlaylistExportService.cs │ │ │ └── PlaylistExportSettings.cs │ │ ├── QueueCleaner/ │ │ │ ├── ImportFailureNotificationService.cs │ │ │ ├── QueueCleaner.cs │ │ │ └── QueueCleanerSettings.cs │ │ └── YouTubeProxy/ │ │ ├── YouTubeProxyNotification.cs │ │ ├── YouTubeProxyService.cs │ │ └── YouTubeProxySettings.cs │ ├── Plugin.cs │ ├── PluginInfo.targets │ ├── PluginKeys.targets │ ├── PreBuild.targets │ └── Tubifarry.csproj ├── Tubifarry.sln └── stylecop.json