gerdur-core 0.0.0-probe → 1.0.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.
Files changed (79) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/LICENSE +1 -0
  3. package/README.md +188 -1
  4. package/dist/api/api.d.ts +78 -0
  5. package/dist/api/api.js +182 -0
  6. package/dist/api/cache.d.ts +3 -0
  7. package/dist/api/cache.js +12 -0
  8. package/dist/api/index.d.ts +2 -0
  9. package/dist/api/index.js +18 -0
  10. package/dist/api/request.d.ts +23 -0
  11. package/dist/api/request.js +88 -0
  12. package/dist/converter/deezer.d.ts +3 -0
  13. package/dist/converter/deezer.js +45 -0
  14. package/dist/converter/index.d.ts +5 -0
  15. package/dist/converter/index.js +34 -0
  16. package/dist/converter/parse.d.ts +18 -0
  17. package/dist/converter/parse.js +176 -0
  18. package/dist/converter/spotify.d.ts +40 -0
  19. package/dist/converter/spotify.js +154 -0
  20. package/dist/converter/tidal.d.ts +146 -0
  21. package/dist/converter/tidal.js +199 -0
  22. package/dist/converter/youtube.d.ts +6 -0
  23. package/dist/converter/youtube.js +102 -0
  24. package/dist/index.d.ts +6 -0
  25. package/dist/index.js +24 -0
  26. package/dist/lib/decrypt.d.ts +9 -0
  27. package/dist/lib/decrypt.js +63 -0
  28. package/dist/lib/fast-lru.d.ts +63 -0
  29. package/dist/lib/fast-lru.js +121 -0
  30. package/dist/lib/get-url.d.ts +16 -0
  31. package/dist/lib/get-url.js +154 -0
  32. package/dist/lib/http.d.ts +66 -0
  33. package/dist/lib/http.js +235 -0
  34. package/dist/lib/metaflac-js.d.ts +124 -0
  35. package/dist/lib/metaflac-js.js +343 -0
  36. package/dist/lib/request.d.ts +18 -0
  37. package/dist/lib/request.js +86 -0
  38. package/dist/metadata-writer/abumCover.d.ts +10 -0
  39. package/dist/metadata-writer/abumCover.js +37 -0
  40. package/dist/metadata-writer/flacmetata.d.ts +3 -0
  41. package/dist/metadata-writer/flacmetata.js +80 -0
  42. package/dist/metadata-writer/getTrackLyrics.d.ts +2 -0
  43. package/dist/metadata-writer/getTrackLyrics.js +26 -0
  44. package/dist/metadata-writer/id3.d.ts +3 -0
  45. package/dist/metadata-writer/id3.js +119 -0
  46. package/dist/metadata-writer/index.d.ts +9 -0
  47. package/dist/metadata-writer/index.js +44 -0
  48. package/dist/metadata-writer/musixmatchLyrics.d.ts +1 -0
  49. package/dist/metadata-writer/musixmatchLyrics.js +39 -0
  50. package/dist/metadata-writer/useragents.d.ts +1 -0
  51. package/dist/metadata-writer/useragents.js +86 -0
  52. package/dist/types/album.d.ts +123 -0
  53. package/dist/types/album.js +2 -0
  54. package/dist/types/artist.d.ts +36 -0
  55. package/dist/types/artist.js +2 -0
  56. package/dist/types/channel.d.ts +33 -0
  57. package/dist/types/channel.js +2 -0
  58. package/dist/types/index.d.ts +10 -0
  59. package/dist/types/index.js +26 -0
  60. package/dist/types/playlist-channel.d.ts +81 -0
  61. package/dist/types/playlist-channel.js +2 -0
  62. package/dist/types/playlist.d.ts +49 -0
  63. package/dist/types/playlist.js +2 -0
  64. package/dist/types/profile.d.ts +29 -0
  65. package/dist/types/profile.js +2 -0
  66. package/dist/types/radio.d.ts +7 -0
  67. package/dist/types/radio.js +2 -0
  68. package/dist/types/search.d.ts +79 -0
  69. package/dist/types/search.js +2 -0
  70. package/dist/types/show.d.ts +61 -0
  71. package/dist/types/show.js +2 -0
  72. package/dist/types/tracks.d.ts +144 -0
  73. package/dist/types/tracks.js +2 -0
  74. package/dist/types/user.d.ts +16 -0
  75. package/dist/types/user.js +2 -0
  76. package/package.json +67 -5
  77. package/types/index.d.ts +1 -0
  78. package/types/index.js +3 -0
  79. package/types/package.json +4 -0
@@ -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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ export interface radioType {
2
+ RADIO_ID: string;
3
+ RADIO_PICTURE: string;
4
+ TITLE: string;
5
+ TAGS: string[];
6
+ __TYPE__: 'radio';
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,7 +1,69 @@
1
1
  {
2
2
  "name": "gerdur-core",
3
- "version": "0.0.0-probe",
4
- "description": "name-availability probe",
5
- "license": "MIT",
6
- "private": false
7
- }
3
+ "version": "1.0.0",
4
+ "description": "Core module for gerdur.",
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/gerdur-core.git"
25
+ },
26
+ "homepage": "https://github.com/soulwax/gerdur-core#readme",
27
+ "bugs": {
28
+ "url": "https://github.com/soulwax/gerdur-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
+ }
@@ -0,0 +1 @@
1
+ export * from '../dist/types';
package/types/index.js ADDED
@@ -0,0 +1,3 @@
1
+ 'use strict';
2
+
3
+ module.exports = require('../dist/types');
@@ -0,0 +1,4 @@
1
+ {
2
+ "main": "./index.js",
3
+ "types": "./index.d.ts"
4
+ }