CueHelper.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using System;
  2. using System.Collections.Generic;
  3. using CueSplitter.Models;
  4. namespace CueSplitter.Helpers
  5. {
  6. internal class CueHelper
  7. {
  8. public static TrackModel[] ParseCue(string cueText, TimeSpan totalDuration)
  9. {
  10. var cue = new CueSharp_N.CueSheet(cueText, (char[])null);
  11. var convertedTracks = new List<TrackModel>(cue.Tracks.Length);
  12. TrackModel lastTrk = null;
  13. foreach (var track in cue.Tracks)
  14. {
  15. if (lastTrk != null)
  16. {
  17. lastTrk.Duration = track.Offset - lastTrk.Offset;
  18. }
  19. var model = new TrackModel
  20. {
  21. TrackNo = track.TrackNumber,
  22. Offset = track.Offset,
  23. Performer = track.Performer,
  24. Title = track.Title,
  25. };
  26. lastTrk = model;
  27. convertedTracks.Add(model);
  28. }
  29. if (lastTrk != null)
  30. {
  31. lastTrk.Duration = totalDuration - lastTrk.Offset;
  32. }
  33. return convertedTracks.ToArray();
  34. }
  35. }
  36. }