mirror of
				https://github.com/zoriya/Kyoo.git
				synced 2025-11-04 03:27:14 -05:00 
			
		
		
		
	Cleaning up
This commit is contained in:
		
							parent
							
								
									c8e3e92491
								
							
						
					
					
						commit
						7530d239d9
					
				@ -10,6 +10,7 @@ namespace Kyoo.Controllers
 | 
			
		||||
		Library GetLibrary(string librarySlug);
 | 
			
		||||
		Collection GetCollection(string slug);
 | 
			
		||||
		Show GetShow(string slug);
 | 
			
		||||
		Season GetSeason(string showSlug, long seasonNumber);
 | 
			
		||||
		Episode GetEpisode(string showSlug, long seasonNumber, long episodeNumber);
 | 
			
		||||
		Episode GetMovieEpisode(string movieSlug);
 | 
			
		||||
		Genre GetGenre(string slug);
 | 
			
		||||
@ -18,9 +19,12 @@ namespace Kyoo.Controllers
 | 
			
		||||
 | 
			
		||||
		// Get all
 | 
			
		||||
		IEnumerable<Library> GetLibraries();
 | 
			
		||||
		IEnumerable<Collection> GetCollections();
 | 
			
		||||
		IEnumerable<Show> GetShows();
 | 
			
		||||
		IEnumerable<Episode> GetEpisodes();
 | 
			
		||||
		IEnumerable<Track> GetTracks();
 | 
			
		||||
		IEnumerable<Studio> GetStudios();
 | 
			
		||||
		IEnumerable<People> GetPeoples();
 | 
			
		||||
		IEnumerable<Genre> GetGenres();
 | 
			
		||||
 | 
			
		||||
		// Search
 | 
			
		||||
 | 
			
		||||
@ -34,6 +34,11 @@ namespace Kyoo.Controllers
 | 
			
		||||
			return _database.Shows.FirstOrDefault(show => show.Slug == slug);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public Season GetSeason(string showSlug, long seasonNumber)
 | 
			
		||||
		{
 | 
			
		||||
			return _database.Seasons.FirstOrDefault(x => x.Show.Slug == showSlug && x.SeasonNumber == seasonNumber);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public Episode GetEpisode(string showSlug, long seasonNumber, long episodeNumber)
 | 
			
		||||
		{
 | 
			
		||||
			return _database.Episodes.FirstOrDefault(x => x.EpisodeNumber == episodeNumber
 | 
			
		||||
@ -68,9 +73,14 @@ namespace Kyoo.Controllers
 | 
			
		||||
			return _database.Libraries;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public IEnumerable<Collection> GetCollections()
 | 
			
		||||
		{
 | 
			
		||||
			return _database.Collections;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public IEnumerable<Show> GetShows()
 | 
			
		||||
		{
 | 
			
		||||
			return _database.LibraryLinks.AsEnumerable().Select(x => x.Show ?? x.Collection.AsShow());
 | 
			
		||||
			return _database.Shows;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		public IEnumerable<Episode> GetEpisodes()
 | 
			
		||||
@ -87,6 +97,17 @@ namespace Kyoo.Controllers
 | 
			
		||||
		{
 | 
			
		||||
			return _database.Studios;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public IEnumerable<People> GetPeoples()
 | 
			
		||||
		{
 | 
			
		||||
			return _database.Peoples;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public IEnumerable<Track> GetTracks()
 | 
			
		||||
		{
 | 
			
		||||
			return _database.Tracks;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		#endregion
 | 
			
		||||
		
 | 
			
		||||
		#region GetHelper
 | 
			
		||||
 | 
			
		||||
@ -37,7 +37,7 @@ namespace Kyoo.Api
 | 
			
		||||
		[Authorize(Policy="Read")]
 | 
			
		||||
		public IEnumerable<Show> GetShows()
 | 
			
		||||
		{
 | 
			
		||||
			return _libraryManager.GetShows();
 | 
			
		||||
			return _database.LibraryLinks.AsEnumerable().Select(x => x.Show ?? x.Collection.AsShow());
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		[HttpGet("{slug}")]
 | 
			
		||||
 | 
			
		||||
@ -1,8 +1,8 @@
 | 
			
		||||
using System;
 | 
			
		||||
using Kyoo.Models;
 | 
			
		||||
using Kyoo.Models;
 | 
			
		||||
using Microsoft.AspNetCore.Mvc;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using Kyoo.Controllers;
 | 
			
		||||
using Microsoft.AspNetCore.Authorization;
 | 
			
		||||
@ -31,22 +31,21 @@ namespace Kyoo.Api
 | 
			
		||||
			Track subtitle = null;
 | 
			
		||||
			
 | 
			
		||||
			if (languageTag != null)
 | 
			
		||||
				subtitle = _libraryManager.GetSubtitle(showSlug, seasonNumber, episodeNumber, languageTag, forced);
 | 
			
		||||
				subtitle = _libraryManager.GetEpisode(showSlug, seasonNumber, episodeNumber)?.Tracks
 | 
			
		||||
					.FirstOrDefault(x => x.Language == languageTag && x.IsForced == forced);
 | 
			
		||||
				
 | 
			
		||||
			if (subtitle == null)
 | 
			
		||||
			{
 | 
			
		||||
				string idString = identifier.IndexOf('-') != -1 ? identifier.Substring(0, identifier.IndexOf('-')) : identifier;
 | 
			
		||||
				long.TryParse(idString, out long id);
 | 
			
		||||
				subtitle = _libraryManager.GetSubtitleById(id);
 | 
			
		||||
				subtitle = _libraryManager.GetTracks().FirstOrDefault(x => x.ID == id);
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			if (subtitle == null)
 | 
			
		||||
				return NotFound();
 | 
			
		||||
			
 | 
			
		||||
			if (subtitle.Codec == "subrip" && extension == "vtt") //The request wants a WebVTT from a Subrip subtitle, convert it on the fly and send it.
 | 
			
		||||
			{
 | 
			
		||||
			if (subtitle.Codec == "subrip" && extension == "vtt")
 | 
			
		||||
				return new ConvertSubripToVtt(subtitle.Path);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			string mime;
 | 
			
		||||
			if (subtitle.Codec == "ass")
 | 
			
		||||
@ -54,7 +53,7 @@ namespace Kyoo.Api
 | 
			
		||||
			else
 | 
			
		||||
				mime = "application/x-subrip";
 | 
			
		||||
 | 
			
		||||
			//Should use appropriate mime type here
 | 
			
		||||
			// TODO Should use appropriate mime type here
 | 
			
		||||
			return PhysicalFile(subtitle.Path, mime);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@ -63,15 +62,15 @@ namespace Kyoo.Api
 | 
			
		||||
		public async Task<string> ExtractSubtitle(string showSlug, long seasonNumber, long episodeNumber)
 | 
			
		||||
		{
 | 
			
		||||
			Episode episode = _libraryManager.GetEpisode(showSlug, seasonNumber, episodeNumber);
 | 
			
		||||
			_libraryManager.ClearSubtitles(episode.ID);
 | 
			
		||||
			episode.Tracks = null;
 | 
			
		||||
 | 
			
		||||
			Track[] tracks = await _transcoder.ExtractSubtitles(episode.Path);
 | 
			
		||||
			foreach (Track track in tracks)
 | 
			
		||||
			{
 | 
			
		||||
				track.EpisodeID = episode.ID;
 | 
			
		||||
				_libraryManager.RegisterTrack(track);
 | 
			
		||||
				_libraryManager.Register(track);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			await _libraryManager.SaveChanges();
 | 
			
		||||
			return "Done. " + tracks.Length + " track(s) extracted.";
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@ -79,17 +78,18 @@ namespace Kyoo.Api
 | 
			
		||||
		[Authorize(Policy="Admin")]
 | 
			
		||||
		public async Task<string> ExtractSubtitle(string showSlug)
 | 
			
		||||
		{
 | 
			
		||||
			IEnumerable<Episode> episodes = _libraryManager.GetEpisodes(showSlug);
 | 
			
		||||
			IEnumerable<Episode> episodes = _libraryManager.GetShow(showSlug).Episodes;
 | 
			
		||||
			foreach (Episode episode in episodes)
 | 
			
		||||
			{
 | 
			
		||||
				_libraryManager.ClearSubtitles(episode.ID);
 | 
			
		||||
				episode.Tracks = null;
 | 
			
		||||
 | 
			
		||||
				Track[] tracks = await _transcoder.ExtractSubtitles(episode.Path);
 | 
			
		||||
				foreach (Track track in tracks)
 | 
			
		||||
				{
 | 
			
		||||
					track.EpisodeID = episode.ID;
 | 
			
		||||
					_libraryManager.RegisterTrack(track);
 | 
			
		||||
					_libraryManager.Register(track);
 | 
			
		||||
				}
 | 
			
		||||
				await _libraryManager.SaveChanges();
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return "Done.";
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user