public static async Task<List<Song>> GetSongs(Filter filter = null, Limits limits = null, Sort sort = null)
        {
            JObject parameters = new JObject(
                                     new JProperty("properties",
                                         new JArray("album", "albumartist", "albumartistid", "albumid", "comment", "disc", "duration", "file", "lastplayed", "lyrics", "musicbrainzartistid", "musicbrainztrackid", "playcount", "track"))
                                             );

            if (limits != null)
            {
                parameters["limits"] = JObject.FromObject(limits);
            }

            if (filter != null)
            {
                parameters["filter"] = JObject.FromObject(filter);
            }

            if (sort != null)
            {
                parameters["sort"] = JObject.FromObject(sort);
            }

            JObject responseObject = await ConnectionManager.ExecuteRPCRequest("AudioLibrary.GetSongs", parameters);

            JArray songListObject = (JArray)responseObject["result"]["songs"];
            List<Song> listToReturn = songListObject != null ? songListObject.ToObject<List<Song>>() : new List<Song>();
            return listToReturn;
        }
        public static async Task<List<TVShow>> GetTVShows(Limits limits = null, Filter filter = null, Sort sort = null)
        {
            JObject parameters = new JObject(
                                new JProperty("properties",
                                    new JArray("title", "genre", "year", "rating", "plot", "studio", "mpaa", "cast", "playcount", "episode", "imdbnumber", "premiered", "votes", "lastplayed", "fanart", "thumbnail", "file", "originaltitle", "sorttitle", "episodeguide", "season", "watchedepisodes", "dateadded", "tag", "art")
                                    ));

            if (limits != null)
            {
                parameters["limits"] = JObject.FromObject(limits);
            }

            if (filter != null)
            {
                parameters["filter"] = JObject.FromObject(filter);
            }

            if (sort != null)
            {
                parameters["sort"] = JObject.FromObject(sort);
            }

            JObject responseObject = await ConnectionManager.ExecuteRPCRequest("VideoLibrary.GetTVShows", parameters);
            JArray tvShowsListObject = (JArray)responseObject["result"]["tvshows"];
            
            List<TVShow> listToReturn = tvShowsListObject != null ? tvShowsListObject.ToObject<List<TVShow>>() : new List<TVShow>();
            return listToReturn;
        }
        async void AlbumPage_Loaded(object sender, RoutedEventArgs e)
        {
            ConnectionManager.ManageSystemTray(true);
            Filter filter = new Filter { Field = "album", Operator = "is", value = GlobalVariables.CurrentAlbum.Title };
            Sort sort = new Sort { Method = "track", Order = "ascending", IgnoreArticle = true };
            songsInAlbum = await AudioLibrary.GetSongs(filter: filter, sort: sort);
            SongsListView.ItemsSource = songsInAlbum;

            currentAlbum = await AudioLibrary.GetAlbumDetails(GlobalVariables.CurrentAlbum.AlbumId);
            this.DataContext = currentAlbum;
            ConnectionManager.ManageSystemTray(false);
        }
        async void AlbumPage_Loaded(object sender, RoutedEventArgs e)
        {
            var loader = new Windows.ApplicationModel.Resources.ResourceLoader();
            string track = loader.GetString("Track");
            string tracks = loader.GetString("Tracks");

            ConnectionManager.ManageSystemTray(true);
            Filter filter = new Filter { Field = "album", Operator = "is", value = GlobalVariables.CurrentAlbum.Title };
            Sort sort = new Sort { Method = "track", Order = "ascending", IgnoreArticle = true };
            songsInAlbum = await AudioLibrary.GetSongs(filter: filter, sort: sort);
            SongsListView.ItemsSource = songsInAlbum;

            TrackCountTextBlock.Text = songsInAlbum.Count.ToString();
            TracksTextBlock.Text = songsInAlbum.Count > 1 ? tracks : track;

            currentAlbum = await AudioLibrary.GetAlbumDetails(GlobalVariables.CurrentAlbum.AlbumId);
            AlbumInfoGrid.DataContext = currentAlbum;
            ConnectionManager.ManageSystemTray(false);
        }
Exemple #5
0
        public static async Task<List<File>> GetDirectory(string directory, string media = "files", Sort sort = null)
        {
            JObject parameters = new JObject(
                                new JProperty("properties",
                                    new JArray("mimetype", "file", "lastmodified")
                                    ));

            parameters["directory"] = directory;
            parameters["media"] = media;

            if (sort != null)
            {
                parameters["sort"] = JObject.FromObject(sort);
            }

            JObject responseObject = await ConnectionManager.ExecuteRPCRequest("Files.GetDirectory", parameters);
            JArray fileListObject = (JArray)responseObject["result"]["files"];
            List<File> listToReturn = fileListObject != null ? fileListObject.ToObject<List<File>>() : new List<File>();
            return listToReturn;
        }
Exemple #6
0
        public static async Task<List<Source>> GetSources(string media = "files", Limits limits = null, Sort sort = null)
        {
            JObject parameters = new JObject();

            parameters["media"] = media;

            if (limits != null)
            {
                parameters["limits"] = JObject.FromObject(limits);
            }

            if (sort != null)
            {
                parameters["sort"] = JObject.FromObject(sort);
            }

            JObject responseObject = await ConnectionManager.ExecuteRPCRequest("Files.GetSources", parameters);
            JArray fileListObject = (JArray)responseObject["result"]["sources"];
            List<Source> listToReturn = fileListObject != null ? fileListObject.ToObject<List<Source>>() : new List<Source>();
            return listToReturn;
        }
        public static async Task<List<Movie>> GetRecentlyAddedMovies(Limits limits = null, Sort sort = null)
        {
            JObject parameters = new JObject(
                                new JProperty("properties",
                                    new JArray("title", "genre", "year", "rating", "director", "trailer", "tagline", "plot", "plotoutline", "originaltitle", "lastplayed", "playcount", "writer", "studio", "mpaa", "cast", "country", "imdbnumber", "runtime", "set", "showlink", "streamdetails", "top250", "votes", "fanart", "thumbnail", "file", "sorttitle", "resume", "setid", "dateadded", "tag", "art")
                                    ));

            if (limits != null)
            {
                parameters["limits"] = JObject.FromObject(limits);
            }

            if (sort != null)
            {
                parameters["sort"] = JObject.FromObject(sort);
            }

            JObject responseObject = await ConnectionManager.ExecuteRPCRequest("VideoLibrary.GetRecentlyAddedMovies", parameters);
            JArray movieListObject = (JArray)responseObject["result"]["movies"];
            List<Movie> listToReturn = movieListObject != null ? movieListObject.ToObject<List<Movie>>() : new List<Movie>();
            return listToReturn;
        }
        public static async Task<List<Episode>> GetRecentlyAddedEpisodes(Limits limits = null, Sort sort = null)
        {
            JObject parameters = new JObject(
                                new JProperty("properties",
                                    new JArray("title", "plot", "votes", "rating", "writer", "firstaired", "playcount", "runtime", "director", "productioncode", "season", "episode", "originaltitle", "showtitle", "streamdetails", "lastplayed", "fanart", "thumbnail", "file", "resume", "tvshowid", "dateadded", "uniqueid", "art")
                                    ));

            if (limits != null)
            {
                parameters["limits"] = JObject.FromObject(limits);
            }

            if (sort != null)
            {
                parameters["sort"] = JObject.FromObject(sort);
            }

            JObject responseObject = await ConnectionManager.ExecuteRPCRequest("VideoLibrary.GetRecentlyAddedEpisodes", parameters);
            JArray episodeListObject = (JArray)responseObject["result"]["episodes"];
            List<Episode> listToReturn = episodeListObject != null ? episodeListObject.ToObject<List<Episode>>() : new List<Episode>();
            return listToReturn;
        }
        public static async Task<List<Album>> GetRecentlyAddedAlbums(Limits limits = null, Sort sort = null)
        {
            JObject parameters = new JObject(
                                new JProperty("properties",
                                    new JArray("title", "description", "artist", "genre", "theme", "mood", "style", "type", "albumlabel", "rating", "year", "musicbrainzalbumid", "musicbrainzalbumartistid", "fanart", "thumbnail", "playcount", "genreid", "artistid", "displayartist")
                                    ));

            if (limits != null)
            {
                parameters["limits"] = JObject.FromObject(limits);
            }

            if (sort != null)
            {
                parameters["sort"] = JObject.FromObject(sort);
            }

            JObject responseObject = await ConnectionManager.ExecuteRPCRequest("AudioLibrary.GetRecentlyAddedAlbums", parameters);

            JArray albumListObject = (JArray)responseObject["result"]["albums"];
            List<Album> listToReturn = albumListObject != null ? albumListObject.ToObject<List<Album>>() : new List<Album>();
            return listToReturn;
        }
        private async void ReloadAll()
        {
            ConnectionManager.ManageSystemTray(true);
            allArtists = await AudioLibrary.GetArtists();
            var groupedAllArtists = GroupingHelper.GroupList(allArtists, (Artist a) => a.Label, true);
            ArtistsCVS.Source = groupedAllArtists;
            (ArtistsSemanticZoom.ZoomedOutView as ListViewBase).ItemsSource = ArtistsCVS.View.CollectionGroups;

            Sort sort = new Sort { Method = "label", Order = "ascending", IgnoreArticle = true };
            allAlbums = await AudioLibrary.GetAlbums(sort: sort);
            var groupedAllAlbums = GroupingHelper.GroupList(allAlbums, (Album a) => a.Label, true);
            AlbumsCVS.Source = groupedAllAlbums;
            (AlbumsSemanticZoom.ZoomedOutView as ListViewBase).ItemsSource = AlbumsCVS.View.CollectionGroups;

            allSongs = await AudioLibrary.GetSongs(sort: sort);
            var groupedAllSongs = GroupingHelper.GroupList(allSongs, (Song s) => s.Label, true);
            SongsCVS.Source = groupedAllSongs;
            (SongsSemanticZoom.ZoomedOutView as ListViewBase).ItemsSource = SongsCVS.View.CollectionGroups;

            ConnectionManager.ManageSystemTray(false);
        }
        private async void SearchAndReload(string query)
        {
            ConnectionManager.ManageSystemTray(true);

            Filter artistFilter = new Filter { Field = "artist", Operator = "contains", value = query };
            Sort artistSort = new Sort { Method = "artist", Order = "ascending", IgnoreArticle = true };
            ArtistSearchListView.ItemsSource = await AudioLibrary.GetArtists(artistFilter, sort: artistSort);

            Filter albumFilter = new Filter { Field = "album", Operator = "contains", value = query };
            Sort albumSort = new Sort { Method = "album", Order = "ascending", IgnoreArticle = true };
            AlbumSearchGridView.ItemsSource = await AudioLibrary.GetAlbums(albumFilter, sort: albumSort);

            Filter songFilter = new Filter { Field = "title", Operator = "contains", value = query };
            Sort songSort = new Sort { Method = "title", Order = "ascending", IgnoreArticle = true };
            SongsSearchListView.ItemsSource = await AudioLibrary.GetSongs(songFilter, sort: songSort);

            ConnectionManager.ManageSystemTray(false);
        }
        public static async Task<List<Artist>> GetArtists(Filter filter = null, Limits limits = null, Sort sort = null)
        {
            JObject parameters = new JObject(
                                     new JProperty("properties",
                                         new JArray("born", "description", "died", "disbanded", "formed", "instrument", "mood", "musicbrainzartistid", "style", "yearsactive", "thumbnail", "fanart"))
                                             );

            if (limits != null)
            {
                parameters["limits"] = JObject.FromObject(limits);
            }

            if (filter != null)
            {
                parameters["filter"] = JObject.FromObject(filter);
            }

            if (sort != null)
            {
                parameters["sort"] = JObject.FromObject(sort);
            }

            JObject responseObject = await ConnectionManager.ExecuteRPCRequest("AudioLibrary.GetArtists", parameters);

            JArray artistListObject = (JArray)responseObject["result"]["artists"];
            List<Artist> listToReturn = artistListObject != null ? artistListObject.ToObject<List<Artist>>() : new List<Artist>();
            return listToReturn;
        }
        private async Task PopulatePage(string navigationArgs)
        {
            string showName = navigationArgs.Split("_".ToArray())[1];
            ShowNameTextBlock.Text = showName;

            var shows = await VideoLibrary.GetTVShows();
            int showId = shows.Where(show => show.Title == showName).FirstOrDefault().TvShowId;

            if (showId == null)
                return;

            Filter newFilter = new Filter { Field = "playcount", Operator = "is", value = "0" };

            Sort sort = new Sort { Method = "label", IgnoreArticle = true, Order = "ascending" };

            var newEpisodes = new EpisodesCollection(newFilter, sort, showId);
            NewEpisodesListView.ItemsSource = newEpisodes;

            Filter watchedFilter = new Filter { Field = "playcount", Operator = "greaterthan", value = "0" };

            var watchedEpisodes = new EpisodesCollection(watchedFilter, sort, showId);
            WatchedEpisodesListView.ItemsSource = watchedEpisodes;
            
            if (await VideoLibrary.GetEpisodesCount(tvShowID: showId) == 0)
            {
                string message = String.Format("No episodes were found in {0}. We will take you to the library now.", showName);
                string messageHeader = "Nothing Here!";
                MessageDialog msg = new MessageDialog(message, messageHeader);
                await msg.ShowAsync();
                Frame.Navigate(typeof(CoverPage));
            }
        }