@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 +3 -0
- package/dist/iMedia.d.ts +156 -0
- package/dist/iMedia.js +87 -0
- package/dist/iMedia.js.map +1 -0
- package/dist/iMediaInstance.d.ts +49 -0
- package/dist/iMediaInstance.js +2 -0
- package/dist/iMediaInstance.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/mediaInstanceService.d.ts +18 -0
- package/dist/mediaInstanceService.js +100 -0
- package/dist/mediaInstanceService.js.map +1 -0
- package/dist/mediaService.d.ts +46 -0
- package/dist/mediaService.js +355 -0
- package/dist/mediaService.js.map +1 -0
- package/dist/playerService.d.ts +31 -0
- package/dist/playerService.js +35 -0
- package/dist/playerService.js.map +1 -0
- package/package.json +29 -0
- package/src/components/RootInformationLine.vue +34 -0
- package/src/components/RootStatisticsLine.vue +21 -0
- package/src/views/MediaInstancePage.vue +149 -0
- package/src/views/MusicPage.vue +234 -0
- package/src/views/PhotoAlbumPage.vue +255 -0
- package/src/views/PhotosPage.vue +199 -0
- package/src/views/RecordedVideosPage.vue +98 -0
- package/src/views/ThumbnailsPage.vue +82 -0
- package/src/views/VideoPage.vue +46 -0
- package/src/views/VideosPage.vue +230 -0
package/README.md
ADDED
package/dist/iMedia.d.ts
ADDED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"iMediaInstance.js","sourceRoot":"","sources":["../src/iMediaInstance.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -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":"AAAA,OAAO,EAAsB,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAW,MAAM,EAAa,MAAM,uBAAuB,CAAC;AAOnE,MAAM,OAAO,oBAAoB;IAC7B,mBAAmB,CAA4B;IAC/C,cAAc,CAA+B;IAC7C,IAAI,CAAQ;IACZ,MAAM,CAAU;IAChB,QAAQ,CAAY;IAEpB,YAAa,IAAW,EAAE,QAAoB,EAAE,MAAgB;QAC5D,IAAI,CAAC,QAAQ;YACT,QAAQ,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM;YACP,MAAM,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,QAAQ,CAAC;YACzC,YAAY,EAAE,EAAE;YAChB,SAAS,EAAE,EAAE;YACb,gBAAgB,EAAE,EAAE;YACpB,oBAAoB,EAAE,CAAC;YACvB,oBAAoB,EAAE,CAAC;YACvB,aAAa,EAAE,CAAC;SACnB,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC;YACpC,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,KAAK;YACjB,aAAa,EAAE,CAAC;YAChB,cAAc,EAAE,EAAE;SACrB,CAAC,CAAC;IACP,CAAC;IACD,cAAc,CAAC,YAAoB,EAAE,oBAA6B,EAAE,eAAwB,EAAE,YAAqB;QAC/G,MAAM,MAAM,GAAG;YACX,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,oBAAoB;YAClE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY;SACnE,CAAC;QACF,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,kCAAkC,EAAE,MAAM,CAAC,CAAC;QAEtE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAuB,GAAG,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IACD,KAAK,CAAC,cAAc;QAChB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAA4B,2BAA2B,CAAC,CAAC;QAC/F,IAAI,MAAM,CAAC,EAAE,EAAE;YACX,MAAM,IAAI,GAAG,MAAM,CAAC,MAAmC,CAAC;YACxD,IAAI,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,MAAM,KAAK,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;gBACnF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACnD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;iBACzF;aACJ;iBACI;gBACD,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACtG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE;oBACjD,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/J;YACD,IAAI,CAAC,mBAAmB,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YAC1D,IAAI,CAAC,mBAAmB,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACpD,IAAI,CAAC,mBAAmB,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YAC5D,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;YAC1E,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;SAC7E;QACD,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACpC,CAAC;IACD,KAAK,CAAC,YAAY;QACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAA+B,uBAAuB,CAAC,CAAC;QAC9F,IAAI,MAAM,CAAC,EAAE,EAAE;YACX,MAAM,IAAI,GAAG,MAAM,CAAC,MAAsC,CAAC;YAC3D,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;gBAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACjD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;iBAChF;aACJ;iBACI;gBACD,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACxF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE;oBAC/C,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/I;YACD,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACjD,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACjD,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;SAC1D;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IACD,aAAa;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAuB,iCAAiC,CAAC,CAAA;QAC5F,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IACD,WAAW;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAuB,uCAAuC,CAAC,CAAA;QAClG,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IACD,UAAU;QACN,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAuB,8BAA8B,CAAC,CAAA;QACzF,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IACD,WAAW;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAuB,mCAAmC,CAAC,CAAA;QAC9F,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;CACJ"}
|
|
@@ -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
|
+
}
|