38 lines
1.4 KiB
C#
38 lines
1.4 KiB
C#
namespace LetterBoxdUnwatchedGenerator
|
|
{
|
|
public class LetterBoxdWatchedMovie : IMovie
|
|
{
|
|
public DateTime Date { get; }
|
|
public string Title { get; }
|
|
public int Year { get; }
|
|
public string LetterboxdUri { get; }
|
|
|
|
public LetterBoxdWatchedMovie(DateTime date, string title, int year, string letterboxdUri)
|
|
{
|
|
Date = date;
|
|
Title = title;
|
|
Year = year;
|
|
LetterboxdUri = letterboxdUri;
|
|
}
|
|
|
|
public static IEnumerable<LetterBoxdWatchedMovie> FromFile(string path)
|
|
{
|
|
var lines = File.ReadAllLines(path);
|
|
|
|
if (lines.Length < 1 || !lines[0].StartsWith("Date,Name,Year,Letterboxd URI")) return Enumerable.Empty<LetterBoxdWatchedMovie>();
|
|
|
|
return lines.Skip(1).Select(line =>
|
|
{
|
|
var lineParts = line.SplitCommandLine(',');
|
|
|
|
var date = !string.IsNullOrEmpty(lineParts.First()) && DateTime.TryParse(lineParts.First(), out DateTime dateOut) ? dateOut : DateTime.MinValue;
|
|
var title = lineParts.Skip(1).First();
|
|
var year = !string.IsNullOrEmpty(lineParts.Skip(2).First()) && int.TryParse(lineParts.Skip(2).First(), out int yearOut) ? yearOut : 0;
|
|
var letterboxdUri = lineParts.Skip(3).First();
|
|
|
|
return new LetterBoxdWatchedMovie(date, title, year, letterboxdUri);
|
|
});
|
|
}
|
|
}
|
|
}
|