@inner-dj/client 0.0.4 → 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.
- package/README.md +47 -0
- package/lib/src/config.js +1 -1
- package/lib/src/config.js.map +1 -1
- package/lib/src/player.d.ts +1 -1
- package/lib/src/player.js +36 -14
- package/lib/src/player.js.map +1 -1
- package/package.json +4 -2
package/README.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# @inner-dj/client
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@inner-dj/client)
|
|
4
|
+
|
|
5
|
+
This is the client (or player) component for [inner-dj](https://codeberg.org/sanin/inner-dj).
|
|
6
|
+
|
|
7
|
+
## Requirements
|
|
8
|
+
|
|
9
|
+
- yt-dlp
|
|
10
|
+
- ffplay
|
|
11
|
+
|
|
12
|
+
## Deployment
|
|
13
|
+
|
|
14
|
+
The inner-dj client is available via [npm](https://www.npmjs.com/package/@inner-dj/client).
|
|
15
|
+
|
|
16
|
+
### npm
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
npx @inner-dj/client
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### pnpm
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
pnpm dlx @inner-dj/client
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Configuration
|
|
29
|
+
|
|
30
|
+
By default, inner-dj client will attempt to load a configuration file at `config/config.yaml` (relative to the current working directory).
|
|
31
|
+
To use a custom config path, set environment variable `CONFIG`.
|
|
32
|
+
|
|
33
|
+
### Config Root
|
|
34
|
+
|
|
35
|
+
Note that comma-separated values are accepted for environment variables.
|
|
36
|
+
|
|
37
|
+
| YAML key | Environment Var | Type | Description | Default |
|
|
38
|
+
|------------------------|---------------------|----------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------|
|
|
39
|
+
| clientId | CLIENTID | string | ID of your choice to identify the client to the server as | REQUIRED |
|
|
40
|
+
| server | SERVER | string | URL of the inner-dj server | REQUIRED |
|
|
41
|
+
| jwtSecret | JWTSECRET | string | Secret for communications between client and server. Only share with server. | REQUIRED |
|
|
42
|
+
| cookies | COOKIES | string | Optional path to Netscape-formatted file to read cookies from. See [ how do I pass cookies to yt-dlp? ]( https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp ) | null |
|
|
43
|
+
| forceDownloadViaServer | FORCESERVERDOWNLOAD | boolean | If true, download missing songs via the server. Otherwise download locally first and fall back to server if something goes wrong | false |
|
|
44
|
+
| downloadDir | DOWNLOADDIR | string | Where audio files are stored. | ./downloads/ next to config file |
|
|
45
|
+
| maxLength | MAXLENGTH | number | How long in ms to wait during each track before skipping to the next track. Set to 0 to play audio files in their entirety. | 0 |
|
|
46
|
+
| standbyPool | STANDBYPOOL | string[] | List of songs (YouTube URLs) to shuffle through if there are no requests in the queue. | [] |
|
|
47
|
+
| blocked | BLOCKED | string[] | List of YouTube URLs to reject requests for. | [] |
|
package/lib/src/config.js
CHANGED
|
@@ -22,7 +22,7 @@ export async function getConfig(cfgPath) {
|
|
|
22
22
|
const cfg = await parseConfig(p);
|
|
23
23
|
return {
|
|
24
24
|
clientId: process.env['CLIENTID'] ?? cfg.clientId ?? throwNewError('clientId is required'),
|
|
25
|
-
server: process.env['SERVER'] ?? cfg.server ?? throwNewError('server is required'),
|
|
25
|
+
server: (process.env['SERVER'] ?? cfg.server ?? throwNewError('server is required')).replace(/\/$/, ''),
|
|
26
26
|
jwtSecret: process.env['JWTSECRET'] ?? cfg.jwtSecret ?? throwNewError('jwtSecret is required'),
|
|
27
27
|
forceDownloadViaServer: getBoolean('FORCESERVERDOWNLOAD', cfg, 'forceDownloadViaServer', false),
|
|
28
28
|
standbyPool: process.env['STANDBYPOOL']?.split(',') ?? cfg.standbyPool ?? [],
|
package/lib/src/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,aAAa,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAcrD,SAAS,aAAa,CAAI,GAAW;IACjC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,UAAU,CAAC,OAAe,EAAE,GAA0B,EAAE,GAAuB,EAAE,QAAiB;IACvG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC,KAAK,MAAM,CAAC;AAC1E,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAe;IACtC,IAAI,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,EAAE,EAAE,CAAC;QACR,OAAO,CAAC,IAAI,CAAC,kBAAkB,OAAO,KAAK,EAAE,EAAE,EAAE,yBAAyB,CAAC,CAAC;QAC5E,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAgB;IAC5C,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAW,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC3F,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC;IACjC,OAAO;QACH,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC,sBAAsB,CAAC;QAC1F,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,aAAa,CAAC,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,aAAa,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAcrD,SAAS,aAAa,CAAI,GAAW;IACjC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,UAAU,CAAC,OAAe,EAAE,GAA0B,EAAE,GAAuB,EAAE,QAAiB;IACvG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC,KAAK,MAAM,CAAC;AAC1E,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAe;IACtC,IAAI,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,EAAE,EAAE,CAAC;QACR,OAAO,CAAC,IAAI,CAAC,kBAAkB,OAAO,KAAK,EAAE,EAAE,EAAE,yBAAyB,CAAC,CAAC;QAC5E,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAgB;IAC5C,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAW,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC3F,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC;IACjC,OAAO;QACH,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC,sBAAsB,CAAC;QAC1F,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,aAAa,CAAC,oBAAoB,CAAC,CAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACxG,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,SAAS,IAAI,aAAa,CAAC,uBAAuB,CAAC;QAC9F,sBAAsB,EAAE,UAAU,CAAC,qBAAqB,EAAE,GAAG,EAAE,wBAAwB,EAAE,KAAK,CAAC;QAC/F,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE;QAC5E,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC;QACrG,SAAS,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC;QAC5E,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE;QAChE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,OAAO;KACjD,CAAA;AACL,CAAC"}
|
package/lib/src/player.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export declare class Player {
|
|
|
18
18
|
skip: () => void;
|
|
19
19
|
fileExists: (vid: YouTubeVideoID) => Promise<string | false>;
|
|
20
20
|
download: (vid: YouTubeVideoID) => Promise<void>;
|
|
21
|
-
downloadFromServer: (
|
|
21
|
+
downloadFromServer: (vid: YouTubeVideoID) => Promise<void>;
|
|
22
22
|
isBlocked: (vid: YouTubeVideoID) => boolean;
|
|
23
23
|
close: () => void;
|
|
24
24
|
}
|
package/lib/src/player.js
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import fsp from 'fs/promises';
|
|
3
|
+
import fs from 'fs';
|
|
3
4
|
import jwt from 'jsonwebtoken';
|
|
5
|
+
import ky from 'ky';
|
|
6
|
+
import { Writable } from 'stream';
|
|
4
7
|
import { LRUCache } from 'lru-cache';
|
|
5
8
|
import { shuffle } from 'fast-shuffle';
|
|
6
9
|
import { spawn } from 'spawn-but-with-promises';
|
|
7
|
-
import { ytdlp, ytdlpDefaults, encodePayload } from '@inner-dj/common';
|
|
10
|
+
import { getFilesNoError, ytdlp, ytdlpDefaults, encodePayload } from '@inner-dj/common';
|
|
8
11
|
import getYouTubeID from 'get-youtube-id-ng';
|
|
9
|
-
|
|
10
|
-
try {
|
|
11
|
-
return await fsp.readdir(downloadDir);
|
|
12
|
-
}
|
|
13
|
-
catch {
|
|
14
|
-
return [];
|
|
15
|
-
}
|
|
16
|
-
}
|
|
12
|
+
import contentDisposition from 'content-disposition';
|
|
17
13
|
function emptyArray(arr) {
|
|
18
14
|
while (arr.length) {
|
|
19
15
|
arr.pop();
|
|
@@ -54,6 +50,7 @@ export class Player {
|
|
|
54
50
|
};
|
|
55
51
|
connect = (retryOnFailure = false) => {
|
|
56
52
|
const config = this.config;
|
|
53
|
+
const wsServer = config.server.replace(/^http/i, 'ws');
|
|
57
54
|
const ws = this.sock = new WebSocket(`${config.server}/sock`);
|
|
58
55
|
ws.onerror = err => {
|
|
59
56
|
console.error(err);
|
|
@@ -90,7 +87,7 @@ export class Player {
|
|
|
90
87
|
this.sock = null;
|
|
91
88
|
ws.close();
|
|
92
89
|
setTimeout(() => this.connect(true), 2500);
|
|
93
|
-
}) && console.log(`Connected to ${
|
|
90
|
+
}) && console.log(`Connected to ${wsServer}`);
|
|
94
91
|
}
|
|
95
92
|
else if (payload.type === 'queue') {
|
|
96
93
|
console.log(`adding ${payload.body} to the queue`);
|
|
@@ -132,6 +129,10 @@ export class Player {
|
|
|
132
129
|
await this.proc;
|
|
133
130
|
timeout === false || clearTimeout(timeout);
|
|
134
131
|
}
|
|
132
|
+
this.sock?.send(encodePayload({
|
|
133
|
+
type: 'nowPlaying',
|
|
134
|
+
body: null
|
|
135
|
+
}, this.config.jwtSecret));
|
|
135
136
|
this.proc = null;
|
|
136
137
|
};
|
|
137
138
|
enqueue = async (vidurl, destination, insertFilename = true) => {
|
|
@@ -157,6 +158,10 @@ export class Player {
|
|
|
157
158
|
console.warn(`no file for video ${vid} found.`);
|
|
158
159
|
return false;
|
|
159
160
|
}
|
|
161
|
+
if (destination.indexOf(filename) >= 0) {
|
|
162
|
+
console.warn(`${vid} already in queue.`);
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
160
165
|
destination.push(insertFilename ? filename : vidurl);
|
|
161
166
|
return filename;
|
|
162
167
|
};
|
|
@@ -184,11 +189,11 @@ export class Player {
|
|
|
184
189
|
console.info(`downloading ${vidurl}`);
|
|
185
190
|
await fsp.mkdir(this.config.downloadDir, { recursive: true });
|
|
186
191
|
if (this.config.forceDownloadViaServer) {
|
|
187
|
-
await this.downloadFromServer(
|
|
192
|
+
await this.downloadFromServer(vid);
|
|
188
193
|
return;
|
|
189
194
|
}
|
|
190
195
|
try {
|
|
191
|
-
await this.downloader.exec(
|
|
196
|
+
await this.downloader.exec(vid);
|
|
192
197
|
return;
|
|
193
198
|
}
|
|
194
199
|
catch (ex) {
|
|
@@ -196,8 +201,25 @@ export class Player {
|
|
|
196
201
|
await this.downloadFromServer(vidurl);
|
|
197
202
|
}
|
|
198
203
|
};
|
|
199
|
-
downloadFromServer = async (
|
|
200
|
-
|
|
204
|
+
downloadFromServer = async (vid) => {
|
|
205
|
+
const server = this.config.server;
|
|
206
|
+
const payload = {
|
|
207
|
+
type: 'download',
|
|
208
|
+
body: vid
|
|
209
|
+
};
|
|
210
|
+
const resp = await ky.post(`${server}/download`, {
|
|
211
|
+
headers: {
|
|
212
|
+
'Content-Type': 'text/plain',
|
|
213
|
+
},
|
|
214
|
+
body: jwt.sign(JSON.stringify(payload), this.config.jwtSecret)
|
|
215
|
+
});
|
|
216
|
+
const cdHeader = resp.headers.get('Content-Disposition');
|
|
217
|
+
const filename = contentDisposition.parse(cdHeader || '').parameters['filename'];
|
|
218
|
+
if (!resp.ok || !cdHeader || !filename) {
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
const out = Writable.toWeb(fs.createWriteStream(path.join(this.config.downloadDir, filename)));
|
|
222
|
+
await resp.body?.pipeTo(out);
|
|
201
223
|
};
|
|
202
224
|
isBlocked = (vid) => {
|
|
203
225
|
return this.blockedVids.indexOf(vid) >= 0;
|
package/lib/src/player.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"player.js","sourceRoot":"","sources":["../../src/player.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,aAAa,CAAC;AAC9B,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,KAAK,EAAiD,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAE,KAAK,EAAE,aAAa,EAAuB,aAAa,
|
|
1
|
+
{"version":3,"file":"player.js","sourceRoot":"","sources":["../../src/player.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inner-dj/client",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "player component of inner-dj",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -26,13 +26,15 @@
|
|
|
26
26
|
"!lib/**/*.js.map"
|
|
27
27
|
],
|
|
28
28
|
"dependencies": {
|
|
29
|
+
"content-disposition": "2.0.0",
|
|
29
30
|
"fast-shuffle": "^6.1.1",
|
|
30
31
|
"get-youtube-id-ng": "1.0.1",
|
|
31
32
|
"jsonwebtoken": "9.0.3",
|
|
33
|
+
"ky": "^2.0.2",
|
|
32
34
|
"lru-cache": "^11.4.0",
|
|
33
35
|
"spawn-but-with-promises": "^1.0.4",
|
|
34
36
|
"yaml": "^2.9.0",
|
|
35
|
-
"@inner-dj/common": "0.0
|
|
37
|
+
"@inner-dj/common": "0.1.0"
|
|
36
38
|
},
|
|
37
39
|
"devDependencies": {
|
|
38
40
|
"@sindresorhus/tsconfig": "8.1.0",
|