Improved subtitle parsing to account for bare colon in title

This commit is contained in:
Khashayar Toodehfallah 2026-02-06 14:31:09 -05:00
parent fe13456a2b
commit c15cb48def
4 changed files with 22 additions and 5 deletions

View file

@ -35,7 +35,10 @@ describe('TitleCandidates', () => {
['adds candidate, removing author', `anna karenina by ${cleanAuthor}`, ['anna karenina']],
['does not add empty candidate after removing author', cleanAuthor, []],
['adds candidate, removing subtitle', 'anna karenina: subtitle', ['anna karenina']],
['adds candidate, not stripping subtitle for bare colon in title', '10:04', ['10:04']],
['adds candidate, not stripping subtitle for colon between words without space', 'making the mission:impossible movies', ['making the mission:impossible movies']],
['adds candidate + variant, removing "by ..."', 'anna karenina by arnold schwarzenegger', ['anna karenina', 'anna karenina by arnold schwarzenegger']],
['adds candidate + variant, removing "by ..." when title has bare colon', '10:04 by ben lerner', ['10:04', '10:04 by ben lerner']],
['adds candidate + variant, removing bitrate', 'anna karenina 64kbps', ['anna karenina', 'anna karenina 64kbps']],
['adds candidate + variant, removing edition 1', 'anna karenina 2nd edition', ['anna karenina', 'anna karenina 2nd edition']],
['adds candidate + variant, removing edition 2', 'anna karenina 4th ed.', ['anna karenina', 'anna karenina 4th ed.']],

View file

@ -21,6 +21,20 @@ describe('parseNfoMetadata', () => {
expect(result.subtitle).to.equal('A Novel')
})
it('does not split title on bare colon without space', () => {
const nfoText = 'Title: 10:04'
const result = parseNfoMetadata(nfoText)
expect(result.title).to.equal('10:04')
expect(result.subtitle).to.be.undefined
})
it('does not split title on colon between words without space', () => {
const nfoText = 'Title: Making the Mission:Impossible Movies'
const result = parseNfoMetadata(nfoText)
expect(result.title).to.equal('Making the Mission:Impossible Movies')
expect(result.subtitle).to.be.undefined
})
it('parses authors', () => {
const nfoText = 'Author: F. Scott Fitzgerald'
const result = parseNfoMetadata(nfoText)