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 CHANGED
@@ -1,43 +1,93 @@
1
- # goblin-malin 😉
2
-
3
- > [!CAUTION]
4
- > **This project is in early, early, early development.**<br>
5
- > Be aware that the data model can change drastically, making previous versions incompatible with the current one. Use at your own risk 😉
6
-
7
- 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.
8
-
9
- ## Installation
10
-
11
- ### Running the project as a developer
12
-
13
- You can run the project as a developer:
14
-
15
- 1. Clone the repository and open a terminal in the project directory
16
- 2. Install [Node.js](https://nodejs.org/en/download) and [yarn](https://classic.yarnpkg.com/lang/en/docs/install)
17
- 3. Install dependencies in the project directory: `yarn install`
18
- 4. Run the application: `yarn run dev`
19
-
20
- ### Launching the app in js code
21
-
22
- > Not customizable yet
23
-
24
- ```js
25
- import GoblinMalin from "goblin-malin";
26
-
27
- GoblinMalin.start();
28
- ```
29
-
30
- ## Steps
31
-
32
- - Import track URLs from compatible streaming platforms with `Ctrl+V`:
33
- - `Spotify`
34
- - `YouTube`
35
- - System fetches primary metadata from the corresponding URL platform
36
- - System discovers the same track on other platforms (cross-referencing via ISRC or track/artist name)
37
- - Filters/orders metadata sources by relevance or leaves the default ranking chosen by the system (use `TAB` key to switch the focused window).
38
- - System downloads matching tracks from available download providers:
39
- - `yt-dlp`
40
- - User selects the best download source and previews the audio
41
- - User saves the file to the desired folder with embedded tags
42
-
43
- <img src="docs\screenshots\2026-05-08-download-view.png" width="100%"/>
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
+ [![Windows](https://img.shields.io/badge/-Windows_x64-blue.svg?style=flat&logo=windows&logoColor=%23ffffff&color=%230078d4)](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
+ }