private async Task DoWork(CancellationToken cancellationToken) { await _youtubeService.Initialize(cancellationToken); await _spotifyService.Initialize(cancellationToken); if (cancellationToken.IsCancellationRequested) { return; } var playlistId = await _spotifyService.CreatePlaylist(Constants.ApplicationName, cancellationToken); await foreach (var title in _youtubeService.QueryLikedMusicVideos(cancellationToken)) { var finalTitle = FilterTitle(title); _logger.LogInformation("Searching for {title}!", finalTitle); var tracks = await _spotifyService.SearchTracks(finalTitle, cancellationToken); if (tracks.Count == 0) { _logger.LogWarning("{title} not found!", finalTitle); continue; } // grab the first track for now var track = tracks.First(); _logger.LogInformation("Found {track.Name} by {track.Artists}", track.Name, JsonConvert.SerializeObject(track.Artists)); await _spotifyService.AddToPlaylist(playlistId, track.Id, cancellationToken); } }