using MediaBrowser.Model.Entities; using System; namespace MediaBrowser.Model.Querying { /// <summary> /// Contains all the possible parameters that can be used to query for items /// </summary> public class ItemQuery { /// <summary> /// The user to localize search results for /// </summary> /// <value>The user id.</value> public string UserId { get; set; } /// <summary> /// Specify this to localize the search to a specific item or folder. Omit to use the root. /// </summary> /// <value>The parent id.</value> public string ParentId { get; set; } /// <summary> /// Skips over a given number of items within the results. Use for paging. /// </summary> /// <value>The start index.</value> public int? StartIndex { get; set; } /// <summary> /// The maximum number of items to return /// </summary> /// <value>The limit.</value> public int? Limit { get; set; } /// <summary> /// What to sort the results by /// </summary> /// <value>The sort by.</value> public string[] SortBy { get; set; } /// <summary> /// Gets or sets the artist ids. /// </summary> /// <value>The artist ids.</value> public string[] ArtistIds { get; set; } /// <summary> /// The sort order to return results with /// </summary> /// <value>The sort order.</value> public SortOrder? SortOrder { get; set; } /// <summary> /// Filters to apply to the results /// </summary> /// <value>The filters.</value> public ItemFilter[] Filters { get; set; } /// <summary> /// Fields to return within the items, in addition to basic information /// </summary> /// <value>The fields.</value> public ItemFields[] Fields { get; set; } /// <summary> /// Gets or sets the media types. /// </summary> /// <value>The media types.</value> public string[] MediaTypes { get; set; } /// <summary> /// Gets or sets the video formats. /// </summary> /// <value>The video formats.</value> public bool? Is3D { get; set; } /// <summary> /// Gets or sets the video types. /// </summary> /// <value>The video types.</value> public VideoType[] VideoTypes { get; set; } /// <summary> /// Whether or not to perform the query recursively /// </summary> /// <value><c>true</c> if recursive; otherwise, <c>false</c>.</value> public bool Recursive { get; set; } /// <summary> /// Limit results to items containing specific genres /// </summary> /// <value>The genres.</value> public string[] Genres { get; set; } /// <summary> /// Gets or sets the studio ids. /// </summary> /// <value>The studio ids.</value> public string[] StudioIds { get; set; } /// <summary> /// Gets or sets the exclude item types. /// </summary> /// <value>The exclude item types.</value> public string[] ExcludeItemTypes { get; set; } /// <summary> /// Gets or sets the include item types. /// </summary> /// <value>The include item types.</value> public string[] IncludeItemTypes { get; set; } /// <summary> /// Limit results to items containing specific years /// </summary> /// <value>The years.</value> public int[] Years { get; set; } /// <summary> /// Limit results to items containing a specific person /// </summary> /// <value>The person.</value> public string[] PersonIds { get; set; } /// <summary> /// If the Person filter is used, this can also be used to restrict to a specific person type /// </summary> /// <value>The type of the person.</value> public string[] PersonTypes { get; set; } /// <summary> /// Search characters used to find items /// </summary> /// <value>The index by.</value> public string SearchTerm { get; set; } /// <summary> /// Gets or sets the image types. /// </summary> /// <value>The image types.</value> public ImageType[] ImageTypes { get; set; } /// <summary> /// Gets or sets the air days. /// </summary> /// <value>The air days.</value> public DayOfWeek[] AirDays { get; set; } /// <summary> /// Gets or sets the series status. /// </summary> /// <value>The series status.</value> public SeriesStatus[] SeriesStatuses { get; set; } /// <summary> /// Gets or sets the ids, which are specific items to retrieve /// </summary> /// <value>The ids.</value> public string[] Ids { get; set; } /// <summary> /// Gets or sets the min official rating. /// </summary> /// <value>The min official rating.</value> public string MinOfficialRating { get; set; } /// <summary> /// Gets or sets the max official rating. /// </summary> /// <value>The max official rating.</value> public string MaxOfficialRating { get; set; } /// <summary> /// Gets or sets the min index number. /// </summary> /// <value>The min index number.</value> public int? MinIndexNumber { get; set; } /// <summary> /// Gets or sets a value indicating whether this instance has parental rating. /// </summary> /// <value><c>null</c> if [has parental rating] contains no value, <c>true</c> if [has parental rating]; otherwise, <c>false</c>.</value> public bool? HasParentalRating { get; set; } /// <summary> /// Gets or sets a value indicating whether this instance is HD. /// </summary> /// <value><c>null</c> if [is HD] contains no value, <c>true</c> if [is HD]; otherwise, <c>false</c>.</value> public bool? IsHD { get; set; } /// <summary> /// Gets or sets the parent index number. /// </summary> /// <value>The parent index number.</value> public int? ParentIndexNumber { get; set; } /// <summary> /// Gets or sets the min players. /// </summary> /// <value>The min players.</value> public int? MinPlayers { get; set; } /// <summary> /// Gets or sets the max players. /// </summary> /// <value>The max players.</value> public int? MaxPlayers { get; set; } /// <summary> /// Gets or sets the name starts with or greater. /// </summary> /// <value>The name starts with or greater.</value> public string NameStartsWithOrGreater { get; set; } /// <summary> /// Gets or sets the name starts with. /// </summary> /// <value>The name starts with or greater.</value> public string NameStartsWith { get; set; } /// <summary> /// Gets or sets the name starts with. /// </summary> /// <value>The name lessthan.</value> public string NameLessThan { get; set; } /// <summary> /// Gets or sets the album artist starts with or greater. /// </summary> /// <value>The album artist starts with or greater.</value> public string AlbumArtistStartsWithOrGreater { get; set; } /// <summary> /// Gets or sets a value indicating whether [include index containers]. /// </summary> /// <value><c>true</c> if [include index containers]; otherwise, <c>false</c>.</value> public bool IncludeIndexContainers { get; set; } /// <summary> /// Gets or sets the location types. /// </summary> /// <value>The location types.</value> public LocationType[] LocationTypes { get; set; } /// <summary> /// Gets or sets a value indicating whether this instance is missing episode. /// </summary> /// <value><c>null</c> if [is missing episode] contains no value, <c>true</c> if [is missing episode]; otherwise, <c>false</c>.</value> public bool? IsMissing { get; set; } /// <summary> /// Gets or sets a value indicating whether this instance is unaired episode. /// </summary> /// <value><c>null</c> if [is unaired episode] contains no value, <c>true</c> if [is unaired episode]; otherwise, <c>false</c>.</value> public bool? IsUnaired { get; set; } public bool? IsVirtualUnaired { get; set; } public bool? IsInBoxSet { get; set; } public bool? CollapseBoxSetItems { get; set; } public bool? IsPlayed { get; set; } /// <summary> /// Gets or sets the exclude location types. /// </summary> /// <value>The exclude location types.</value> public LocationType[] ExcludeLocationTypes { get; set; } public double? MinCommunityRating { get; set; } public double? MinCriticRating { get; set; } public int? AiredDuringSeason { get; set; } public DateTime? MinPremiereDate { get; set; } public DateTime? MaxPremiereDate { get; set; } public bool? EnableImages { get; set; } public int? ImageTypeLimit { get; set; } public ImageType[] EnableImageTypes { get; set; } [Obsolete] public string[] Artists { get; set; } [Obsolete] public string[] Studios { get; set; } [Obsolete] public string Person { get; set; } public bool EnableTotalRecordCount { get; set; } /// <summary> /// Initializes a new instance of the <see cref="ItemQuery" /> class. /// </summary> public ItemQuery() { LocationTypes = new LocationType[] { }; ExcludeLocationTypes = new LocationType[] { }; SortBy = new string[] { }; Filters = new ItemFilter[] { }; Fields = new ItemFields[] { }; MediaTypes = new string[] { }; VideoTypes = new VideoType[] { }; EnableTotalRecordCount = true; Artists = new string[] { }; Studios = new string[] { }; Genres = new string[] { }; StudioIds = new string[] { }; IncludeItemTypes = new string[] { }; ExcludeItemTypes = new string[] { }; Years = new int[] { }; PersonTypes = new string[] { }; Ids = new string[] { }; ArtistIds = new string[] { }; PersonIds = new string[] { }; ImageTypes = new ImageType[] { }; AirDays = new DayOfWeek[] { }; SeriesStatuses = new SeriesStatus[] { }; EnableImageTypes = new ImageType[] { }; } } }