@redseat/api 0.0.16 → 0.0.18
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/dist/interfaces.d.ts +91 -31
- package/dist/interfaces.js +9 -0
- package/dist/library.d.ts +14 -3
- package/dist/library.js +38 -6
- package/libraries.md +37 -6
- package/package.json +1 -1
package/dist/interfaces.d.ts
CHANGED
|
@@ -95,62 +95,84 @@ export interface ILibrary {
|
|
|
95
95
|
status?: string;
|
|
96
96
|
}
|
|
97
97
|
export interface ITag {
|
|
98
|
-
id
|
|
98
|
+
id: string;
|
|
99
99
|
name: string;
|
|
100
|
+
path: string;
|
|
100
101
|
parent?: string;
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
102
|
+
type?: string;
|
|
103
|
+
modified: number;
|
|
104
|
+
added: number;
|
|
105
|
+
generated: boolean;
|
|
105
106
|
alt?: string[];
|
|
106
|
-
|
|
107
|
-
|
|
107
|
+
thumb?: string;
|
|
108
|
+
params?: any;
|
|
108
109
|
}
|
|
109
110
|
export declare enum LinkType {
|
|
110
111
|
'profile' = "profile",
|
|
111
112
|
'post' = "post",
|
|
112
113
|
'other' = "other"
|
|
113
114
|
}
|
|
115
|
+
export interface RsLink {
|
|
116
|
+
platform: string;
|
|
117
|
+
type?: LinkType;
|
|
118
|
+
id: string;
|
|
119
|
+
file?: string;
|
|
120
|
+
user?: string;
|
|
121
|
+
plugin?: string;
|
|
122
|
+
}
|
|
123
|
+
export type Gender = 'Male' | 'Female' | 'Animal' | 'Other' | 'Unknown' | {
|
|
124
|
+
Custom: string;
|
|
125
|
+
};
|
|
114
126
|
export interface IPerson {
|
|
115
|
-
id
|
|
127
|
+
id: string;
|
|
116
128
|
name: string;
|
|
129
|
+
modified: number;
|
|
130
|
+
added: number;
|
|
131
|
+
posterv: number;
|
|
132
|
+
generated: boolean;
|
|
117
133
|
alt?: string[];
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
type: LinkType | undefined;
|
|
121
|
-
platform: string;
|
|
122
|
-
}[];
|
|
123
|
-
posterv?: number;
|
|
124
|
-
portrait?: boolean;
|
|
134
|
+
type?: string;
|
|
135
|
+
portrait?: string;
|
|
125
136
|
birthday?: number;
|
|
126
|
-
|
|
127
|
-
|
|
137
|
+
death?: number;
|
|
138
|
+
imdb?: string;
|
|
139
|
+
slug?: string;
|
|
140
|
+
tmdb?: number;
|
|
141
|
+
trakt?: number;
|
|
142
|
+
socials?: RsLink[];
|
|
143
|
+
gender?: Gender;
|
|
144
|
+
country?: string;
|
|
145
|
+
bio?: string;
|
|
146
|
+
params?: any;
|
|
128
147
|
}
|
|
148
|
+
export type SerieStatus = 'returning' | 'inProduction' | 'postProduction' | 'planned' | 'rumored' | 'ended' | 'released' | 'canceled' | 'pilot' | 'unknown' | {
|
|
149
|
+
other: string;
|
|
150
|
+
};
|
|
129
151
|
export interface ISerie {
|
|
130
|
-
id
|
|
152
|
+
id: string;
|
|
131
153
|
name: string;
|
|
154
|
+
type?: string;
|
|
132
155
|
alt?: string[];
|
|
133
|
-
|
|
134
|
-
|
|
156
|
+
status?: SerieStatus;
|
|
157
|
+
params?: any;
|
|
135
158
|
year?: number;
|
|
136
|
-
poster?: boolean;
|
|
137
159
|
imdb?: string;
|
|
138
160
|
slug?: string;
|
|
139
161
|
tmdb?: number;
|
|
140
162
|
trakt?: number;
|
|
141
163
|
tvdb?: number;
|
|
142
164
|
otherids?: string;
|
|
143
|
-
status?: string;
|
|
144
165
|
imdbRating?: number;
|
|
145
166
|
imdbVotes?: number;
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
167
|
+
traktRating?: number;
|
|
168
|
+
traktVotes?: number;
|
|
169
|
+
trailer?: string;
|
|
170
|
+
maxCreated?: number;
|
|
171
|
+
modified: number;
|
|
172
|
+
added: number;
|
|
173
|
+
posterv: number;
|
|
174
|
+
backgroundv: number;
|
|
175
|
+
cardv: number;
|
|
154
176
|
}
|
|
155
177
|
export interface IEpisode {
|
|
156
178
|
id?: string;
|
|
@@ -177,10 +199,39 @@ export interface IEpisode {
|
|
|
177
199
|
background?: string;
|
|
178
200
|
};
|
|
179
201
|
}
|
|
202
|
+
export type MovieStatus = 'returning' | 'released' | 'inProduction' | 'postProduction' | 'planned' | 'rumored' | 'canceled' | 'unknown' | {
|
|
203
|
+
other: string;
|
|
204
|
+
};
|
|
180
205
|
export interface IMovie {
|
|
181
|
-
id
|
|
206
|
+
id: string;
|
|
182
207
|
name: string;
|
|
208
|
+
type?: any;
|
|
183
209
|
year?: number;
|
|
210
|
+
airdate?: number;
|
|
211
|
+
digitalairdate?: number;
|
|
212
|
+
duration?: number;
|
|
213
|
+
overview?: string;
|
|
214
|
+
country?: string;
|
|
215
|
+
status?: MovieStatus;
|
|
216
|
+
imdb?: string;
|
|
217
|
+
slug?: string;
|
|
218
|
+
tmdb?: number;
|
|
219
|
+
trakt?: number;
|
|
220
|
+
otherids?: string;
|
|
221
|
+
lang?: string;
|
|
222
|
+
original?: string;
|
|
223
|
+
imdbRating?: number;
|
|
224
|
+
imdbVotes?: number;
|
|
225
|
+
traktRating?: number;
|
|
226
|
+
traktVotes?: number;
|
|
227
|
+
trailer?: RsLink;
|
|
228
|
+
modified: number;
|
|
229
|
+
added: number;
|
|
230
|
+
watched?: number;
|
|
231
|
+
progress?: number;
|
|
232
|
+
posterv: number;
|
|
233
|
+
backgroundv: number;
|
|
234
|
+
cardv: number;
|
|
184
235
|
}
|
|
185
236
|
export interface IServer {
|
|
186
237
|
id: string;
|
|
@@ -324,6 +375,15 @@ export declare enum SqlOrder {
|
|
|
324
375
|
ASC = "ASC",
|
|
325
376
|
DESC = "DESC"
|
|
326
377
|
}
|
|
378
|
+
export declare enum RsSort {
|
|
379
|
+
Modified = "modified",
|
|
380
|
+
Added = "added",
|
|
381
|
+
Created = "created",
|
|
382
|
+
Rating = "rating",
|
|
383
|
+
Name = "name",
|
|
384
|
+
Size = "size"
|
|
385
|
+
}
|
|
386
|
+
export type MovieSort = 'modified' | 'added' | 'created' | 'name' | 'digitalairdate';
|
|
327
387
|
export interface DeletedQuery {
|
|
328
388
|
after?: number;
|
|
329
389
|
kind?: ElementType;
|
package/dist/interfaces.js
CHANGED
|
@@ -53,3 +53,12 @@ export var SqlOrder;
|
|
|
53
53
|
SqlOrder["ASC"] = "ASC";
|
|
54
54
|
SqlOrder["DESC"] = "DESC";
|
|
55
55
|
})(SqlOrder || (SqlOrder = {}));
|
|
56
|
+
export var RsSort;
|
|
57
|
+
(function (RsSort) {
|
|
58
|
+
RsSort["Modified"] = "modified";
|
|
59
|
+
RsSort["Added"] = "added";
|
|
60
|
+
RsSort["Created"] = "created";
|
|
61
|
+
RsSort["Rating"] = "rating";
|
|
62
|
+
RsSort["Name"] = "name";
|
|
63
|
+
RsSort["Size"] = "size";
|
|
64
|
+
})(RsSort || (RsSort = {}));
|
package/dist/library.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IFile, ITag, IPerson, ISerie, IMovie, MediaRequest, IEpisode, ExternalImage, IBackupFile, ILibrary, SerieInMedia, DeletedQuery, RsDeleted } from './interfaces.js';
|
|
1
|
+
import { IFile, ITag, IPerson, ISerie, IMovie, MediaRequest, IEpisode, ExternalImage, IBackupFile, ILibrary, SerieInMedia, DeletedQuery, RsDeleted, MovieSort, RsSort, SqlOrder } from './interfaces.js';
|
|
2
2
|
import { EncryptFileOptions, EncryptedFile } from './encryption.js';
|
|
3
3
|
export interface MediaForUpdate {
|
|
4
4
|
name?: string;
|
|
@@ -92,8 +92,19 @@ export declare class LibraryApi {
|
|
|
92
92
|
name?: string;
|
|
93
93
|
after?: number;
|
|
94
94
|
}): Promise<IPerson[]>;
|
|
95
|
-
getSeries(
|
|
96
|
-
|
|
95
|
+
getSeries(query?: {
|
|
96
|
+
after?: number;
|
|
97
|
+
name?: string;
|
|
98
|
+
watched?: boolean;
|
|
99
|
+
sort?: RsSort;
|
|
100
|
+
order?: SqlOrder;
|
|
101
|
+
}): Promise<ISerie[]>;
|
|
102
|
+
getMovies(query?: {
|
|
103
|
+
after?: number;
|
|
104
|
+
inDigital?: boolean;
|
|
105
|
+
watched?: boolean;
|
|
106
|
+
sort?: MovieSort;
|
|
107
|
+
}): Promise<IMovie[]>;
|
|
97
108
|
getMedias(filter?: MediaRequest): Promise<IFile[]>;
|
|
98
109
|
countMedias(filter?: MediaRequest): Promise<{
|
|
99
110
|
count: number;
|
package/dist/library.js
CHANGED
|
@@ -95,14 +95,46 @@ export class LibraryApi {
|
|
|
95
95
|
const res = await this.client.get(this.getUrl('/people'), { params });
|
|
96
96
|
return res.data;
|
|
97
97
|
}
|
|
98
|
-
async getSeries() {
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
98
|
+
async getSeries(query) {
|
|
99
|
+
const params = {};
|
|
100
|
+
if (query) {
|
|
101
|
+
if (query.after !== undefined) {
|
|
102
|
+
params.after = query.after;
|
|
103
|
+
}
|
|
104
|
+
if (query.name !== undefined) {
|
|
105
|
+
params.name = query.name;
|
|
106
|
+
}
|
|
107
|
+
if (query.watched !== undefined) {
|
|
108
|
+
params.watched = query.watched;
|
|
109
|
+
}
|
|
110
|
+
if (query.sort !== undefined) {
|
|
111
|
+
params.sort = query.sort;
|
|
112
|
+
}
|
|
113
|
+
if (query.order !== undefined) {
|
|
114
|
+
params.order = query.order;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Defaults { sort: 'name', order: 'ASC' } have been removed
|
|
118
|
+
const res = await this.client.get(this.getUrl('/series'), { params });
|
|
102
119
|
return res.data;
|
|
103
120
|
}
|
|
104
|
-
async getMovies() {
|
|
105
|
-
const
|
|
121
|
+
async getMovies(query) {
|
|
122
|
+
const params = {};
|
|
123
|
+
if (query) {
|
|
124
|
+
if (query.after !== undefined) {
|
|
125
|
+
params.after = query.after;
|
|
126
|
+
}
|
|
127
|
+
if (query.inDigital !== undefined) {
|
|
128
|
+
params.inDigital = query.inDigital;
|
|
129
|
+
}
|
|
130
|
+
if (query.watched !== undefined) {
|
|
131
|
+
params.watched = query.watched;
|
|
132
|
+
}
|
|
133
|
+
if (query.sort !== undefined) {
|
|
134
|
+
params.sort = query.sort;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
const res = await this.client.get(this.getUrl('/movies'), { params });
|
|
106
138
|
return res.data;
|
|
107
139
|
}
|
|
108
140
|
async getMedias(filter) {
|
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
|
|
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
|
|
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
|
|