using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using MoreLinq; using Sony.Filtr.Contracts.Definitions; using Sony.Filtr.Core.EditorialPlaylists; namespace Sony.Filtr.Worker.Onetime { public class AllPlaylistFollowerExport { private readonly EditorialPlaylistManager _editorialPlaylistManager; public AllPlaylistFollowerExport(EditorialPlaylistManager editorialPlaylistManager) { _editorialPlaylistManager = editorialPlaylistManager; } public async Task ExecuteAsync() { var allPlaylists = await _editorialPlaylistManager.GetLightweightEditorialPlaylistsAsync(null, false, false); allPlaylists = allPlaylists.Where(p => p.BuzzCategoryId == (int)StaticBuzzCategory.SonyMusic).ToList(); var playlistAttributes = await _editorialPlaylistManager.GetPlaylistAttributesAsync(allPlaylists); FileInfo file = new FileInfo("SonyPlaylistFollowers.csv"); using (var fileStream = file.OpenWrite()) { await fileStream.WriteAsync(Encoding.UTF8.GetPreamble(), 0, Encoding.UTF8.GetPreamble().Length); using (var fileWriter = new StreamWriter(fileStream)) { await fileWriter.WriteLineAsync(string.Join(";", "Uri", "Name", "CountryCode", "Followers")); foreach (var playlistAttribute in playlistAttributes.DistinctBy(p=> p.EditorialPlaylist.SpotifyLink)) { await fileWriter.WriteLineAsync(string.Join(";", playlistAttribute.EditorialPlaylist.SpotifyLink.Uri, playlistAttribute.EditorialPlaylist.Name, playlistAttribute.EditorialPlaylist.CountryCode, playlistAttribute.Attributes.Followers)); } } } } } }