align with metadata standard
Build and Push Docker Image / build (push) Failing after 14s

This commit is contained in:
Worph
2026-09-13 15:56:54 +02:00
parent 021991b00d
commit 985b000c24
5 changed files with 15 additions and 16 deletions
@@ -26,7 +26,8 @@ export function renamingRule(metamesh: Local, filepath?: string): string | null
throw new Error(`No extension found for file: ${filepath}`);
}
const title = metamesh?.titles?.eng || metamesh.originalTitle;
// The display name — never the `titles/*` name set, which has no preferred member (METADATA_KEYS.md §3).
const title = metamesh.title || metamesh.originalTitle;
if (!title) {
if (metamesh.fileType !== "torrent") {
//don't warn for torrent files because they don't always have a title (eg representing a folder of files)
@@ -85,13 +85,10 @@ export class JellyfinFormatHandler implements IMetadataFormatHandler {
if (metadata.originalTitle) jellyfinFields.originalTitle = metadata.originalTitle;
if (metadata.movieYear) jellyfinFields.year = metadata.movieYear;
// Titles (first title or original title)
if (metadata.titles) {
const titleEntries = Object.entries(metadata.titles);
if (titleEntries.length > 0) {
jellyfinFields.title = titleEntries[0][1];
}
}
// Title: the display name. `titles/*` is an unordered name set with no
// preferred member, so it is never the NFO title (METADATA_KEYS.md §3).
const title = metadata.title || metadata.originalTitle;
if (title) jellyfinFields.title = title;
// IDs
if (metadata.imdbid) jellyfinFields.imdbid = metadata.imdbid;
+1 -1
View File
@@ -9,7 +9,7 @@ export interface FileMetadata {
// Filename parsing
title?: string;
titles?: string[];
titles?: Record<string, Record<string, true | string>>; // key-set: lang3 → {name: "true"}
originaltitle?: string;
showtitle?: string;
season?: number;
@@ -22,13 +22,13 @@ describe('MetaData', () => {
});
it('should set and get nested metadata using nested keys', () => {
root.at('titles').at('eng').set("Star Wars");
root.at('titles').at('jpn').set("Staru Warsu");
expect(root.at('titles').at('eng').get()).to.equal("Star Wars");
expect(root.at('titles').at('jpn').get()).to.equal("Staru Warsu");
expect(root.at('titles').get()).to.deep.equal({eng: "Star Wars", jpn: "Staru Warsu"});
root.at('titles').at('eng').at('Star Wars').set(true);
root.at('titles').at('jpn').at('Staru Warsu').set(true);
expect(root.at('titles').at('eng').at('Star Wars').get()).to.equal(true);
expect(root.at('titles').at('jpn').at('Staru Warsu').get()).to.equal(true);
expect(root.at('titles').get()).to.deep.equal({eng: {"Star Wars": true}, jpn: {"Staru Warsu": true}});
expect(root.get()).to.deep.equal({
titles: {eng: "Star Wars", jpn: "Staru Warsu"}
titles: {eng: {"Star Wars": true}, jpn: {"Staru Warsu": true}}
});
});
@@ -8,8 +8,9 @@ export interface VideoMeta {
increment?: string;
movieYear?: string;
videoType?: VideoType;
title?: string;//display title (localized); the one name to show
originalTitle?: string;//title in original language
titles?: LanguageData<string>;// <ISO 639-3 lang codes, title>
titles?: LanguageData<Record<string, true>>;// key-set: <ISO 639-3 lang code, {name: true}> — every clean name incl. AKAs (METADATA_KEYS.md §3)
}
export const VideoMetaFields = [