goblin-malin 0.1.1 → 0.1.3
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 +93 -43
- package/dist/assets/sounds/init.wav +0 -0
- package/dist/assets/themes/dark.json +74 -0
- package/dist/assets/themes/light.json +74 -0
- package/dist/chunk-UKXZ4MCQ.js +13395 -0
- package/dist/{chunk-ECLAXOR2.js → chunk-ZQ7B4MTU.js} +77 -14
- package/dist/cli.js +2 -2
- package/dist/index.js +2 -2
- package/dist/{metadata-Y5IDFTMA.js → metadata-FLO2QNLY.js} +1 -1
- package/package.json +133 -88
- package/scripts/save-install-source.mjs +40 -0
- package/dist/chunk-IVBZEO3V.js +0 -9157
- package/docs/screenshots/2026-05-08-download-view.png +0 -0
package/README.md
CHANGED
|
@@ -1,43 +1,93 @@
|
|
|
1
|
-
# goblin-malin 😉
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
1
|
+
# goblin-malin 😉
|
|
2
|
+
|
|
3
|
+
- [goblin-malin 😉](#goblin-malin-)
|
|
4
|
+
- [Installation](#installation)
|
|
5
|
+
- [Installation with `npm` (RECOMMENDED)](#installation-with-npm-recommended)
|
|
6
|
+
- [Installation with `yarn`](#installation-with-yarn)
|
|
7
|
+
- [Installation with `pnpm`](#installation-with-pnpm)
|
|
8
|
+
- [Installation on Windows](#installation-on-windows)
|
|
9
|
+
- [Steps](#steps)
|
|
10
|
+
- [Running the project as a developer](#running-the-project-as-a-developer)
|
|
11
|
+
- [Launching the app through js code](#launching-the-app-through-js-code)
|
|
12
|
+
- [Screenshots](#screenshots)
|
|
13
|
+
- [Metadata view](#metadata-view)
|
|
14
|
+
- [Download view](#download-view)
|
|
15
|
+
|
|
16
|
+
> [!CAUTION]
|
|
17
|
+
> **This project is in early, early, early development.**<br>
|
|
18
|
+
> Be aware that the data model can change drastically, making previous versions incompatible with the current one. Use at your own risk 😉
|
|
19
|
+
|
|
20
|
+
A keyboard-driven terminal UI for downloading and tagging music tracks with metadata. Import links from Spotify, YouTube, the app cross-references metadata across providers, finds the best download source (only yt-dlp for now), and saves it to disk with clean tags.
|
|
21
|
+
|
|
22
|
+
## Installation
|
|
23
|
+
|
|
24
|
+
### Installation with `npm` (RECOMMENDED)
|
|
25
|
+
|
|
26
|
+
1. Install [Node.js](https://nodejs.org/en/download) with `npm`
|
|
27
|
+
2. Install with `npm`
|
|
28
|
+
```bash
|
|
29
|
+
npm install -g goblin-malin
|
|
30
|
+
goblin-malin # Run application
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Installation with `yarn`
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
yarn global add goblin-malin
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Installation with `pnpm`
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
pnpm add -g goblin-malin
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Installation on Windows
|
|
46
|
+
|
|
47
|
+
[](https://github.com/Tetraxel/goblin-malin/releases/latest/download/goblin-malin-win-x64.exe)
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
goblin-malin.exe
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Steps
|
|
54
|
+
|
|
55
|
+
- Import with `Ctrl+V` URLs from compatible streaming platforms :
|
|
56
|
+
- `Spotify` (requires Spotify Premium Account to have full metadata)
|
|
57
|
+
- `YouTube`
|
|
58
|
+
- System fetches primary metadata from the corresponding URL platform
|
|
59
|
+
- System discovers the same track on other platforms (cross-referencing via ISRC or track/artist name)
|
|
60
|
+
- Filters/orders metadata sources by relevance or leaves the default ranking chosen by the system (use `TAB` key to switch the focused window).
|
|
61
|
+
- System downloads matching tracks from available download providers:
|
|
62
|
+
- `yt-dlp`
|
|
63
|
+
- User selects the best download source and previews the audio
|
|
64
|
+
- User saves the file to the desired folder with embedded tags
|
|
65
|
+
|
|
66
|
+
## Running the project as a developer
|
|
67
|
+
|
|
68
|
+
You can run the project as a developer:
|
|
69
|
+
|
|
70
|
+
1. Clone the repository and open a terminal in the project directory
|
|
71
|
+
2. Install [Node.js](https://nodejs.org/en/download) and [yarn](https://classic.yarnpkg.com/lang/en/docs/install)
|
|
72
|
+
3. Install dependencies in the project directory: `yarn install`
|
|
73
|
+
4. Run the application: `yarn run dev`
|
|
74
|
+
|
|
75
|
+
## Launching the app through js code
|
|
76
|
+
|
|
77
|
+
> Not customizable yet
|
|
78
|
+
|
|
79
|
+
```js
|
|
80
|
+
import GoblinMalin from "goblin-malin";
|
|
81
|
+
|
|
82
|
+
GoblinMalin.start();
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Screenshots
|
|
86
|
+
|
|
87
|
+
### Metadata view
|
|
88
|
+
|
|
89
|
+
<img src="https://raw.githubusercontent.com/Tetraxel/goblin-malin/main/docs/screenshots/2026-05-14-metadata-view.png" width="100%"/>
|
|
90
|
+
|
|
91
|
+
### Download view
|
|
92
|
+
|
|
93
|
+
<img src="https://raw.githubusercontent.com/Tetraxel/goblin-malin/main/docs/screenshots/2026-05-08-download-view.png" width="100%"/>
|
|
Binary file
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"palette": {
|
|
3
|
+
"blue": "#58a6ff",
|
|
4
|
+
"cyan": "#39c5cf",
|
|
5
|
+
"red": "#ff7b72",
|
|
6
|
+
"green": "#56d364",
|
|
7
|
+
"yellow": "#e3b341",
|
|
8
|
+
"orange": "#f0883e",
|
|
9
|
+
"purple": "#d2a8ff",
|
|
10
|
+
"pink": "#f778ba",
|
|
11
|
+
"white": "#e6edf3",
|
|
12
|
+
"gray": "#8b949e",
|
|
13
|
+
"grayDark": "#484f58"
|
|
14
|
+
},
|
|
15
|
+
"ui": {
|
|
16
|
+
"background": "#000000",
|
|
17
|
+
"rowBackground": "#111111",
|
|
18
|
+
"rowActiveDimmedBackground": "#1d1d1d",
|
|
19
|
+
"rowActiveBackground": "#2f2f2f",
|
|
20
|
+
"border": "#39c5cf",
|
|
21
|
+
"separator": "#39c5cf",
|
|
22
|
+
"selection": "#58a6ff",
|
|
23
|
+
"tabActive": "#58a6ff",
|
|
24
|
+
"tabInactive": "#8b949e",
|
|
25
|
+
"panelTitle": "#e6edf3",
|
|
26
|
+
"progressFill": "#56d364",
|
|
27
|
+
"progressEmpty": "#484f58",
|
|
28
|
+
"modalBorder": "#39c5cf",
|
|
29
|
+
"focusIndicator": "#58a6ff",
|
|
30
|
+
"dimText": "#484f58"
|
|
31
|
+
},
|
|
32
|
+
"text": {
|
|
33
|
+
"primary": "#e6edf3",
|
|
34
|
+
"secondary": "#8b949e",
|
|
35
|
+
"muted": "#484f58",
|
|
36
|
+
"hint": "#8b949e",
|
|
37
|
+
"active": "#e6edf3",
|
|
38
|
+
"heading": "#e6edf3"
|
|
39
|
+
},
|
|
40
|
+
"status": {
|
|
41
|
+
"processing": "#388bfd",
|
|
42
|
+
"pending": "#e6edf3",
|
|
43
|
+
"success": "#56d364",
|
|
44
|
+
"warning": "#e3b341",
|
|
45
|
+
"error": "#ff7b72",
|
|
46
|
+
"skipped": "#8b949e",
|
|
47
|
+
"locked": "#e6edf3",
|
|
48
|
+
"downloading": "#e3b341"
|
|
49
|
+
},
|
|
50
|
+
"field": {
|
|
51
|
+
"normal": "#e6edf3",
|
|
52
|
+
"overridden": "#e3b341",
|
|
53
|
+
"missing": "#8b949e",
|
|
54
|
+
"selected": "#56d364",
|
|
55
|
+
"error": "#ff7b72"
|
|
56
|
+
},
|
|
57
|
+
"confidence": {
|
|
58
|
+
"primary": "#00fbff",
|
|
59
|
+
"high": "#56d364",
|
|
60
|
+
"medium": "#e3b341",
|
|
61
|
+
"low": "#8b949e",
|
|
62
|
+
"veryLow": "#ff7b72"
|
|
63
|
+
},
|
|
64
|
+
"diff": {
|
|
65
|
+
"base": "#8b949e",
|
|
66
|
+
"changed": "#39c5cf",
|
|
67
|
+
"modified": "#e3b341"
|
|
68
|
+
},
|
|
69
|
+
"action": {
|
|
70
|
+
"primary": "#e3b341",
|
|
71
|
+
"destructive": "#ff7b72",
|
|
72
|
+
"neutral": "#8b949e"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"palette": {
|
|
3
|
+
"blue": "#0969da",
|
|
4
|
+
"cyan": "#1b7c83",
|
|
5
|
+
"red": "#cf222e",
|
|
6
|
+
"green": "#1a7f37",
|
|
7
|
+
"yellow": "#9a6700",
|
|
8
|
+
"orange": "#bc4c00",
|
|
9
|
+
"purple": "#8250df",
|
|
10
|
+
"pink": "#bf3989",
|
|
11
|
+
"white": "#ffffff",
|
|
12
|
+
"gray": "#57606a",
|
|
13
|
+
"grayDark": "#24292f"
|
|
14
|
+
},
|
|
15
|
+
"ui": {
|
|
16
|
+
"background": "#ffffff",
|
|
17
|
+
"rowBackground": "#f6f8fa",
|
|
18
|
+
"rowActiveDimmedBackground": "#d0d7de",
|
|
19
|
+
"rowActiveBackground": "#b0b0b0",
|
|
20
|
+
"border": "#1b7c83",
|
|
21
|
+
"separator": "#1b7c83",
|
|
22
|
+
"selection": "#0969da",
|
|
23
|
+
"tabActive": "#0969da",
|
|
24
|
+
"tabInactive": "#57606a",
|
|
25
|
+
"panelTitle": "#24292f",
|
|
26
|
+
"progressFill": "#1a7f37",
|
|
27
|
+
"progressEmpty": "#d0d7de",
|
|
28
|
+
"modalBorder": "#1b7c83",
|
|
29
|
+
"focusIndicator": "#0969da",
|
|
30
|
+
"dimText": "#d0d7de"
|
|
31
|
+
},
|
|
32
|
+
"text": {
|
|
33
|
+
"primary": "#24292f",
|
|
34
|
+
"secondary": "#57606a",
|
|
35
|
+
"muted": "#d0d7de",
|
|
36
|
+
"hint": "#57606a",
|
|
37
|
+
"active": "#24292f",
|
|
38
|
+
"heading": "#24292f"
|
|
39
|
+
},
|
|
40
|
+
"status": {
|
|
41
|
+
"processing": "#0550ae",
|
|
42
|
+
"pending": "#24292f",
|
|
43
|
+
"success": "#1a7f37",
|
|
44
|
+
"warning": "#9a6700",
|
|
45
|
+
"error": "#cf222e",
|
|
46
|
+
"skipped": "#57606a",
|
|
47
|
+
"locked": "#24292f",
|
|
48
|
+
"downloading": "#9a6700"
|
|
49
|
+
},
|
|
50
|
+
"field": {
|
|
51
|
+
"normal": "#24292f",
|
|
52
|
+
"overridden": "#9a6700",
|
|
53
|
+
"missing": "#57606a",
|
|
54
|
+
"selected": "#1a7f37",
|
|
55
|
+
"error": "#cf222e"
|
|
56
|
+
},
|
|
57
|
+
"confidence": {
|
|
58
|
+
"primary": "#007f81",
|
|
59
|
+
"high": "#1a7f37",
|
|
60
|
+
"medium": "#9a6700",
|
|
61
|
+
"low": "#57606a",
|
|
62
|
+
"veryLow": "#cf222e"
|
|
63
|
+
},
|
|
64
|
+
"diff": {
|
|
65
|
+
"base": "#57606a",
|
|
66
|
+
"changed": "#1b7c83",
|
|
67
|
+
"modified": "#9a6700"
|
|
68
|
+
},
|
|
69
|
+
"action": {
|
|
70
|
+
"primary": "#9a6700",
|
|
71
|
+
"destructive": "#cf222e",
|
|
72
|
+
"neutral": "#57606a"
|
|
73
|
+
}
|
|
74
|
+
}
|