fix book providers

pull/1154/head
Luke Pulverenti 7 years ago
parent db01b79901
commit 43eec485e9

@ -1,8 +1,9 @@
using MediaBrowser.Model.Serialization; using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Serialization;
namespace MediaBrowser.Controller.Entities.Audio namespace MediaBrowser.Controller.Entities.Audio
{ {
public class AudioPodcast : Audio public class AudioPodcast : Audio, IHasLookupInfo<SongInfo>
{ {
[IgnoreDataMember] [IgnoreDataMember]
public override bool SupportsPositionTicksResume public override bool SupportsPositionTicksResume
@ -13,6 +14,15 @@ namespace MediaBrowser.Controller.Entities.Audio
} }
} }
[IgnoreDataMember]
public override bool SupportsPlayedStatus
{
get
{
return true;
}
}
public override double? GetDefaultPrimaryImageAspectRatio() public override double? GetDefaultPrimaryImageAspectRatio()
{ {
return 1; return 1;

@ -1,11 +1,12 @@
using System; using System;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.Entities; using MediaBrowser.Model.Entities;
namespace MediaBrowser.Controller.Entities namespace MediaBrowser.Controller.Entities
{ {
public class AudioBook : Audio.Audio, IHasSeries public class AudioBook : Audio.Audio, IHasSeries, IHasLookupInfo<SongInfo>
{ {
[IgnoreDataMember] [IgnoreDataMember]
public override bool SupportsPositionTicksResume public override bool SupportsPositionTicksResume

@ -1,4 +1,5 @@
using MediaBrowser.Controller.Entities; using System;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Library;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -13,6 +14,7 @@ namespace MediaBrowser.Controller.Providers
/// <param name="item">The item.</param> /// <param name="item">The item.</param>
/// <returns><c>true</c> if this instance can refresh the specified item; otherwise, <c>false</c>.</returns> /// <returns><c>true</c> if this instance can refresh the specified item; otherwise, <c>false</c>.</returns>
bool CanRefresh(IHasMetadata item); bool CanRefresh(IHasMetadata item);
bool CanRefreshPrimary(Type type);
/// <summary> /// <summary>
/// Refreshes the metadata. /// Refreshes the metadata.

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Providers;
namespace MediaBrowser.Providers.Books
{
public class GoogleBooksProvider : IRemoteMetadataProvider<AudioBook, SongInfo>
{
public string Name => "Google Books";
private readonly IHttpClient _httpClient;
public GoogleBooksProvider(IHttpClient httpClient)
{
_httpClient = httpClient;
}
public Task<HttpResponseInfo> GetImageResponse(string url, CancellationToken cancellationToken)
{
return _httpClient.GetResponse(new HttpRequestOptions
{
CancellationToken = cancellationToken,
Url = url,
BufferContent = false
});
}
public async Task<MetadataResult<AudioBook>> GetMetadata(SongInfo info, CancellationToken cancellationToken)
{
return new MetadataResult<AudioBook>();
}
public async Task<IEnumerable<RemoteSearchResult>> GetSearchResults(SongInfo searchInfo, CancellationToken cancellationToken)
{
return new List<RemoteSearchResult>();
}
}
}

@ -453,6 +453,11 @@ namespace MediaBrowser.Providers.Manager
return item is TItemType; return item is TItemType;
} }
public bool CanRefreshPrimary(Type type)
{
return type == typeof(TItemType);
}
protected virtual async Task<RefreshResult> RefreshWithProviders(MetadataResult<TItemType> metadata, protected virtual async Task<RefreshResult> RefreshWithProviders(MetadataResult<TItemType> metadata,
TIdType id, TIdType id,
MetadataRefreshOptions options, MetadataRefreshOptions options,

@ -118,7 +118,29 @@ namespace MediaBrowser.Providers.Manager
public Task<ItemUpdateType> RefreshSingleItem(IHasMetadata item, MetadataRefreshOptions options, CancellationToken cancellationToken) public Task<ItemUpdateType> RefreshSingleItem(IHasMetadata item, MetadataRefreshOptions options, CancellationToken cancellationToken)
{ {
var service = _metadataServices.FirstOrDefault(i => i.CanRefresh(item)); IMetadataService service = null;
var type = item.GetType();
foreach (var current in _metadataServices)
{
if (current.CanRefreshPrimary(type))
{
service = current;
break;
}
}
if (service == null)
{
foreach (var current in _metadataServices)
{
if (current.CanRefresh(item))
{
service = current;
break;
}
}
}
if (service != null) if (service != null)
{ {
@ -452,6 +474,8 @@ namespace MediaBrowser.Providers.Manager
GetPluginSummary<MusicAlbum>(), GetPluginSummary<MusicAlbum>(),
GetPluginSummary<MusicArtist>(), GetPluginSummary<MusicArtist>(),
GetPluginSummary<Audio>(), GetPluginSummary<Audio>(),
GetPluginSummary<AudioBook>(),
GetPluginSummary<AudioPodcast>(),
GetPluginSummary<Genre>(), GetPluginSummary<Genre>(),
GetPluginSummary<Studio>(), GetPluginSummary<Studio>(),
GetPluginSummary<GameGenre>(), GetPluginSummary<GameGenre>(),

@ -41,6 +41,7 @@
<Compile Include="Books\AudioBookMetadataService.cs" /> <Compile Include="Books\AudioBookMetadataService.cs" />
<Compile Include="Books\AudioPodcastMetadataService.cs" /> <Compile Include="Books\AudioPodcastMetadataService.cs" />
<Compile Include="Books\BookMetadataService.cs" /> <Compile Include="Books\BookMetadataService.cs" />
<Compile Include="Books\GoogleBooksProvider.cs" />
<Compile Include="BoxSets\BoxSetMetadataService.cs" /> <Compile Include="BoxSets\BoxSetMetadataService.cs" />
<Compile Include="BoxSets\MovieDbBoxSetImageProvider.cs" /> <Compile Include="BoxSets\MovieDbBoxSetImageProvider.cs" />
<Compile Include="BoxSets\MovieDbBoxSetProvider.cs" /> <Compile Include="BoxSets\MovieDbBoxSetProvider.cs" />

Loading…
Cancel
Save