align with metadata standard
This commit is contained in:
@@ -26,7 +26,8 @@ export function renamingRule(metamesh: Local, filepath?: string): string | null
|
|||||||
throw new Error(`No extension found for file: ${filepath}`);
|
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 (!title) {
|
||||||
if (metamesh.fileType !== "torrent") {
|
if (metamesh.fileType !== "torrent") {
|
||||||
//don't warn for torrent files because they don't always have a title (eg representing a folder of files)
|
//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.originalTitle) jellyfinFields.originalTitle = metadata.originalTitle;
|
||||||
if (metadata.movieYear) jellyfinFields.year = metadata.movieYear;
|
if (metadata.movieYear) jellyfinFields.year = metadata.movieYear;
|
||||||
|
|
||||||
// Titles (first title or original title)
|
// Title: the display name. `titles/*` is an unordered name set with no
|
||||||
if (metadata.titles) {
|
// preferred member, so it is never the NFO title (METADATA_KEYS.md §3).
|
||||||
const titleEntries = Object.entries(metadata.titles);
|
const title = metadata.title || metadata.originalTitle;
|
||||||
if (titleEntries.length > 0) {
|
if (title) jellyfinFields.title = title;
|
||||||
jellyfinFields.title = titleEntries[0][1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// IDs
|
// IDs
|
||||||
if (metadata.imdbid) jellyfinFields.imdbid = metadata.imdbid;
|
if (metadata.imdbid) jellyfinFields.imdbid = metadata.imdbid;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ export interface FileMetadata {
|
|||||||
|
|
||||||
// Filename parsing
|
// Filename parsing
|
||||||
title?: string;
|
title?: string;
|
||||||
titles?: string[];
|
titles?: Record<string, Record<string, true | string>>; // key-set: lang3 → {name: "true"}
|
||||||
originaltitle?: string;
|
originaltitle?: string;
|
||||||
showtitle?: string;
|
showtitle?: string;
|
||||||
season?: number;
|
season?: number;
|
||||||
|
|||||||
@@ -22,13 +22,13 @@ describe('MetaData', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should set and get nested metadata using nested keys', () => {
|
it('should set and get nested metadata using nested keys', () => {
|
||||||
root.at('titles').at('eng').set("Star Wars");
|
root.at('titles').at('eng').at('Star Wars').set(true);
|
||||||
root.at('titles').at('jpn').set("Staru Warsu");
|
root.at('titles').at('jpn').at('Staru Warsu').set(true);
|
||||||
expect(root.at('titles').at('eng').get()).to.equal("Star Wars");
|
expect(root.at('titles').at('eng').at('Star Wars').get()).to.equal(true);
|
||||||
expect(root.at('titles').at('jpn').get()).to.equal("Staru Warsu");
|
expect(root.at('titles').at('jpn').at('Staru Warsu').get()).to.equal(true);
|
||||||
expect(root.at('titles').get()).to.deep.equal({eng: "Star Wars", jpn: "Staru Warsu"});
|
expect(root.at('titles').get()).to.deep.equal({eng: {"Star Wars": true}, jpn: {"Staru Warsu": true}});
|
||||||
expect(root.get()).to.deep.equal({
|
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;
|
increment?: string;
|
||||||
movieYear?: string;
|
movieYear?: string;
|
||||||
videoType?: VideoType;
|
videoType?: VideoType;
|
||||||
|
title?: string;//display title (localized); the one name to show
|
||||||
originalTitle?: string;//title in original language
|
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 = [
|
export const VideoMetaFields = [
|
||||||
|
|||||||
Reference in New Issue
Block a user