goblin-malin 0.1.0 → 0.1.2

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/.env.example ADDED
@@ -0,0 +1,6 @@
1
+ # https://developer.spotify.com/dashboard
2
+ SPOTIFY_API_CLIENT_ID=
3
+ SPOTIFY_API_CLIENT_SECRET=
4
+ # https://www.slsknet.org/
5
+ SOULSEEK_USERNAME=
6
+ SOULSEEK_PASSWORD=
package/README.md CHANGED
@@ -1,31 +1,51 @@
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
- No easy installation yet. You can only run the project as developer:
12
-
13
- 1. Clone the repository and open a terminal in the project directory
14
- 2. Install [Node.js](https://nodejs.org/en/download) and [yarn](https://classic.yarnpkg.com/lang/en/docs/install)
15
- 3. Install dependencies in the project directory: `yarn install`
16
- 4. Run the application: `yarn run dev`
17
-
18
- ## Steps
19
-
20
- - Import track URLs from compatible streaming platforms with `Ctrl+V`:
21
- - Spotify
22
- - YouTube
23
- - System fetches primary metadata from the corresponding URL platform
24
- - System discovers the same track on other platforms (cross-referencing via ISRC or track/artist name)
25
- - Filters/orders metadata sources by relevance or leaves the default ranking chosen by the system (use `TAB` key to switch the focused window).
26
- - System downloads matching tracks from available download providers:
27
- - yt-dlp
28
- - User selects the best download source and previews the audio
29
- - User saves the file to the desired folder with embedded tags
30
-
31
- <img src="docs\screenshots\2026-05-08-download-view.png" width="100%"/>
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 with `Ctrl+V` URLs from compatible streaming platforms :
33
+ - `Spotify` (requires Spotify Premium Account)
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
+ ## Screenshots
44
+
45
+ ### Metadata view
46
+
47
+ <img src="https://raw.githubusercontent.com/Tetraxel/goblin-malin/main/docs/screenshots/2026-05-14-metadata-view.png" width="100%"/>
48
+
49
+ ### Download view
50
+
51
+ <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
+ }