Skip to content

Commit d603638

Browse files
committed
refactor: move AudioFileConverter to -lib package
1 parent 62d2783 commit d603638

File tree

18 files changed

+92
-78
lines changed

18 files changed

+92
-78
lines changed

packages/music-library-app/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ Installation: download latest app binary for your OS platform from the [Releases
88

99
Requirements:
1010

11-
- `ffmpeg` must be installed and available on the system path. See installation docs for [macOS](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg/wiki/Installing-ffmpeg-on-Mac-OS-X) and [Debian](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg/wiki/Installing-ffmpeg-on-Debian).
11+
- `ffmpeg` must be installed and available on the system path. See installation docs for
12+
[macOS](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg/wiki/Installing-ffmpeg-on-Mac-OS-X)
13+
and [Debian](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg/wiki/Installing-ffmpeg-on-Debian).
1214

1315
### Screenshot
1416

packages/music-library-app/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,12 @@
2222
"@roarr/browser-log-writer": "^1.3.0",
2323
"@tanstack/react-table": "^8.11.2",
2424
"@tinyhttp/app": "^2.2.1",
25-
"@types/fluent-ffmpeg": "^2.1.24",
2625
"ansis": "^2.0.3",
2726
"classnames": "^2.3.2",
2827
"command-exists": "^1.2.9",
2928
"cross-env": "^7.0.3",
3029
"date-fns": "^3.0.6",
3130
"electron-squirrel-startup": "^1.0.0",
32-
"fluent-ffmpeg": "^2.1.2",
3331
"immer": "^10.0.3",
3432
"milliparsec": "^2.3.0",
3533
"node-taglib-sharp": "^5.2.3",
Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
import type { TrackDefinition } from "@adahiya/music-library-tools-lib";
22
import { pick } from "radash";
33

4-
import { AudioFilesServerRoutes as Routes } from "../../../common/audioFilesServerRoutes";
4+
import {
5+
AudioFilesServerRoutes as Routes,
6+
type ConvertTrackToMP3RequestBody,
7+
} from "../../../common/api/audioFilesServerAPI";
58

69
export default function convertTrackToMP3Request(serverBaseURL: string, trackDef: TrackDefinition) {
710
return fetch(`${serverBaseURL}${Routes.POST_CONVERT_TO_MP3}`, {
811
method: "POST",
912
body: JSON.stringify({
10-
trackProperties: pick(trackDef, ["Artist", "Album", "Location", "Name", "Track ID"]),
11-
}),
13+
trackDefinition: pick(trackDef, ["Location", "Persistent ID", "Track ID"]),
14+
} satisfies ConvertTrackToMP3RequestBody),
1215
});
1316
}

packages/music-library-app/src/client/store/requestFactories/pingRequest.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { AudioFilesServerRoutes as Routes } from "../../../common/audioFilesServerRoutes";
1+
import { AudioFilesServerRoutes as Routes } from "../../../common/api/audioFilesServerAPI";
22

33
export default function pingRequest(serverBaseURL: string) {
44
return fetch(`${serverBaseURL}${Routes.GET_PING}`);

packages/music-library-app/src/client/store/slices/audioFilesServerSlice.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import type { TrackDefinition } from "@adahiya/music-library-tools-lib";
22
import { Roarr as log } from "roarr";
33
import type { ErrorObject } from "serialize-error";
44

5-
import { AudioFilesServerRoutes as ServerRoutes } from "../../../common/audioFilesServerRoutes";
5+
import { AudioFilesServerRoutes as ServerRoutes } from "../../../common/api/audioFilesServerAPI";
66
import {
77
AUDIO_FILES_SERVER_PING_TIMEOUT,
88
DEFAULT_AUDIO_FILES_ROOT_FOLDER,
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import type { BasicTrackDefinition } from "@adahiya/music-library-tools-lib";
2+
3+
export const AudioFilesServerRoutes = {
4+
GET_PING: "/ping",
5+
GET_CONVERTED_MP3: "/convertedMP3",
6+
POST_CONVERT_TO_MP3: "/convertToMP3",
7+
};
8+
9+
export interface ConvertTrackToMP3RequestBody {
10+
trackDefinition: BasicTrackDefinition;
11+
}

packages/music-library-app/src/common/audioFilesServerRoutes.ts

Lines changed: 0 additions & 5 deletions
This file was deleted.

packages/music-library-app/src/common/constants.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,6 @@ export const WRITE_AUDIO_FILE_TAG_TIMEOUT = 2_000;
1818
export const WRITE_MODIFIED_LIBRARY_TIMEOUT = 20_000;
1919
export const ANALYZE_AUDIO_FILE_TIMEOUT = 4_000;
2020

21-
// audio conversion settings
22-
export const DEFAULT_MP3_BITRATE = 320;
23-
export const DEFAULT_AUDIO_SAMPLE_RATE = 44_100;
24-
2521
// UI settings
2622
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
2723
export const SHOW_TRACK_TABLE_CONTEXT_MENU: boolean = true;

packages/music-library-app/src/common/errorMessages.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ export const ServerErrors = {
44
AUDIO_FILES_ROOT_FOLDER_NOT_FOUND: `Audio files root folder does not exist or is empty`,
55
FFMPEG_NOT_INSTALLED: `ffmpeg is not installed on the system path`,
66
MP3_CODEC_UNAVAILABLE: `No MP3 codec is available`,
7-
TEMP_DIR_UNAVAILABLE: `Unable to create a temporary directory for audio file conversion`,
87
INVALID_CONVERSION_REQUEST: `Invalid MP3 conversion request`,
98
CONVERTED_AUDIO_FILE_NOT_FOUND: `Converted audio file not found`,
109
};

packages/music-library-app/src/server/audioFilesServer.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import { createReadStream, existsSync, readdirSync, statSync } from "node:fs";
22
import { type Server } from "node:http";
33
import { env } from "node:process";
44

5+
import { AudioFileConverter } from "@adahiya/music-library-tools-lib";
56
import { App, type Request, type Response } from "@tinyhttp/app";
67
import sirv from "sirv";
78

8-
import { AudioFilesServerRoutes as ServerRoutes } from "../common/audioFilesServerRoutes";
9+
import { AudioFilesServerRoutes as ServerRoutes } from "../common/api/audioFilesServerAPI";
910
import { DEFAULT_AUDIO_FILES_SERVER_PORT } from "../common/constants";
1011
import { ServerErrors } from "../common/errorMessages";
1112
import { type AudioFilesServerStartedEventPayload } from "../common/events";
12-
import { AudioFilesConverter } from "./audioFilesConverter";
1313
import { getConvertToMP3RequestHandler } from "./handlers/convertToMP3Handler";
1414
import { log } from "./serverLogger";
1515

@@ -24,7 +24,7 @@ export interface AudioFilesServerOptions {
2424
export interface AudioFilesServer {
2525
/** @internal */
2626
_app: App;
27-
converter: AudioFilesConverter;
27+
converter: AudioFileConverter;
2828
stop: () => void;
2929
}
3030

@@ -46,7 +46,7 @@ export async function startAudioFilesServer(
4646
validateRootFolderOrThrow(options.audioFilesRootFolder);
4747

4848
log.debug(`Initializing audio files converter...`);
49-
const converter = new AudioFilesConverter(options);
49+
const converter = new AudioFileConverter();
5050
const app = initServerApp(converter, options);
5151

5252
if (app === undefined) {
@@ -84,7 +84,7 @@ export async function startAudioFilesServer(
8484
}
8585

8686
function initServerApp(
87-
converter: AudioFilesConverter,
87+
converter: AudioFileConverter,
8888
options: AudioFilesServerOptions,
8989
): App | undefined {
9090
const app = new App();

0 commit comments

Comments
 (0)