mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-24 02:02:36 -04:00
Making the plugin manager start on app startup
This commit is contained in:
parent
899adb2b9d
commit
3e9da31ac5
@ -14,12 +14,12 @@ namespace Kyoo.Controllers
|
||||
//For the show
|
||||
Task<Show> GetShowByID(string id);
|
||||
Task<Show> GetShowFromName(string showName);
|
||||
Task<IEnumerable<People>> GetPeople(string id);
|
||||
Task<IEnumerable<People>> GetPeople(Show show);
|
||||
|
||||
//For the seasons
|
||||
Task<Season> GetSeason(string showName, long seasonNumber);
|
||||
|
||||
//For the episodes
|
||||
Task<Episode> GetEpisode(string externalIDs, long seasonNumber, long episodeNumber, long absoluteNumber);
|
||||
Task<Episode> GetEpisode(Show show, long seasonNumber, long episodeNumber, long absoluteNumber);
|
||||
}
|
||||
}
|
||||
|
@ -9,7 +9,7 @@ namespace Kyoo.Controllers
|
||||
Task<Collection> GetCollectionFromName(string name, Library library);
|
||||
Task<Show> GetShowFromName(string showName, Library library);
|
||||
Task<Season> GetSeason(string showName, long seasonNumber, Library library);
|
||||
Task<Episode> GetEpisode(string externalIDs, long seasonNumber, long episodeNumber, long absoluteNumber, Library library);
|
||||
Task<IEnumerable<People>> GetPeople(string showExternalIDs, Library library);
|
||||
Task<Episode> GetEpisode(Show show, long seasonNumber, long episodeNumber, long absoluteNumber, Library library);
|
||||
Task<IEnumerable<People>> GetPeople(Show show, Library library);
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp3.0</TargetFramework>
|
||||
@ -11,7 +11,7 @@
|
||||
<Company>SDG</Company>
|
||||
<PackageLicenseExpression>GPL-3.0-or-later</PackageLicenseExpression>
|
||||
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
|
||||
<PackageVersion>1.0.2</PackageVersion>
|
||||
<PackageVersion>1.0.5</PackageVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
@ -132,9 +132,11 @@ namespace Kyoo.Models
|
||||
if (ExternalIDs?.Contains(provider) != true)
|
||||
return null;
|
||||
int startIndex = ExternalIDs.IndexOf(provider, StringComparison.Ordinal) + provider.Length + 1; //The + 1 is for the '='
|
||||
if (ExternalIDs.IndexOf('|', startIndex) == -1)
|
||||
return ExternalIDs.Substring(startIndex);
|
||||
return ExternalIDs.Substring(startIndex, ExternalIDs.IndexOf('|', startIndex) - startIndex);
|
||||
}
|
||||
|
||||
|
||||
public Show Set(string slug, string path)
|
||||
{
|
||||
Slug = slug;
|
||||
|
@ -148,7 +148,7 @@ namespace Kyoo.Controllers
|
||||
libraryManager.AddShowToCollection(showID, collectionID);
|
||||
}
|
||||
|
||||
IEnumerable<People> actors = await metadataProvider.GetPeople(show.ExternalIDs, library);
|
||||
IEnumerable<People> actors = await metadataProvider.GetPeople(show, library);
|
||||
libraryManager.RegisterShowPeople(showID, actors);
|
||||
}
|
||||
else
|
||||
@ -170,7 +170,7 @@ namespace Kyoo.Controllers
|
||||
}
|
||||
}
|
||||
|
||||
Episode episode = await metadataProvider.GetEpisode(show.ExternalIDs, seasonNumber, episodeNumber, absoluteNumber, library);
|
||||
Episode episode = await metadataProvider.GetEpisode(show, seasonNumber, episodeNumber, absoluteNumber, library);
|
||||
episode.ShowID = show.id;
|
||||
episode.Path = episodePath;
|
||||
|
||||
|
@ -19,7 +19,6 @@ namespace Kyoo.Controllers
|
||||
{
|
||||
this.provider = provider;
|
||||
this.config = config;
|
||||
ReloadPlugins();
|
||||
}
|
||||
|
||||
public T GetPlugin<T>(string name)
|
||||
|
@ -69,16 +69,16 @@ namespace Kyoo.Controllers
|
||||
return await GetMetadata(provider => provider.GetSeason(showName, seasonNumber), library, $"the season ${seasonNumber} of {showName}");
|
||||
}
|
||||
|
||||
public async Task<Episode> GetEpisode(string externalIDs, long seasonNumber, long episodeNumber, long absoluteNumber, Library library)
|
||||
public async Task<Episode> GetEpisode(Show show, long seasonNumber, long episodeNumber, long absoluteNumber, Library library)
|
||||
{
|
||||
Episode episode = await GetMetadata(provider => provider.GetEpisode(externalIDs, seasonNumber, episodeNumber, absoluteNumber), library, $"an episode");
|
||||
Episode episode = await GetMetadata(provider => provider.GetEpisode(show, seasonNumber, episodeNumber, absoluteNumber), library, $"an episode");
|
||||
await thumbnailsManager.Validate(episode);
|
||||
return episode;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<People>> GetPeople(string showExternalIDs, Library library)
|
||||
public async Task<IEnumerable<People>> GetPeople(Show show, Library library)
|
||||
{
|
||||
IEnumerable<People> people = await GetMetadata(provider => provider.GetPeople(showExternalIDs), library, $"unknown data");
|
||||
IEnumerable<People> people = await GetMetadata(provider => provider.GetPeople(show), library, $"unknown data");
|
||||
people = await thumbnailsManager.Validate(people);
|
||||
return people;
|
||||
}
|
||||
|
@ -1,14 +1,27 @@
|
||||
using System.Threading.Tasks;
|
||||
using Kyoo.Controllers;
|
||||
using Microsoft.AspNetCore;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
|
||||
namespace Kyoo
|
||||
{
|
||||
public class Program
|
||||
{
|
||||
public static void Main(string[] args)
|
||||
public static async Task Main(string[] args)
|
||||
{
|
||||
CreateWebHostBuilder(args).Build().Run();
|
||||
IWebHost host = CreateWebHostBuilder(args).Build();
|
||||
|
||||
using (IServiceScope serviceScope = host.Services.CreateScope())
|
||||
{
|
||||
IPluginManager pluginManager = serviceScope.ServiceProvider.GetService<IPluginManager>();
|
||||
pluginManager.ReloadPlugins();
|
||||
|
||||
ICrawler crawler = serviceScope.ServiceProvider.GetService<ICrawler>();
|
||||
crawler.Start();
|
||||
}
|
||||
await host.RunAsync();
|
||||
}
|
||||
|
||||
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
|
||||
|
@ -32,11 +32,12 @@ namespace Kyoo
|
||||
services.AddControllers().AddNewtonsoftJson();
|
||||
services.AddHttpClient();
|
||||
|
||||
services.AddSingleton<IPluginManager, PluginManager>();
|
||||
services.AddSingleton<ILibraryManager, LibraryManager>();
|
||||
services.AddSingleton<ITranscoder, Transcoder>();
|
||||
services.AddSingleton<ICrawler, Crawler>();
|
||||
services.AddSingleton<IThumbnailsManager, ThumbnailsManager>();
|
||||
services.AddSingleton<IProviderManager, ProviderManager>();
|
||||
services.AddSingleton<ICrawler, Crawler>();
|
||||
}
|
||||
|
||||
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
||||
|
@ -12,7 +12,7 @@
|
||||
"transmuxTempPath": "/tmp/cached/kyoo/transmux",
|
||||
"transcodeTempPath": "/tmp/cached/kyoo/transcode",
|
||||
"peoplePath": "/tmp/people",
|
||||
"plugins": "/tmp/plugins",
|
||||
"plugins": "plugins/",
|
||||
"regex": "^(\\/(?<Collection>.+?))?\\/.*\\/(?<ShowTitle>.+?) S(?<Season>\\d+)E(?<Episode>\\d+)",
|
||||
"absoluteRegex": ".*\\/(?<ShowTitle>.+?) (?<AbsoluteNumber>\\d+)"
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user