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,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./album"), exports);
|
|
18
|
+
__exportStar(require("./artist"), exports);
|
|
19
|
+
__exportStar(require("./show"), exports);
|
|
20
|
+
__exportStar(require("./playlist"), exports);
|
|
21
|
+
__exportStar(require("./playlist-channel"), exports);
|
|
22
|
+
__exportStar(require("./channel"), exports);
|
|
23
|
+
__exportStar(require("./profile"), exports);
|
|
24
|
+
__exportStar(require("./search"), exports);
|
|
25
|
+
__exportStar(require("./tracks"), exports);
|
|
26
|
+
__exportStar(require("./user"), exports);
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
type itemType = 'album' | 'playlist' | 'radio' | 'show' | 'livestream';
|
|
2
|
+
export interface playlistChannelItemsType {
|
|
3
|
+
item_id: string;
|
|
4
|
+
id: string;
|
|
5
|
+
type: itemType;
|
|
6
|
+
data: {
|
|
7
|
+
NB_FAN: number;
|
|
8
|
+
NB_SONG: number;
|
|
9
|
+
PARENT_USER_ID: string;
|
|
10
|
+
PICTURE_TYPE: string;
|
|
11
|
+
PLAYLIST_ID: string;
|
|
12
|
+
PLAYLIST_PICTURE: string;
|
|
13
|
+
STATUS: number;
|
|
14
|
+
TITLE: string;
|
|
15
|
+
TYPE: string;
|
|
16
|
+
DATE_MOD: string;
|
|
17
|
+
DATE_ADD: string;
|
|
18
|
+
DESCRIPTION: string;
|
|
19
|
+
__TYPE__: itemType;
|
|
20
|
+
} | {
|
|
21
|
+
__TYPE__: itemType;
|
|
22
|
+
background_color: string;
|
|
23
|
+
description: string | null;
|
|
24
|
+
id: string;
|
|
25
|
+
logo: string | null;
|
|
26
|
+
name: string;
|
|
27
|
+
pictures: [
|
|
28
|
+
{
|
|
29
|
+
md5: string;
|
|
30
|
+
type: string;
|
|
31
|
+
}
|
|
32
|
+
];
|
|
33
|
+
slug: string;
|
|
34
|
+
title: string;
|
|
35
|
+
type: itemType;
|
|
36
|
+
} | null;
|
|
37
|
+
target: string;
|
|
38
|
+
title: string;
|
|
39
|
+
subtitle: string;
|
|
40
|
+
description: string;
|
|
41
|
+
pictures: [
|
|
42
|
+
{
|
|
43
|
+
md5: string;
|
|
44
|
+
type: string;
|
|
45
|
+
}
|
|
46
|
+
];
|
|
47
|
+
weight: number;
|
|
48
|
+
layout_parameters: {
|
|
49
|
+
cta: {
|
|
50
|
+
type: 'browse';
|
|
51
|
+
label: 'BROWSE';
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export interface playlistChannelSectionsType {
|
|
56
|
+
layout: string;
|
|
57
|
+
section_id: string;
|
|
58
|
+
items: playlistChannelItemsType[];
|
|
59
|
+
title: string;
|
|
60
|
+
target: string;
|
|
61
|
+
related: {
|
|
62
|
+
target: string;
|
|
63
|
+
label: string;
|
|
64
|
+
mandatory: boolean;
|
|
65
|
+
};
|
|
66
|
+
alignment: string;
|
|
67
|
+
group_id: string;
|
|
68
|
+
hasMoreItems: boolean;
|
|
69
|
+
}
|
|
70
|
+
export interface playlistChannelType {
|
|
71
|
+
version: string;
|
|
72
|
+
page_id: string;
|
|
73
|
+
ga: {
|
|
74
|
+
screen_name: string;
|
|
75
|
+
};
|
|
76
|
+
title: string;
|
|
77
|
+
persistent: boolean;
|
|
78
|
+
sections: playlistChannelSectionsType[];
|
|
79
|
+
expire: number;
|
|
80
|
+
}
|
|
81
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { trackType } from './tracks';
|
|
2
|
+
export interface playlistInfoMinimal {
|
|
3
|
+
PLAYLIST_ID: string;
|
|
4
|
+
PARENT_PLAYLIST_ID: string;
|
|
5
|
+
TYPE: string;
|
|
6
|
+
TITLE: string;
|
|
7
|
+
PARENT_USER_ID: string;
|
|
8
|
+
PARENT_USERNAME: string;
|
|
9
|
+
PARENT_USER_PICTURE?: string;
|
|
10
|
+
STATUS: string;
|
|
11
|
+
PLAYLIST_PICTURE: string;
|
|
12
|
+
PICTURE_TYPE: string;
|
|
13
|
+
NB_SONG: number;
|
|
14
|
+
HAS_ARTIST_LINKED: boolean;
|
|
15
|
+
DATE_ADD: string;
|
|
16
|
+
DATE_MOD: string;
|
|
17
|
+
__TYPE__: 'playlist';
|
|
18
|
+
}
|
|
19
|
+
export interface playlistInfo {
|
|
20
|
+
PLAYLIST_ID: string;
|
|
21
|
+
DESCRIPTION?: string;
|
|
22
|
+
PARENT_USERNAME: string;
|
|
23
|
+
PARENT_USER_PICTURE?: string;
|
|
24
|
+
PARENT_USER_ID: string;
|
|
25
|
+
PICTURE_TYPE: string;
|
|
26
|
+
PLAYLIST_PICTURE: string;
|
|
27
|
+
TITLE: string;
|
|
28
|
+
TYPE: string;
|
|
29
|
+
STATUS: string;
|
|
30
|
+
USER_ID: string;
|
|
31
|
+
DATE_ADD: string;
|
|
32
|
+
DATE_MOD: string;
|
|
33
|
+
DATE_CREATE: string;
|
|
34
|
+
NB_SONG: number;
|
|
35
|
+
NB_FAN: number;
|
|
36
|
+
CHECKSUM: string;
|
|
37
|
+
HAS_ARTIST_LINKED: boolean;
|
|
38
|
+
IS_SPONSORED: boolean;
|
|
39
|
+
IS_EDITO: boolean;
|
|
40
|
+
__TYPE__: 'playlist';
|
|
41
|
+
}
|
|
42
|
+
export interface playlistTracksType {
|
|
43
|
+
data: trackType[];
|
|
44
|
+
count: number;
|
|
45
|
+
total: number;
|
|
46
|
+
filtered_count: number;
|
|
47
|
+
filtered_items?: number[];
|
|
48
|
+
next?: number;
|
|
49
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { albumTracksType } from './album';
|
|
2
|
+
export interface profileTypeMinimal {
|
|
3
|
+
USER_ID: string;
|
|
4
|
+
FIRSTNAME: string;
|
|
5
|
+
LASTNAME: string;
|
|
6
|
+
BLOG_NAME: string;
|
|
7
|
+
USER_PICTURE?: string;
|
|
8
|
+
IS_FOLLOW: boolean;
|
|
9
|
+
__TYPE__: 'user';
|
|
10
|
+
}
|
|
11
|
+
export interface profileType {
|
|
12
|
+
IS_FOLLOW: boolean;
|
|
13
|
+
NB_ARTISTS: number;
|
|
14
|
+
NB_FOLLOWERS: number;
|
|
15
|
+
NB_FOLLOWINGS: number;
|
|
16
|
+
NB_MP3S: number;
|
|
17
|
+
TOP_TRACK: albumTracksType;
|
|
18
|
+
USER: {
|
|
19
|
+
USER_ID: string;
|
|
20
|
+
BLOG_NAME: string;
|
|
21
|
+
SEX?: string;
|
|
22
|
+
COUNTRY: string;
|
|
23
|
+
USER_PICTURE?: string;
|
|
24
|
+
COUNTRY_NAME: string;
|
|
25
|
+
PRIVATE: boolean;
|
|
26
|
+
DISPLAY_NAME: string;
|
|
27
|
+
__TYPE__: 'user';
|
|
28
|
+
};
|
|
29
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { albumType, albumTypeMinimal } from './album';
|
|
2
|
+
import type { artistInfoTypeMinimal, artistType } from './artist';
|
|
3
|
+
import type { playlistInfo, playlistInfoMinimal } from './playlist';
|
|
4
|
+
import type { trackType } from './tracks';
|
|
5
|
+
import type { profileTypeMinimal } from './profile';
|
|
6
|
+
import type { channelSearchType } from './channel';
|
|
7
|
+
import type { radioType } from './radio';
|
|
8
|
+
import type { showEpisodeType } from './show';
|
|
9
|
+
interface searchTypeCommon {
|
|
10
|
+
count: number;
|
|
11
|
+
total: number;
|
|
12
|
+
filtered_count: number;
|
|
13
|
+
filtered_items: number[];
|
|
14
|
+
next: number;
|
|
15
|
+
}
|
|
16
|
+
interface albumSearchType extends searchTypeCommon {
|
|
17
|
+
data: albumTypeMinimal[];
|
|
18
|
+
}
|
|
19
|
+
interface artistSearchType extends searchTypeCommon {
|
|
20
|
+
data: artistInfoTypeMinimal[];
|
|
21
|
+
}
|
|
22
|
+
interface playlistSearchType extends searchTypeCommon {
|
|
23
|
+
data: playlistInfoMinimal[];
|
|
24
|
+
}
|
|
25
|
+
interface trackSearchType extends searchTypeCommon {
|
|
26
|
+
data: trackType[];
|
|
27
|
+
}
|
|
28
|
+
interface profileSearchType extends searchTypeCommon {
|
|
29
|
+
data: profileTypeMinimal[];
|
|
30
|
+
}
|
|
31
|
+
interface radioSearchType extends searchTypeCommon {
|
|
32
|
+
data: radioType[];
|
|
33
|
+
}
|
|
34
|
+
interface liveSearchType extends searchTypeCommon {
|
|
35
|
+
data: unknown[];
|
|
36
|
+
}
|
|
37
|
+
interface showSearchType extends searchTypeCommon {
|
|
38
|
+
data: showEpisodeType[];
|
|
39
|
+
}
|
|
40
|
+
export interface discographyType {
|
|
41
|
+
data: albumType[];
|
|
42
|
+
count: number;
|
|
43
|
+
total: number;
|
|
44
|
+
cache_version: number;
|
|
45
|
+
filtered_count: number;
|
|
46
|
+
art_id: number;
|
|
47
|
+
start: number;
|
|
48
|
+
nb: number;
|
|
49
|
+
}
|
|
50
|
+
export interface searchType {
|
|
51
|
+
QUERY: string;
|
|
52
|
+
FUZZINNESS: boolean;
|
|
53
|
+
AUTOCORRECT: boolean;
|
|
54
|
+
TOP_RESULT: [albumType | artistType | trackType | playlistInfo | artistType | unknown] | [];
|
|
55
|
+
ORDER: [
|
|
56
|
+
'TOP_RESULT',
|
|
57
|
+
'TRACK',
|
|
58
|
+
'PLAYLIST',
|
|
59
|
+
'ALBUM',
|
|
60
|
+
'ARTIST',
|
|
61
|
+
'LIVESTREAM',
|
|
62
|
+
'EPISODE',
|
|
63
|
+
'SHOW',
|
|
64
|
+
'CHANNEL',
|
|
65
|
+
'RADIO',
|
|
66
|
+
'USER',
|
|
67
|
+
'LYRICS'
|
|
68
|
+
];
|
|
69
|
+
ALBUM: albumSearchType;
|
|
70
|
+
ARTIST: artistSearchType;
|
|
71
|
+
TRACK: trackSearchType;
|
|
72
|
+
PLAYLIST: playlistSearchType;
|
|
73
|
+
RADIO: radioSearchType;
|
|
74
|
+
SHOW: showSearchType;
|
|
75
|
+
USER: profileSearchType;
|
|
76
|
+
LIVESTREAM: liveSearchType;
|
|
77
|
+
CHANNEL: channelSearchType;
|
|
78
|
+
}
|
|
79
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
interface generesType {
|
|
2
|
+
GENRE_ID: number;
|
|
3
|
+
GENRE_NAME: string;
|
|
4
|
+
}
|
|
5
|
+
export interface showEpisodeType {
|
|
6
|
+
EPISODE_ID: string;
|
|
7
|
+
EPISODE_STATUS: string;
|
|
8
|
+
AVAILABLE: boolean;
|
|
9
|
+
SHOW_ID: string;
|
|
10
|
+
SHOW_NAME: string;
|
|
11
|
+
SHOW_ART_MD5: string;
|
|
12
|
+
SHOW_DESCRIPTION: string;
|
|
13
|
+
SHOW_IS_EXPLICIT: string;
|
|
14
|
+
EPISODE_TITLE: string;
|
|
15
|
+
EPISODE_DESCRIPTION: string;
|
|
16
|
+
MD5_ORIGIN: string;
|
|
17
|
+
FILESIZE_MP3_32: string;
|
|
18
|
+
FILESIZE_MP3_64: string;
|
|
19
|
+
EPISODE_DIRECT_STREAM_URL: string;
|
|
20
|
+
SHOW_IS_DIRECT_STREAM: string;
|
|
21
|
+
DURATION: string;
|
|
22
|
+
EPISODE_PUBLISHED_TIMESTAMP: string;
|
|
23
|
+
EPISODE_UPDATE_TIMESTAMP: string;
|
|
24
|
+
SHOW_IS_ADVERTISING_ALLOWED: string;
|
|
25
|
+
SHOW_IS_DOWNLOAD_ALLOWED: string;
|
|
26
|
+
TRACK_TOKEN: string;
|
|
27
|
+
TRACK_TOKEN_EXPIRE: string;
|
|
28
|
+
__TYPE__: 'episode';
|
|
29
|
+
}
|
|
30
|
+
export interface showType {
|
|
31
|
+
DATA: {
|
|
32
|
+
AVAILABLE: boolean;
|
|
33
|
+
SHOW_IS_EXPLICIT: string;
|
|
34
|
+
LABEL_ID: string;
|
|
35
|
+
LABEL_NAME: string;
|
|
36
|
+
LANGUAGE_CD: string;
|
|
37
|
+
SHOW_IS_DIRECT_STREAM: string;
|
|
38
|
+
SHOW_IS_ADVERTISING_ALLOWED: string;
|
|
39
|
+
SHOW_IS_DOWNLOAD_ALLOWED: string;
|
|
40
|
+
SHOW_EPISODE_DISPLAY_COUNT: string;
|
|
41
|
+
SHOW_ID: string;
|
|
42
|
+
SHOW_ART_MD5: string;
|
|
43
|
+
SHOW_NAME: string;
|
|
44
|
+
SHOW_DESCRIPTION: string;
|
|
45
|
+
SHOW_STATUS: string;
|
|
46
|
+
SHOW_TYPE: string;
|
|
47
|
+
GENRES: generesType[];
|
|
48
|
+
NB_FAN: number;
|
|
49
|
+
NB_RATE: number;
|
|
50
|
+
RATING: string;
|
|
51
|
+
__TYPE__: 'show';
|
|
52
|
+
};
|
|
53
|
+
FAVORITE_STATUS: boolean;
|
|
54
|
+
EPISODES: {
|
|
55
|
+
data: showEpisodeType[];
|
|
56
|
+
count: number;
|
|
57
|
+
total: number;
|
|
58
|
+
filtered_count: number;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export {};
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import type { artistType } from './artist';
|
|
2
|
+
interface mediaType {
|
|
3
|
+
TYPE: 'preview';
|
|
4
|
+
HREF: string;
|
|
5
|
+
}
|
|
6
|
+
interface lyricsSync {
|
|
7
|
+
lrc_timestamp: string;
|
|
8
|
+
milliseconds: string;
|
|
9
|
+
duration: string;
|
|
10
|
+
line: string;
|
|
11
|
+
}
|
|
12
|
+
export interface lyricsType {
|
|
13
|
+
LYRICS_ID?: string;
|
|
14
|
+
LYRICS_SYNC_JSON?: lyricsSync[];
|
|
15
|
+
LYRICS_TEXT: string;
|
|
16
|
+
LYRICS_COPYRIGHTS?: string;
|
|
17
|
+
LYRICS_WRITERS?: string;
|
|
18
|
+
}
|
|
19
|
+
interface songType {
|
|
20
|
+
ALB_ID: string;
|
|
21
|
+
ALB_TITLE: string;
|
|
22
|
+
ALB_PICTURE: string;
|
|
23
|
+
ARTISTS: artistType[];
|
|
24
|
+
ART_ID: string;
|
|
25
|
+
ART_NAME: string;
|
|
26
|
+
ARTIST_IS_DUMMY: boolean;
|
|
27
|
+
ART_PICTURE: string;
|
|
28
|
+
DATE_START: string;
|
|
29
|
+
DISK_NUMBER?: string;
|
|
30
|
+
DURATION: string;
|
|
31
|
+
EXPLICIT_TRACK_CONTENT: {
|
|
32
|
+
EXPLICIT_LYRICS_STATUS: number;
|
|
33
|
+
EXPLICIT_COVER_STATUS: number;
|
|
34
|
+
};
|
|
35
|
+
ISRC: string;
|
|
36
|
+
LYRICS_ID: number;
|
|
37
|
+
LYRICS?: lyricsType;
|
|
38
|
+
EXPLICIT_LYRICS?: string;
|
|
39
|
+
RANK: string;
|
|
40
|
+
SMARTRADIO: string;
|
|
41
|
+
SNG_ID: string;
|
|
42
|
+
SNG_TITLE: string;
|
|
43
|
+
SNG_CONTRIBUTORS?: {
|
|
44
|
+
main_artist: string[];
|
|
45
|
+
author?: string[];
|
|
46
|
+
composer?: string[];
|
|
47
|
+
musicpublisher?: string[];
|
|
48
|
+
producer?: string[];
|
|
49
|
+
publisher: string[];
|
|
50
|
+
engineer?: string[];
|
|
51
|
+
writer?: string[];
|
|
52
|
+
mixer?: string[];
|
|
53
|
+
} | [];
|
|
54
|
+
STATUS: number;
|
|
55
|
+
S_MOD: number;
|
|
56
|
+
S_PREMIUM: number;
|
|
57
|
+
TRACK_NUMBER: number;
|
|
58
|
+
URL_REWRITING: string;
|
|
59
|
+
VERSION?: string;
|
|
60
|
+
MD5_ORIGIN?: string;
|
|
61
|
+
FILESIZE_AAC_64: '0';
|
|
62
|
+
FILESIZE_MP3_64: string;
|
|
63
|
+
FILESIZE_MP3_128: string;
|
|
64
|
+
FILESIZE_MP3_256: '0';
|
|
65
|
+
FILESIZE_MP3_320: '0';
|
|
66
|
+
FILESIZE_MP4_RA1: '0';
|
|
67
|
+
FILESIZE_MP4_RA2: '0';
|
|
68
|
+
FILESIZE_MP4_RA3: '0';
|
|
69
|
+
FILESIZE_FLAC: '0';
|
|
70
|
+
FILESIZE: string;
|
|
71
|
+
GAIN: string;
|
|
72
|
+
MEDIA_VERSION: string;
|
|
73
|
+
TRACK_TOKEN: string;
|
|
74
|
+
TRACK_TOKEN_EXPIRE: number;
|
|
75
|
+
MEDIA: [mediaType];
|
|
76
|
+
RIGHTS: {
|
|
77
|
+
STREAM_ADS_AVAILABLE?: boolean;
|
|
78
|
+
STREAM_ADS?: string;
|
|
79
|
+
STREAM_SUB_AVAILABLE?: boolean;
|
|
80
|
+
STREAM_SUB?: string;
|
|
81
|
+
};
|
|
82
|
+
PROVIDER_ID: string;
|
|
83
|
+
__TYPE__: 'song';
|
|
84
|
+
}
|
|
85
|
+
export interface trackType extends songType {
|
|
86
|
+
FALLBACK?: songType;
|
|
87
|
+
TRACK_POSITION?: number;
|
|
88
|
+
}
|
|
89
|
+
export interface contributorsPublicApi {
|
|
90
|
+
id: number;
|
|
91
|
+
name: string;
|
|
92
|
+
link: string;
|
|
93
|
+
share: string;
|
|
94
|
+
picture: string;
|
|
95
|
+
picture_small: string;
|
|
96
|
+
picture_medium: string;
|
|
97
|
+
picture_big: string;
|
|
98
|
+
picture_xl: string;
|
|
99
|
+
radio: boolean;
|
|
100
|
+
tracklist: string;
|
|
101
|
+
type: string;
|
|
102
|
+
role: string;
|
|
103
|
+
}
|
|
104
|
+
export interface trackTypePublicApi {
|
|
105
|
+
id: number;
|
|
106
|
+
readable: boolean;
|
|
107
|
+
title: string;
|
|
108
|
+
title_short: string;
|
|
109
|
+
title_version?: string;
|
|
110
|
+
isrc: string;
|
|
111
|
+
link: string;
|
|
112
|
+
share: string;
|
|
113
|
+
duration: number;
|
|
114
|
+
track_position: number;
|
|
115
|
+
disk_number: number;
|
|
116
|
+
rank: number;
|
|
117
|
+
release_date: string;
|
|
118
|
+
explicit_lyrics: boolean;
|
|
119
|
+
explicit_content_lyrics: number;
|
|
120
|
+
explicit_content_cover: number;
|
|
121
|
+
preview: string;
|
|
122
|
+
bpm: number;
|
|
123
|
+
gain: number;
|
|
124
|
+
available_countries: string[];
|
|
125
|
+
contributors: contributorsPublicApi[];
|
|
126
|
+
md5_image: string;
|
|
127
|
+
artist: contributorsPublicApi;
|
|
128
|
+
album: {
|
|
129
|
+
id: number;
|
|
130
|
+
title: string;
|
|
131
|
+
link: string;
|
|
132
|
+
cover: string;
|
|
133
|
+
cover_small: string;
|
|
134
|
+
cover_medium: string;
|
|
135
|
+
cover_big: string;
|
|
136
|
+
cover_xl: string;
|
|
137
|
+
md5_image: string;
|
|
138
|
+
release_date: string;
|
|
139
|
+
tracklist: string;
|
|
140
|
+
type: 'album';
|
|
141
|
+
};
|
|
142
|
+
type: 'track';
|
|
143
|
+
}
|
|
144
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface userType {
|
|
2
|
+
USER_ID: string;
|
|
3
|
+
EMAIL: string;
|
|
4
|
+
FIRSTNAME: string;
|
|
5
|
+
LASTNAME: string;
|
|
6
|
+
BIRTHDAY: string;
|
|
7
|
+
BLOG_NAME: string;
|
|
8
|
+
SEX: string;
|
|
9
|
+
ADDRESS?: string;
|
|
10
|
+
CITY?: string;
|
|
11
|
+
ZIP?: string;
|
|
12
|
+
COUNTRY: string;
|
|
13
|
+
LANG: string;
|
|
14
|
+
PHONE?: string;
|
|
15
|
+
__TYPE__: 'user';
|
|
16
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "q-fi-core",
|
|
3
|
+
"version": "2.3.1",
|
|
4
|
+
"description": "Core module for q-fi.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"lint": "node ./node_modules/eslint/bin/eslint.js --config .eslintrc.js --resolve-plugins-relative-to . .",
|
|
9
|
+
"prepublishOnly": "npm run lint && tsc",
|
|
10
|
+
"prebuild": "npm run lint",
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"test": "ava"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist/**/*",
|
|
16
|
+
"types/**/*",
|
|
17
|
+
"CHANGELOG.md"
|
|
18
|
+
],
|
|
19
|
+
"engines": {
|
|
20
|
+
"node": ">=12"
|
|
21
|
+
},
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "git+https://github.com/soulwax/q-fi-core.git"
|
|
25
|
+
},
|
|
26
|
+
"homepage": "https://github.com/soulwax/q-fi-core#readme",
|
|
27
|
+
"bugs": {
|
|
28
|
+
"url": "https://github.com/soulwax/q-fi-core/issues"
|
|
29
|
+
},
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"access": "public"
|
|
32
|
+
},
|
|
33
|
+
"author": "Christian Kling",
|
|
34
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"browser-id3-writer": "^4.4.0",
|
|
37
|
+
"delay": "^5.0.0",
|
|
38
|
+
"node-html-parser": "^5.3.3",
|
|
39
|
+
"p-queue": "^6.6.2",
|
|
40
|
+
"spotify-uri": "^2.2.0",
|
|
41
|
+
"spotify-web-api-node": "^5.0.2"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/node": "^17.0.23",
|
|
45
|
+
"@types/spotify-web-api-node": "^5.0.3",
|
|
46
|
+
"@typescript-eslint/eslint-plugin": "^5.16.0",
|
|
47
|
+
"@typescript-eslint/parser": "^5.16.0",
|
|
48
|
+
"ava": "^4.1.0",
|
|
49
|
+
"eslint": "^8.11.0",
|
|
50
|
+
"eslint-plugin-prettier": "^4.0.0",
|
|
51
|
+
"prettier": "^2.6.0",
|
|
52
|
+
"ts-node": "^10.7.0",
|
|
53
|
+
"typescript": "^4.6.3"
|
|
54
|
+
},
|
|
55
|
+
"ava": {
|
|
56
|
+
"extensions": [
|
|
57
|
+
"ts"
|
|
58
|
+
],
|
|
59
|
+
"files": [
|
|
60
|
+
"!dist",
|
|
61
|
+
"!__tests__/helpers.ts"
|
|
62
|
+
],
|
|
63
|
+
"require": [
|
|
64
|
+
"ts-node/register"
|
|
65
|
+
],
|
|
66
|
+
"timeout": "2m",
|
|
67
|
+
"verbose": true
|
|
68
|
+
}
|
|
69
|
+
}
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../dist/types';
|
package/types/index.js
ADDED