@redseat/api 0.0.17 → 0.1.0

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.
@@ -13,57 +13,98 @@ export interface SerieInMedia {
13
13
  episode?: number;
14
14
  episodeTo?: number;
15
15
  }
16
+ export declare enum FileType {
17
+ Directory = "Directory",
18
+ Photo = "Photo",
19
+ Video = "Video",
20
+ Archive = "Archive",
21
+ Album = "Album",
22
+ Other = "Other"
23
+ }
24
+ export interface MediaItemReference {
25
+ id: string;
26
+ conf?: number;
27
+ }
28
+ export interface FaceEmbedding {
29
+ id: string;
30
+ embedding?: number[];
31
+ mediaRef?: string;
32
+ bbox?: any;
33
+ confidence?: number;
34
+ pose?: [number, number, number];
35
+ personId?: string;
36
+ }
37
+ export interface BackupFile {
38
+ backup: string;
39
+ library?: string;
40
+ file: string;
41
+ id: string;
42
+ path: string;
43
+ hash: string;
44
+ sourcehash: string;
45
+ size: number;
46
+ modified: number;
47
+ added: number;
48
+ iv?: string;
49
+ thumbSize?: number;
50
+ infoSize?: number;
51
+ error?: string;
52
+ }
16
53
  export interface IFile {
17
54
  id: string;
18
55
  name: string;
56
+ source?: string;
19
57
  description?: string;
20
- size: number;
21
- type: FileTypes;
58
+ type: FileType;
22
59
  mimetype: string;
23
- modified: number;
24
- created: number;
25
- added: number;
26
- starred?: any;
27
- width: number;
28
- height: number;
60
+ size?: number;
61
+ params?: any;
62
+ added?: number;
63
+ modified?: number;
64
+ created?: number;
65
+ rating?: number;
66
+ avgRating?: number;
67
+ md5?: string;
29
68
  phash?: string;
30
69
  thumbhash?: string;
31
- acodecs?: string[];
32
- achan?: number[];
33
- vcodecs?: string[];
34
- fps?: number;
35
- bitrate?: number;
70
+ originalHash?: string;
71
+ originalId?: string;
72
+ width?: number;
73
+ height?: number;
74
+ focal?: number;
75
+ iso?: number;
36
76
  colorSpace?: string;
37
77
  icc?: string;
38
78
  mp?: number;
39
- focal?: number;
40
- iso?: number;
41
- fNumber?: number;
42
79
  sspeed?: string;
80
+ fNumber?: number;
43
81
  orientation?: number;
44
82
  duration?: number;
45
- progress?: number;
46
- thumb?: any;
47
- rating?: number;
48
- tags?: {
49
- id: string;
50
- conf?: number;
51
- }[];
52
- people?: {
53
- id: string;
54
- conf?: number;
55
- }[];
56
- series?: SerieInMedia[];
57
- movie?: string;
83
+ acodecs?: string[];
84
+ achan?: number[];
85
+ vcodecs?: string[];
86
+ fps?: number;
87
+ bitrate?: number;
58
88
  long?: number;
59
89
  lat?: number;
60
- params?: any;
61
- iv?: string;
90
+ model?: string;
62
91
  pages?: number;
92
+ progress?: number;
93
+ lang?: string;
94
+ tags?: MediaItemReference[];
95
+ series?: SerieInMedia[];
96
+ people?: MediaItemReference[];
97
+ faces?: FaceEmbedding[];
98
+ backups?: BackupFile[];
99
+ thumb?: string;
63
100
  thumbv?: number;
64
101
  thumbsize?: number;
65
- model?: string;
66
- originalId?: string;
102
+ iv?: string;
103
+ origin?: RsLink;
104
+ movie?: string;
105
+ uploader?: string;
106
+ uploadkey?: string;
107
+ faceRecognitionError?: string;
67
108
  }
68
109
  export declare enum LibraryTypes {
69
110
  'Photos' = "photos",
@@ -95,62 +136,84 @@ export interface ILibrary {
95
136
  status?: string;
96
137
  }
97
138
  export interface ITag {
98
- id?: string;
139
+ id: string;
99
140
  name: string;
141
+ path: string;
100
142
  parent?: string;
101
- path?: string;
102
- count?: number;
103
- starred?: boolean;
104
- hidden?: boolean;
143
+ type?: string;
144
+ modified: number;
145
+ added: number;
146
+ generated: boolean;
105
147
  alt?: string[];
106
- generated?: boolean;
107
- waiting?: boolean;
148
+ thumb?: string;
149
+ params?: any;
108
150
  }
109
151
  export declare enum LinkType {
110
152
  'profile' = "profile",
111
153
  'post' = "post",
112
154
  'other' = "other"
113
155
  }
156
+ export interface RsLink {
157
+ platform: string;
158
+ type?: LinkType;
159
+ id: string;
160
+ file?: string;
161
+ user?: string;
162
+ plugin?: string;
163
+ }
164
+ export type Gender = 'Male' | 'Female' | 'Animal' | 'Other' | 'Unknown' | {
165
+ Custom: string;
166
+ };
114
167
  export interface IPerson {
115
- id?: string;
168
+ id: string;
116
169
  name: string;
170
+ modified: number;
171
+ added: number;
172
+ posterv: number;
173
+ generated: boolean;
117
174
  alt?: string[];
118
- socials?: {
119
- id: string;
120
- type: LinkType | undefined;
121
- platform: string;
122
- }[];
123
- posterv?: number;
124
- portrait?: boolean;
175
+ type?: string;
176
+ portrait?: string;
125
177
  birthday?: number;
126
- waiting?: boolean;
127
- generated?: boolean;
178
+ death?: number;
179
+ imdb?: string;
180
+ slug?: string;
181
+ tmdb?: number;
182
+ trakt?: number;
183
+ socials?: RsLink[];
184
+ gender?: Gender;
185
+ country?: string;
186
+ bio?: string;
187
+ params?: any;
128
188
  }
189
+ export type SerieStatus = 'returning' | 'inProduction' | 'postProduction' | 'planned' | 'rumored' | 'ended' | 'released' | 'canceled' | 'pilot' | 'unknown' | {
190
+ other: string;
191
+ };
129
192
  export interface ISerie {
130
- id?: string;
193
+ id: string;
131
194
  name: string;
195
+ type?: string;
132
196
  alt?: string[];
133
- tags?: string[];
134
- people?: string[];
197
+ status?: SerieStatus;
198
+ params?: any;
135
199
  year?: number;
136
- poster?: boolean;
137
200
  imdb?: string;
138
201
  slug?: string;
139
202
  tmdb?: number;
140
203
  trakt?: number;
141
204
  tvdb?: number;
142
205
  otherids?: string;
143
- status?: string;
144
206
  imdbRating?: number;
145
207
  imdbVotes?: number;
146
- images?: {
147
- poster?: string;
148
- background?: string;
149
- };
150
- posterv?: number;
151
- backgroundv?: number;
152
- cardv?: number;
153
- waiting?: boolean;
208
+ traktRating?: number;
209
+ traktVotes?: number;
210
+ trailer?: string;
211
+ maxCreated?: number;
212
+ modified: number;
213
+ added: number;
214
+ posterv: number;
215
+ backgroundv: number;
216
+ cardv: number;
154
217
  }
155
218
  export interface IEpisode {
156
219
  id?: string;
@@ -177,10 +240,39 @@ export interface IEpisode {
177
240
  background?: string;
178
241
  };
179
242
  }
243
+ export type MovieStatus = 'returning' | 'released' | 'inProduction' | 'postProduction' | 'planned' | 'rumored' | 'canceled' | 'unknown' | {
244
+ other: string;
245
+ };
180
246
  export interface IMovie {
181
- id?: string;
247
+ id: string;
182
248
  name: string;
249
+ type?: any;
183
250
  year?: number;
251
+ airdate?: number;
252
+ digitalairdate?: number;
253
+ duration?: number;
254
+ overview?: string;
255
+ country?: string;
256
+ status?: MovieStatus;
257
+ imdb?: string;
258
+ slug?: string;
259
+ tmdb?: number;
260
+ trakt?: number;
261
+ otherids?: string;
262
+ lang?: string;
263
+ original?: string;
264
+ imdbRating?: number;
265
+ imdbVotes?: number;
266
+ traktRating?: number;
267
+ traktVotes?: number;
268
+ trailer?: RsLink;
269
+ modified: number;
270
+ added: number;
271
+ watched?: number;
272
+ progress?: number;
273
+ posterv: number;
274
+ backgroundv: number;
275
+ cardv: number;
184
276
  }
185
277
  export interface IServer {
186
278
  id: string;
@@ -8,6 +8,15 @@ export var FileTypes;
8
8
  FileTypes["channel"] = "channel";
9
9
  FileTypes["other"] = "other";
10
10
  })(FileTypes || (FileTypes = {}));
11
+ export var FileType;
12
+ (function (FileType) {
13
+ FileType["Directory"] = "Directory";
14
+ FileType["Photo"] = "Photo";
15
+ FileType["Video"] = "Video";
16
+ FileType["Archive"] = "Archive";
17
+ FileType["Album"] = "Album";
18
+ FileType["Other"] = "Other";
19
+ })(FileType || (FileType = {}));
11
20
  export var LibraryTypes;
12
21
  (function (LibraryTypes) {
13
22
  LibraryTypes["Photos"] = "photos";
package/libraries.md CHANGED
@@ -360,16 +360,33 @@ await libraryApi.updatePersonPortrait('person-id', formData);
360
360
 
361
361
  ## Series
362
362
 
363
- ### `getSeries(): Promise<ISerie[]>`
363
+ ### `getSeries(query?: { after?: number; name?: string; watched?: boolean; sort?: RsSort; order?: 'ASC' | 'DESC' }): Promise<ISerie[]>`
364
364
 
365
- Retrieves all series in the library, sorted by name.
365
+ Retrieves series in the library with optional filtering.
366
+
367
+ **Parameters:**
368
+ - `query`: Optional query object with filtering parameters:
369
+ - `after`: Filter series modified after this timestamp (integer unix milliseconds)
370
+ - `name`: Filter series by name
371
+ - `watched`: Filter by watched status
372
+ - `sort`: Sort key using `RsSort` enum (`Modified`, `Added`, `Created`, `Rating`, `Name`, `Size`)
373
+ - `order`: Sort direction (`'ASC'` or `'DESC'`)
366
374
 
367
375
  **Returns:** Promise resolving to an array of `ISerie` objects
368
376
 
369
377
  **Example:**
370
378
  ```typescript
379
+ // Get all series
371
380
  const series = await libraryApi.getSeries();
372
- ```
381
+
382
+ // Get series with filters and sorting
383
+ const filteredSeries = await libraryApi.getSeries({
384
+ watched: false,
385
+ sort: RsSort.Rating,
386
+ order: 'DESC',
387
+ after: Date.now() - 86400000 // Last 24 hours
388
+ });
389
+
373
390
 
374
391
  ### `createSerie(serie: Partial<ISerie>): Promise<ISerie>`
375
392
 
@@ -581,16 +598,30 @@ await libraryApi.setEpisodeWatched('serie-id', 1, 1, Date.now());
581
598
 
582
599
  ## Movies
583
600
 
584
- ### `getMovies(): Promise<IMovie[]>`
601
+ ### `getMovies(query?: { after?: number; inDigital?: boolean; watched?: boolean; sort?: MovieSort }): Promise<IMovie[]>`
585
602
 
586
- Retrieves all movies in the library.
603
+ Retrieves movies in the library with optional filtering.
604
+
605
+ **Parameters:**
606
+ - `query`: Optional query object with filtering parameters:
607
+ - `after`: Filter movies modified after this timestamp (integer unix milliseconds)
608
+ - `inDigital`: Filter by digital release availability
609
+ - `watched`: Filter by watched status
610
+ - `sort`: Sort key (`'modified'`, `'added'`, `'created'`, `'name'`, or `'digitalairdate'`)
587
611
 
588
612
  **Returns:** Promise resolving to an array of `IMovie` objects
589
613
 
590
614
  **Example:**
591
615
  ```typescript
616
+ // Get all movies
592
617
  const movies = await libraryApi.getMovies();
593
- ```
618
+
619
+ // Get movies with filters
620
+ const filteredMovies = await libraryApi.getMovies({
621
+ inDigital: true,
622
+ sort: 'digitalairdate',
623
+ after: Date.now() - 86400000 // Last 24 hours
624
+ });
594
625
 
595
626
  ### `createMovie(movie: Partial<IMovie>): Promise<IMovie>`
596
627
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redseat/api",
3
- "version": "0.0.17",
3
+ "version": "0.1.0",
4
4
  "description": "TypeScript API client library for interacting with Redseat servers",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",