feat(jellyfin): allow Jellyfin Guids with dashes for import-from-jellyfin endpoint (#2340)

This commit is contained in:
Lachlan Wisdom
2026-03-02 22:22:33 +11:00
committed by GitHub
parent fece7537e4
commit 3557745b62
2 changed files with 30 additions and 4 deletions

View File

@@ -22,6 +22,7 @@ import { getSettings } from '@server/lib/settings';
import logger from '@server/logger';
import { isAuthenticated } from '@server/middleware/auth';
import { getHostname } from '@server/utils/getHostname';
import { normalizeJellyfinGuid } from '@server/utils/jellyfin';
import { isOwnProfileOrAdmin } from '@server/utils/profileMiddleware';
import { Router } from 'express';
import gravatarUrl from 'gravatar-url';
@@ -679,11 +680,21 @@ router.post(
jellyfinClient.setUserId(admin.jellyfinUserId ?? '');
const jellyfinUsers = await jellyfinClient.getUsers();
for (const jellyfinUserId of body.jellyfinUserIds) {
const jellyfinUser = jellyfinUsers.users.find(
(user) => user.Id === jellyfinUserId
const jellyfinUsersById = new Map(
jellyfinUsers.users.map((user) => [
normalizeJellyfinGuid(user.Id),
user,
])
);
for (const rawJellyfinUserId of body.jellyfinUserIds) {
const jellyfinUserId = normalizeJellyfinGuid(rawJellyfinUserId);
if (!jellyfinUserId) {
continue;
}
const jellyfinUser = jellyfinUsersById.get(jellyfinUserId);
const user = await userRepository.findOne({
select: ['id', 'jellyfinUserId'],
where: { jellyfinUserId: jellyfinUserId },

15
server/utils/jellyfin.ts Normal file
View File

@@ -0,0 +1,15 @@
export function normalizeJellyfinGuid(
value: string | null | undefined
): string | null {
if (!value) {
return null;
}
const normalized = value.replace(/-/g, '').toLowerCase();
if (!/^[0-9a-f]{32}$/.test(normalized)) {
return null;
}
return normalized;
}