Skip to content

Commit 1e38856

Browse files
authored
stl: improve error messages (#128)
* stl: improve error messages * stl: ignore atoi errors when parsing totalNumberOfDisks and diskSequenceNumber * stl: ignore revisionNumber parsing errors, as this field is useless in converting subs * stl: restore astisub prefix in error messages * parseDurationSTL: restore astisub prefix
1 parent 083c8fc commit 1e38856

1 file changed

Lines changed: 18 additions & 21 deletions

File tree

stl.go

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -444,96 +444,93 @@ func parseGSIBlock(b []byte) (g *gsiBlock, err error) {
444444
// Creation date
445445
if v := strings.TrimSpace(string(b[224:230])); len(v) > 0 {
446446
if g.creationDate, err = time.Parse("060102", v); err != nil {
447-
err = fmt.Errorf("astisub: parsing date %s failed: %w", v, err)
447+
err = fmt.Errorf("astisub: parsing creationDate %s failed: %w", v, err)
448448
return
449449
}
450450
}
451451

452452
// Revision date
453453
if v := strings.TrimSpace(string(b[230:236])); len(v) > 0 {
454454
if g.revisionDate, err = time.Parse("060102", v); err != nil {
455-
err = fmt.Errorf("astisub: parsing date %s failed: %w", v, err)
455+
err = fmt.Errorf("astisub: parsing revisionDate %s failed: %w", v, err)
456456
return
457457
}
458458
}
459459

460460
// Revision number
461461
if v := strings.TrimSpace(string(b[236:238])); len(v) > 0 {
462-
if g.revisionNumber, err = strconv.Atoi(v); err != nil {
463-
err = fmt.Errorf("astisub: atoi of %s failed: %w", v, err)
464-
return
465-
}
462+
g.revisionNumber, _ = strconv.Atoi(v)
466463
}
467464

468465
// Total number of TTI blocks
469466
if v := strings.TrimSpace(string(b[238:243])); len(v) > 0 {
470467
if g.totalNumberOfTTIBlocks, err = strconv.Atoi(v); err != nil {
471-
err = fmt.Errorf("astisub: atoi of %s failed: %w", v, err)
468+
err = fmt.Errorf("astisub: totalNumberOfTTIBlocks atoi of %s failed: %w", v, err)
472469
return
473470
}
474471
}
475472

476473
// Total number of subtitles
477474
if v := strings.TrimSpace(string(b[243:248])); len(v) > 0 {
478475
if g.totalNumberOfSubtitles, err = strconv.Atoi(v); err != nil {
479-
err = fmt.Errorf("astisub: atoi of %s failed: %w", v, err)
476+
err = fmt.Errorf("astisub: totalNumberOfSubtitles atoi of %s failed: %w", v, err)
480477
return
481478
}
482479
}
483480

484481
// Total number of subtitle groups
485482
if v := strings.TrimSpace(string(b[248:251])); len(v) > 0 {
486483
if g.totalNumberOfSubtitleGroups, err = strconv.Atoi(v); err != nil {
487-
err = fmt.Errorf("astisub: atoi of %s failed: %w", v, err)
484+
err = fmt.Errorf("astisub: totalNumberOfSubtitleGroups atoi of %s failed: %w", v, err)
488485
return
489486
}
490487
}
491488

492489
// Maximum number of displayable characters in any text row
493490
if v := strings.TrimSpace(string(b[251:253])); len(v) > 0 {
494491
if g.maximumNumberOfDisplayableCharactersInAnyTextRow, err = strconv.Atoi(v); err != nil {
495-
err = fmt.Errorf("astisub: atoi of %s failed: %w", v, err)
492+
err = fmt.Errorf("astisub: maximumNumberOfDisplayableCharactersInAnyTextRow atoi of %s failed: %w", v, err)
496493
return
497494
}
498495
}
499496

500497
// Maximum number of displayable rows
501498
if v := strings.TrimSpace(string(b[253:255])); len(v) > 0 {
502499
if g.maximumNumberOfDisplayableRows, err = strconv.Atoi(v); err != nil {
503-
err = fmt.Errorf("astisub: atoi of %s failed: %w", v, err)
500+
err = fmt.Errorf("astisub: maximumNumberOfDisplayableRows atoi of %s failed: %w", v, err)
504501
return
505502
}
506503
}
507504

508505
// Timecode start of programme
509506
if v := strings.TrimSpace(string(b[256:264])); len(v) > 0 {
510507
if g.timecodeStartOfProgramme, err = parseDurationSTL(v, g.framerate); err != nil {
511-
err = fmt.Errorf("astisub: parsing of stl duration %s failed: %w", v, err)
508+
err = fmt.Errorf("astisub: parsing of timecodeStartOfProgramme duration %s failed: %w", v, err)
512509
return
513510
}
514511
}
515512

516513
// Timecode first in cue
517514
if v := strings.TrimSpace(string(b[264:272])); len(v) > 0 {
518515
if g.timecodeFirstInCue, err = parseDurationSTL(v, g.framerate); err != nil {
519-
err = fmt.Errorf("astisub: parsing of stl duration %s failed: %w", v, err)
516+
err = fmt.Errorf("astisub: parsing of timecodeFirstInCue duration %s failed: %w", v, err)
520517
return
521518
}
522519
}
523520

524521
// Total number of disks
525522
if v := strings.TrimSpace(string(b[272])); len(v) > 0 {
526523
if g.totalNumberOfDisks, err = strconv.Atoi(v); err != nil {
527-
err = fmt.Errorf("astisub: atoi of %s failed: %w", v, err)
528-
return
524+
g.totalNumberOfDisks = 1
525+
err = nil
529526
}
530527
}
531528

532529
// Disk sequence number
533530
if v := strings.TrimSpace(string(b[273])); len(v) > 0 {
534531
if g.diskSequenceNumber, err = strconv.Atoi(v); err != nil {
535-
err = fmt.Errorf("astisub: atoi of %s failed: %w", v, err)
536-
return
532+
g.diskSequenceNumber = 1
533+
err = nil
537534
}
538535
}
539536
return
@@ -587,28 +584,28 @@ func parseDurationSTL(i string, framerate int) (d time.Duration, err error) {
587584
// Parse hours
588585
var hours, hoursString = 0, i[0:2]
589586
if hours, err = strconv.Atoi(hoursString); err != nil {
590-
err = fmt.Errorf("astisub: atoi of %s failed: %w", hoursString, err)
587+
err = fmt.Errorf("astisub: hours atoi of %s failed: %w", hoursString, err)
591588
return
592589
}
593590

594591
// Parse minutes
595592
var minutes, minutesString = 0, i[2:4]
596593
if minutes, err = strconv.Atoi(minutesString); err != nil {
597-
err = fmt.Errorf("astisub: atoi of %s failed: %w", minutesString, err)
594+
err = fmt.Errorf("astisub: minutes atoi of %s failed: %w", minutesString, err)
598595
return
599596
}
600597

601598
// Parse seconds
602599
var seconds, secondsString = 0, i[4:6]
603600
if seconds, err = strconv.Atoi(secondsString); err != nil {
604-
err = fmt.Errorf("astisub: atoi of %s failed: %w", secondsString, err)
601+
err = fmt.Errorf("astisub: seconds atoi of %s failed: %w", secondsString, err)
605602
return
606603
}
607604

608605
// Parse frames
609606
var frames, framesString = 0, i[6:8]
610607
if frames, err = strconv.Atoi(framesString); err != nil {
611-
err = fmt.Errorf("astisub: atoi of %s failed: %w", framesString, err)
608+
err = fmt.Errorf("astisub: frames atoi of %s failed: %w", framesString, err)
612609
return
613610
}
614611

0 commit comments

Comments
 (0)