q-fi-core 2.3.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/CHANGELOG.md +109 -0
- package/LICENSE +1 -0
- package/README.md +186 -0
- package/dist/api/api.d.ts +78 -0
- package/dist/api/api.js +182 -0
- package/dist/api/cache.d.ts +3 -0
- package/dist/api/cache.js +12 -0
- package/dist/api/index.d.ts +2 -0
- package/dist/api/index.js +18 -0
- package/dist/api/request.d.ts +23 -0
- package/dist/api/request.js +88 -0
- package/dist/converter/deezer.d.ts +3 -0
- package/dist/converter/deezer.js +45 -0
- package/dist/converter/index.d.ts +5 -0
- package/dist/converter/index.js +34 -0
- package/dist/converter/parse.d.ts +18 -0
- package/dist/converter/parse.js +176 -0
- package/dist/converter/spotify.d.ts +40 -0
- package/dist/converter/spotify.js +154 -0
- package/dist/converter/tidal.d.ts +146 -0
- package/dist/converter/tidal.js +199 -0
- package/dist/converter/youtube.d.ts +6 -0
- package/dist/converter/youtube.js +102 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +24 -0
- package/dist/lib/decrypt.d.ts +9 -0
- package/dist/lib/decrypt.js +63 -0
- package/dist/lib/fast-lru.d.ts +63 -0
- package/dist/lib/fast-lru.js +121 -0
- package/dist/lib/get-url.d.ts +16 -0
- package/dist/lib/get-url.js +154 -0
- package/dist/lib/http.d.ts +66 -0
- package/dist/lib/http.js +235 -0
- package/dist/lib/metaflac-js.d.ts +124 -0
- package/dist/lib/metaflac-js.js +343 -0
- package/dist/lib/request.d.ts +18 -0
- package/dist/lib/request.js +86 -0
- package/dist/metadata-writer/abumCover.d.ts +10 -0
- package/dist/metadata-writer/abumCover.js +37 -0
- package/dist/metadata-writer/flacmetata.d.ts +3 -0
- package/dist/metadata-writer/flacmetata.js +80 -0
- package/dist/metadata-writer/getTrackLyrics.d.ts +2 -0
- package/dist/metadata-writer/getTrackLyrics.js +26 -0
- package/dist/metadata-writer/id3.d.ts +3 -0
- package/dist/metadata-writer/id3.js +119 -0
- package/dist/metadata-writer/index.d.ts +9 -0
- package/dist/metadata-writer/index.js +44 -0
- package/dist/metadata-writer/musixmatchLyrics.d.ts +1 -0
- package/dist/metadata-writer/musixmatchLyrics.js +39 -0
- package/dist/metadata-writer/useragents.d.ts +1 -0
- package/dist/metadata-writer/useragents.js +86 -0
- package/dist/types/album.d.ts +123 -0
- package/dist/types/album.js +2 -0
- package/dist/types/artist.d.ts +36 -0
- package/dist/types/artist.js +2 -0
- package/dist/types/channel.d.ts +33 -0
- package/dist/types/channel.js +2 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.js +26 -0
- package/dist/types/playlist-channel.d.ts +81 -0
- package/dist/types/playlist-channel.js +2 -0
- package/dist/types/playlist.d.ts +49 -0
- package/dist/types/playlist.js +2 -0
- package/dist/types/profile.d.ts +29 -0
- package/dist/types/profile.js +2 -0
- package/dist/types/radio.d.ts +7 -0
- package/dist/types/radio.js +2 -0
- package/dist/types/search.d.ts +79 -0
- package/dist/types/search.js +2 -0
- package/dist/types/show.d.ts +61 -0
- package/dist/types/show.js +2 -0
- package/dist/types/tracks.d.ts +144 -0
- package/dist/types/tracks.js +2 -0
- package/dist/types/user.d.ts +16 -0
- package/dist/types/user.js +2 -0
- package/package.json +69 -0
- package/types/index.d.ts +1 -0
- package/types/index.js +3 -0
- package/types/package.json +4 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.writeMetadataFlac = void 0;
|
|
7
|
+
const metaflac_js_1 = __importDefault(require("../lib/metaflac-js"));
|
|
8
|
+
const writeMetadataFlac = (buffer, track, album, dimension, cover) => {
|
|
9
|
+
const flac = new metaflac_js_1.default(buffer);
|
|
10
|
+
const RELEASE_YEAR = album ? album.release_date.split('-')[0] : null;
|
|
11
|
+
flac.setTag('TITLE=' + track.SNG_TITLE);
|
|
12
|
+
flac.setTag('ALBUM=' + track.ALB_TITLE);
|
|
13
|
+
flac.setTag('ARTIST=' + track.ARTISTS.map((a) => a.ART_NAME).join(', '));
|
|
14
|
+
flac.setTag('TRACKNUMBER=' + track.TRACK_NUMBER.toLocaleString('en-US', { minimumIntegerDigits: 2 }));
|
|
15
|
+
if (album) {
|
|
16
|
+
const TOTALTRACKS = album.nb_tracks.toLocaleString('en-US', { minimumIntegerDigits: 2 });
|
|
17
|
+
if (album.genres.data.length > 0) {
|
|
18
|
+
for (const genre of album.genres.data) {
|
|
19
|
+
flac.setTag('GENRE=' + genre.name);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
flac.setTag('TRACKTOTAL=' + TOTALTRACKS);
|
|
23
|
+
flac.setTag('TOTALTRACKS=' + TOTALTRACKS);
|
|
24
|
+
flac.setTag('RELEASETYPE=' + album.record_type);
|
|
25
|
+
flac.setTag('ALBUMARTIST=' + album.artist.name);
|
|
26
|
+
flac.setTag('BARCODE=' + album.upc);
|
|
27
|
+
flac.setTag('LABEL=' + album.label);
|
|
28
|
+
flac.setTag('DATE=' + album.release_date);
|
|
29
|
+
flac.setTag('YEAR=' + RELEASE_YEAR);
|
|
30
|
+
flac.setTag(`COMPILATION=${album.artist.name.match(/various/i) ? '1' : '0'}`);
|
|
31
|
+
}
|
|
32
|
+
if (track.DISK_NUMBER) {
|
|
33
|
+
flac.setTag('DISCNUMBER=' + track.DISK_NUMBER);
|
|
34
|
+
}
|
|
35
|
+
flac.setTag('ISRC=' + track.ISRC);
|
|
36
|
+
flac.setTag('LENGTH=' + track.DURATION);
|
|
37
|
+
flac.setTag('MEDIA=Digital Media');
|
|
38
|
+
if (track.LYRICS) {
|
|
39
|
+
flac.setTag('LYRICS=' + track.LYRICS.LYRICS_TEXT);
|
|
40
|
+
}
|
|
41
|
+
if (track.EXPLICIT_LYRICS) {
|
|
42
|
+
flac.setTag('EXPLICIT=' + track.EXPLICIT_LYRICS);
|
|
43
|
+
}
|
|
44
|
+
if (track.SNG_CONTRIBUTORS && !Array.isArray(track.SNG_CONTRIBUTORS)) {
|
|
45
|
+
if (track.SNG_CONTRIBUTORS.main_artist) {
|
|
46
|
+
flac.setTag(`COPYRIGHT=${RELEASE_YEAR ? RELEASE_YEAR + ' ' : ''}${track.SNG_CONTRIBUTORS.main_artist[0]}`);
|
|
47
|
+
}
|
|
48
|
+
if (track.SNG_CONTRIBUTORS.publisher) {
|
|
49
|
+
flac.setTag('ORGANIZATION=' + track.SNG_CONTRIBUTORS.publisher.join(', '));
|
|
50
|
+
}
|
|
51
|
+
if (track.SNG_CONTRIBUTORS.composer) {
|
|
52
|
+
flac.setTag('COMPOSER=' + track.SNG_CONTRIBUTORS.composer.join(', '));
|
|
53
|
+
}
|
|
54
|
+
if (track.SNG_CONTRIBUTORS.publisher) {
|
|
55
|
+
flac.setTag('ORGANIZATION=' + track.SNG_CONTRIBUTORS.publisher.join(', '));
|
|
56
|
+
}
|
|
57
|
+
if (track.SNG_CONTRIBUTORS.producer) {
|
|
58
|
+
flac.setTag('PRODUCER=' + track.SNG_CONTRIBUTORS.producer.join(', '));
|
|
59
|
+
}
|
|
60
|
+
if (track.SNG_CONTRIBUTORS.engineer) {
|
|
61
|
+
flac.setTag('ENGINEER=' + track.SNG_CONTRIBUTORS.engineer.join(', '));
|
|
62
|
+
}
|
|
63
|
+
if (track.SNG_CONTRIBUTORS.writer) {
|
|
64
|
+
flac.setTag('WRITER=' + track.SNG_CONTRIBUTORS.writer.join(', '));
|
|
65
|
+
}
|
|
66
|
+
if (track.SNG_CONTRIBUTORS.author) {
|
|
67
|
+
flac.setTag('AUTHOR=' + track.SNG_CONTRIBUTORS.author.join(', '));
|
|
68
|
+
}
|
|
69
|
+
if (track.SNG_CONTRIBUTORS.mixer) {
|
|
70
|
+
flac.setTag('MIXER=' + track.SNG_CONTRIBUTORS.mixer.join(', '));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (cover) {
|
|
74
|
+
flac.importPicture(cover, dimension, 'image/jpeg');
|
|
75
|
+
}
|
|
76
|
+
flac.setTag('SOURCE=Deezer');
|
|
77
|
+
flac.setTag('SOURCEID=' + track.SNG_ID);
|
|
78
|
+
return flac.getBuffer();
|
|
79
|
+
};
|
|
80
|
+
exports.writeMetadataFlac = writeMetadataFlac;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTrackLyrics = void 0;
|
|
4
|
+
const musixmatchLyrics_1 = require("./musixmatchLyrics");
|
|
5
|
+
const api_1 = require("../api");
|
|
6
|
+
const getTrackLyricsWeb = async (track) => {
|
|
7
|
+
try {
|
|
8
|
+
const LYRICS_TEXT = await (0, musixmatchLyrics_1.getLyricsMusixmatch)(`${track.ART_NAME} - ${track.SNG_TITLE}`);
|
|
9
|
+
return { LYRICS_TEXT };
|
|
10
|
+
}
|
|
11
|
+
catch (err) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const getTrackLyrics = async (track) => {
|
|
16
|
+
if (track.LYRICS_ID > 0) {
|
|
17
|
+
try {
|
|
18
|
+
return await (0, api_1.getLyrics)(track.SNG_ID);
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
return await getTrackLyricsWeb(track);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return await getTrackLyricsWeb(track);
|
|
25
|
+
};
|
|
26
|
+
exports.getTrackLyrics = getTrackLyrics;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.writeMetadataMp3 = void 0;
|
|
7
|
+
// @ts-ignore
|
|
8
|
+
const browser_id3_writer_1 = __importDefault(require("browser-id3-writer"));
|
|
9
|
+
const writeMetadataMp3 = (buffer, track, album, cover) => {
|
|
10
|
+
const writer = new browser_id3_writer_1.default(buffer);
|
|
11
|
+
const RELEASE_DATES = album && album.release_date.split('-');
|
|
12
|
+
writer
|
|
13
|
+
.setFrame('TIT2', track.SNG_TITLE)
|
|
14
|
+
.setFrame('TALB', track.ALB_TITLE)
|
|
15
|
+
.setFrame('TPE1', track.ARTISTS.map((a) => a.ART_NAME))
|
|
16
|
+
.setFrame('TLEN', Number(track.DURATION) * 1000)
|
|
17
|
+
.setFrame('TSRC', track.ISRC);
|
|
18
|
+
if (album) {
|
|
19
|
+
if (album.genres.data.length > 0) {
|
|
20
|
+
writer.setFrame('TCON', album.genres.data.map((g) => g.name));
|
|
21
|
+
}
|
|
22
|
+
if (RELEASE_DATES) {
|
|
23
|
+
writer.setFrame('TYER', RELEASE_DATES[0]).setFrame('TDAT', RELEASE_DATES[2] + RELEASE_DATES[1]);
|
|
24
|
+
}
|
|
25
|
+
writer
|
|
26
|
+
.setFrame('TPE2', album.artist.name)
|
|
27
|
+
.setFrame('TXXX', {
|
|
28
|
+
description: 'RELEASETYPE',
|
|
29
|
+
value: album.record_type,
|
|
30
|
+
})
|
|
31
|
+
.setFrame('TXXX', {
|
|
32
|
+
description: 'BARCODE',
|
|
33
|
+
value: album.upc,
|
|
34
|
+
})
|
|
35
|
+
.setFrame('TXXX', {
|
|
36
|
+
description: 'LABEL',
|
|
37
|
+
value: album.label,
|
|
38
|
+
})
|
|
39
|
+
.setFrame('TXXX', {
|
|
40
|
+
description: 'COMPILATION',
|
|
41
|
+
value: album.artist.name.match(/various/i) ? '1' : '0',
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
writer
|
|
45
|
+
.setFrame('TMED', 'Digital Media')
|
|
46
|
+
.setFrame('TXXX', {
|
|
47
|
+
description: 'SOURCE',
|
|
48
|
+
value: 'Deezer',
|
|
49
|
+
})
|
|
50
|
+
.setFrame('TXXX', {
|
|
51
|
+
description: 'SOURCEID',
|
|
52
|
+
value: track.SNG_ID,
|
|
53
|
+
});
|
|
54
|
+
if (track.DISK_NUMBER) {
|
|
55
|
+
const TRACK_NUMBER = track.TRACK_NUMBER.toLocaleString('en-US', { minimumIntegerDigits: 2 });
|
|
56
|
+
writer.setFrame('TPOS', track.DISK_NUMBER).setFrame('TRCK', album
|
|
57
|
+
? `${TRACK_NUMBER}/${album.nb_tracks.toLocaleString('en-US', {
|
|
58
|
+
minimumIntegerDigits: 2,
|
|
59
|
+
})}`
|
|
60
|
+
: TRACK_NUMBER);
|
|
61
|
+
}
|
|
62
|
+
if (track.SNG_CONTRIBUTORS && !Array.isArray(track.SNG_CONTRIBUTORS)) {
|
|
63
|
+
if (track.SNG_CONTRIBUTORS.main_artist) {
|
|
64
|
+
writer.setFrame('TCOP', `${RELEASE_DATES ? RELEASE_DATES[0] + ' ' : ''}${track.SNG_CONTRIBUTORS.main_artist[0]}`);
|
|
65
|
+
}
|
|
66
|
+
if (track.SNG_CONTRIBUTORS.publisher) {
|
|
67
|
+
writer.setFrame('TPUB', track.SNG_CONTRIBUTORS.publisher.join(', '));
|
|
68
|
+
}
|
|
69
|
+
if (track.SNG_CONTRIBUTORS.composer) {
|
|
70
|
+
writer.setFrame('TCOM', track.SNG_CONTRIBUTORS.composer);
|
|
71
|
+
}
|
|
72
|
+
if (track.SNG_CONTRIBUTORS.writer) {
|
|
73
|
+
writer.setFrame('TXXX', {
|
|
74
|
+
description: 'LYRICIST',
|
|
75
|
+
value: track.SNG_CONTRIBUTORS.writer.join(', '),
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
if (track.SNG_CONTRIBUTORS.author) {
|
|
79
|
+
writer.setFrame('TXXX', {
|
|
80
|
+
description: 'AUTHOR',
|
|
81
|
+
value: track.SNG_CONTRIBUTORS.author.join(', '),
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
if (track.SNG_CONTRIBUTORS.mixer) {
|
|
85
|
+
writer.setFrame('TXXX', {
|
|
86
|
+
description: 'MIXARTIST',
|
|
87
|
+
value: track.SNG_CONTRIBUTORS.mixer.join(', '),
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
if (track.SNG_CONTRIBUTORS.producer && track.SNG_CONTRIBUTORS.engineer) {
|
|
91
|
+
writer.setFrame('TXXX', {
|
|
92
|
+
description: 'INVOLVEDPEOPLE',
|
|
93
|
+
value: track.SNG_CONTRIBUTORS.producer.concat(track.SNG_CONTRIBUTORS.engineer).join(', '),
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (track.LYRICS) {
|
|
98
|
+
writer.setFrame('USLT', {
|
|
99
|
+
description: '',
|
|
100
|
+
lyrics: track.LYRICS.LYRICS_TEXT,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
if (track.EXPLICIT_LYRICS) {
|
|
104
|
+
writer.setFrame('TXXX', {
|
|
105
|
+
description: 'EXPLICIT',
|
|
106
|
+
value: track.EXPLICIT_LYRICS,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
if (cover) {
|
|
110
|
+
writer.setFrame('APIC', {
|
|
111
|
+
type: 3,
|
|
112
|
+
data: cover,
|
|
113
|
+
description: '',
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
writer.addTag();
|
|
117
|
+
return Buffer.isBuffer(writer.arrayBuffer) ? writer.arrayBuffer : Buffer.from(writer.arrayBuffer);
|
|
118
|
+
};
|
|
119
|
+
exports.writeMetadataMp3 = writeMetadataMp3;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { trackType } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Add metdata to the mp3
|
|
5
|
+
* @param {Buffer} trackBuffer decrypted track buffer
|
|
6
|
+
* @param {Object} track json containing track infos
|
|
7
|
+
* @param {Number} albumCoverSize album cover size in pixel
|
|
8
|
+
*/
|
|
9
|
+
export declare const addTrackTags: (trackBuffer: Buffer, track: trackType, albumCoverSize?: number) => Promise<Buffer>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addTrackTags = void 0;
|
|
4
|
+
const abumCover_1 = require("./abumCover");
|
|
5
|
+
const getTrackLyrics_1 = require("./getTrackLyrics");
|
|
6
|
+
const id3_1 = require("./id3");
|
|
7
|
+
const flacmetata_1 = require("./flacmetata");
|
|
8
|
+
const api_1 = require("../api");
|
|
9
|
+
const albumInfo = async (track) => {
|
|
10
|
+
try {
|
|
11
|
+
return await (0, api_1.getAlbumInfoPublicApi)(track.ALB_ID);
|
|
12
|
+
}
|
|
13
|
+
catch (err) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Add metdata to the mp3
|
|
19
|
+
* @param {Buffer} trackBuffer decrypted track buffer
|
|
20
|
+
* @param {Object} track json containing track infos
|
|
21
|
+
* @param {Number} albumCoverSize album cover size in pixel
|
|
22
|
+
*/
|
|
23
|
+
const addTrackTags = async (trackBuffer, track, albumCoverSize = 1000) => {
|
|
24
|
+
const [cover, lyrics, album] = await Promise.all([
|
|
25
|
+
(0, abumCover_1.downloadAlbumCover)(track, albumCoverSize),
|
|
26
|
+
(0, getTrackLyrics_1.getTrackLyrics)(track),
|
|
27
|
+
albumInfo(track),
|
|
28
|
+
]);
|
|
29
|
+
if (lyrics) {
|
|
30
|
+
track.LYRICS = lyrics;
|
|
31
|
+
}
|
|
32
|
+
if (track.ART_NAME.toLowerCase() === 'various') {
|
|
33
|
+
track.ART_NAME = 'Various Artists';
|
|
34
|
+
}
|
|
35
|
+
if (album && album.record_type) {
|
|
36
|
+
album.record_type =
|
|
37
|
+
album.record_type === 'ep' ? 'EP' : album.record_type.charAt(0).toUpperCase() + album.record_type.slice(1);
|
|
38
|
+
}
|
|
39
|
+
const isFlac = trackBuffer.slice(0, 4).toString('ascii') === 'fLaC';
|
|
40
|
+
return isFlac
|
|
41
|
+
? (0, flacmetata_1.writeMetadataFlac)(trackBuffer, track, album, albumCoverSize, cover)
|
|
42
|
+
: (0, id3_1.writeMetadataMp3)(trackBuffer, track, album, cover);
|
|
43
|
+
};
|
|
44
|
+
exports.addTrackTags = addTrackTags;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getLyricsMusixmatch: (query: string) => Promise<string>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getLyricsMusixmatch = void 0;
|
|
4
|
+
const node_html_parser_1 = require("node-html-parser");
|
|
5
|
+
const http_1 = require("../lib/http");
|
|
6
|
+
const useragents_1 = require("./useragents");
|
|
7
|
+
const baseUrl = 'https://musixmatch.com';
|
|
8
|
+
const getUrlMusixmatch = async (query) => {
|
|
9
|
+
var _a;
|
|
10
|
+
const data = await (0, http_1.getText)(`${baseUrl}/search/${encodeURI(query)}/tracks`, {
|
|
11
|
+
headers: {
|
|
12
|
+
'User-Agent': (0, useragents_1.randomUseragent)(),
|
|
13
|
+
referer: 'https://l.facebook.com/',
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
const childNode = (_a = (0, node_html_parser_1.parse)(data).querySelector('h2')) === null || _a === void 0 ? void 0 : _a.childNodes.at(0);
|
|
17
|
+
const url = childNode === null || childNode === void 0 ? void 0 : childNode.attributes.href.replace('/add', '');
|
|
18
|
+
if (url && url.includes('/lyrics/')) {
|
|
19
|
+
return url.startsWith('/lyrics/') ? baseUrl + url : url;
|
|
20
|
+
}
|
|
21
|
+
throw new Error('No song found!');
|
|
22
|
+
};
|
|
23
|
+
const getLyricsMusixmatch = async (query) => {
|
|
24
|
+
const url = await getUrlMusixmatch(query);
|
|
25
|
+
const data = await (0, http_1.getText)(url, {
|
|
26
|
+
headers: {
|
|
27
|
+
'User-Agent': (0, useragents_1.randomUseragent)(),
|
|
28
|
+
referer: baseUrl + '/',
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
const lyricsMatch = data.match(/("body":".*","language")/);
|
|
32
|
+
if (!lyricsMatch) {
|
|
33
|
+
throw new Error('No lyrics found!');
|
|
34
|
+
}
|
|
35
|
+
let lyrics = lyricsMatch[0];
|
|
36
|
+
lyrics = lyrics.replace('"body":"', '').replace('","language"', '');
|
|
37
|
+
return lyrics.split('\\n').join('\n');
|
|
38
|
+
};
|
|
39
|
+
exports.getLyricsMusixmatch = getLyricsMusixmatch;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const randomUseragent: () => string;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.randomUseragent = void 0;
|
|
4
|
+
const useragents = [
|
|
5
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
|
|
6
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0',
|
|
7
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36',
|
|
8
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Safari/605.1.15',
|
|
9
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0',
|
|
10
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
|
|
11
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',
|
|
12
|
+
'Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0',
|
|
13
|
+
'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0',
|
|
14
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
|
|
15
|
+
'Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0',
|
|
16
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 Edg/87.0.664.75',
|
|
17
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36',
|
|
18
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36',
|
|
19
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
|
|
20
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:84.0) Gecko/20100101 Firefox/84.0',
|
|
21
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Safari/605.1.15',
|
|
22
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36',
|
|
23
|
+
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
|
|
24
|
+
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36',
|
|
25
|
+
'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
|
|
26
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
|
|
27
|
+
'Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0',
|
|
28
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
|
|
29
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15',
|
|
30
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36',
|
|
31
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.56',
|
|
32
|
+
'Mozilla/5.0 (X11; Linux x86_64; rv:85.0) Gecko/20100101 Firefox/85.0',
|
|
33
|
+
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
|
|
34
|
+
'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:85.0) Gecko/20100101 Firefox/85.0',
|
|
35
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.50',
|
|
36
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36',
|
|
37
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
|
|
38
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
|
|
39
|
+
'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0',
|
|
40
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15',
|
|
41
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 OPR/73.0.3856.344',
|
|
42
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:85.0) Gecko/20100101 Firefox/85.0',
|
|
43
|
+
'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36',
|
|
44
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Safari/605.1.15',
|
|
45
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0',
|
|
46
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:85.0) Gecko/20100101 Firefox/85.0',
|
|
47
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36 Edg/88.0.705.63',
|
|
48
|
+
'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0',
|
|
49
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
|
|
50
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',
|
|
51
|
+
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36',
|
|
52
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Safari/605.1.15',
|
|
53
|
+
'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
|
|
54
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',
|
|
55
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
|
|
56
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.60 YaBrowser/20.12.0.963 Yowser/2.5 Safari/537.36',
|
|
57
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
|
|
58
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
|
|
59
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36',
|
|
60
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Safari/605.1.15',
|
|
61
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0',
|
|
62
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.2 Safari/605.1.15',
|
|
63
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
|
|
64
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 OPR/73.0.3856.329',
|
|
65
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:84.0) Gecko/20100101 Firefox/84.0',
|
|
66
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
|
|
67
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36',
|
|
68
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 OPR/73.0.3856.344 (Edition Yx 05)',
|
|
69
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0',
|
|
70
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36',
|
|
71
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36',
|
|
72
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.53',
|
|
73
|
+
'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0',
|
|
74
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36',
|
|
75
|
+
'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.7113.93 Safari/537.36',
|
|
76
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.66',
|
|
77
|
+
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
|
|
78
|
+
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36',
|
|
79
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15',
|
|
80
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.3 Safari/605.1.15',
|
|
81
|
+
'Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0',
|
|
82
|
+
'Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0',
|
|
83
|
+
'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:79.0) Gecko/20100101 Firefox/79.0',
|
|
84
|
+
];
|
|
85
|
+
const randomUseragent = () => useragents[Math.floor(Math.random() * useragents.length)];
|
|
86
|
+
exports.randomUseragent = randomUseragent;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import type { artistType } from './artist';
|
|
2
|
+
import type { trackType, contributorsPublicApi } from './tracks';
|
|
3
|
+
export interface albumTypeMinimal {
|
|
4
|
+
ALB_ID: string;
|
|
5
|
+
ALB_TITLE: string;
|
|
6
|
+
ALB_PICTURE: string;
|
|
7
|
+
ARTISTS: artistType[];
|
|
8
|
+
AVAILABLE: boolean;
|
|
9
|
+
VERSION: string;
|
|
10
|
+
ART_ID: string;
|
|
11
|
+
ART_NAME: string;
|
|
12
|
+
EXPLICIT_ALBUM_CONTENT: {
|
|
13
|
+
EXPLICIT_LYRICS_STATUS: number;
|
|
14
|
+
EXPLICIT_COVER_STATUS: number;
|
|
15
|
+
};
|
|
16
|
+
PHYSICAL_RELEASE_DATE: string;
|
|
17
|
+
TYPE: string;
|
|
18
|
+
ARTIST_IS_DUMMY: boolean;
|
|
19
|
+
NUMBER_TRACK: number;
|
|
20
|
+
__TYPE__: 'album';
|
|
21
|
+
}
|
|
22
|
+
export interface albumType {
|
|
23
|
+
ALB_CONTRIBUTORS: {
|
|
24
|
+
main_artist: string[];
|
|
25
|
+
};
|
|
26
|
+
ALB_ID: string;
|
|
27
|
+
ALB_PICTURE: string;
|
|
28
|
+
EXPLICIT_ALBUM_CONTENT: {
|
|
29
|
+
EXPLICIT_LYRICS_STATUS: number;
|
|
30
|
+
EXPLICIT_COVER_STATUS: number;
|
|
31
|
+
};
|
|
32
|
+
ALB_TITLE: string;
|
|
33
|
+
ARTISTS: artistType[];
|
|
34
|
+
ART_ID: string;
|
|
35
|
+
ART_NAME: string;
|
|
36
|
+
ARTIST_IS_DUMMY: boolean;
|
|
37
|
+
DIGITAL_RELEASE_DATE: string;
|
|
38
|
+
EXPLICIT_LYRICS?: string;
|
|
39
|
+
NB_FAN: number;
|
|
40
|
+
NUMBER_DISK: string;
|
|
41
|
+
NUMBER_TRACK: string;
|
|
42
|
+
PHYSICAL_RELEASE_DATE?: string;
|
|
43
|
+
PRODUCER_LINE: string;
|
|
44
|
+
PROVIDER_ID: string;
|
|
45
|
+
RANK: string;
|
|
46
|
+
RANK_ART: string;
|
|
47
|
+
STATUS: string;
|
|
48
|
+
TYPE: string;
|
|
49
|
+
UPC: string;
|
|
50
|
+
__TYPE__: 'album';
|
|
51
|
+
}
|
|
52
|
+
export interface albumTracksType {
|
|
53
|
+
data: trackType[];
|
|
54
|
+
count: number;
|
|
55
|
+
total: number;
|
|
56
|
+
filtered_count: number;
|
|
57
|
+
filtered_items?: number[];
|
|
58
|
+
next?: number;
|
|
59
|
+
}
|
|
60
|
+
interface trackDataPublicApi {
|
|
61
|
+
id: number;
|
|
62
|
+
readable: boolean;
|
|
63
|
+
title: string;
|
|
64
|
+
title_short: string;
|
|
65
|
+
title_version?: string;
|
|
66
|
+
link: 'https://www.deezer.com/track/3135556';
|
|
67
|
+
duration: number;
|
|
68
|
+
rank: number;
|
|
69
|
+
explicit_lyrics: boolean;
|
|
70
|
+
explicit_content_lyrics: number;
|
|
71
|
+
explicit_content_cover: number;
|
|
72
|
+
preview: string;
|
|
73
|
+
md5_image: string;
|
|
74
|
+
artist: {
|
|
75
|
+
id: number;
|
|
76
|
+
name: number;
|
|
77
|
+
tracklist: string;
|
|
78
|
+
type: 'artist';
|
|
79
|
+
};
|
|
80
|
+
type: 'track';
|
|
81
|
+
}
|
|
82
|
+
interface genreTypePublicApi {
|
|
83
|
+
id: number;
|
|
84
|
+
name: string;
|
|
85
|
+
picture: string;
|
|
86
|
+
type: 'genre';
|
|
87
|
+
}
|
|
88
|
+
export interface albumTypePublicApi {
|
|
89
|
+
id: number;
|
|
90
|
+
title: 'Discovery';
|
|
91
|
+
upc: string;
|
|
92
|
+
link: string;
|
|
93
|
+
share: string;
|
|
94
|
+
cover: string;
|
|
95
|
+
cover_small: string;
|
|
96
|
+
cover_medium: string;
|
|
97
|
+
cover_big: string;
|
|
98
|
+
cover_xl: string;
|
|
99
|
+
md5_image: string;
|
|
100
|
+
genre_id: number;
|
|
101
|
+
genres: {
|
|
102
|
+
data: genreTypePublicApi[];
|
|
103
|
+
};
|
|
104
|
+
label: string;
|
|
105
|
+
nb_tracks: number;
|
|
106
|
+
duration: number;
|
|
107
|
+
fans: number;
|
|
108
|
+
rating: number;
|
|
109
|
+
release_date: string;
|
|
110
|
+
record_type: string;
|
|
111
|
+
available: boolean;
|
|
112
|
+
tracklist: string;
|
|
113
|
+
explicit_lyrics: boolean;
|
|
114
|
+
explicit_content_lyrics: number;
|
|
115
|
+
explicit_content_cover: number;
|
|
116
|
+
contributors: contributorsPublicApi[];
|
|
117
|
+
artist: contributorsPublicApi;
|
|
118
|
+
type: 'album';
|
|
119
|
+
tracks: {
|
|
120
|
+
data: trackDataPublicApi[];
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
interface localesType {
|
|
2
|
+
[key: string]: {
|
|
3
|
+
name: string;
|
|
4
|
+
};
|
|
5
|
+
}
|
|
6
|
+
export interface artistType {
|
|
7
|
+
ART_ID: string;
|
|
8
|
+
ROLE_ID: string;
|
|
9
|
+
ARTISTS_SONGS_ORDER: string;
|
|
10
|
+
ART_NAME: string;
|
|
11
|
+
ARTIST_IS_DUMMY: boolean;
|
|
12
|
+
ART_PICTURE: string;
|
|
13
|
+
RANK: string;
|
|
14
|
+
LOCALES?: localesType;
|
|
15
|
+
__TYPE__: 'artist';
|
|
16
|
+
}
|
|
17
|
+
export interface artistInfoTypeMinimal {
|
|
18
|
+
ART_ID: string;
|
|
19
|
+
ART_NAME: string;
|
|
20
|
+
ART_PICTURE: string;
|
|
21
|
+
NB_FAN: number;
|
|
22
|
+
LOCALES: [];
|
|
23
|
+
ARTIST_IS_DUMMY: boolean;
|
|
24
|
+
__TYPE__: 'artist';
|
|
25
|
+
}
|
|
26
|
+
export interface artistInfoType {
|
|
27
|
+
ART_ID: string;
|
|
28
|
+
ART_NAME: string;
|
|
29
|
+
ARTIST_IS_DUMMY: boolean;
|
|
30
|
+
ART_PICTURE: string;
|
|
31
|
+
FACEBOOK?: string;
|
|
32
|
+
NB_FAN: number;
|
|
33
|
+
TWITTER?: string;
|
|
34
|
+
__TYPE__: 'artist';
|
|
35
|
+
}
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
interface picturesType {
|
|
2
|
+
md5: string;
|
|
3
|
+
type: string;
|
|
4
|
+
}
|
|
5
|
+
interface dataType {
|
|
6
|
+
type: string;
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
title: string;
|
|
10
|
+
logo: null | string;
|
|
11
|
+
description: null | string;
|
|
12
|
+
slug: string;
|
|
13
|
+
background_color: string;
|
|
14
|
+
pictures: picturesType[];
|
|
15
|
+
__TYPE__: 'channel';
|
|
16
|
+
}
|
|
17
|
+
interface channelDataType {
|
|
18
|
+
item_id: string;
|
|
19
|
+
id: string;
|
|
20
|
+
type: string;
|
|
21
|
+
data: dataType[];
|
|
22
|
+
target: string;
|
|
23
|
+
title: string;
|
|
24
|
+
pictures: picturesType[];
|
|
25
|
+
weight: number;
|
|
26
|
+
background_color: string;
|
|
27
|
+
}
|
|
28
|
+
export interface channelSearchType {
|
|
29
|
+
data: channelDataType[];
|
|
30
|
+
count: number;
|
|
31
|
+
total: number;
|
|
32
|
+
}
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './album';
|
|
2
|
+
export * from './artist';
|
|
3
|
+
export * from './show';
|
|
4
|
+
export * from './playlist';
|
|
5
|
+
export * from './playlist-channel';
|
|
6
|
+
export * from './channel';
|
|
7
|
+
export * from './profile';
|
|
8
|
+
export * from './search';
|
|
9
|
+
export * from './tracks';
|
|
10
|
+
export * from './user';
|