mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-07-09 03:04:20 -04:00
Cleaning uo
This commit is contained in:
parent
e66e59cf32
commit
84458d3413
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.7" />
|
<PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.7" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Options" Version="5.0.0" />
|
||||||
<PackageReference Include="TvDbSharper" Version="3.2.2" />
|
<PackageReference Include="TvDbSharper" Version="3.2.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Autofac;
|
using Autofac;
|
||||||
using Kyoo.Controllers;
|
using Kyoo.Controllers;
|
||||||
|
using TvDbSharper;
|
||||||
|
|
||||||
namespace Kyoo.TheTvdb
|
namespace Kyoo.TheTvdb
|
||||||
{
|
{
|
||||||
@ -35,6 +36,7 @@ namespace Kyoo.TheTvdb
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public void Configure(ContainerBuilder builder)
|
public void Configure(ContainerBuilder builder)
|
||||||
{
|
{
|
||||||
|
builder.RegisterType<TvDbClient>().As<ITvDbClient>();
|
||||||
builder.RegisterProvider<ProviderTvdb>();
|
builder.RegisterProvider<ProviderTvdb>();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,8 +3,10 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
|
using Kyoo.Authentication.Models;
|
||||||
using Kyoo.Controllers;
|
using Kyoo.Controllers;
|
||||||
using Kyoo.Models;
|
using Kyoo.Models;
|
||||||
|
using Microsoft.Extensions.Options;
|
||||||
using TvDbSharper;
|
using TvDbSharper;
|
||||||
using TvDbSharper.Dto;
|
using TvDbSharper.Dto;
|
||||||
|
|
||||||
@ -18,12 +20,12 @@ namespace Kyoo.TheTvdb
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// The internal tvdb client used to make requests.
|
/// The internal tvdb client used to make requests.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly TvDbClient _client = new();
|
private readonly ITvDbClient _client;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The API key used to authenticate with the tvdb API.
|
/// The API key used to authenticate with the tvdb API.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly string _apiKey;
|
private readonly IOptions<TvdbOption> _apiKey;
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public Provider Provider => new()
|
public Provider Provider => new()
|
||||||
@ -35,15 +37,24 @@ namespace Kyoo.TheTvdb
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
public ProviderTvdb(string apiKey)
|
/// <summary>
|
||||||
|
/// Create a new <see cref="ProviderTvdb"/> using a tvdb client and an api key.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="client">The tvdb client to use</param>
|
||||||
|
/// <param name="apiKey">The api key</param>
|
||||||
|
public ProviderTvdb(ITvDbClient client, IOptions<TvdbOption> apiKey)
|
||||||
{
|
{
|
||||||
|
_client = client;
|
||||||
_apiKey = apiKey;
|
_apiKey = apiKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Authenticate and refresh the token of the tvdb client.
|
||||||
|
/// </summary>
|
||||||
private Task _Authenticate()
|
private Task _Authenticate()
|
||||||
{
|
{
|
||||||
if (_client.Authentication.Token == null)
|
if (_client.Authentication.Token == null)
|
||||||
return _client.Authentication.AuthenticateAsync(_apiKey);
|
return _client.Authentication.AuthenticateAsync(_apiKey.Value.ApiKey);
|
||||||
return _client.Authentication.RefreshTokenAsync();
|
return _client.Authentication.RefreshTokenAsync();
|
||||||
}
|
}
|
||||||
|
|
18
Kyoo.TheTvdb/TvdbOption.cs
Normal file
18
Kyoo.TheTvdb/TvdbOption.cs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
namespace Kyoo.Authentication.Models
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The option containing the api key for the tvdb.
|
||||||
|
/// </summary>
|
||||||
|
public class TvdbOption
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The path to get this option from the root configuration.
|
||||||
|
/// </summary>
|
||||||
|
public const string Path = "tvdb";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The api key of the tvdb.
|
||||||
|
/// </summary>
|
||||||
|
public string ApiKey { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -144,7 +144,7 @@ namespace Kyoo.Controllers
|
|||||||
ICollection<TaskParameter> all = task.GetParameters();
|
ICollection<TaskParameter> all = task.GetParameters();
|
||||||
|
|
||||||
ICollection<string> invalids = arguments.Keys
|
ICollection<string> invalids = arguments.Keys
|
||||||
.Where(x => all.Any(y => x != y.Name))
|
.Where(x => all.All(y => x != y.Name))
|
||||||
.ToArray();
|
.ToArray();
|
||||||
if (invalids.Any())
|
if (invalids.Any())
|
||||||
{
|
{
|
||||||
|
@ -38,7 +38,9 @@ namespace Kyoo
|
|||||||
typeof(IThumbnailsManager),
|
typeof(IThumbnailsManager),
|
||||||
typeof(IMetadataProvider),
|
typeof(IMetadataProvider),
|
||||||
typeof(ITaskManager),
|
typeof(ITaskManager),
|
||||||
typeof(ILibraryManager)
|
typeof(ILibraryManager),
|
||||||
|
typeof(IIdentifier),
|
||||||
|
typeof(AProviderComposite)
|
||||||
};
|
};
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
@ -99,9 +101,14 @@ namespace Kyoo
|
|||||||
builder.RegisterType<ThumbnailsManager>().As<IThumbnailsManager>().SingleInstance();
|
builder.RegisterType<ThumbnailsManager>().As<IThumbnailsManager>().SingleInstance();
|
||||||
builder.RegisterType<TaskManager>().As<ITaskManager>().SingleInstance();
|
builder.RegisterType<TaskManager>().As<ITaskManager>().SingleInstance();
|
||||||
builder.RegisterType<LibraryManager>().As<ILibraryManager>().InstancePerLifetimeScope();
|
builder.RegisterType<LibraryManager>().As<ILibraryManager>().InstancePerLifetimeScope();
|
||||||
builder.RegisterComposite<ProviderComposite, IMetadataProvider>().InstancePerLifetimeScope();
|
builder.RegisterType<RegexIdentifier>().As<IIdentifier>().SingleInstance();
|
||||||
|
builder.RegisterComposite<ProviderComposite, IMetadataProvider>();
|
||||||
|
builder.Register(x => (AProviderComposite)x.Resolve<IMetadataProvider>());
|
||||||
|
|
||||||
builder.RegisterTask<Crawler>();
|
builder.RegisterTask<Crawler>();
|
||||||
|
builder.RegisterTask<Housekeeping>();
|
||||||
|
builder.RegisterTask<RegisterEpisode>();
|
||||||
|
builder.RegisterTask<RegisterSubtitle>();
|
||||||
|
|
||||||
static bool DatabaseIsPresent(IComponentRegistryBuilder x)
|
static bool DatabaseIsPresent(IComponentRegistryBuilder x)
|
||||||
=> x.IsRegistered(new TypedService(typeof(DatabaseContext)));
|
=> x.IsRegistered(new TypedService(typeof(DatabaseContext)));
|
||||||
|
@ -4,8 +4,14 @@ using System.Linq;
|
|||||||
|
|
||||||
namespace Kyoo.Models.Watch
|
namespace Kyoo.Models.Watch
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A static class allowing one to identify files extensions.
|
||||||
|
/// </summary>
|
||||||
public static class FileExtensions
|
public static class FileExtensions
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The list of known video extensions
|
||||||
|
/// </summary>
|
||||||
public static readonly string[] VideoExtensions =
|
public static readonly string[] VideoExtensions =
|
||||||
{
|
{
|
||||||
".webm",
|
".webm",
|
||||||
@ -34,17 +40,30 @@ namespace Kyoo.Models.Watch
|
|||||||
".3g2"
|
".3g2"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Check if a file represent a video file (only by checking the extension of the file)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="filePath">The path of the file to check</param>
|
||||||
|
/// <returns><c>true</c> if the file is a video file, <c>false</c> otherwise.</returns>
|
||||||
public static bool IsVideo(string filePath)
|
public static bool IsVideo(string filePath)
|
||||||
{
|
{
|
||||||
return VideoExtensions.Contains(Path.GetExtension(filePath));
|
return VideoExtensions.Contains(Path.GetExtension(filePath));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The dictionary of known subtitles extensions and the name of the subtitle codec.
|
||||||
|
/// </summary>
|
||||||
public static readonly Dictionary<string, string> SubtitleExtensions = new()
|
public static readonly Dictionary<string, string> SubtitleExtensions = new()
|
||||||
{
|
{
|
||||||
{".ass", "ass"},
|
{".ass", "ass"},
|
||||||
{".str", "subrip"}
|
{".str", "subrip"}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Check if a file represent a subtitle file (only by checking the extension of the file)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="filePath">The path of the file to check</param>
|
||||||
|
/// <returns><c>true</c> if the file is a subtitle file, <c>false</c> otherwise.</returns>
|
||||||
public static bool IsSubtitle(string filePath)
|
public static bool IsSubtitle(string filePath)
|
||||||
{
|
{
|
||||||
return SubtitleExtensions.ContainsKey(Path.GetExtension(filePath));
|
return SubtitleExtensions.ContainsKey(Path.GetExtension(filePath));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user