Making show/episodes images be download

This commit is contained in:
Zoe Roux 2020-01-27 01:05:00 +01:00
parent f16003a2b9
commit 994992c9aa
6 changed files with 27 additions and 32 deletions

View File

@ -7,9 +7,9 @@ namespace Kyoo.Controllers
public interface IProviderManager
{
Task<Collection> GetCollectionFromName(string name, Library library);
Task<Show> GetShowFromName(string showName, Library library);
Task<Show> GetShowFromName(string showName, string showPath, Library library);
Task<Season> GetSeason(Show show, long seasonNumber, Library library);
Task<Episode> GetEpisode(Show show, long seasonNumber, long episodeNumber, long absoluteNumber, Library library);
Task<Episode> GetEpisode(Show show, string episodePath, long seasonNumber, long episodeNumber, long absoluteNumber, Library library);
Task<IEnumerable<People>> GetPeople(Show show, Library library);
}
}

View File

@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Kyoo.Controllers.ThumbnailsManager
namespace Kyoo.Controllers
{
public interface IThumbnailsManager
{

View File

@ -2,7 +2,6 @@
using Kyoo.Models;
using Microsoft.Extensions.Configuration;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
@ -137,10 +136,7 @@ namespace Kyoo.Controllers
if (!libraryManager.IsShowRegistered(showPath, out long showID))
{
Show show = await metadataProvider.GetShowFromName(showTitle, library);
show.Path = showPath;
show.Title = show.Title ?? showTitle;
show.Slug = show.Slug ?? Utility.ToSlug(showTitle);
Show show = await metadataProvider.GetShowFromName(showTitle, showPath, library);
showProviderIDs = show.ExternalIDs;
showID = libraryManager.RegisterShow(show);
@ -170,15 +166,11 @@ namespace Kyoo.Controllers
private async Task<long> RegisterSeason(Show show, long seasonNumber, Library library)
{
if (!libraryManager.IsSeasonRegistered(show.ID, seasonNumber, out long seasonID))
{
Season season = await metadataProvider.GetSeason(show, seasonNumber, library);
season.ShowID = show.ID;
season.SeasonNumber = season.SeasonNumber == -1 ? seasonNumber : season.SeasonNumber;
season.Title ??= $"Season {season.SeasonNumber}";
seasonID = libraryManager.RegisterSeason(season);
}
if (libraryManager.IsSeasonRegistered(show.ID, seasonNumber, out long seasonID))
return seasonID;
Season season = await metadataProvider.GetSeason(show, seasonNumber, library);
seasonID = libraryManager.RegisterSeason(season);
return seasonID;
}
@ -188,13 +180,7 @@ namespace Kyoo.Controllers
if (seasonNumber != -1)
seasonID = await RegisterSeason(show, seasonNumber, library);
Episode episode = await metadataProvider.GetEpisode(show, seasonNumber, episodeNumber, absoluteNumber, library);
episode.ShowID = show.ID;
episode.Path = episodePath;
episode.SeasonNumber = episode.SeasonNumber != -1 ? episode.SeasonNumber : seasonNumber;
episode.EpisodeNumber = episode.EpisodeNumber != -1 ? episode.EpisodeNumber : episodeNumber;
episode.AbsoluteNumber = episode.AbsoluteNumber != -1 ? episode.AbsoluteNumber : absoluteNumber;
Episode episode = await metadataProvider.GetEpisode(show, episodePath, seasonNumber, episodeNumber, absoluteNumber, library);
if (seasonID == -1)
seasonID = await RegisterSeason(show, seasonNumber, library);
episode.SeasonID = seasonID;

View File

@ -3,7 +3,6 @@ using Kyoo.Models;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Kyoo.Controllers.ThumbnailsManager;
namespace Kyoo.Controllers
{
@ -57,21 +56,33 @@ namespace Kyoo.Controllers
return await GetMetadata(provider => provider.GetCollectionFromName(name), library, $"the collection {name}");
}
public async Task<Show> GetShowFromName(string showName, Library library)
public async Task<Show> GetShowFromName(string showName, string showPath, Library library)
{
Show show = await GetMetadata(provider => provider.GetShowFromName(showName), library, $"the show {showName}");
show.Path = showPath;
show.Slug = Utility.ToSlug(showName);
show.Title ??= showName;
await thumbnailsManager.Validate(show);
return show;
}
public async Task<Season> GetSeason(Show show, long seasonNumber, Library library)
{
return await GetMetadata(provider => provider.GetSeason(show, seasonNumber), library, $"the season {seasonNumber} of {show.Title}");
Season season = await GetMetadata(provider => provider.GetSeason(show, seasonNumber), library, $"the season {seasonNumber} of {show.Title}");
season.ShowID = show.ID;
season.SeasonNumber = season.SeasonNumber == -1 ? seasonNumber : season.SeasonNumber;
season.Title ??= $"Season {season.SeasonNumber}";
return season;
}
public async Task<Episode> GetEpisode(Show show, long seasonNumber, long episodeNumber, long absoluteNumber, Library library)
public async Task<Episode> GetEpisode(Show show, string episodePath, long seasonNumber, long episodeNumber, long absoluteNumber, Library library)
{
Episode episode = await GetMetadata(provider => provider.GetEpisode(show, seasonNumber, episodeNumber, absoluteNumber), library, "an episode");
episode.ShowID = show.ID;
episode.Path = episodePath;
episode.SeasonNumber = episode.SeasonNumber != -1 ? episode.SeasonNumber : seasonNumber;
episode.EpisodeNumber = episode.EpisodeNumber != -1 ? episode.EpisodeNumber : episodeNumber;
episode.AbsoluteNumber = episode.AbsoluteNumber != -1 ? episode.AbsoluteNumber : absoluteNumber;
await thumbnailsManager.Validate(episode);
return episode;
}

View File

@ -2,12 +2,11 @@
using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Threading.Tasks;
namespace Kyoo.Controllers.ThumbnailsManager
namespace Kyoo.Controllers
{
public class ThumbnailsManager : IThumbnailsManager
{
@ -20,7 +19,7 @@ namespace Kyoo.Controllers.ThumbnailsManager
public async Task<Show> Validate(Show show)
{
if (show == null || show.Path == null)
if (show?.Path == null)
return null;
string localThumb = Path.Combine(show.Path, "poster.jpg");
string localLogo = Path.Combine(show.Path, "logo.png");

View File

@ -1,5 +1,4 @@
using Kyoo.Controllers;
using Kyoo.Controllers.ThumbnailsManager;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.SpaServices.AngularCli;