//using System; //using System.Collections.Concurrent; //using System.Collections.Generic; //using System.Globalization; //using System.IO; //using System.Linq; //using System.Text; //using System.Threading.Tasks; //using NLog; //using Sony.Filtr.Database; //using Sony.Filtr.Playlists.Spotify; //using Sony.Filtr.Utility.ConsoleUtility; //using Sony.Filtr.Utility.Extensions; //namespace Sony.Filtr.Worker.Onetime //{ // public class MostStreamedPlaylists // { // private readonly SpotifyPlaylistManager _spotifyPlaylistManager; // private readonly SpotifyPlaylistHistoricTrackListManager _historicTrackListManager; // private Logger _logger; // public MostStreamedPlaylists(SpotifyPlaylistManager spotifyPlaylistManager, SpotifyPlaylistHistoricTrackListManager historicTrackListManager) // { // _spotifyPlaylistManager = spotifyPlaylistManager; // _historicTrackListManager = historicTrackListManager; // _logger = LogManager.GetLogger("MostStreamedPlaylists"); // } // public async Task ExecuteAsync() // { // FileInfo file = new FileInfo($"MostStreamedSpotifyPlaylist.csv"); // ConcurrentDictionary playlistStreams = new ConcurrentDictionary(); // var playlistUris = _spotifyPlaylistManager.GetAllPlaylistUris(); // playlistUris = playlistUris.Where(s => !string.IsNullOrWhiteSpace(s)).ToList(); // await playlistUris.ItemIndex().ForEachAsync(100, async playlist => // { // try // { // var playlistUri = playlist.Item; // _logger.Debug($"{playlist.Index} / {playlistUris.Count}"); // var streams = await CalculateStreamsAsync(playlistUri); // playlistStreams.TryAdd(playlistUri, streams); // } // catch(Exception ex) // { // _logger.Error(ex); // } // }); // Console.WriteLine("Writing to disk"); // using (var fileStream = file.OpenWrite()) // { // fileStream.Write(Encoding.UTF8.GetPreamble(), 0, Encoding.UTF8.GetPreamble().Length); // using(var fileWriter = new StreamWriter(fileStream)) // { // fileWriter.WriteLine(string.Join(";", "PlaylistUri", "Streams")); // foreach(var playlistTrackData in playlistStreams) // { // var playlistUri = playlistTrackData.Key; // var stream = playlistTrackData.Value; // var row = string.Join(";", playlistUri, stream); // await fileWriter.WriteLineAsync(row); // } // } // } // Console.WriteLine("Done writing to disk"); // } // private async Task CalculateStreamsAsync(string playlistUri) // { // long globalStreams = 0; // using (var connection = DatabaseHandler.GetOpenConnection()) // { // var cmd = connection.CreateCommand(); // cmd.CommandText = "SELECT SUM(ps.totalStreams) FROM tblSpotifyAnalyticsAccountPlaylistStreamInfo AS ps " + // "WHERE ps.accountId = 1 AND date > DATE_ADD(NOW(), INTERVAL - 365 DAY) AND " + // "ps.playlistUri = @playlistUri"; // cmd.Parameters.AddWithValue("@playlistUri", playlistUri); // var reader = await cmd.ExecuteReaderAsync(); // if (await reader.ReadAsync()) // { // if (!reader.IsDBNull(0)) // { // globalStreams = reader.GetInt64(0); // } // } // } // return globalStreams; // } // } //}