@christianriedl/media 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # media
2
+
3
+
@@ -0,0 +1,156 @@
1
+ export declare enum EMediaType {
2
+ Audio = 0,
3
+ Video = 1,
4
+ Picture = 2,
5
+ Text = 10,
6
+ Application = 11,
7
+ Online = 252,
8
+ None = 254,
9
+ Various = 255
10
+ }
11
+ export declare enum EItemType {
12
+ None = 0,
13
+ RootLevel = 0,
14
+ FolderLevel = 1,
15
+ RatingLevel = 2,
16
+ GenreTypeLevel = 3,
17
+ HierarchyLevel_1 = 4,
18
+ HierarchyLevel_2 = 5,
19
+ HierarchyLevel_3 = 6,
20
+ HierarchyLevel_4 = 7,
21
+ LevelMask = 7,
22
+ Folder = 8,
23
+ Audio = 16,
24
+ Video = 32,
25
+ Picture = 64,
26
+ MediaTypeMask = 112,
27
+ Broadcast = 128,
28
+ Root = 8,
29
+ MainRoot = 248,
30
+ AudioRoot = 24,
31
+ AudioFolder = 25,
32
+ AudioRating = 26,
33
+ AudioGenreType = 27,
34
+ AudioGenre = 28,
35
+ AudioArtist = 29,
36
+ AudioAlbum = 30,
37
+ AudioPlayAll = 31,
38
+ AudioBroadcastRoot = 152,
39
+ AudioBroadcastFolder = 153,
40
+ AudioTrack = 16,
41
+ AudioBroadcast = 144,
42
+ VideoRoot = 40,
43
+ VideoFolder = 41,
44
+ VideoRating = 42,
45
+ VideoGenreType = 43,
46
+ VideoCategory = 44,
47
+ VideoBroadcastRoot = 168,
48
+ VideoBroadcastFolder = 169,
49
+ VideoRecordedFolder = 172,
50
+ VideoItem = 32,
51
+ VideoBroadcast = 160,
52
+ PictureRoot = 72,
53
+ PictureFolder = 73,
54
+ PictureRating = 74,
55
+ PictureGenreType = 75,
56
+ PictureCategory = 76,
57
+ PictureYear = 77,
58
+ PictureAlbum = 78,
59
+ PictureItem = 64,
60
+ OnlineRoot = 184,
61
+ Reference = 254,
62
+ End = 255
63
+ }
64
+ export declare enum EState {
65
+ None = 0,
66
+ FromPersistence = 1,
67
+ FromDLNA = 2,
68
+ FolderReal = 4,
69
+ FolderVirtual = 8,
70
+ DLNABrowsed = 16,
71
+ StoredLocally = 32,
72
+ MarkedForDelete = 64,
73
+ MarkedForDownload = 128
74
+ }
75
+ export interface IMediaItem {
76
+ ItemType: EItemType;
77
+ State: EState;
78
+ Rating: number;
79
+ GenreIdx: number;
80
+ CreatorIdx: number;
81
+ Name: string;
82
+ Description: string;
83
+ DLNAID: string;
84
+ DLNAParentID: string;
85
+ Year: number;
86
+ Date: Date;
87
+ Url: string;
88
+ ThumbnailUrl: string;
89
+ title?: string;
90
+ subTitle?: string;
91
+ }
92
+ export interface IMediaListEntry {
93
+ Name: string;
94
+ Values: string[];
95
+ }
96
+ export interface IMediaList {
97
+ ModificationTime: Date;
98
+ Lists: IMediaListEntry[];
99
+ }
100
+ export interface IMediaReference {
101
+ ItemType: EItemType;
102
+ FileId: string;
103
+ FolderId: string;
104
+ }
105
+ export interface IMediaFolder extends IMediaItem {
106
+ ChildCount: number;
107
+ Folders: IMediaFolder[];
108
+ Files: IMediaFile[];
109
+ }
110
+ export interface IMediaFile extends IMediaItem {
111
+ Extension: number;
112
+ Size: number;
113
+ }
114
+ export declare enum EOrientation {
115
+ None = 0,
116
+ TopLeft = 1,
117
+ BottomRight = 3,
118
+ TopRight = 6,
119
+ BottomLeft = 8,
120
+ Undefined = 9
121
+ }
122
+ export interface IPictureFile extends IMediaFile {
123
+ EventIdx: number;
124
+ LocationIdx: number;
125
+ PersonIdxs: number[];
126
+ Height: number;
127
+ Width: number;
128
+ Orientation: EOrientation;
129
+ ThumbHeight: number;
130
+ ThumbWidth: number;
131
+ realUrl?: string;
132
+ }
133
+ export interface IAudioFile extends IMediaFile {
134
+ BitRate: number;
135
+ Duration: number;
136
+ Extension: number;
137
+ SampleRate: number;
138
+ Size: number;
139
+ TrackNo: number;
140
+ }
141
+ export interface IVideoFile extends IMediaFile {
142
+ ActorIdxs: number[];
143
+ BitRate: number;
144
+ FrameRate: number;
145
+ CountryIdx: number;
146
+ Duration: number;
147
+ Extension: number;
148
+ Size: number;
149
+ Height: number;
150
+ Width: number;
151
+ info?: string;
152
+ }
153
+ export interface IVirtualMediaFolder extends IMediaItem {
154
+ ChildCount: number;
155
+ Files: IMediaReference[];
156
+ }
package/dist/iMedia.js ADDED
@@ -0,0 +1,87 @@
1
+ export var EMediaType;
2
+ (function (EMediaType) {
3
+ EMediaType[EMediaType["Audio"] = 0] = "Audio";
4
+ EMediaType[EMediaType["Video"] = 1] = "Video";
5
+ EMediaType[EMediaType["Picture"] = 2] = "Picture";
6
+ EMediaType[EMediaType["Text"] = 10] = "Text";
7
+ EMediaType[EMediaType["Application"] = 11] = "Application";
8
+ EMediaType[EMediaType["Online"] = 252] = "Online";
9
+ EMediaType[EMediaType["None"] = 254] = "None";
10
+ EMediaType[EMediaType["Various"] = 255] = "Various";
11
+ })(EMediaType || (EMediaType = {}));
12
+ export var EItemType;
13
+ (function (EItemType) {
14
+ EItemType[EItemType["None"] = 0] = "None";
15
+ EItemType[EItemType["RootLevel"] = 0] = "RootLevel";
16
+ EItemType[EItemType["FolderLevel"] = 1] = "FolderLevel";
17
+ EItemType[EItemType["RatingLevel"] = 2] = "RatingLevel";
18
+ EItemType[EItemType["GenreTypeLevel"] = 3] = "GenreTypeLevel";
19
+ EItemType[EItemType["HierarchyLevel_1"] = 4] = "HierarchyLevel_1";
20
+ EItemType[EItemType["HierarchyLevel_2"] = 5] = "HierarchyLevel_2";
21
+ EItemType[EItemType["HierarchyLevel_3"] = 6] = "HierarchyLevel_3";
22
+ EItemType[EItemType["HierarchyLevel_4"] = 7] = "HierarchyLevel_4";
23
+ EItemType[EItemType["LevelMask"] = 7] = "LevelMask";
24
+ EItemType[EItemType["Folder"] = 8] = "Folder";
25
+ EItemType[EItemType["Audio"] = 16] = "Audio";
26
+ EItemType[EItemType["Video"] = 32] = "Video";
27
+ EItemType[EItemType["Picture"] = 64] = "Picture";
28
+ EItemType[EItemType["MediaTypeMask"] = 112] = "MediaTypeMask";
29
+ EItemType[EItemType["Broadcast"] = 128] = "Broadcast";
30
+ EItemType[EItemType["Root"] = 8] = "Root";
31
+ EItemType[EItemType["MainRoot"] = 248] = "MainRoot";
32
+ EItemType[EItemType["AudioRoot"] = 24] = "AudioRoot";
33
+ EItemType[EItemType["AudioFolder"] = 25] = "AudioFolder";
34
+ EItemType[EItemType["AudioRating"] = 26] = "AudioRating";
35
+ EItemType[EItemType["AudioGenreType"] = 27] = "AudioGenreType";
36
+ EItemType[EItemType["AudioGenre"] = 28] = "AudioGenre";
37
+ EItemType[EItemType["AudioArtist"] = 29] = "AudioArtist";
38
+ EItemType[EItemType["AudioAlbum"] = 30] = "AudioAlbum";
39
+ EItemType[EItemType["AudioPlayAll"] = 31] = "AudioPlayAll";
40
+ EItemType[EItemType["AudioBroadcastRoot"] = 152] = "AudioBroadcastRoot";
41
+ EItemType[EItemType["AudioBroadcastFolder"] = 153] = "AudioBroadcastFolder";
42
+ EItemType[EItemType["AudioTrack"] = 16] = "AudioTrack";
43
+ EItemType[EItemType["AudioBroadcast"] = 144] = "AudioBroadcast";
44
+ EItemType[EItemType["VideoRoot"] = 40] = "VideoRoot";
45
+ EItemType[EItemType["VideoFolder"] = 41] = "VideoFolder";
46
+ EItemType[EItemType["VideoRating"] = 42] = "VideoRating";
47
+ EItemType[EItemType["VideoGenreType"] = 43] = "VideoGenreType";
48
+ EItemType[EItemType["VideoCategory"] = 44] = "VideoCategory";
49
+ EItemType[EItemType["VideoBroadcastRoot"] = 168] = "VideoBroadcastRoot";
50
+ EItemType[EItemType["VideoBroadcastFolder"] = 169] = "VideoBroadcastFolder";
51
+ EItemType[EItemType["VideoRecordedFolder"] = 172] = "VideoRecordedFolder";
52
+ EItemType[EItemType["VideoItem"] = 32] = "VideoItem";
53
+ EItemType[EItemType["VideoBroadcast"] = 160] = "VideoBroadcast";
54
+ EItemType[EItemType["PictureRoot"] = 72] = "PictureRoot";
55
+ EItemType[EItemType["PictureFolder"] = 73] = "PictureFolder";
56
+ EItemType[EItemType["PictureRating"] = 74] = "PictureRating";
57
+ EItemType[EItemType["PictureGenreType"] = 75] = "PictureGenreType";
58
+ EItemType[EItemType["PictureCategory"] = 76] = "PictureCategory";
59
+ EItemType[EItemType["PictureYear"] = 77] = "PictureYear";
60
+ EItemType[EItemType["PictureAlbum"] = 78] = "PictureAlbum";
61
+ EItemType[EItemType["PictureItem"] = 64] = "PictureItem";
62
+ EItemType[EItemType["OnlineRoot"] = 184] = "OnlineRoot";
63
+ EItemType[EItemType["Reference"] = 254] = "Reference";
64
+ EItemType[EItemType["End"] = 255] = "End";
65
+ })(EItemType || (EItemType = {}));
66
+ export var EState;
67
+ (function (EState) {
68
+ EState[EState["None"] = 0] = "None";
69
+ EState[EState["FromPersistence"] = 1] = "FromPersistence";
70
+ EState[EState["FromDLNA"] = 2] = "FromDLNA";
71
+ EState[EState["FolderReal"] = 4] = "FolderReal";
72
+ EState[EState["FolderVirtual"] = 8] = "FolderVirtual";
73
+ EState[EState["DLNABrowsed"] = 16] = "DLNABrowsed";
74
+ EState[EState["StoredLocally"] = 32] = "StoredLocally";
75
+ EState[EState["MarkedForDelete"] = 64] = "MarkedForDelete";
76
+ EState[EState["MarkedForDownload"] = 128] = "MarkedForDownload";
77
+ })(EState || (EState = {}));
78
+ export var EOrientation;
79
+ (function (EOrientation) {
80
+ EOrientation[EOrientation["None"] = 0] = "None";
81
+ EOrientation[EOrientation["TopLeft"] = 1] = "TopLeft";
82
+ EOrientation[EOrientation["BottomRight"] = 3] = "BottomRight";
83
+ EOrientation[EOrientation["TopRight"] = 6] = "TopRight";
84
+ EOrientation[EOrientation["BottomLeft"] = 8] = "BottomLeft";
85
+ EOrientation[EOrientation["Undefined"] = 9] = "Undefined";
86
+ })(EOrientation || (EOrientation = {}));
87
+ //# sourceMappingURL=iMedia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iMedia.js","sourceRoot":"","sources":["../src/iMedia.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,UASX;AATD,WAAY,UAAU;IAClB,6CAAS,CAAA;IACT,6CAAS,CAAA;IACT,iDAAW,CAAA;IACX,4CAAS,CAAA;IACT,0DAAgB,CAAA;IAChB,iDAAa,CAAA;IACb,6CAAW,CAAA;IACX,mDAAc,CAAA;AAClB,CAAC,EATW,UAAU,KAAV,UAAU,QASrB;AACD,MAAM,CAAN,IAAY,SAoDX;AApDD,WAAY,SAAS;IACjB,yCAAQ,CAAA;IACR,mDAAa,CAAA;IACb,uDAAe,CAAA;IACf,uDAAe,CAAA;IACf,6DAAkB,CAAA;IAClB,iEAAoB,CAAA;IACpB,iEAAoB,CAAA;IACpB,iEAAoB,CAAA;IACpB,iEAAoB,CAAA;IACpB,mDAAgB,CAAA;IAChB,6CAAa,CAAA;IACb,4CAAY,CAAA;IACZ,4CAAY,CAAA;IACZ,gDAAc,CAAA;IACd,6DAAoB,CAAA;IACpB,qDAAgB,CAAA;IAChB,yCAAa,CAAA;IACb,mDAA6C,CAAA;IAC7C,oDAA0B,CAAA;IAC1B,wDAAkC,CAAA;IAClC,wDAAkC,CAAA;IAClC,8DAAqC,CAAA;IACrC,sDAAiC,CAAA;IACjC,wDAAkC,CAAA;IAClC,sDAAiC,CAAA;IACjC,0DAAmC,CAAA;IACnC,uEAA0C,CAAA;IAC1C,2EAA8C,CAAA;IAC9C,sDAAkB,CAAA;IAClB,+DAAkC,CAAA;IAClC,oDAA0B,CAAA;IAC1B,wDAAkC,CAAA;IAClC,wDAAkC,CAAA;IAClC,8DAAqC,CAAA;IACrC,4DAAoC,CAAA;IACpC,uEAA0C,CAAA;IAC1C,2EAA8C,CAAA;IAC9C,yEAA+C,CAAA;IAC/C,oDAAiB,CAAA;IACjB,+DAAkC,CAAA;IAClC,wDAA8B,CAAA;IAC9B,4DAAsC,CAAA;IACtC,4DAAsC,CAAA;IACtC,kEAAyC,CAAA;IACzC,gEAAwC,CAAA;IACxC,wDAAoC,CAAA;IACpC,0DAAqC,CAAA;IACrC,wDAAqB,CAAA;IACrB,uDAA+C,CAAA;IAC/C,qDAAgB,CAAA;IAChB,yCAAU,CAAA;AACd,CAAC,EApDW,SAAS,KAAT,SAAS,QAoDpB;AACD,MAAM,CAAN,IAAY,MAUX;AAVD,WAAY,MAAM;IACd,mCAAQ,CAAA;IACR,yDAAsB,CAAA;IACtB,2CAAe,CAAA;IACf,+CAAiB,CAAA;IACjB,qDAAoB,CAAA;IACpB,kDAAkB,CAAA;IAClB,sDAAoB,CAAA;IACpB,0DAAsB,CAAA;IACtB,+DAAwB,CAAA;AAC5B,CAAC,EAVW,MAAM,KAAN,MAAM,QAUjB;AA+CD,MAAM,CAAN,IAAY,YAQX;AARD,WAAY,YAAY;IAEpB,+CAAQ,CAAA;IACR,qDAAW,CAAA;IACX,6DAAe,CAAA;IACf,uDAAY,CAAA;IACZ,2DAAc,CAAA;IACd,yDAAa,CAAA;AACjB,CAAC,EARW,YAAY,KAAZ,YAAY,QAQvB"}
@@ -0,0 +1,49 @@
1
+ import { EItemType } from "./iMedia";
2
+ export interface IMediaRootInformation {
3
+ name: string;
4
+ id: string;
5
+ fileCount: number;
6
+ realFolderCount: number;
7
+ virtualFolderCount: number;
8
+ modificationTime: number;
9
+ itemTypes: EItemType;
10
+ }
11
+ export interface IMediaInstanceInformation {
12
+ instanceName: string;
13
+ ipAddress: string;
14
+ rootInformations: Array<IMediaRootInformation>;
15
+ rootModificationTime: number;
16
+ listModificationTime: number;
17
+ listItemCount: number;
18
+ }
19
+ export interface IRootDefinitionStatistics {
20
+ rootName: string;
21
+ currentDirectory: string;
22
+ directoryCount: number;
23
+ fileCount: number;
24
+ fileErrorCount: number;
25
+ realFolderCount: number;
26
+ virtualFolderCount: number;
27
+ mediaCount: number;
28
+ }
29
+ export interface IMediaInstanceScanStatistics {
30
+ isScanning: boolean;
31
+ isCanceled: boolean;
32
+ listItemCount: number;
33
+ rootStatistics: Array<IRootDefinitionStatistics>;
34
+ }
35
+ export interface IStatusResponse {
36
+ success: boolean;
37
+ text: string;
38
+ }
39
+ export interface IMediaInstanceService {
40
+ instanceInformation: IMediaInstanceInformation;
41
+ scanStatistics: IMediaInstanceScanStatistics;
42
+ createInstance(instanceName: string, useCurrentMediaLists: boolean, readOnlineFiles: boolean, asynchronous: boolean): Promise<IStatusResponse>;
43
+ getInformation(): Promise<IMediaInstanceInformation>;
44
+ getScanState(): Promise<IMediaInstanceScanStatistics>;
45
+ clearInstance(): Promise<IStatusResponse>;
46
+ makeCurrent(): Promise<IStatusResponse>;
47
+ cancelScan(): Promise<IStatusResponse>;
48
+ writePretty(): Promise<IStatusResponse>;
49
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=iMediaInstance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iMediaInstance.js","sourceRoot":"","sources":["../src/iMediaInstance.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export * from './iMedia';
2
+ export * from './iMediaInstance';
3
+ export * from './mediaService';
4
+ export * from './mediaInstanceService';
5
+ export * from './playerService';
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export * from './iMedia';
2
+ export * from './iMediaInstance';
3
+ export * from './mediaService';
4
+ export * from './mediaInstanceService';
5
+ export * from './playerService';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { IRest } from '@christianriedl/rest';
2
+ import { ILogger, IReactive } from '@christianriedl/utils';
3
+ import { IMediaInstanceInformation, IMediaInstanceScanStatistics, IStatusResponse, IMediaInstanceService } from "./iMediaInstance";
4
+ export declare class MediaInstanceService implements IMediaInstanceService {
5
+ instanceInformation: IMediaInstanceInformation;
6
+ scanStatistics: IMediaInstanceScanStatistics;
7
+ rest: IRest;
8
+ logger: ILogger;
9
+ reactive: IReactive;
10
+ constructor(rest: IRest, reactive?: IReactive, logger?: ILogger);
11
+ createInstance(instanceName: string, useCurrentMediaLists: boolean, readOnlineFiles: boolean, asynchronous: boolean): Promise<IStatusResponse>;
12
+ getInformation(): Promise<IMediaInstanceInformation>;
13
+ getScanState(): Promise<IMediaInstanceScanStatistics>;
14
+ clearInstance(): Promise<IStatusResponse>;
15
+ makeCurrent(): Promise<IStatusResponse>;
16
+ cancelScan(): Promise<IStatusResponse>;
17
+ writePretty(): Promise<IStatusResponse>;
18
+ }
@@ -0,0 +1,100 @@
1
+ import { Rest } from '@christianriedl/rest';
2
+ import { Helper } from '@christianriedl/utils';
3
+ export class MediaInstanceService {
4
+ instanceInformation;
5
+ scanStatistics;
6
+ rest;
7
+ logger;
8
+ reactive;
9
+ constructor(rest, reactive, logger) {
10
+ if (!reactive)
11
+ reactive = Helper.createDummyReactive();
12
+ if (!logger)
13
+ logger = Helper.createNullLogger();
14
+ this.rest = rest;
15
+ this.logger = logger;
16
+ this.reactive = reactive;
17
+ this.instanceInformation = reactive.reactive({
18
+ instanceName: '',
19
+ ipAddress: '',
20
+ rootInformations: [],
21
+ rootModificationTime: 0,
22
+ listModificationTime: 0,
23
+ listItemCount: 0
24
+ });
25
+ this.scanStatistics = reactive.reactive({
26
+ isScanning: false,
27
+ isCanceled: false,
28
+ listItemCount: 0,
29
+ rootStatistics: []
30
+ });
31
+ }
32
+ createInstance(instanceName, useCurrentMediaLists, readOnlineFiles, asynchronous) {
33
+ const params = {
34
+ instanceName: instanceName, useCurrentMediaLists: useCurrentMediaLists,
35
+ readOnlineFiles: readOnlineFiles, asynchronous: asynchronous
36
+ };
37
+ const url = Rest.buildUrl('apimediainstance/Instance/Create', params);
38
+ const result = this.rest.postDataEx(url);
39
+ return this.rest.toData(result);
40
+ }
41
+ async getInformation() {
42
+ const result = await this.rest.getData('apimediainstance/Instance');
43
+ if (result.ok) {
44
+ const info = result.result;
45
+ if (this.instanceInformation.rootInformations.length === info.rootInformations.length) {
46
+ for (let i = 0; i < info.rootInformations.length; i++) {
47
+ Object.assign(this.instanceInformation.rootInformations[i], info.rootInformations[i]);
48
+ }
49
+ }
50
+ else {
51
+ this.instanceInformation.rootInformations.splice(0, this.instanceInformation.rootInformations.length);
52
+ for (let i = 0; i < info.rootInformations.length; i++)
53
+ this.instanceInformation.rootInformations.splice(this.instanceInformation.rootInformations.length, 0, this.reactive.reactive(info.rootInformations[i]));
54
+ }
55
+ this.instanceInformation.instanceName = info.instanceName;
56
+ this.instanceInformation.ipAddress = info.ipAddress;
57
+ this.instanceInformation.listItemCount = info.listItemCount;
58
+ this.instanceInformation.listModificationTime = info.listModificationTime;
59
+ this.instanceInformation.rootModificationTime = info.rootModificationTime;
60
+ }
61
+ return this.instanceInformation;
62
+ }
63
+ async getScanState() {
64
+ const result = await this.rest.getData('apimediainstance/Scan');
65
+ if (result.ok) {
66
+ const stat = result.result;
67
+ if (this.scanStatistics.rootStatistics.length === stat.rootStatistics.length) {
68
+ for (let i = 0; i < stat.rootStatistics.length; i++) {
69
+ Object.assign(this.scanStatistics.rootStatistics[i], stat.rootStatistics[i]);
70
+ }
71
+ }
72
+ else {
73
+ this.scanStatistics.rootStatistics.splice(0, this.scanStatistics.rootStatistics.length);
74
+ for (let i = 0; i < stat.rootStatistics.length; i++)
75
+ this.scanStatistics.rootStatistics.splice(this.scanStatistics.rootStatistics.length, 0, this.reactive.reactive(stat.rootStatistics[i]));
76
+ }
77
+ this.scanStatistics.isCanceled = stat.isCanceled;
78
+ this.scanStatistics.isScanning = stat.isScanning;
79
+ this.scanStatistics.listItemCount = stat.listItemCount;
80
+ }
81
+ return this.scanStatistics;
82
+ }
83
+ clearInstance() {
84
+ const result = this.rest.postDataEx('apimediainstance/Instance/Clear');
85
+ return this.rest.toData(result);
86
+ }
87
+ makeCurrent() {
88
+ const result = this.rest.postDataEx('apimediainstance/Instance/MakeCurrent');
89
+ return this.rest.toData(result);
90
+ }
91
+ cancelScan() {
92
+ const result = this.rest.postDataEx('apimediainstance/Scan/Cancel');
93
+ return this.rest.toData(result);
94
+ }
95
+ writePretty() {
96
+ const result = this.rest.postDataEx('apimediainstance/Scan/WritePretty');
97
+ return this.rest.toData(result);
98
+ }
99
+ }
100
+ //# sourceMappingURL=mediaInstanceService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mediaInstanceService.js","sourceRoot":"","sources":["../src/mediaInstanceService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { IRest } from '@christianriedl/rest';
2
+ import { ILogger, Dictionary } from '@christianriedl/utils';
3
+ import { IMediaFolder, IMediaListEntry, IVirtualMediaFolder, IAudioFile, EMediaType } from "./iMedia";
4
+ export interface IPhotoSelection {
5
+ rating: number;
6
+ criteria: string;
7
+ root: string;
8
+ selected: IMediaFolder;
9
+ selectedAlbum?: IMediaFolder;
10
+ }
11
+ export declare class MediaService {
12
+ rest: IRest;
13
+ mediaUrl: string;
14
+ log: ILogger;
15
+ user: string;
16
+ roots: Dictionary<IMediaFolder>;
17
+ folders: Dictionary<IMediaFolder>;
18
+ realPictureAlbums: Dictionary<IMediaFolder>;
19
+ medialists: Dictionary<IMediaListEntry>;
20
+ privateIdx: number;
21
+ photoSelection: IPhotoSelection;
22
+ constructor(rest: IRest, user: string, log: ILogger);
23
+ updateFolders(folder: IMediaFolder): boolean;
24
+ initializePhotos(stars: string, criteria: string): Promise<IMediaFolder>;
25
+ initializeAudios(): Promise<IMediaFolder>;
26
+ initializeVideos(): Promise<IMediaFolder>;
27
+ initializeRecordedTVs(): Promise<IMediaFolder>;
28
+ getListEntry(name: string, idx: number): string;
29
+ getPhotos(folder: IMediaFolder): Promise<IMediaFolder>;
30
+ processPhotos(folder: IMediaFolder): void;
31
+ removePrivate(folder: IMediaFolder): void;
32
+ getAudios(folder: IMediaFolder): Promise<IMediaFolder>;
33
+ getVideos(folder: IMediaFolder): Promise<IMediaFolder>;
34
+ getPhotoUrl(folderUrl: string, url: string, format: string): string;
35
+ getAudioUrl(item: IAudioFile): string;
36
+ getVideoUrl(url: string): string;
37
+ getAlbumArtUrl(folderUrl: string): string;
38
+ getAlbumDownloadUrl(folderUrl: string, codec?: string, param?: string): string;
39
+ browse(id: string, depth: number, onlyFolder: boolean, onlyReal: boolean, selectFolder?: string): Promise<IMediaFolder>;
40
+ browseReferences(id: string): Promise<IVirtualMediaFolder>;
41
+ getExifInfo(folderId: string, mediaId: string): Promise<Dictionary<any>>;
42
+ ping(): Promise<boolean>;
43
+ getImage(url: string): Promise<Blob>;
44
+ getLists(mediaType: EMediaType): Promise<boolean>;
45
+ durationString(duration: number): string;
46
+ }