66 lines
2.4 KiB
C#
66 lines
2.4 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Dinah.Core;
|
|
|
|
namespace AaxDecrypter
|
|
{
|
|
public static class Cue
|
|
{
|
|
public static string CreateContents(string filePath, Chapters chapters)
|
|
{
|
|
var stringBuilder = new StringBuilder();
|
|
|
|
stringBuilder.AppendLine(GetFileLine(filePath, "MP3"));
|
|
|
|
var beginningTimes = chapters.GetBeginningTimes().ToList();
|
|
for (var i = 0; i < beginningTimes.Count; i++)
|
|
{
|
|
var chapter = i + 1;
|
|
|
|
var timeSpan = beginningTimes[i];
|
|
var minutes = Math.Floor(timeSpan.TotalMinutes).ToString();
|
|
var seconds = timeSpan.Seconds.ToString("D2");
|
|
var milliseconds = (timeSpan.Milliseconds / 10).ToString("D2");
|
|
var time = minutes + ":" + seconds + ":" + milliseconds;
|
|
|
|
stringBuilder.AppendLine($"TRACK {chapter} AUDIO");
|
|
stringBuilder.AppendLine($" TITLE \"Chapter {chapter:D2}\"");
|
|
stringBuilder.AppendLine($" INDEX 01 {time}");
|
|
}
|
|
|
|
return stringBuilder.ToString();
|
|
}
|
|
|
|
public static void UpdateFileName(FileInfo cueFileInfo, string audioFilePath)
|
|
=> UpdateFileName(cueFileInfo.FullName, audioFilePath);
|
|
|
|
public static void UpdateFileName(string cueFilePath, FileInfo audioFileInfo)
|
|
=> UpdateFileName(cueFilePath, audioFileInfo.FullName);
|
|
|
|
public static void UpdateFileName(FileInfo cueFileInfo, FileInfo audioFileInfo)
|
|
=> UpdateFileName(cueFileInfo.FullName, audioFileInfo.FullName);
|
|
|
|
public static void UpdateFileName(string cueFilePath, string audioFilePath)
|
|
{
|
|
var cueContents = File.ReadAllLines(cueFilePath);
|
|
|
|
for (var i = 0; i < cueContents.Length; i++)
|
|
{
|
|
var line = cueContents[i];
|
|
if (!line.Trim().StartsWith("FILE") || !line.Contains(" "))
|
|
continue;
|
|
|
|
var fileTypeBegins = line.LastIndexOf(" ") + 1;
|
|
cueContents[i] = GetFileLine(audioFilePath, line[fileTypeBegins..]);
|
|
break;
|
|
}
|
|
|
|
File.WriteAllLines(cueFilePath, cueContents);
|
|
}
|
|
|
|
private static string GetFileLine(string filePath, string audioType) => $"FILE {Path.GetFileName(filePath).SurroundWithQuotes()} {audioType}";
|
|
}
|
|
}
|