using Sony.Filtr.Applications; using Sony.Filtr.Contracts.Entities; using Sony.Filtr.Core; using Sony.Filtr.Globalization; using System.Globalization; using System.Linq; using Sony.Filtr.AdminAPI.Modules; using Sony.Filtr.Contracts.Entities.Genre; using Sony.Filtr.Core.Genres; using Sony.Filtr.PlaylistSynchronization; using Sony.Filtr.SpotifyWebAPI; using System.Threading.Tasks; using System.Collections.Generic; using AutoMapper; using Sony.Filtr.SpotifyImages; namespace Sony.Filtr.AdminAPI.BusinessLogic { public class PlaylistSynchronizationLogic { private readonly ApplicationInstanceManager _applicationInstanceManager; private readonly SpotifyWebApi _spotifyWebApi; private readonly ServiceAccountManager _serviceAccountManager; private readonly SpotifyImageDownloader _spotifyImageHandler; public PlaylistSynchronizationLogic(ApplicationInstanceManager applicationInstanceManager, ServiceAccountManager serviceAccountManager, SpotifyImageDownloader spotifyImageHandler, SpotifyWebApi spotifyWebApi) { _applicationInstanceManager = applicationInstanceManager; _serviceAccountManager = serviceAccountManager; _spotifyImageHandler = spotifyImageHandler; _spotifyWebApi = spotifyWebApi; } public async Task GetSourceData(PlaylistSynchronization.Data.PlaylistSynchronization playlistSynchronization) { //var serviceAccount = _serviceAccountManager.GetServiceAccount(playlistSynchronization.ToServiceAccountId); //if (serviceAccount != null) //{ // playlistSynchronization.ToServiceType = serviceAccount.ServiceType; //} var spotifyLink = new SpotifyLink(playlistSynchronization.FromPlaylistId); //Assumes spotify as source var playlistId = spotifyLink.ExtractPlaylistID(); var playlist = await _spotifyWebApi.GetPlaylistByIdAsync(playlistId); if (playlist != null) { var imageFileName = await _spotifyImageHandler.StoreLargestPlaylistImageAsync(playlistId, playlist.images?.FirstOrDefault()?.url); playlistSynchronization.SourceTitle = playlist.name; playlistSynchronization.SourceImage = imageFileName; playlistSynchronization.SourceTrackCount = playlist.Tracks.total; } } } }