mythtv-services-api
Version:
Mythtv Service Api Bindings
708 lines (707 loc) • 17.9 kB
TypeScript
declare namespace ApiTypes {
enum RecStatusType {
Pending = -15,
Failing = -14,
MissedFuture = -11,
Tuning = -10,
Failed = -9,
TunerBusy = -8,
LowDiskSpace = -7,
Cancelled = -6,
Missed = -5,
Aborted = -4,
Recorded = -3,
Recording = -2,
WillRecord = -1,
Unknown = 0,
DontRecord = 1,
PreviousRecording = 2,
CurrentRecording = 3,
EarlierShowing = 4,
TooManyRecordings = 5,
NotListed = 6,
Conflict = 7,
LaterShowing = 8,
Repeat = 9,
Inactive = 10,
NeverRecord = 11,
Offline = 12
}
enum AudioProperty {
STEREO = 1,
MONO = 2,
SURROUND = 4,
DOLBY = 8,
HARDHEAR = 16,
VISUALIMPAIR = 32
}
enum VideoProperty {
HDTV = 1,
WIDESCREEN = 2,
AVC = 4,
HD720 = 8,
HD1080 = 16,
DAMAGED = 32,
_3DTV = 64
}
enum SubtitleType {
HARDHEAR = 1,
NORMAL = 2,
ONSCREEN = 4,
SIGNED = 8
}
enum ProgramFlag {
COMMFLAG = 1,
CUTLIST = 2,
AUTOEXP = 4,
EDITING = 8,
BOOKMARK = 16,
REALLYEDITING = 32,
COMMPROCESSING = 64,
DELETEPENDING = 128,
TRANSCODED = 256,
WATCHED = 512,
PRESERVED = 1024,
CHANCOMMFREE = 2048,
REPEAT = 4096,
DUPLICATE = 8192,
REACTIVATE = 16384,
IGNOREBOOKMARK = 32768,
TYPEMASK = 983040,
INUSERECORDING = 1048576,
INUSEPLAYING = 2097152,
INUSEOTHER = 4194304
}
enum CategoryType {
NONE = "",
MOVIE = "movie",
SERIES = "series",
TVSHOW = "tvshow",
SPORTS = "sports"
}
interface RecordingInfo {
RecordedId: number;
Status: RecStatusType;
Priority: number;
StartTs: Date;
EndTs: Date;
FileSize: number;
FileName: string;
HostName: string;
LastModified: Date;
RecordId: number;
RecGroup: string;
PlayGroup: string;
StorageGroup: string;
RecType: number;
DupInType: number;
DupMethod: number;
EncoderId: number;
EncoderName: string;
Profile: string;
}
interface ChannelInfo {
ChanId: number;
ChanNum: string;
CallSign: string;
ChannelName: string;
IconURL: string;
MplexId?: number;
ServiceId?: number;
ATSCMajorChan?: number;
ATSCMinorChan?: number;
Format?: string;
FrequencyId?: string;
FineTune?: number;
ChanFilters?: string;
SourceId?: number;
InputId?: number;
CommFree?: boolean;
UseEIT?: boolean;
Visible?: boolean;
ExtendedVisible?: ChannelVisibleType;
XMLTVID?: string;
DefaultAuth?: string;
ChannelGroups?: string;
Inputs?: string;
ServiceType?: number;
Programs: Program[];
}
interface Program {
StartTime: Date;
EndTime: Date;
Title: string;
SubTitle: string;
Category: string;
CatType: CategoryType;
Repeat: boolean;
VideoProps: number;
AudioProps: number;
SubProps: number;
SeriesId: string;
ProgramId: string;
Stars: number;
LastModified: Date;
ProgramFlags: number;
Airdate: Date;
Description: string;
Inetref: string;
Season: number;
Episode: number;
TotalEpisodes: number;
FileSize: number;
FileName: string;
HostName: string;
Channel: ChannelInfo;
Recording: RecordingInfo;
Artwork: ArtworkInfoList;
}
interface ArtworkInfo {
URL: string;
FileName: string;
StorageGroup: string;
Type: string;
}
interface ArtworkInfoList {
ArtworkInfos: ArtworkInfo[];
}
interface CastMemberList {
CastMembers: CastMember[];
}
interface CastMember {
Name: string;
CharacterName: string;
Role: string;
TranslatedRole: string;
}
interface ListRequest {
StartIndex?: number;
Count?: number;
}
interface DescendingListRequest extends ListRequest {
Descending?: boolean;
}
interface SortedListRequest<S extends string> extends ListRequest {
Sort?: S;
}
interface MultiSortedListRequest<S extends string> extends ListRequest {
Sort?: S[];
}
interface ListResponse extends Required<ListRequest> {
TotalAvailable: number;
AsOf: Date;
Version: string;
ProtoVer: string;
}
interface PageResponse extends ListResponse {
CurrentPage: number;
TotalPages: number;
TotalAvailable: number;
AsOf: Date;
Version: string;
ProtoVer: string;
}
interface VideoSourceList {
AsOf: Date;
Version: string;
ProtoVer: string;
VideoSources: VideoSource[];
}
interface VideoSource {
Id: number;
SourceName: string;
Grabber: string;
UserId: string;
FreqTable: string;
LineupId: string;
Password: string;
UseEIT: boolean;
ConfigPath: string;
NITId: string;
BouquetId: number;
RegionId: number;
ScanFrequency: number;
}
interface ChannelInfoList extends PageResponse {
ChannelInfos: ChannelInfo[];
}
interface Lineup {
LineupId: string;
Name: string;
DisplayName: string;
Type: string;
Postal: string;
Device: string;
}
interface VideoMultiplex {
MplexId: number;
SourceId: number;
TransportId: number;
NetworkId: number;
Frequency: number;
Inversion: string;
SymbolRate: number;
FEC: string;
Polarity: string;
Modulation: string;
Bandwidth: string;
LPCodeRate: string;
HPCodeRate: string;
TransmissionMode: string;
GuardInterval: string;
Visible: boolean;
Constellation: string;
Hierarchy: string;
ModulationSystem: string;
RollOff: string;
SIStandard: string;
ServiceVersion: number;
UpdateTimeStamp: Date;
DefaultAuthority: string;
}
interface VideoMultiplexList extends PageResponse {
VideoMultiplexes: VideoMultiplex[];
}
interface Encoder {
Id: number;
Recording: Program;
Connected: boolean;
HostName: string;
}
interface ProgramList extends PageResponse {
Programs: Program[];
}
interface Input {
Id: number;
CardId: number;
SourceId: number;
InputName: string;
DisplayName: string;
QuickTune: boolean;
RecPriority: number;
ScheduleOrder: number;
LiveTVOrder: number;
}
interface RecRuleFilterList extends PageResponse {
RecRuleFilters: RecRuleFilter[];
}
interface RecRuleFilter {
Id: number;
Description: string;
}
interface RecRule {
Id: number;
ParentId: number;
Inactive: boolean;
Title: string;
SubTitle: string;
Description: string;
Season: number;
Episode: number;
Category: string;
StartTime: Date;
EndTime: Date;
SeriesId: string;
ProgramId: string;
Inetref: string;
ChanId: number;
CallSign: string;
FindDay: number;
FindTime: Date;
Type: string;
SearchType: string;
RecPriority: number;
PreferredInput: number;
StartOffset: number;
EndOffset: number;
DupMethod: string;
DupIn: string;
Filter: number;
RecProfile: string;
RecGroup: string;
StorageGroup: string;
PlayGroup: string;
AutoExpire: boolean;
MaxEpisodes: number;
MaxNewest: boolean;
AutoCommflag: boolean;
AutoTranscode: boolean;
AutoMetaLookup: boolean;
AutoUserJob1: boolean;
AutoUserJob2: boolean;
AutoUserJob3: boolean;
AutoUserJob4: boolean;
Transcoder: number;
NextRecording: Date;
LastRecorded: Date;
LastDeleted: Date;
AverageDelay: number;
}
interface RecRuleList extends PageResponse {
RecRules: RecRule[];
}
interface Cutting {
Mark: number;
Offset: number;
}
interface TitleInfo {
Title: string;
Inetref: string;
Count: number;
}
interface FrontendList {
Frontends: Frontend[];
}
interface Frontend {
Name: string;
IP: string;
Port: number;
OnLine: number;
}
interface BackendInfo {
Build: BuildInfo;
Env: EnvInfo;
Log: LogInfo;
}
interface BuildInfo {
Version: string;
LibX264: boolean;
LibDNS_SD: boolean;
}
interface EnvInfo {
LANG: string;
LCALL: string;
LCCTYPE: string;
HOME: string;
MYTHCONFDIR: string;
}
interface LogInfo {
LogArgs: string;
}
interface ConnectionInfo {
Version: VersionInfo;
Database: DatabaseInfo;
WOL: WOLInfo;
}
interface VersionInfo {
Version: string;
Branch: string;
Protocol: string;
Binary: string;
Schema: string;
}
interface DatabaseInfo {
Host: string;
Ping: boolean;
Port: number;
UserName: string;
Password: string;
Name: string;
Type: string;
LocalEnabled: boolean;
LocalHostName: string;
}
interface WOLInfo {
Enabled: boolean;
Reconnect: number;
Retry: number;
Command: string;
}
interface LogMessageList {
HostNames: LabelValue[];
Applications: LabelValue[];
LogMessages: LogMessage[];
}
interface LabelValue {
Label: string;
Value: string;
Description: string;
Active: boolean;
Selected: boolean;
}
interface LogMessage {
HostName: string;
Application: string;
PID: number;
TID: number;
Thread: string;
Filename: string;
Line: number;
Function: string;
Time: Date;
Level: string;
Message: string;
}
interface SettingList {
[setting: string]: string;
HostName: string;
}
interface StorageGroupDirList {
StorageGroupDirs: StorageGroupDir[];
}
interface StorageGroupDir {
Id: number;
GroupName: string;
HostName: string;
DirName: string;
DirRead: boolean;
DirWrite: string;
KiBFree: number;
}
interface TimeZoneInfo {
TimeZoneID: string;
UTCOffset: number;
CurrentDateTime: Date;
}
interface VideoMetadataInfo {
Id: number;
Title: string;
SubTitle: string;
Tagline: string;
Director: string;
Studio: string;
Description: string;
Certification: string;
Inetref: string;
Collectionref: number;
HomePage: string;
ReleaseDate: Date;
AddDate: Date;
UserRating: number;
ChildID: number;
Length: number;
PlayCount: number;
Season: number;
Episode: number;
ParentalLevel: number;
Visible: boolean;
Watched: boolean;
Processed: boolean;
ContentType: string;
FileName: string;
Hash: string;
HostName: string;
Coverart: string;
Fanart: string;
Banner: string;
Screenshot: string;
Trailer: string;
Artwork: ArtworkInfos;
Cast: CastMembers;
Genres: GenreList;
}
interface ArtworkInfo {
URL: string;
FileName: string;
StorageGroup: string;
Type: string;
}
interface ArtworkInfos {
ArtworkInfos: ArtworkInfo[];
}
interface CastMember {
Name: string;
CharacterName: string;
Role: string;
TranslatedRole: string;
}
interface CastMembers {
CastMembers: CastMember[];
}
interface Genre {
Name: string;
}
interface GenreList {
GenreList: Genre[];
}
interface VideoMetadataInfoList extends ApiTypes.PageResponse {
VideoMetadataInfos: VideoMetadataInfo[];
}
interface BlurayInfo {
Path: string;
Title: string;
AltTitle: string;
DiscLang: string;
DiscNum: number;
TotalDiscNum: number;
TitleCount: number;
ThumbCount: number;
ThumbPath: string;
TopMenuSupported: boolean;
FirstPlaySupported: boolean;
NumHDMVTitles: number;
NumBDJTitles: number;
NumUnsupportedTitles: number;
AACSDetected: boolean;
LibAACSDetected: boolean;
AACSHandled: boolean;
BDPlusDetected: boolean;
LibBDPlusDetected: boolean;
BDPlusHandled: boolean;
}
interface VideoLookupList extends ApiTypes.PageResponse {
VideoLookups: VideoLookup[];
}
interface VideoLookup {
Title: string;
SubTitle: string;
Season: number;
Episode: number;
Year: number;
Tagline: string;
Description: string;
Certification: string;
Inetref: string;
Collectionref: string;
HomePage: string;
ReleaseDate: Date;
UserRating: number;
Length: number;
Language: string;
Countries: string[];
Popularity: number;
Budget: number;
Revenue: number;
IMDB: string;
TMSRef: string;
Artwork: ArtworkItem[];
}
interface ArtworkItem {
Type: string;
Url: string;
Thumbnail: string;
Width: number;
Height: number;
}
interface CaptureCard {
CardId: number;
ParentId: number;
VideoDevice: string;
AudioDevice: string;
VBIDevice: string;
CardType: string;
DefaultInput: string;
AudioRateLimit: number;
HostName: string;
DVBSWFilter: number;
DVBSatType: number;
DVBWaitForSeqStart: boolean;
SkipBTAudio: boolean;
DVBOnDemand: boolean;
DVBDiSEqCType: number;
FirewireSpeed: number;
FirewireModel: string;
FirewireConnection: number;
SignalTimeout: number;
ChannelTimeout: number;
DVBTuningDelay: number;
Contrast: number;
Brightness: number;
Colour: number;
Hue: number;
DiSEqCId: number;
DVBEITScan: boolean;
InputName: string;
SourceId: number;
ExternalCommand: string;
ChangerDevice: string;
ChangerModel: string;
TuneChannel: string;
StartChannel: string;
DisplayName: string;
DishnetEit: boolean;
RecPriority: number;
QuickTune: boolean;
SchedOrder: number;
LiveTVOrder: string;
RecLimit: string;
SchedGroup: boolean;
}
interface CaptureCardList {
CaptureCards: CaptureCard[];
}
interface LiveStreamInfo {
Id: number;
Width: number;
Height: number;
Bitrate: number;
AudioBitrate: number;
SegmentSize: number;
MaxSegments: number;
StartSegment: number;
CurrentSegment: number;
SegmentCount: number;
PercentComplete: number;
Created: Date;
LastModified: Date;
RelativeURL: string;
FullURL: string;
StatusStr: string;
StatusInt: number;
StatusMessage: string;
SourceFile: string;
SourceHost: string;
SourceWidth: number;
SourceHeight: number;
AudioOnlyBitrate: number;
}
interface LiveStreamInfoList {
LiveStreamInfos: LiveStreamInfo[];
}
interface ChannelGroup {
GroupId: number;
Name: string;
Password: string;
}
interface ChannelGroupList {
ChannelGroups: ChannelGroup[];
}
interface ProgramGuide extends ListResponse {
StartTime: Date;
EndTime: Date;
Details: boolean;
Channels: ChannelInfo[];
}
interface StringKeyValue {
[key: string]: string;
}
interface FrontendStatus {
Name: string;
Verions: string;
State: State;
ChapterTimes: string;
SubtitleTracks: StringKeyValue;
AudioTracks: StringKeyValue;
}
interface State {
state: string;
chanid?: number;
title?: string;
playspeed?: string;
relsecondsplayed?: number;
reltotalseconds?: number;
secondsplayed?: number;
totalseconds?: number;
programid?: string;
}
interface FrontendActionList {
ActionList: StringKeyValue;
}
interface LineupList {
Lineups: Lineup[];
}
interface EncoderList {
Encoders: ApiTypes.Encoder[];
}
interface InputList {
Inputs: ApiTypes.Input[];
}
interface CutList {
Cuttings: ApiTypes.Cutting[];
}
interface TitleInfoList {
TitleInfos: ApiTypes.TitleInfo[];
}
type ChannelVisibleType = 'Always Visible' | 'Visible' | 'Not Visible' | 'Never Visible';
}
export default ApiTypes;