Implementing movies inside the database

This commit is contained in:
Zoe Roux 2020-02-29 22:47:19 +01:00
parent 5aa222d799
commit d5925f386b
4 changed files with 32 additions and 4 deletions

View File

@ -53,6 +53,7 @@ namespace Kyoo.Controllers
//Register values
long RegisterCollection(Collection collection);
long RegisterShow(Show show);
long RegisterMovie(Episode movie);
long RegisterSeason(Season season);
long RegisterEpisode(Episode episode);
long RegisterTrack(Track track);

View File

@ -10,7 +10,7 @@ namespace Kyoo.Models
[JsonIgnore] public long ID { get; set; }
[JsonIgnore] public long ShowID { get; set; }
[JsonIgnore] public virtual Show Show { get; set; }
[JsonIgnore] public long SeasonID { get; set; }
[JsonIgnore] public long? SeasonID { get; set; }
[JsonIgnore] public virtual Season Season { get; set; }
public long SeasonNumber { get; set; }

View File

@ -1,4 +1,5 @@
using System;
using System.Collections;
using Kyoo.Models;
using Microsoft.Extensions.Configuration;
using System.Collections.Generic;
@ -84,7 +85,7 @@ namespace Kyoo.Controllers
bool isMovie = seasonNumber == -1 && episodeNumber == -1 && absoluteNumber == -1;
Show show = await GetShow(showName, showPath, isMovie, library);
if (isMovie)
_libraryManager.RegisterShow(show);
_libraryManager.RegisterMovie(await GetMovie(show, path));
else
{
Season season = await GetSeason(show, seasonNumber, library);
@ -138,13 +139,29 @@ namespace Kyoo.Controllers
Console.Error.WriteLine("\tError: You don't have any provider that support absolute epiode numbering. Install one and try again.");
return null;
}
await GetTracks(episode);
return episode;
}
private async Task<Episode> GetMovie(Show show, string episodePath)
{
Episode episode = new Episode();
episode.Title = show.Title;
episode.Path = episodePath;
episode.Show = show;
episode.Tracks = await GetTracks(episode);
return episode;
}
private async Task<IEnumerable<Track>> GetTracks(Episode episode)
{
IEnumerable<Track> tracks = await _transcoder.GetTrackInfo(episode.Path);
List<Track> epTracks = tracks.Where(x => x.Type != StreamType.Subtitle).Concat(GetExtractedSubtitles(episode)).ToList();
if (epTracks.Count(x => !x.IsExternal) < tracks.Count())
epTracks.AddRange(await _transcoder.ExtractSubtitles(episode.Path));
episode.Tracks = epTracks;
return episode;
return epTracks;
}
private static IEnumerable<Track> GetExtractedSubtitles(Episode episode)

View File

@ -328,6 +328,16 @@ namespace Kyoo.Controllers
return show.ID;
}
public long RegisterMovie(Episode movie)
{
if (movie == null)
return 0;
if (_database.Entry(movie).State == EntityState.Detached)
_database.Episodes.Add(movie);
_database.SaveChanges();
return movie.ID;
}
public long RegisterSeason(Season season)
{
if (season == null)