Skip to content

Commit a237cdf

Browse files
authored
Merge pull request #356 from lklynet/feature/metadata-base-url-migration
Migrate metadata base URL to BrainzMash endpoint
2 parents f790f90 + b2bccf4 commit a237cdf

7 files changed

Lines changed: 61 additions & 22 deletions

File tree

backend/config/constants.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,8 @@ export const UUID_REGEX =
113113
export const MUSICBRAINZ_API = "https://musicbrainz.org/ws/2";
114114
export const AURRAL_MUSICBRAINZ_API = "https://mb.lkly.net/ws/2";
115115
export const OFFICIAL_COVER_ART_ARCHIVE_API = "https://coverartarchive.org";
116-
export const DEFAULT_METADATA_BASE_URL = "https://brainzmash.kell.ly";
116+
export const LEGACY_METADATA_BASE_URL = "https://brainzmash.kell.ly";
117+
export const DEFAULT_METADATA_BASE_URL = "https://lidarrapi.brainzmash.cc";
117118
export const LASTFM_API = "https://ws.audioscrobbler.com/2.0/";
118119
export const LISTENBRAINZ_API = "https://api.listenbrainz.org";
119120
export const APP_NAME = "Aurral";

backend/routes/onboarding.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
import express from "express";
22
import bcrypt from "bcrypt";
33
import { dbOps, userOps } from "../config/db-helpers.js";
4-
import { DEFAULT_METADATA_BASE_URL, defaultData } from "../config/constants.js";
4+
import {
5+
DEFAULT_METADATA_BASE_URL,
6+
LEGACY_METADATA_BASE_URL,
7+
defaultData,
8+
} from "../config/constants.js";
59
import { validateExternalUrl } from "../middleware/urlValidator.js";
610
import { requirePasswordStrength } from "../middleware/validation.js";
711

812
const router = express.Router();
913

14+
function normalizeMetadataBaseUrl(baseUrl) {
15+
const trimmed = String(baseUrl || "").trim().replace(/\/+$/, "");
16+
return trimmed === LEGACY_METADATA_BASE_URL ? DEFAULT_METADATA_BASE_URL : trimmed;
17+
}
18+
1019
router.use((req, res, next) => {
1120
const settings = dbOps.getSettings();
1221
if (settings.onboardingComplete) {
@@ -115,11 +124,12 @@ router.post("/complete", async (req, res) => {
115124
? {
116125
...(current.integrations?.metadata || {}),
117126
provider: "brainzmash",
118-
baseUrl:
127+
baseUrl: normalizeMetadataBaseUrl(
119128
metadata.baseUrl != null
120129
? String(metadata.baseUrl).trim().replace(/\/+$/, "")
121130
: current.integrations?.metadata?.baseUrl ||
122131
DEFAULT_METADATA_BASE_URL,
132+
),
123133
userAgentSuffix:
124134
metadata.userAgentSuffix != null
125135
? String(metadata.userAgentSuffix).trim()

backend/routes/settings.js

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import express from "express";
22
import { dbOps } from "../config/db-helpers.js";
3-
import { DEFAULT_METADATA_BASE_URL, defaultData } from "../config/constants.js";
3+
import {
4+
DEFAULT_METADATA_BASE_URL,
5+
LEGACY_METADATA_BASE_URL,
6+
defaultData,
7+
} from "../config/constants.js";
48
import { reconcileLocalNetworkBypassSetting } from "../middleware/auth.js";
59
import { noCache } from "../middleware/cache.js";
610
import { requireAuth, requireAdmin } from "../middleware/requirePermission.js";
@@ -11,6 +15,11 @@ const router = express.Router();
1115
router.use(requireAuth);
1216
router.use(requireAdmin);
1317

18+
function normalizeMetadataBaseUrl(baseUrl) {
19+
const trimmed = String(baseUrl || "").trim().replace(/\/+$/, "");
20+
return trimmed === LEGACY_METADATA_BASE_URL ? DEFAULT_METADATA_BASE_URL : trimmed;
21+
}
22+
1423
router.get("/", noCache, (req, res) => {
1524
try {
1625
const settings = dbOps.getSettings();
@@ -24,12 +33,20 @@ router.get("/", noCache, (req, res) => {
2433
const legacyMusicbrainz = dbOps.getSettings()?.integrations?.musicbrainz || {};
2534
settings.integrations.metadata = {
2635
provider: "brainzmash",
27-
baseUrl:
36+
baseUrl: normalizeMetadataBaseUrl(
2837
String(legacyMusicbrainz.customUrl || "").trim().replace(/\/ws\/2\/?$/, "") ||
29-
DEFAULT_METADATA_BASE_URL,
38+
DEFAULT_METADATA_BASE_URL,
39+
),
3040
userAgentSuffix: "",
3141
enableNarrowFallbacks: true,
3242
};
43+
} else {
44+
settings.integrations.metadata = {
45+
...settings.integrations.metadata,
46+
baseUrl: normalizeMetadataBaseUrl(
47+
settings.integrations.metadata.baseUrl || DEFAULT_METADATA_BASE_URL,
48+
),
49+
};
3350
}
3451
settings.security = {
3552
...(settings.security || {}),
@@ -80,7 +97,7 @@ router.post("/", async (req, res) => {
8097
error: `Invalid metadata base URL: ${baseUrlValidation.error}`,
8198
});
8299
}
83-
nextMetadata.baseUrl = baseUrlValidation.url.replace(/\/+$/, "");
100+
nextMetadata.baseUrl = normalizeMetadataBaseUrl(baseUrlValidation.url);
84101
nextMetadata.userAgentSuffix =
85102
typeof nextMetadata.userAgentSuffix === "string"
86103
? nextMetadata.userAgentSuffix.trim()

backend/services/providers/brainzmashProvider.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
APP_NAME,
66
APP_VERSION,
77
DEFAULT_METADATA_BASE_URL,
8+
LEGACY_METADATA_BASE_URL,
89
MUSICBRAINZ_API,
910
} from "../../config/constants.js";
1011
import {
@@ -70,7 +71,11 @@ export function getMetadataBaseUrl() {
7071
parsed.pathname = parsed.pathname.replace(/\/+$/, "") || "/";
7172
parsed.search = "";
7273
parsed.hash = "";
73-
return parsed.toString().replace(/\/+$/, "");
74+
const normalized = parsed.toString().replace(/\/+$/, "");
75+
if (normalized === LEGACY_METADATA_BASE_URL) {
76+
return DEFAULT_METADATA_BASE_URL;
77+
}
78+
return normalized;
7479
} catch {
7580
return DEFAULT_METADATA_BASE_URL;
7681
}
@@ -81,10 +86,7 @@ export function getMetadataProvider() {
8186
}
8287

8388
function getUserAgent() {
84-
const metadata = getSettingsMetadata();
85-
const suffix = String(metadata.userAgentSuffix || "").trim();
86-
const base = `Lidarr/2.0 Tubifarry/1.0 Aurral/${APP_VERSION}`;
87-
return suffix ? `${base} ${suffix}` : base;
89+
return `${APP_NAME}/${APP_VERSION}`;
8890
}
8991

9092
async function request(path, params = {}) {

frontend/src/pages/Settings/components/SettingsMetadataTab.jsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { CheckCircle } from "lucide-react";
22
import FlipSaveButton from "../../../components/FlipSaveButton";
3-
4-
const DEFAULT_METADATA_BASE_URL = "https://brainzmash.kell.ly";
3+
import { DEFAULT_METADATA_BASE_URL } from "../utils";
54

65
export function SettingsMetadataTab({
76
settings,

frontend/src/pages/Settings/hooks/useSettingsData.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,13 @@ import api, {
1212
} from "../../../utils/api";
1313
import { useWebSocketChannel } from "../../../hooks/useWebSocket";
1414
import { allReleaseTypes } from "../constants";
15-
import { normalizeSettings, checkForChanges } from "../utils";
15+
import {
16+
DEFAULT_METADATA_BASE_URL,
17+
checkForChanges,
18+
normalizeSettings,
19+
} from "../utils";
1620

1721
const DISCOVERY_MANUAL_REFRESH_KEY = "aurral.discovery.manualRefreshPending";
18-
const DEFAULT_METADATA_BASE_URL = "https://brainzmash.kell.ly";
1922

2023
const defaultSettings = {
2124
rootFolderPath: "",

frontend/src/pages/Settings/utils.js

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
import { allReleaseTypes } from "./constants";
22

3-
const DEFAULT_METADATA_BASE_URL = "https://brainzmash.kell.ly";
3+
export const LEGACY_METADATA_BASE_URL = "https://brainzmash.kell.ly";
4+
export const DEFAULT_METADATA_BASE_URL = "https://lidarrapi.brainzmash.cc";
5+
6+
export const normalizeMetadataBaseUrl = (baseUrl) => {
7+
const trimmed = String(baseUrl || "").trim().replace(/\/+$/, "");
8+
return trimmed === LEGACY_METADATA_BASE_URL ? DEFAULT_METADATA_BASE_URL : trimmed;
9+
};
410

511
export const normalizeSettings = (savedSettings) => {
612
const lidarr = savedSettings.integrations?.lidarr || {};
@@ -74,12 +80,13 @@ export const normalizeSettings = (savedSettings) => {
7480
},
7581
metadata: {
7682
provider: "brainzmash",
77-
baseUrl:
83+
baseUrl: normalizeMetadataBaseUrl(
7884
metadata.baseUrl ||
79-
String(legacyMusicbrainz.customUrl || "")
80-
.trim()
81-
.replace(/\/ws\/2\/?$/, "") ||
82-
DEFAULT_METADATA_BASE_URL,
85+
String(legacyMusicbrainz.customUrl || "")
86+
.trim()
87+
.replace(/\/ws\/2\/?$/, "") ||
88+
DEFAULT_METADATA_BASE_URL,
89+
),
8390
userAgentSuffix: "",
8491
enableNarrowFallbacks: true,
8592
...metadata,

0 commit comments

Comments
 (0)