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 public interface IProviderManager
{ {
Task<Collection> GetCollectionFromName(string name, Library library); 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<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); Task<IEnumerable<People>> GetPeople(Show show, Library library);
} }
} }

View File

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

View File

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

View File

@ -3,7 +3,6 @@ using Kyoo.Models;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Kyoo.Controllers.ThumbnailsManager;
namespace Kyoo.Controllers namespace Kyoo.Controllers
{ {
@ -57,21 +56,33 @@ namespace Kyoo.Controllers
return await GetMetadata(provider => provider.GetCollectionFromName(name), library, $"the collection {name}"); 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 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); await thumbnailsManager.Validate(show);
return show; return show;
} }
public async Task<Season> GetSeason(Show show, long seasonNumber, Library library) 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 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); await thumbnailsManager.Validate(episode);
return episode; return episode;
} }

View File

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

View File

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