aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/LiveTv
diff options
context:
space:
mode:
authorAndrew Rabert <ar@nullsum.net>2018-12-27 18:27:57 -0500
committerAndrew Rabert <ar@nullsum.net>2018-12-27 18:27:57 -0500
commita86b71899ec52c44ddc6c3018e8cc5e9d7ff4d62 (patch)
treea74f6ea4a8abfa1664a605d31d48bc38245ccf58 /MediaBrowser.Model/LiveTv
parent9bac3ac616b01f67db98381feb09d34ebe821f9a (diff)
Add GPL modules
Diffstat (limited to 'MediaBrowser.Model/LiveTv')
-rw-r--r--MediaBrowser.Model/LiveTv/BaseTimerInfoDto.cs127
-rw-r--r--MediaBrowser.Model/LiveTv/ChannelType.cs19
-rw-r--r--MediaBrowser.Model/LiveTv/DayPattern.cs9
-rw-r--r--MediaBrowser.Model/LiveTv/GuideInfo.cs19
-rw-r--r--MediaBrowser.Model/LiveTv/LiveTvChannelQuery.cs104
-rw-r--r--MediaBrowser.Model/LiveTv/LiveTvInfo.cs32
-rw-r--r--MediaBrowser.Model/LiveTv/LiveTvOptions.cs88
-rw-r--r--MediaBrowser.Model/LiveTv/LiveTvServiceInfo.cs58
-rw-r--r--MediaBrowser.Model/LiveTv/LiveTvServiceStatus.cs8
-rw-r--r--MediaBrowser.Model/LiveTv/LiveTvTunerStatus.cs10
-rw-r--r--MediaBrowser.Model/LiveTv/ProgramAudio.cs12
-rw-r--r--MediaBrowser.Model/LiveTv/ProgramQuery.cs117
-rw-r--r--MediaBrowser.Model/LiveTv/RecommendedProgramQuery.cs73
-rw-r--r--MediaBrowser.Model/LiveTv/RecordingQuery.cs82
-rw-r--r--MediaBrowser.Model/LiveTv/RecordingStatus.cs14
-rw-r--r--MediaBrowser.Model/LiveTv/SeriesTimerInfoDto.cs92
-rw-r--r--MediaBrowser.Model/LiveTv/SeriesTimerQuery.cs19
-rw-r--r--MediaBrowser.Model/LiveTv/TimerInfoDto.cs43
-rw-r--r--MediaBrowser.Model/LiveTv/TimerQuery.cs23
19 files changed, 949 insertions, 0 deletions
diff --git a/MediaBrowser.Model/LiveTv/BaseTimerInfoDto.cs b/MediaBrowser.Model/LiveTv/BaseTimerInfoDto.cs
new file mode 100644
index 000000000..b5bd6ced0
--- /dev/null
+++ b/MediaBrowser.Model/LiveTv/BaseTimerInfoDto.cs
@@ -0,0 +1,127 @@
+using MediaBrowser.Model.Dto;
+using System;
+using System.Collections.Generic;
+
+namespace MediaBrowser.Model.LiveTv
+{
+ public class BaseTimerInfoDto : IHasServerId
+ {
+ /// <summary>
+ /// Id of the recording.
+ /// </summary>
+ public string Id { get; set; }
+
+ public string Type { get; set; }
+
+ /// <summary>
+ /// Gets or sets the server identifier.
+ /// </summary>
+ /// <value>The server identifier.</value>
+ public string ServerId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the external identifier.
+ /// </summary>
+ /// <value>The external identifier.</value>
+ public string ExternalId { get; set; }
+
+ /// <summary>
+ /// ChannelId of the recording.
+ /// </summary>
+ public Guid ChannelId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the external channel identifier.
+ /// </summary>
+ /// <value>The external channel identifier.</value>
+ public string ExternalChannelId { get; set; }
+
+ /// <summary>
+ /// ChannelName of the recording.
+ /// </summary>
+ public string ChannelName { get; set; }
+
+ public string ChannelPrimaryImageTag { get; set; }
+
+ /// <summary>
+ /// Gets or sets the program identifier.
+ /// </summary>
+ /// <value>The program identifier.</value>
+ public string ProgramId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the external program identifier.
+ /// </summary>
+ /// <value>The external program identifier.</value>
+ public string ExternalProgramId { get; set; }
+
+ /// <summary>
+ /// Name of the recording.
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// Description of the recording.
+ /// </summary>
+ public string Overview { get; set; }
+
+ /// <summary>
+ /// The start date of the recording, in UTC.
+ /// </summary>
+ public DateTime StartDate { get; set; }
+
+ /// <summary>
+ /// The end date of the recording, in UTC.
+ /// </summary>
+ public DateTime EndDate { get; set; }
+
+ /// <summary>
+ /// Gets or sets the name of the service.
+ /// </summary>
+ /// <value>The name of the service.</value>
+ public string ServiceName { get; set; }
+
+ /// <summary>
+ /// Gets or sets the priority.
+ /// </summary>
+ /// <value>The priority.</value>
+ public int Priority { get; set; }
+
+ /// <summary>
+ /// Gets or sets the pre padding seconds.
+ /// </summary>
+ /// <value>The pre padding seconds.</value>
+ public int PrePaddingSeconds { get; set; }
+
+ /// <summary>
+ /// Gets or sets the post padding seconds.
+ /// </summary>
+ /// <value>The post padding seconds.</value>
+ public int PostPaddingSeconds { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is pre padding required.
+ /// </summary>
+ /// <value><c>true</c> if this instance is pre padding required; otherwise, <c>false</c>.</value>
+ public bool IsPrePaddingRequired { get; set; }
+
+ /// <summary>
+ /// If the item does not have any backdrops, this will hold the Id of the Parent that has one.
+ /// </summary>
+ /// <value>The parent backdrop item id.</value>
+ public string ParentBackdropItemId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the parent backdrop image tags.
+ /// </summary>
+ /// <value>The parent backdrop image tags.</value>
+ public string[] ParentBackdropImageTags { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is post padding required.
+ /// </summary>
+ /// <value><c>true</c> if this instance is post padding required; otherwise, <c>false</c>.</value>
+ public bool IsPostPaddingRequired { get; set; }
+ public KeepUntil KeepUntil { get; set; }
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/LiveTv/ChannelType.cs b/MediaBrowser.Model/LiveTv/ChannelType.cs
new file mode 100644
index 000000000..bca16f839
--- /dev/null
+++ b/MediaBrowser.Model/LiveTv/ChannelType.cs
@@ -0,0 +1,19 @@
+
+namespace MediaBrowser.Model.LiveTv
+{
+ /// <summary>
+ /// Enum ChannelType
+ /// </summary>
+ public enum ChannelType
+ {
+ /// <summary>
+ /// The TV
+ /// </summary>
+ TV,
+
+ /// <summary>
+ /// The radio
+ /// </summary>
+ Radio
+ }
+}
diff --git a/MediaBrowser.Model/LiveTv/DayPattern.cs b/MediaBrowser.Model/LiveTv/DayPattern.cs
new file mode 100644
index 000000000..8251795dc
--- /dev/null
+++ b/MediaBrowser.Model/LiveTv/DayPattern.cs
@@ -0,0 +1,9 @@
+namespace MediaBrowser.Model.LiveTv
+{
+ public enum DayPattern
+ {
+ Daily,
+ Weekdays,
+ Weekends
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/LiveTv/GuideInfo.cs b/MediaBrowser.Model/LiveTv/GuideInfo.cs
new file mode 100644
index 000000000..c21f6d871
--- /dev/null
+++ b/MediaBrowser.Model/LiveTv/GuideInfo.cs
@@ -0,0 +1,19 @@
+using System;
+
+namespace MediaBrowser.Model.LiveTv
+{
+ public class GuideInfo
+ {
+ /// <summary>
+ /// Gets or sets the start date.
+ /// </summary>
+ /// <value>The start date.</value>
+ public DateTime StartDate { get; set; }
+
+ /// <summary>
+ /// Gets or sets the end date.
+ /// </summary>
+ /// <value>The end date.</value>
+ public DateTime EndDate { get; set; }
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/LiveTv/LiveTvChannelQuery.cs b/MediaBrowser.Model/LiveTv/LiveTvChannelQuery.cs
new file mode 100644
index 000000000..e3abd5974
--- /dev/null
+++ b/MediaBrowser.Model/LiveTv/LiveTvChannelQuery.cs
@@ -0,0 +1,104 @@
+using MediaBrowser.Model.Entities;
+using System;
+
+namespace MediaBrowser.Model.LiveTv
+{
+ /// <summary>
+ /// Class ChannelQuery.
+ /// </summary>
+ public class LiveTvChannelQuery
+ {
+ /// <summary>
+ /// Gets or sets the type of the channel.
+ /// </summary>
+ /// <value>The type of the channel.</value>
+ public ChannelType? ChannelType { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is favorite.
+ /// </summary>
+ /// <value><c>null</c> if [is favorite] contains no value, <c>true</c> if [is favorite]; otherwise, <c>false</c>.</value>
+ public bool? IsFavorite { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is liked.
+ /// </summary>
+ /// <value><c>null</c> if [is liked] contains no value, <c>true</c> if [is liked]; otherwise, <c>false</c>.</value>
+ public bool? IsLiked { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is disliked.
+ /// </summary>
+ /// <value><c>null</c> if [is disliked] contains no value, <c>true</c> if [is disliked]; otherwise, <c>false</c>.</value>
+ public bool? IsDisliked { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether [enable favorite sorting].
+ /// </summary>
+ /// <value><c>true</c> if [enable favorite sorting]; otherwise, <c>false</c>.</value>
+ public bool EnableFavoriteSorting { get; set; }
+
+ /// <summary>
+ /// Gets or sets the user identifier.
+ /// </summary>
+ /// <value>The user identifier.</value>
+ public Guid UserId { 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>
+ /// Gets or sets a value indicating whether [add current program].
+ /// </summary>
+ /// <value><c>true</c> if [add current program]; otherwise, <c>false</c>.</value>
+ public bool AddCurrentProgram { get; set; }
+ public bool EnableUserData { get; set; }
+
+ /// <summary>
+ /// Used to specific whether to return news or not
+ /// </summary>
+ /// <remarks>If set to null, all programs will be returned</remarks>
+ public bool? IsNews { get; set; }
+
+ /// <summary>
+ /// Used to specific whether to return movies or not
+ /// </summary>
+ /// <remarks>If set to null, all programs will be returned</remarks>
+ public bool? IsMovie { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is kids.
+ /// </summary>
+ /// <value><c>null</c> if [is kids] contains no value, <c>true</c> if [is kids]; otherwise, <c>false</c>.</value>
+ public bool? IsKids { get; set; }
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is sports.
+ /// </summary>
+ /// <value><c>null</c> if [is sports] contains no value, <c>true</c> if [is sports]; otherwise, <c>false</c>.</value>
+ public bool? IsSports { get; set; }
+ public bool? IsSeries { get; set; }
+
+ public string[] SortBy { get; set; }
+
+ /// <summary>
+ /// The sort order to return results with
+ /// </summary>
+ /// <value>The sort order.</value>
+ public SortOrder? SortOrder { get; set; }
+
+ public LiveTvChannelQuery()
+ {
+ EnableUserData = true;
+ SortBy = new string[] {};
+ }
+ }
+}
diff --git a/MediaBrowser.Model/LiveTv/LiveTvInfo.cs b/MediaBrowser.Model/LiveTv/LiveTvInfo.cs
new file mode 100644
index 000000000..331b1101b
--- /dev/null
+++ b/MediaBrowser.Model/LiveTv/LiveTvInfo.cs
@@ -0,0 +1,32 @@
+using System.Collections.Generic;
+using System;
+
+namespace MediaBrowser.Model.LiveTv
+{
+ public class LiveTvInfo
+ {
+ /// <summary>
+ /// Gets or sets the services.
+ /// </summary>
+ /// <value>The services.</value>
+ public LiveTvServiceInfo[] Services { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is enabled.
+ /// </summary>
+ /// <value><c>true</c> if this instance is enabled; otherwise, <c>false</c>.</value>
+ public bool IsEnabled { get; set; }
+
+ /// <summary>
+ /// Gets or sets the enabled users.
+ /// </summary>
+ /// <value>The enabled users.</value>
+ public string[] EnabledUsers { get; set; }
+
+ public LiveTvInfo()
+ {
+ Services = new LiveTvServiceInfo[] { };
+ EnabledUsers = new string[] {};
+ }
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs
new file mode 100644
index 000000000..eb4f20f9e
--- /dev/null
+++ b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs
@@ -0,0 +1,88 @@
+using MediaBrowser.Model.Dto;
+using System;
+
+namespace MediaBrowser.Model.LiveTv
+{
+ public class LiveTvOptions
+ {
+ public int? GuideDays { get; set; }
+ public string RecordingPath { get; set; }
+ public string MovieRecordingPath { get; set; }
+ public string SeriesRecordingPath { get; set; }
+ public bool EnableRecordingSubfolders { get; set; }
+ public bool EnableOriginalAudioWithEncodedRecordings { get; set; }
+
+ public TunerHostInfo[] TunerHosts { get; set; }
+ public ListingsProviderInfo[] ListingProviders { get; set; }
+
+ public int PrePaddingSeconds { get; set; }
+ public int PostPaddingSeconds { get; set; }
+
+ public string[] MediaLocationsCreated { get; set; }
+
+ public string RecordingPostProcessor { get; set; }
+ public string RecordingPostProcessorArguments { get; set; }
+
+ public LiveTvOptions()
+ {
+ TunerHosts = new TunerHostInfo[] { };
+ ListingProviders = new ListingsProviderInfo[] { };
+ MediaLocationsCreated = new string[] { };
+ RecordingPostProcessorArguments = "\"{path}\"";
+ }
+ }
+
+ public class TunerHostInfo
+ {
+ public string Id { get; set; }
+ public string Url { get; set; }
+ public string Type { get; set; }
+ public string DeviceId { get; set; }
+ public string FriendlyName { get; set; }
+ public bool ImportFavoritesOnly { get; set; }
+ public bool AllowHWTranscoding { get; set; }
+ public bool EnableStreamLooping { get; set; }
+ public string Source { get; set; }
+ public int TunerCount { get; set; }
+ public string UserAgent { get; set; }
+
+ public TunerHostInfo()
+ {
+ AllowHWTranscoding = true;
+ }
+ }
+
+ public class ListingsProviderInfo
+ {
+ public string Id { get; set; }
+ public string Type { get; set; }
+ public string Username { get; set; }
+ public string Password { get; set; }
+ public string ListingsId { get; set; }
+ public string ZipCode { get; set; }
+ public string Country { get; set; }
+ public string Path { get; set; }
+
+ public string[] EnabledTuners { get; set; }
+ public bool EnableAllTuners { get; set; }
+ public string[] NewsCategories { get; set; }
+ public string[] SportsCategories { get; set; }
+ public string[] KidsCategories { get; set; }
+ public string[] MovieCategories { get; set; }
+ public NameValuePair[] ChannelMappings { get; set; }
+ public string MoviePrefix { get; set; }
+ public string PreferredLanguage { get; set; }
+ public string UserAgent { get; set; }
+
+ public ListingsProviderInfo()
+ {
+ NewsCategories = new string[] { "news", "journalism", "documentary", "current affairs" };
+ SportsCategories = new string[] { "sports", "basketball", "baseball", "football" };
+ KidsCategories = new string[] { "kids", "family", "children", "childrens", "disney" };
+ MovieCategories = new string[] { "movie" };
+ EnabledTuners = new string[] { };
+ EnableAllTuners = true;
+ ChannelMappings = new NameValuePair[] {};
+ }
+ }
+}
diff --git a/MediaBrowser.Model/LiveTv/LiveTvServiceInfo.cs b/MediaBrowser.Model/LiveTv/LiveTvServiceInfo.cs
new file mode 100644
index 000000000..23eedfc88
--- /dev/null
+++ b/MediaBrowser.Model/LiveTv/LiveTvServiceInfo.cs
@@ -0,0 +1,58 @@
+using System;
+
+namespace MediaBrowser.Model.LiveTv
+{
+ /// <summary>
+ /// Class ServiceInfo
+ /// </summary>
+ public class LiveTvServiceInfo
+ {
+ /// <summary>
+ /// Gets or sets the name.
+ /// </summary>
+ /// <value>The name.</value>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// Gets or sets the home page URL.
+ /// </summary>
+ /// <value>The home page URL.</value>
+ public string HomePageUrl { get; set; }
+
+ /// <summary>
+ /// Gets or sets the status.
+ /// </summary>
+ /// <value>The status.</value>
+ public LiveTvServiceStatus Status { get; set; }
+
+ /// <summary>
+ /// Gets or sets the status message.
+ /// </summary>
+ /// <value>The status message.</value>
+ public string StatusMessage { get; set; }
+
+ /// <summary>
+ /// Gets or sets the version.
+ /// </summary>
+ /// <value>The version.</value>
+ public string Version { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance has update available.
+ /// </summary>
+ /// <value><c>true</c> if this instance has update available; otherwise, <c>false</c>.</value>
+ public bool HasUpdateAvailable { get; set; }
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is visible.
+ /// </summary>
+ /// <value><c>true</c> if this instance is visible; otherwise, <c>false</c>.</value>
+ public bool IsVisible { get; set; }
+
+ public string[] Tuners { get; set; }
+
+ public LiveTvServiceInfo()
+ {
+ Tuners = new string[] { };
+ }
+ }
+}
diff --git a/MediaBrowser.Model/LiveTv/LiveTvServiceStatus.cs b/MediaBrowser.Model/LiveTv/LiveTvServiceStatus.cs
new file mode 100644
index 000000000..20fe84500
--- /dev/null
+++ b/MediaBrowser.Model/LiveTv/LiveTvServiceStatus.cs
@@ -0,0 +1,8 @@
+namespace MediaBrowser.Model.LiveTv
+{
+ public enum LiveTvServiceStatus
+ {
+ Ok = 0,
+ Unavailable = 1
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/LiveTv/LiveTvTunerStatus.cs b/MediaBrowser.Model/LiveTv/LiveTvTunerStatus.cs
new file mode 100644
index 000000000..055199fca
--- /dev/null
+++ b/MediaBrowser.Model/LiveTv/LiveTvTunerStatus.cs
@@ -0,0 +1,10 @@
+namespace MediaBrowser.Model.LiveTv
+{
+ public enum LiveTvTunerStatus
+ {
+ Available = 0,
+ Disabled = 1,
+ RecordingTv = 2,
+ LiveTv = 3
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/LiveTv/ProgramAudio.cs b/MediaBrowser.Model/LiveTv/ProgramAudio.cs
new file mode 100644
index 000000000..9a272492c
--- /dev/null
+++ b/MediaBrowser.Model/LiveTv/ProgramAudio.cs
@@ -0,0 +1,12 @@
+namespace MediaBrowser.Model.LiveTv
+{
+ public enum ProgramAudio
+ {
+ Mono,
+ Stereo,
+ Dolby,
+ DolbyDigital,
+ Thx,
+ Atmos
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/LiveTv/ProgramQuery.cs b/MediaBrowser.Model/LiveTv/ProgramQuery.cs
new file mode 100644
index 000000000..89160948c
--- /dev/null
+++ b/MediaBrowser.Model/LiveTv/ProgramQuery.cs
@@ -0,0 +1,117 @@
+using MediaBrowser.Model.Entities;
+using System;
+using MediaBrowser.Model.Querying;
+
+namespace MediaBrowser.Model.LiveTv
+{
+ /// <summary>
+ /// Class ProgramQuery.
+ /// </summary>
+ public class ProgramQuery
+ {
+ public ProgramQuery()
+ {
+ ChannelIds = new Guid[] { };
+ OrderBy = new Tuple<string, SortOrder>[] { };
+ Genres = new string[] {};
+ GenreIds = new Guid[] { };
+ EnableTotalRecordCount = true;
+ EnableUserData = true;
+ }
+
+ public bool EnableTotalRecordCount { get; set; }
+ public bool EnableUserData { get; set; }
+
+ /// <summary>
+ /// Fields to return within the items, in addition to basic information
+ /// </summary>
+ /// <value>The fields.</value>
+ public ItemFields[] Fields { get; set; }
+ public bool? EnableImages { get; set; }
+ public int? ImageTypeLimit { get; set; }
+ public ImageType[] EnableImageTypes { get; set; }
+
+ /// <summary>
+ /// Gets or sets the channel ids.
+ /// </summary>
+ /// <value>The channel ids.</value>
+ public Guid[] ChannelIds { get; set; }
+
+ /// <summary>
+ /// Gets or sets the user identifier.
+ /// </summary>
+ /// <value>The user identifier.</value>
+ public string UserId { get; set; }
+ public string SeriesTimerId { get; set; }
+ public string Name { get; set; }
+
+ /// <summary>
+ /// The earliest date for which a program starts to return
+ /// </summary>
+ public DateTime? MinStartDate { get; set; }
+
+ /// <summary>
+ /// The latest date for which a program starts to return
+ /// </summary>
+ public DateTime? MaxStartDate { get; set; }
+
+ /// <summary>
+ /// The earliest date for which a program ends to return
+ /// </summary>
+ public DateTime? MinEndDate { get; set; }
+
+ /// <summary>
+ /// The latest date for which a program ends to return
+ /// </summary>
+ public DateTime? MaxEndDate { get; set; }
+
+ /// <summary>
+ /// Used to specific whether to return news or not
+ /// </summary>
+ /// <remarks>If set to null, all programs will be returned</remarks>
+ public bool? IsNews { get; set; }
+
+ /// <summary>
+ /// Used to specific whether to return movies or not
+ /// </summary>
+ /// <remarks>If set to null, all programs will be returned</remarks>
+ public bool? IsMovie { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is kids.
+ /// </summary>
+ /// <value><c>null</c> if [is kids] contains no value, <c>true</c> if [is kids]; otherwise, <c>false</c>.</value>
+ public bool? IsKids { get; set; }
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is sports.
+ /// </summary>
+ /// <value><c>null</c> if [is sports] contains no value, <c>true</c> if [is sports]; otherwise, <c>false</c>.</value>
+ public bool? IsSports { get; set; }
+
+ /// <summary>
+ /// Skips over a given number of items within the results. Use for paging.
+ /// </summary>
+ public int? StartIndex { get; set; }
+ public bool? IsSeries { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance has aired.
+ /// </summary>
+ /// <value><c>null</c> if [has aired] contains no value, <c>true</c> if [has aired]; otherwise, <c>false</c>.</value>
+ public bool? HasAired { get; set; }
+
+ /// <summary>
+ /// The maximum number of items to return
+ /// </summary>
+ public int? Limit { get; set; }
+
+ public Tuple<string, SortOrder>[] OrderBy { get; set; }
+
+ /// <summary>
+ /// Limit results to items containing specific genres
+ /// </summary>
+ /// <value>The genres.</value>
+ public Guid[] GenreIds { get; set; }
+ public string[] Genres { get; set; }
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/LiveTv/RecommendedProgramQuery.cs b/MediaBrowser.Model/LiveTv/RecommendedProgramQuery.cs
new file mode 100644
index 000000000..9972c4c3f
--- /dev/null
+++ b/MediaBrowser.Model/LiveTv/RecommendedProgramQuery.cs
@@ -0,0 +1,73 @@
+using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Querying;
+using System;
+
+namespace MediaBrowser.Model.LiveTv
+{
+ public class RecommendedProgramQuery
+ {
+ /// <summary>
+ /// Fields to return within the items, in addition to basic information
+ /// </summary>
+ /// <value>The fields.</value>
+ public ItemFields[] Fields { get; set; }
+ public bool? EnableImages { get; set; }
+ public int? ImageTypeLimit { get; set; }
+ public ImageType[] EnableImageTypes { get; set; }
+ public Guid[] GenreIds { get; set; }
+
+ public bool EnableTotalRecordCount { get; set; }
+
+ public RecommendedProgramQuery()
+ {
+ EnableTotalRecordCount = true;
+ GenreIds = new Guid[] { };
+ }
+
+ /// <summary>
+ /// Gets or sets the user identifier.
+ /// </summary>
+ /// <value>The user identifier.</value>
+ public string UserId { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is airing.
+ /// </summary>
+ /// <value><c>true</c> if this instance is airing; otherwise, <c>false</c>.</value>
+ public bool? IsAiring { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance has aired.
+ /// </summary>
+ /// <value><c>null</c> if [has aired] contains no value, <c>true</c> if [has aired]; otherwise, <c>false</c>.</value>
+ public bool? HasAired { get; set; }
+
+ /// <summary>
+ /// The maximum number of items to return
+ /// </summary>
+ /// <value>The limit.</value>
+ public int? Limit { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is movie.
+ /// </summary>
+ /// <value><c>null</c> if [is movie] contains no value, <c>true</c> if [is movie]; otherwise, <c>false</c>.</value>
+ public bool? IsNews { get; set; }
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is movie.
+ /// </summary>
+ /// <value><c>null</c> if [is movie] contains no value, <c>true</c> if [is movie]; otherwise, <c>false</c>.</value>
+ public bool? IsMovie { get; set; }
+ public bool? IsSeries { get; set; }
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is kids.
+ /// </summary>
+ /// <value><c>null</c> if [is kids] contains no value, <c>true</c> if [is kids]; otherwise, <c>false</c>.</value>
+ public bool? IsKids { get; set; }
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is sports.
+ /// </summary>
+ /// <value><c>null</c> if [is sports] contains no value, <c>true</c> if [is sports]; otherwise, <c>false</c>.</value>
+ public bool? IsSports { get; set; }
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/LiveTv/RecordingQuery.cs b/MediaBrowser.Model/LiveTv/RecordingQuery.cs
new file mode 100644
index 000000000..7d20441a5
--- /dev/null
+++ b/MediaBrowser.Model/LiveTv/RecordingQuery.cs
@@ -0,0 +1,82 @@
+using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Querying;
+using System;
+
+namespace MediaBrowser.Model.LiveTv
+{
+ /// <summary>
+ /// Class RecordingQuery.
+ /// </summary>
+ public class RecordingQuery
+ {
+ /// <summary>
+ /// Gets or sets the channel identifier.
+ /// </summary>
+ /// <value>The channel identifier.</value>
+ public string ChannelId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the user identifier.
+ /// </summary>
+ /// <value>The user identifier.</value>
+ public Guid UserId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the identifier.
+ /// </summary>
+ /// <value>The identifier.</value>
+ public string Id { 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>
+ /// Gets or sets the status.
+ /// </summary>
+ /// <value>The status.</value>
+ public RecordingStatus? Status { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is in progress.
+ /// </summary>
+ /// <value><c>null</c> if [is in progress] contains no value, <c>true</c> if [is in progress]; otherwise, <c>false</c>.</value>
+ public bool? IsInProgress { get; set; }
+
+ /// <summary>
+ /// Gets or sets the series timer identifier.
+ /// </summary>
+ /// <value>The series timer identifier.</value>
+ public string SeriesTimerId { get; set; }
+
+ /// <summary>
+ /// Fields to return within the items, in addition to basic information
+ /// </summary>
+ /// <value>The fields.</value>
+ public ItemFields[] Fields { get; set; }
+ public bool? EnableImages { get; set; }
+ public bool? IsLibraryItem { get; set; }
+ public bool? IsNews { get; set; }
+ public bool? IsMovie { get; set; }
+ public bool? IsSeries { get; set; }
+ public bool? IsKids { get; set; }
+ public bool? IsSports { get; set; }
+ public int? ImageTypeLimit { get; set; }
+ public ImageType[] EnableImageTypes { get; set; }
+
+ public bool EnableTotalRecordCount { get; set; }
+
+ public RecordingQuery()
+ {
+ EnableTotalRecordCount = true;
+ }
+ }
+}
diff --git a/MediaBrowser.Model/LiveTv/RecordingStatus.cs b/MediaBrowser.Model/LiveTv/RecordingStatus.cs
new file mode 100644
index 000000000..496e6f421
--- /dev/null
+++ b/MediaBrowser.Model/LiveTv/RecordingStatus.cs
@@ -0,0 +1,14 @@
+
+namespace MediaBrowser.Model.LiveTv
+{
+ public enum RecordingStatus
+ {
+ New,
+ InProgress,
+ Completed,
+ Cancelled,
+ ConflictedOk,
+ ConflictedNotOk,
+ Error
+ }
+}
diff --git a/MediaBrowser.Model/LiveTv/SeriesTimerInfoDto.cs b/MediaBrowser.Model/LiveTv/SeriesTimerInfoDto.cs
new file mode 100644
index 000000000..593996352
--- /dev/null
+++ b/MediaBrowser.Model/LiveTv/SeriesTimerInfoDto.cs
@@ -0,0 +1,92 @@
+using MediaBrowser.Model.Entities;
+using System;
+using System.Collections.Generic;
+using MediaBrowser.Model.Serialization;
+
+namespace MediaBrowser.Model.LiveTv
+{
+ /// <summary>
+ /// Class SeriesTimerInfoDto.
+ /// </summary>
+ public class SeriesTimerInfoDto : BaseTimerInfoDto
+ {
+ public SeriesTimerInfoDto()
+ {
+ ImageTags = new Dictionary<ImageType, string>();
+ Days = new DayOfWeek[] { };
+ Type = "SeriesTimer";
+ }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether [record any time].
+ /// </summary>
+ /// <value><c>true</c> if [record any time]; otherwise, <c>false</c>.</value>
+ public bool RecordAnyTime { get; set; }
+
+ public bool SkipEpisodesInLibrary { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether [record any channel].
+ /// </summary>
+ /// <value><c>true</c> if [record any channel]; otherwise, <c>false</c>.</value>
+ public bool RecordAnyChannel { get; set; }
+
+ public int KeepUpTo { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether [record new only].
+ /// </summary>
+ /// <value><c>true</c> if [record new only]; otherwise, <c>false</c>.</value>
+ public bool RecordNewOnly { get; set; }
+
+ /// <summary>
+ /// Gets or sets the days.
+ /// </summary>
+ /// <value>The days.</value>
+ public DayOfWeek[] Days { get; set; }
+
+ /// <summary>
+ /// Gets or sets the day pattern.
+ /// </summary>
+ /// <value>The day pattern.</value>
+ public DayPattern? DayPattern { get; set; }
+
+ /// <summary>
+ /// Gets or sets the image tags.
+ /// </summary>
+ /// <value>The image tags.</value>
+ public Dictionary<ImageType, string> ImageTags { get; set; }
+
+ /// <summary>
+ /// Gets or sets the parent thumb item id.
+ /// </summary>
+ /// <value>The parent thumb item id.</value>
+ public string ParentThumbItemId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the parent thumb image tag.
+ /// </summary>
+ /// <value>The parent thumb image tag.</value>
+ public string ParentThumbImageTag { get; set; }
+
+ /// <summary>
+ /// Gets or sets the parent primary image item identifier.
+ /// </summary>
+ /// <value>The parent primary image item identifier.</value>
+ public string ParentPrimaryImageItemId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the parent primary image tag.
+ /// </summary>
+ /// <value>The parent primary image tag.</value>
+ public string ParentPrimaryImageTag { get; set; }
+ }
+
+ public enum KeepUntil
+ {
+ UntilDeleted,
+ UntilSpaceNeeded,
+ UntilWatched,
+ UntilDate
+ }
+}
diff --git a/MediaBrowser.Model/LiveTv/SeriesTimerQuery.cs b/MediaBrowser.Model/LiveTv/SeriesTimerQuery.cs
new file mode 100644
index 000000000..95260cc0e
--- /dev/null
+++ b/MediaBrowser.Model/LiveTv/SeriesTimerQuery.cs
@@ -0,0 +1,19 @@
+using MediaBrowser.Model.Entities;
+
+namespace MediaBrowser.Model.LiveTv
+{
+ public class SeriesTimerQuery
+ {
+ /// <summary>
+ /// Gets or sets the sort by - SortName, Priority
+ /// </summary>
+ /// <value>The sort by.</value>
+ public string SortBy { get; set; }
+
+ /// <summary>
+ /// Gets or sets the sort order.
+ /// </summary>
+ /// <value>The sort order.</value>
+ public SortOrder SortOrder { get; set; }
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/LiveTv/TimerInfoDto.cs b/MediaBrowser.Model/LiveTv/TimerInfoDto.cs
new file mode 100644
index 000000000..d1aa3118f
--- /dev/null
+++ b/MediaBrowser.Model/LiveTv/TimerInfoDto.cs
@@ -0,0 +1,43 @@
+using MediaBrowser.Model.Dto;
+
+namespace MediaBrowser.Model.LiveTv
+{
+ public class TimerInfoDto : BaseTimerInfoDto
+ {
+ public TimerInfoDto()
+ {
+ Type = "Timer";
+ }
+
+ /// <summary>
+ /// Gets or sets the status.
+ /// </summary>
+ /// <value>The status.</value>
+ public RecordingStatus Status { get; set; }
+
+ /// <summary>
+ /// Gets or sets the series timer identifier.
+ /// </summary>
+ /// <value>The series timer identifier.</value>
+ public string SeriesTimerId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the external series timer identifier.
+ /// </summary>
+ /// <value>The external series timer identifier.</value>
+ public string ExternalSeriesTimerId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the run time ticks.
+ /// </summary>
+ /// <value>The run time ticks.</value>
+ public long? RunTimeTicks { get; set; }
+
+ /// <summary>
+ /// Gets or sets the program information.
+ /// </summary>
+ /// <value>The program information.</value>
+ public BaseItemDto ProgramInfo { get; set; }
+
+ }
+}
diff --git a/MediaBrowser.Model/LiveTv/TimerQuery.cs b/MediaBrowser.Model/LiveTv/TimerQuery.cs
new file mode 100644
index 000000000..c6202680c
--- /dev/null
+++ b/MediaBrowser.Model/LiveTv/TimerQuery.cs
@@ -0,0 +1,23 @@
+namespace MediaBrowser.Model.LiveTv
+{
+ public class TimerQuery
+ {
+ /// <summary>
+ /// Gets or sets the channel identifier.
+ /// </summary>
+ /// <value>The channel identifier.</value>
+ public string ChannelId { get; set; }
+
+ public string Id { get; set; }
+
+ /// <summary>
+ /// Gets or sets the series timer identifier.
+ /// </summary>
+ /// <value>The series timer identifier.</value>
+ public string SeriesTimerId { get; set; }
+
+ public bool? IsActive { get; set; }
+
+ public bool? IsScheduled { get; set; }
+ }
+} \ No newline at end of file