mirror of
https://github.com/Kareadita/Kavita.git
synced 2026-03-10 20:15:26 -04:00
Co-authored-by: Joseph Milazzo <joseph.v.milazzo@gmail.com> Co-authored-by: Joe Milazzo <josephmajora@gmail.com>
94 lines
4.0 KiB
C#
94 lines
4.0 KiB
C#
using System.Collections.Generic;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using Kavita.Common;
|
|
using Kavita.Models.DTOs.Collection;
|
|
using Kavita.Models.DTOs.KavitaPlus.Metadata;
|
|
using Kavita.Models.DTOs.Metadata.Matching;
|
|
using Kavita.Models.DTOs.SeriesDetail;
|
|
using Kavita.Models.Entities.Enums;
|
|
|
|
namespace Kavita.API.Services.Plus;
|
|
|
|
public interface IExternalMetadataService
|
|
{
|
|
public static readonly HashSet<LibraryType> NonEligibleLibraryTypes = [LibraryType.Comic, LibraryType.Book, LibraryType.Image];
|
|
|
|
/// <summary>
|
|
/// Retrieves Metadata about a Recommended External Series
|
|
/// </summary>
|
|
/// <param name="aniListId"></param>
|
|
/// <param name="malId"></param>
|
|
/// <param name="seriesId"></param>
|
|
/// <param name="ct"></param>
|
|
/// <returns></returns>
|
|
/// <exception cref="KavitaException"></exception>
|
|
Task<ExternalSeriesDetailDto?> GetExternalSeriesDetail(int? aniListId, long? malId, int? seriesId, CancellationToken ct = default);
|
|
|
|
/// <summary>
|
|
/// Returns Series Detail data from Kavita+ - Review, Recs, Ratings
|
|
/// </summary>
|
|
/// <param name="seriesId"></param>
|
|
/// <param name="libraryType"></param>
|
|
/// <param name="ct"></param>
|
|
/// <returns></returns>
|
|
Task<SeriesDetailPlusDto?> GetSeriesDetailPlus(int seriesId, LibraryType libraryType, CancellationToken ct = default);
|
|
/// <summary>
|
|
/// This is a task that runs on a schedule and slowly fetches data from Kavita+ to keep
|
|
/// data in the DB non-stale and fetched.
|
|
/// </summary>
|
|
/// <remarks>To avoid blasting Kavita+ API, this only processes 25 records. The goal is to slowly build out/refresh the data</remarks>
|
|
/// <returns></returns>
|
|
Task FetchExternalDataTask(CancellationToken ct = default);
|
|
|
|
/// <summary>
|
|
/// This is an entry point and provides a level of protection against calling upstream API. Will only allow 100 new
|
|
/// series to fetch data within a day and enqueues background jobs at certain times to fetch that data.
|
|
/// </summary>
|
|
/// <param name="seriesId"></param>
|
|
/// <param name="libraryType"></param>
|
|
/// <param name="ct"></param>
|
|
/// <returns>If the fetch was made</returns>
|
|
Task<bool> FetchSeriesMetadata(int seriesId, LibraryType libraryType, CancellationToken ct = default);
|
|
|
|
Task<IList<MalStackDto>> GetStacksForUser(int userId, CancellationToken ct = default);
|
|
|
|
/// <summary>
|
|
/// Returns the match results for a Series from UI Flow
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// Will extract alternative names like Localized name, year will send as ReleaseYear but fallback to Comic Vine syntax if applicable
|
|
/// </remarks>
|
|
/// <param name="dto"></param>
|
|
/// <param name="ct"></param>
|
|
/// <returns></returns>
|
|
Task<IList<ExternalSeriesMatchDto>> MatchSeries(MatchSeriesDto dto, CancellationToken ct = default);
|
|
|
|
/// <summary>
|
|
/// This will override any sort of matching that was done prior and force it to be what the user Selected
|
|
/// </summary>
|
|
/// <param name="seriesId"></param>
|
|
/// <param name="aniListId"></param>
|
|
/// <param name="malId"></param>
|
|
/// <param name="cbrId"></param>
|
|
/// <param name="ct"></param>
|
|
Task FixSeriesMatch(int seriesId, int? aniListId, long? malId, int? cbrId, CancellationToken ct = default);
|
|
|
|
/// <summary>
|
|
/// Sets a series to Don't Match and removes all previously cached
|
|
/// </summary>
|
|
/// <param name="seriesId"></param>
|
|
/// <param name="dontMatch"></param>
|
|
/// <param name="ct"></param>
|
|
Task UpdateSeriesDontMatch(int seriesId, bool dontMatch, CancellationToken ct = default);
|
|
|
|
/// <summary>
|
|
/// Given external metadata from Kavita+, write as much as possible to the Kavita series as possible
|
|
/// </summary>
|
|
/// <param name="externalMetadata"></param>
|
|
/// <param name="seriesId"></param>
|
|
/// <param name="ct"></param>
|
|
/// <returns></returns>
|
|
Task<bool> WriteExternalMetadataToSeries(ExternalSeriesDetailDto externalMetadata, int seriesId, CancellationToken ct = default);
|
|
}
|