mirror of
https://github.com/Kareadita/Kavita.git
synced 2025-06-04 14:14:39 -04:00
* Fixed a case where chapter was being parsed incorrectly when the series title ends in a number. * Updated Kavita to support Tome/T notation found in French comics * Added support for identifying European specials and expanded support for cleaning some tags used in European comics. During cleaning, if series starts with - or comma, remove it. * Fixed an issue where add to collection for a single series wasn't calling the bulk action handler * Fixed a NPE on AgeRating conversion. Fixed a bug where when looking for cover image, file extensions was throwing off sort code. * Refactored Natural Sort ordering to better follow how Windows behaves. This is a departure from how the original code executes. * GetCachedPagePath now uses natural sorting to pick the images for reading in a more correct order. * Updated parser to handle a case where there was more than one space as a separator
84 lines
2.9 KiB
C#
84 lines
2.9 KiB
C#
using System;
|
|
using System.Linq;
|
|
using API.Entities.Enums;
|
|
using Kavita.Common.Extensions;
|
|
|
|
namespace API.Data.Metadata
|
|
{
|
|
/// <summary>
|
|
/// A representation of a ComicInfo.xml file
|
|
/// </summary>
|
|
/// <remarks>See reference of the loose spec here: https://github.com/Kussie/ComicInfoStandard/blob/main/ComicInfo.xsd</remarks>
|
|
public class ComicInfo
|
|
{
|
|
public string Summary { get; set; }
|
|
public string Title { get; set; }
|
|
public string Series { get; set; }
|
|
public string Number { get; set; }
|
|
public string Volume { get; set; }
|
|
public string Notes { get; set; }
|
|
public string Genre { get; set; }
|
|
public int PageCount { get; set; }
|
|
// ReSharper disable once InconsistentNaming
|
|
public string LanguageISO { get; set; }
|
|
/// <summary>
|
|
/// This is the link to where the data was scraped from
|
|
/// </summary>
|
|
public string Web { get; set; }
|
|
public int Day { get; set; }
|
|
public int Month { get; set; }
|
|
public int Year { get; set; }
|
|
|
|
|
|
/// <summary>
|
|
/// Rating based on the content. Think PG-13, R for movies. See <see cref="AgeRating"/> for valid types
|
|
/// </summary>
|
|
public string AgeRating { get; set; }
|
|
|
|
// public AgeRating AgeRating
|
|
// {
|
|
// get => ConvertAgeRatingToEnum(_AgeRating);
|
|
// set => ConvertAgeRatingToEnum(value);
|
|
// }
|
|
/// <summary>
|
|
/// User's rating of the content
|
|
/// </summary>
|
|
public float UserRating { get; set; }
|
|
|
|
public string AlternateSeries { get; set; }
|
|
public string StoryArc { get; set; }
|
|
public string SeriesGroup { get; set; }
|
|
public string AlternativeSeries { get; set; }
|
|
public string AlternativeNumber { get; set; }
|
|
|
|
/// <summary>
|
|
/// This is Epub only: calibre:title_sort
|
|
/// Represents the sort order for the title
|
|
/// </summary>
|
|
public string TitleSort { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// This is the Author. For Books, we map creator tag in OPF to this field. Comma separated if multiple.
|
|
/// </summary>
|
|
public string Writer { get; set; }
|
|
public string Penciller { get; set; }
|
|
public string Inker { get; set; }
|
|
public string Colorist { get; set; }
|
|
public string Letterer { get; set; }
|
|
public string CoverArtist { get; set; }
|
|
public string Editor { get; set; }
|
|
public string Publisher { get; set; }
|
|
|
|
public static AgeRating ConvertAgeRatingToEnum(string value)
|
|
{
|
|
if (string.IsNullOrEmpty(value)) return Entities.Enums.AgeRating.Unknown;
|
|
return Enum.GetValues<AgeRating>()
|
|
.SingleOrDefault(t => t.ToDescription().ToUpperInvariant().Equals(value.ToUpperInvariant()), Entities.Enums.AgeRating.Unknown);
|
|
}
|
|
|
|
}
|
|
}
|