@ctrl/plex 3.0.0 → 3.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.
- package/README.md +38 -0
- package/dist/src/library.d.ts +1 -1
- package/dist/src/library.js +1 -1
- package/dist/src/library.types.d.ts +12 -0
- package/dist/src/media.d.ts +21 -0
- package/dist/src/media.js +11 -0
- package/dist/src/video.d.ts +2 -1
- package/dist/src/video.js +2 -1
- package/package.json +10 -11
package/README.md
CHANGED
|
@@ -98,3 +98,41 @@ Post testing, remove plex server from account. Warning this is destructive. Do n
|
|
|
98
98
|
```sh
|
|
99
99
|
npm run test-cleanup
|
|
100
100
|
```
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
### Running tests locally (mostly for myself)
|
|
104
|
+
|
|
105
|
+
get a claim token from https://www.plex.tv/claim/
|
|
106
|
+
export PLEX_CLAIM_TOKEN=claim-token
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
docker run -d \
|
|
110
|
+
--name=plex \
|
|
111
|
+
--net=host \
|
|
112
|
+
-h orbstack \
|
|
113
|
+
-p 32400:32400/tcp \
|
|
114
|
+
-p 32400:32400 \
|
|
115
|
+
-p 1900:1900/udp \
|
|
116
|
+
-p 5353:5353/udp \
|
|
117
|
+
-p 8324:8324 \
|
|
118
|
+
-p 32410:32410/udp \
|
|
119
|
+
-p 32412:32412/udp \
|
|
120
|
+
-p 32413:32413/udp \
|
|
121
|
+
-p 32414:32414/udp \
|
|
122
|
+
-p 32469:32469 \
|
|
123
|
+
-e PUID=1000 \
|
|
124
|
+
-e PGID=1000 \
|
|
125
|
+
-e TZ=Etc/UTC \
|
|
126
|
+
-e VERSION=docker \
|
|
127
|
+
-e PLEX_CLAIM=$PLEX_CLAIM_TOKEN \
|
|
128
|
+
-v /Users/scooper/gh/plex/plex/media/db:/config \
|
|
129
|
+
-v /Users/scooper/gh/plex/plex/media/transcode:/transcode \
|
|
130
|
+
-v /Users/scooper/gh/plex/plex/media:/data \
|
|
131
|
+
--restart unless-stopped \
|
|
132
|
+
lscr.io/linuxserver/plex:latest
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
bootstrap media
|
|
136
|
+
```
|
|
137
|
+
NODE_OPTIONS="--loader ts-node/esm" node scripts/bootstraptest.ts --no-docker --server-name=orbstack`
|
|
138
|
+
```
|
package/dist/src/library.d.ts
CHANGED
|
@@ -260,7 +260,7 @@ export declare abstract class LibrarySection<SectionVideoType = VideoType> exten
|
|
|
260
260
|
readonly VIDEO_TYPE: Class<SectionVideoType>;
|
|
261
261
|
_filterTypes?: FilteringType[];
|
|
262
262
|
_fieldTypes?: FilteringFieldType[];
|
|
263
|
-
all(sort?: string): Promise<
|
|
263
|
+
all(sort?: string): Promise<SectionVideoType[]>;
|
|
264
264
|
agents(): Promise<Agent[]>;
|
|
265
265
|
/**
|
|
266
266
|
* @param title Title of the item to return.
|
package/dist/src/library.js
CHANGED
|
@@ -283,7 +283,7 @@ export class LibrarySection extends PlexObject {
|
|
|
283
283
|
sortStr = `?sort=${sort}`;
|
|
284
284
|
}
|
|
285
285
|
const key = `/library/sections/${this.key}/all${sortStr}`;
|
|
286
|
-
const items = await fetchItems(this.server, key);
|
|
286
|
+
const items = await fetchItems(this.server, key, undefined, this.VIDEO_TYPE, this);
|
|
287
287
|
return items;
|
|
288
288
|
}
|
|
289
289
|
async agents() {
|
|
@@ -110,6 +110,7 @@ export interface MovieData {
|
|
|
110
110
|
Extras?: ExtrasData[];
|
|
111
111
|
Guid?: Guid[];
|
|
112
112
|
Marker?: MarkerData[];
|
|
113
|
+
Rating?: MediaRating[];
|
|
113
114
|
}
|
|
114
115
|
export interface MediaTag {
|
|
115
116
|
tag: string;
|
|
@@ -246,4 +247,15 @@ interface ExtrasStream {
|
|
|
246
247
|
selected?: boolean;
|
|
247
248
|
channels?: number;
|
|
248
249
|
}
|
|
250
|
+
interface MediaRating {
|
|
251
|
+
image: string;
|
|
252
|
+
/**
|
|
253
|
+
* ex 8.3
|
|
254
|
+
*/
|
|
255
|
+
value: number;
|
|
256
|
+
/**
|
|
257
|
+
* ex 'audience'
|
|
258
|
+
*/
|
|
259
|
+
type: string;
|
|
260
|
+
}
|
|
249
261
|
export {};
|
package/dist/src/media.d.ts
CHANGED
|
@@ -179,4 +179,25 @@ declare class GuidTag extends PlexObject {
|
|
|
179
179
|
export declare class Guid extends GuidTag {
|
|
180
180
|
static TAG: "Guid";
|
|
181
181
|
}
|
|
182
|
+
/**
|
|
183
|
+
* Represents a single Rating media tag.
|
|
184
|
+
*/
|
|
185
|
+
export declare class Rating extends PlexObject {
|
|
186
|
+
static TAG: "Rating";
|
|
187
|
+
/**
|
|
188
|
+
* The uri for the rating image
|
|
189
|
+
* (e.g. ``imdb://image.rating``, ``rottentomatoes://image.rating.ripe``,
|
|
190
|
+
* ``rottentomatoes://image.rating.upright``, ``themoviedb://image.rating``).
|
|
191
|
+
*/
|
|
192
|
+
image: string;
|
|
193
|
+
/**
|
|
194
|
+
* The type of rating (e.g. audience or critic).
|
|
195
|
+
*/
|
|
196
|
+
type: 'audience' | 'critic';
|
|
197
|
+
/**
|
|
198
|
+
* The rating value.
|
|
199
|
+
*/
|
|
200
|
+
value: number;
|
|
201
|
+
protected _loadData(data: any): void;
|
|
202
|
+
}
|
|
182
203
|
export {};
|
package/dist/src/media.js
CHANGED
|
@@ -189,3 +189,14 @@ class GuidTag extends PlexObject {
|
|
|
189
189
|
export class Guid extends GuidTag {
|
|
190
190
|
static { this.TAG = 'Guid'; }
|
|
191
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Represents a single Rating media tag.
|
|
194
|
+
*/
|
|
195
|
+
export class Rating extends PlexObject {
|
|
196
|
+
static { this.TAG = 'Rating'; }
|
|
197
|
+
_loadData(data) {
|
|
198
|
+
this.image = data.image;
|
|
199
|
+
this.type = data.type;
|
|
200
|
+
this.value = data.value;
|
|
201
|
+
}
|
|
202
|
+
}
|
package/dist/src/video.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { URL } from 'url';
|
|
3
3
|
import { Playable } from './base/playable.js';
|
|
4
4
|
import { ExtrasData, FullShowData, MovieData, ShowData } from './library.types.js';
|
|
5
|
-
import { Chapter, Collection, Country, Director, Genre, Guid, Marker, Media, Producer, Role, Similar, Writer } from './media.js';
|
|
5
|
+
import { Chapter, Collection, Country, Director, Genre, Guid, Marker, Media, Producer, Rating, Role, Similar, Writer } from './media.js';
|
|
6
6
|
import { ChapterSource, EpisodeMetadata, FullMovieResponse } from './video.types.js';
|
|
7
7
|
export type VideoType = Movie | Show;
|
|
8
8
|
declare abstract class Video extends Playable {
|
|
@@ -95,6 +95,7 @@ export declare class Movie extends Video {
|
|
|
95
95
|
media: Media[];
|
|
96
96
|
guids: Guid[];
|
|
97
97
|
markers: Marker[];
|
|
98
|
+
ratings?: Rating[];
|
|
98
99
|
get actors(): Role[];
|
|
99
100
|
locations(): Promise<string[]>;
|
|
100
101
|
/**
|
package/dist/src/video.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Playable } from './base/playable.js';
|
|
2
2
|
import { fetchItem, fetchItems, findItems } from './baseFunctionality.js';
|
|
3
|
-
import { Chapter, Collection, Country, Director, Genre, Guid, Marker, Media, Producer, Role, Similar, Writer, } from './media.js';
|
|
3
|
+
import { Chapter, Collection, Country, Director, Genre, Guid, Marker, Media, Producer, Rating, Role, Similar, Writer, } from './media.js';
|
|
4
4
|
class Video extends Playable {
|
|
5
5
|
constructor() {
|
|
6
6
|
super(...arguments);
|
|
@@ -143,6 +143,7 @@ export class Movie extends Video {
|
|
|
143
143
|
this.media = data.Media?.map(d => new Media(this.server, d, undefined, this)) ?? [];
|
|
144
144
|
this.guids = data.Guid?.map(d => new Guid(this.server, d, undefined, this)) ?? [];
|
|
145
145
|
this.markers = data.Marker?.map(d => new Marker(this.server, d, undefined, this)) ?? [];
|
|
146
|
+
this.ratings = data.Rating?.map(d => new Rating(this.server, d, undefined, this)) ?? [];
|
|
146
147
|
}
|
|
147
148
|
_loadFullData(data) {
|
|
148
149
|
const metadata = data.Metadata[0];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ctrl/plex",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "plex api client in typescript",
|
|
5
5
|
"author": "Scott Cooper <scttcper@gmail.com>",
|
|
6
6
|
"publishConfig": {
|
|
@@ -20,10 +20,10 @@
|
|
|
20
20
|
"typescript"
|
|
21
21
|
],
|
|
22
22
|
"scripts": {
|
|
23
|
-
"lint": "
|
|
23
|
+
"lint": "npm run lint:biome && npm run lint:eslint",
|
|
24
24
|
"lint:biome": "biome check .",
|
|
25
25
|
"lint:eslint": "eslint --ext .ts,.tsx .",
|
|
26
|
-
"lint:fix": "
|
|
26
|
+
"lint:fix": "npm run lint:biome:fix && npm run lint:eslint:fix",
|
|
27
27
|
"lint:eslint:fix": "eslint --ext .ts,.tsx . --fix",
|
|
28
28
|
"lint:biome:fix": "biome check . --apply",
|
|
29
29
|
"prepare": "npm run build",
|
|
@@ -33,7 +33,6 @@
|
|
|
33
33
|
"test:ci": "vitest run --coverage --reporter=default --reporter=junit --outputFile=./junit.xml",
|
|
34
34
|
"bootstraptest": "node --loader ts-node/esm scripts/bootstraptest.ts",
|
|
35
35
|
"teardowntest": "node --loader ts-node/esm scripts/teardowntest.ts",
|
|
36
|
-
"claim-server": "node --loader ts-node/esm scripts/claim-server.ts",
|
|
37
36
|
"add-media": "node --loader ts-node/esm scripts/add-media.ts",
|
|
38
37
|
"test-cleanup": "node --loader ts-node/esm scripts/test-cleanup.ts"
|
|
39
38
|
},
|
|
@@ -41,34 +40,34 @@
|
|
|
41
40
|
"@ctrl/mac-address": "^3.0.3",
|
|
42
41
|
"ofetch": "^1.3.4",
|
|
43
42
|
"p-any": "^4.0.0",
|
|
44
|
-
"type-fest": "^4.
|
|
43
|
+
"type-fest": "^4.18.1",
|
|
45
44
|
"ws": "^8.17.0",
|
|
46
45
|
"xml2js": "^0.6.2"
|
|
47
46
|
},
|
|
48
47
|
"devDependencies": {
|
|
49
|
-
"@biomejs/biome": "1.7.
|
|
48
|
+
"@biomejs/biome": "1.7.2",
|
|
50
49
|
"@ctrl/eslint-config-biome": "2.6.7",
|
|
51
50
|
"@sindresorhus/tsconfig": "5.0.0",
|
|
52
|
-
"@types/lodash": "4.17.
|
|
51
|
+
"@types/lodash": "4.17.1",
|
|
53
52
|
"@types/micromatch": "4.0.7",
|
|
54
|
-
"@types/node": "20.12.
|
|
53
|
+
"@types/node": "20.12.8",
|
|
55
54
|
"@types/ws": "8.5.10",
|
|
56
55
|
"@types/xml2js": "0.4.14",
|
|
57
56
|
"@types/yargs": "17.0.32",
|
|
58
|
-
"@vitest/coverage-v8": "1.
|
|
57
|
+
"@vitest/coverage-v8": "1.6.0",
|
|
59
58
|
"delay": "6.0.0",
|
|
60
59
|
"eslint": "8.57.0",
|
|
61
60
|
"execa": "8.0.1",
|
|
62
61
|
"glob": "10.3.12",
|
|
63
62
|
"globby": "14.0.1",
|
|
64
63
|
"lodash": "4.17.21",
|
|
65
|
-
"make-dir": "
|
|
64
|
+
"make-dir": "5.0.0",
|
|
66
65
|
"ora": "8.0.1",
|
|
67
66
|
"p-retry": "6.2.0",
|
|
68
67
|
"ts-node": "10.9.2",
|
|
69
68
|
"typedoc": "0.25.13",
|
|
70
69
|
"typescript": "5.4.5",
|
|
71
|
-
"vitest": "1.
|
|
70
|
+
"vitest": "1.6.0",
|
|
72
71
|
"yargs": "17.7.2"
|
|
73
72
|
},
|
|
74
73
|
"release": {
|