//using System; //using System.Collections.Generic; //using System.Linq; //using System.Net; //using System.Net.Http; //using System.Text; //using System.Threading.Tasks; //using MySql.Data.MySqlClient; //using Sony.Filtr.Contracts.Entities; //using Sony.Filtr.Database; //using Sony.Filtr.DistributedCaching; //using Sony.Filtr.PersistentCaching; //using Sony.Filtr.PlaylistGeneration; //using Sony.Filtr.PlaylistGeneration.Caching; //using Sony.Filtr.PlaylistGeneration.MusicInfoStore; //using Sony.Filtr.Utility.Extensions; //namespace Sony.Filtr.Worker.Onetime //{ // public class FixArtistImageUrl // { // private readonly LastFmManager _lastFmManager; // private readonly DistributedCacheProvider _cacheProvider; // public FixArtistImageUrl(LastFmManager lastFmManager, DistributedCacheProvider cacheProvider) // { // _lastFmManager = lastFmManager; // _cacheProvider = cacheProvider; // } // public async Task ExecuteAsync() // { // ServicePointManager.DefaultConnectionLimit = 10; // await PersistentCachingManager.Instance.Connection.Keys.Expire(0, "FixedImageArtists", (int)TimeSpan.FromDays(10).TotalSeconds); // int offset = 0; // var artists = await GetAllArtists(offset); // while (artists.Any()) // { // await artists.ForEachAsync(5, async artist => // { // var artistIsFixed = await PersistentCachingManager.Instance.Connection.Sets.Contains(0, "FixedImageArtists", artist); // if (!artistIsFixed) // { // try // { // Console.WriteLine("Getting {0}", artist); // var lastFmArtist = await _lastFmManager.GetArtistAsync(artist); // if (lastFmArtist != null) // { // Console.WriteLine("Saving {0}", artist); // await UpdateArtistImageUrlAsync(artist, lastFmArtist); // string imageUrl = lastFmArtist.ImageUrl; // if (imageUrl.StartsWith("http://img2-ak.lst.fm/i/u/")) // imageUrl = imageUrl.Replace("/64s/", "/252s/"); // await FetchImageAsync(imageUrl); // //_cacheProvider.CacheArtist(lastFmArtist); // await PersistentCachingManager.Instance.Connection.Sets.Add(0, "FixedImageArtists", artist); // } // else // { // await PersistentCachingManager.Instance.Connection.Sets.Add(0, "FixedImageArtists", artist); // } // } // catch (Exception) // { // Console.WriteLine("Error! {0}", artist); // } // } // }); // offset = offset + artists.Count; // Console.WriteLine("Getting even more artists!"); // artists = await GetAllArtists(offset); // } // } // private async Task FetchImageAsync(string imageUrl) // { // var client = new HttpClient(); // var actualImageUrl = string.Format("https://d2ahw2mlask527.cloudfront.net/Proxy?url={0}", imageUrl); // await client.GetAsync(actualImageUrl); // } // private async Task UpdateArtistImageUrlAsync(string artist, Artist lastFmArtist) // { // using (var conn = new MySqlConnection(DatabaseHandler.GetConnectionString())) // { // await conn.OpenAsync(); // MySqlCommand cmd = new MySqlCommand("UPDATE tblArtist SET strImageUrl=@strImageUrl, intListeners=@intListeners, intPlaycount=@intPlaycount WHERE strArtistName = @strArtistName", conn); // cmd.Parameters.AddWithValue("@strArtistName", artist); // cmd.Parameters.AddWithValue("@strImageUrl", lastFmArtist.ImageUrl); // cmd.Parameters.AddWithValue("@intListeners", lastFmArtist.Listeners); // cmd.Parameters.AddWithValue("@intPlaycount", lastFmArtist.PlayCount); // await cmd.ExecuteNonQueryAsync(); // await conn.CloseAsync(); // } // } // private static async Task> GetArtistsToFix() // { // List artists = new List(); // using (var connection = DatabaseHandler.GetOpenConnection()) // { // var cmd = connection.CreateCommand(); // cmd.CommandText = "SELECT strArtistName FROM tblArtist WHERE strImageUrl IS NULL ORDER BY intListeners DESC LIMIT 1000"; // var reader = await cmd.ExecuteReaderAsync(); // while (await reader.ReadAsync()) // { // artists.Add(reader.GetString(0)); // } // } // return artists; // } // private static async Task> GetAllArtists(int offset) // { // List artists = new List(); // using (var connection = DatabaseHandler.GetOpenConnection()) // { // var cmd = connection.CreateCommand(); // cmd.CommandText = "SELECT strArtistName FROM tblArtist LIMIT @offset, 10000"; // cmd.Parameters.AddWithValue("@offset", offset); // var reader = await cmd.ExecuteReaderAsync(); // while (await reader.ReadAsync()) // { // artists.Add(reader.GetString(0)); // } // } // return artists; // } // } //}