using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Sony.Filtr.Buzz; using Sony.Filtr.Contracts.Abstractions; using Sony.Filtr.Contracts.Definitions; using Sony.Filtr.Contracts.Entities; using Sony.Filtr.Playlists.Spotify; using Sony.Filtr.Utility.Extensions; namespace Sony.Filtr.Worker.Onetime { public class TrackNewSpotifyPlaylists { private readonly IBuzzAccountManager _buzzAccountManager; private readonly SpotifyPlaylistManager _spotifyPlaylistManager; public TrackNewSpotifyPlaylists(IBuzzAccountManager buzzAccountManager, SpotifyPlaylistManager spotifyPlaylistManager) { _buzzAccountManager = buzzAccountManager; _spotifyPlaylistManager = spotifyPlaylistManager; } public async Task ExecuteAsync() { var buzzUsers = await _buzzAccountManager.GetBuzzUsersAsync(musicServiceId: (int)MusicService.Spotify); var buzzUserDic = buzzUsers.ToDictionary(k => k.Username, v => v); using (var reader = File.OpenText("new-spotify-sony-tastemakers.txt")) { var lines = (await reader.ReadToEndAsync()).Split('\n'); foreach(var line in lines) { var playlistLink = new SpotifyLink(line); var playlistUri = playlistLink.Uri; var playlistId = playlistLink.ExtractPlaylistID(); var username = playlistLink.ExtractSpotifyPlaylistUserName(); var buzzUser = buzzUserDic.GetValueOrDefault(username); var existing = _spotifyPlaylistManager.GetPlaylist(playlistUri); if (existing == null) { _spotifyPlaylistManager.AddPlaylist(new SpotifyPlaylist() { PlaylistUri = playlistUri, PlaylistId = playlistId, BuzzCategoryId = buzzUser?.BuzzCategoryId, User = username, }); Console.WriteLine($"Adding {playlistUri}"); } else { Console.WriteLine($"{playlistUri} already exists"); } } } } } }