public DacpSearchResults(DacpDatabase database, string searchString) : base(true) { Database = database; SearchString = searchString; // Add search result sections string wildcardSearch = "*" + searchString + "*"; Add(new SearchResultSection <Album>(database, async(db, token) => await db.MusicContainer.SearchAlbumsAsync(wildcardSearch, token))); Add(new SearchResultSection <Artist>(database, async(db, token) => await db.MusicContainer.SearchArtistsAsync(wildcardSearch, token))); Add(new SongsSearchResultSection(database, wildcardSearch, async(db, token) => await db.MusicContainer.SearchSongsAsync(wildcardSearch, token))); if (database.MoviesContainer != null) { Add(new SearchResultSection <Movie>(database, async(db, token) => await db.MoviesContainer.SearchMoviesAsync(wildcardSearch, token))); } if (database.PodcastsContainer != null) { Add(new SearchResultSection <Podcast>(database, async(db, token) => await db.PodcastsContainer.SearchShowsAsync(wildcardSearch, token))); } if (database.TVShowsContainer != null) { Add(new SearchResultSection <TVShow>(database, async(db, token) => await db.TVShowsContainer.SearchShowsAsync(wildcardSearch, token))); Add(new SearchResultSection <TVShowEpisode>(database, async(db, token) => await db.TVShowsContainer.SearchEpisodesAsync(wildcardSearch, token))); } if (database.iTunesUContainer != null) { Add(new SearchResultSection <iTunesUCourse>(database, async(db, token) => await(db.iTunesUContainer.SearchCoursesAsync(wildcardSearch, token)))); } if (database.BooksContainer != null) { Add(new SearchResultSection <Audiobook>(database, async(db, token) => await db.BooksContainer.SearchAudiobooksAsync(wildcardSearch, token))); } }
public static DacpContainer GetContainer(DacpDatabase database, DacpNodeDictionary nodes) { // Base Playlist if (nodes.GetBool("abpl")) { return(new DacpContainer(database, nodes)); } // Special playlist type ContainerType type = (ContainerType)nodes.GetByte("aePS"); switch (type) { case ContainerType.Playlist: return(new Playlist(database, nodes)); case ContainerType.Podcasts: return(new PodcastsContainer(database, nodes)); case ContainerType.Movies: return(new MoviesContainer(database, nodes)); case ContainerType.TVShows: return(new TVShowsContainer(database, nodes)); case ContainerType.Music: return(new MusicContainer(database, nodes)); case ContainerType.iTunesU: return(new iTunesUContainer(database, nodes)); case ContainerType.Books: return(new BooksContainer(database, nodes)); case ContainerType.GeniusMix: return(new GeniusMix(database, nodes)); case ContainerType.iTunesRadio: return(new iTunesRadioStation(database, nodes)); } return(new DacpContainer(database, nodes)); }
public Playlist(DacpDatabase database, DacpNodeDictionary nodes) : base(database, nodes) { }
public BooksContainer(DacpDatabase database, DacpNodeDictionary nodes) : base(database, nodes) { }
private async Task <bool> GetDatabasesAsync() { DacpRequest request = new DacpRequest("/databases"); try { var databases = await GetListAsync(request, n => DacpDatabase.GetDatabase(this, n)).ConfigureAwait(false); if (databases == null || databases.Count == 0) { return(false); } List <DacpDatabase> newSharedDatabases = new List <DacpDatabase>(); for (int i = 0; i < databases.Count; i++) { var db = databases[i]; // The main database will be first in the list if (i == 0) { if (MainDatabase != null && MainDatabase.ID == db.ID) { continue; } bool success = await db.RequestContainersAsync().ConfigureAwait(false); if (!success) { return(false); } MainDatabase = db; continue; } // Shared database if (db.Type == DatabaseType.Shared) { newSharedDatabases.Add(db); continue; } // Internet Radio if (db.Type == DatabaseType.InternetRadio) { if (InternetRadioDatabase != null && InternetRadioDatabase.ID == db.ID) { continue; } InternetRadioDatabase = db; continue; } // iTunes Radio if (db.Type == DatabaseType.iTunesRadio) { if (iTunesRadioDatabase != null && iTunesRadioDatabase.ID == db.ID) { continue; } iTunesRadioDatabase = (iTunesRadioDatabase)db; // Attempt to load the stations asynchronously to determine whether iTunes Radio is enabled. var task = iTunesRadioDatabase.RequestStationsAsync(); continue; } } // Update shared databases Dictionary <int, DacpDatabase> removedSharedDBs = SharedDatabases.ToDictionary(db => db.ID); foreach (var sharedDB in newSharedDatabases) { removedSharedDBs.Remove(sharedDB.ID); if (SharedDatabases.Any(db => db.ID == sharedDB.ID)) { continue; } SharedDatabases.Add(sharedDB); } foreach (DacpDatabase db in removedSharedDBs.Values) { SharedDatabases.Remove(db); } Databases.Clear(); Databases.AddRange(databases); } catch { return(false); } return(true); }
public DacpContainer(DacpDatabase database, DacpNodeDictionary nodes) : base(database.Client, nodes) { Database = database; }
public iTunesRadioStation(DacpDatabase database, DacpNodeDictionary nodes) : base(database, nodes) { }
internal SearchResultSection(DacpDatabase database, Func <DacpDatabase, CancellationToken, Task <IEnumerable <T> > > action) { Database = database; _action = action; }
internal SongsSearchResultSection(DacpDatabase database, string searchString, Func <DacpDatabase, CancellationToken, Task <IEnumerable <Song> > > action) : base(database, action) { _searchString = searchString; }
public iTunesUContainer(DacpDatabase database, DacpNodeDictionary nodes) : base(database, nodes) { }
public GeniusMix(DacpDatabase database, DacpNodeDictionary nodes) : base(database, nodes) { }