namespace LetterBoxdUnwatchedGenerator { public class LocalMovie : IMovie { public string Title { get; } public int Year { get; } public string? Resolution { get; } public string Directory { get; } public LocalMovie(string title, int year, string? resolution, string directory) { Title = title; Year = year; Resolution = resolution; Directory = directory; } public static LocalMovie FromDirectory(string directoryName, string directoryFullName) { string title; int? year; string? resolution; var yearIndex = directoryName.LastIndexOf('('); var resolutionIndex = directoryName.LastIndexOf('['); if (yearIndex == -1) { year = null; if (resolutionIndex == -1) { resolution = null; title = directoryName; } else { resolution = directoryName.Substring(resolutionIndex + 1, directoryName.LastIndexOf(']') - resolutionIndex - 1); title = directoryName[..(resolutionIndex - 1)].Trim(); } } else { if (int.TryParse(directoryName.AsSpan(yearIndex + 1, directoryName.LastIndexOf(')') - yearIndex - 1), out int yearConverted)) year = yearConverted; else year = null; if (resolutionIndex == -1) { resolution = null; title = directoryName[..(yearIndex - 1)].Trim(); } else { resolution = directoryName.Substring(resolutionIndex + 1, directoryName.LastIndexOf(']') - resolutionIndex - 1); title = directoryName[..(yearIndex - 1)].Trim(); } } return new LocalMovie(title, year ?? 0, resolution, directoryFullName); } } }