mirror of
https://github.com/jellyfin/jellyfin-plugin-nextpvr.git
synced 2024-11-26 23:50:45 +00:00
commit
bbe883af89
@ -6,8 +6,6 @@ using MediaBrowser.Model.Dto;
|
||||
using MediaBrowser.Model.Entities;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using MediaBrowser.Model.MediaInfo;
|
||||
using MediaBrowser.Model.Net;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
using Jellyfin.Plugin.NextPVR.Helpers;
|
||||
using Jellyfin.Plugin.NextPVR.Responses;
|
||||
using System;
|
||||
@ -31,7 +29,6 @@ namespace Jellyfin.Plugin.NextPVR
|
||||
public class LiveTvService : ILiveTvService
|
||||
{
|
||||
private readonly IHttpClientFactory _httpClientFactory;
|
||||
private readonly IJsonSerializer _jsonSerializer;
|
||||
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
|
||||
private readonly ILogger<LiveTvService> _logger;
|
||||
private int _liveStreams;
|
||||
@ -44,10 +41,9 @@ namespace Jellyfin.Plugin.NextPVR
|
||||
|
||||
public DateTimeOffset LastRecordingChange = DateTimeOffset.MinValue;
|
||||
|
||||
public LiveTvService(IHttpClientFactory httpClientFactory, IJsonSerializer jsonSerializer, ILogger<LiveTvService> logger, ICryptoProvider cryptoProvider, IFileSystem fileSystem)
|
||||
public LiveTvService(IHttpClientFactory httpClientFactory, ILogger<LiveTvService> logger, ICryptoProvider cryptoProvider, IFileSystem fileSystem)
|
||||
{
|
||||
_httpClientFactory = httpClientFactory;
|
||||
_jsonSerializer = jsonSerializer;
|
||||
_logger = logger;
|
||||
LastUpdatedSidDateTime = DateTime.UtcNow;
|
||||
_fileSystem = fileSystem;
|
||||
@ -89,7 +85,7 @@ namespace Jellyfin.Plugin.NextPVR
|
||||
var baseUrl = Plugin.Instance.Configuration.WebServiceUrl;
|
||||
var httpClient = _httpClientFactory.CreateClient(NamedClient.Default);
|
||||
await using var stream = await httpClient.GetStreamAsync(string.Format("{0}/service?method=session.initiate&ver=1.0&device=jellyfin", baseUrl), cancellationToken).ConfigureAwait(false);
|
||||
var clientKeys = new InstantiateResponse().GetClientKeys(stream, _jsonSerializer, _logger);
|
||||
var clientKeys = await new InstantiateResponse().GetClientKeys(stream, _logger).ConfigureAwait(false);
|
||||
|
||||
var sid = clientKeys.sid;
|
||||
var salt = clientKeys.salt;
|
||||
@ -132,7 +128,7 @@ namespace Jellyfin.Plugin.NextPVR
|
||||
var httpClient = _httpClientFactory.CreateClient(NamedClient.Default);
|
||||
await using var stream = await httpClient.GetStreamAsync(string.Format("{0}/service?method=session.login&md5={1}&sid={2}", baseUrl, md5Result, sid));
|
||||
{
|
||||
return new InitializeResponse().LoggedIn(stream, _jsonSerializer, _logger);
|
||||
return await new InitializeResponse().LoggedIn(stream, _logger).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -158,7 +154,7 @@ namespace Jellyfin.Plugin.NextPVR
|
||||
await using var stream = await _httpClientFactory.CreateClient(NamedClient.Default)
|
||||
.GetStreamAsync(string.Format("{0}/service?method=channel.list&sid={1}", baseUrl, Sid), cancellationToken);
|
||||
|
||||
return new ChannelResponse(Plugin.Instance.Configuration.WebServiceUrl).GetChannels(stream, _jsonSerializer, _logger).ToList();
|
||||
return await new ChannelResponse(Plugin.Instance.Configuration.WebServiceUrl).GetChannels(stream, _logger).ConfigureAwait(false);
|
||||
|
||||
}
|
||||
|
||||
@ -181,7 +177,7 @@ namespace Jellyfin.Plugin.NextPVR
|
||||
|
||||
await using var stream = await _httpClientFactory.CreateClient(NamedClient.Default)
|
||||
.GetStreamAsync(string.Format("{0}/service?method=recording.list&filter=ready&sid={1}", baseUrl, Sid), cancellationToken);
|
||||
return new RecordingResponse(baseUrl, _fileSystem, _logger).GetRecordings(stream, _jsonSerializer);
|
||||
return await new RecordingResponse(baseUrl, _fileSystem, _logger).GetRecordings(stream).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -201,7 +197,7 @@ namespace Jellyfin.Plugin.NextPVR
|
||||
.GetStreamAsync(string.Format("{0}/service?method=recording.delete&recording_id={1}&sid={2}", baseUrl, recordingId, Sid), cancellationToken);
|
||||
LastRecordingChange = DateTimeOffset.UtcNow;
|
||||
|
||||
bool? error = new CancelDeleteRecordingResponse().RecordingError(stream, _jsonSerializer, _logger);
|
||||
bool? error = await new CancelDeleteRecordingResponse().RecordingError(stream, _logger).ConfigureAwait(false);
|
||||
|
||||
if (error == null || error == true)
|
||||
{
|
||||
@ -237,7 +233,7 @@ namespace Jellyfin.Plugin.NextPVR
|
||||
.GetStreamAsync(string.Format("{0}/service?method=recording.delete&recording_id={1}&sid={2}", baseUrl, timerId, Sid), cancellationToken);
|
||||
|
||||
LastRecordingChange = DateTimeOffset.UtcNow;
|
||||
bool? error = new CancelDeleteRecordingResponse().RecordingError(stream, _jsonSerializer, _logger);
|
||||
bool? error = await new CancelDeleteRecordingResponse().RecordingError(stream, _logger).ConfigureAwait(false);
|
||||
|
||||
if (error == null || error == true)
|
||||
{
|
||||
@ -268,7 +264,7 @@ namespace Jellyfin.Plugin.NextPVR
|
||||
info.PostPaddingSeconds / 60,
|
||||
info.Id), cancellationToken);
|
||||
|
||||
bool? error = new CancelDeleteRecordingResponse().RecordingError(stream, _jsonSerializer, _logger);
|
||||
bool? error = await new CancelDeleteRecordingResponse().RecordingError(stream, _logger).ConfigureAwait(false);
|
||||
if (error == null || error == true)
|
||||
{
|
||||
_logger.LogError(string.Format("[NextPVR] Failed to create the timer with programId: {0}", info.ProgramId));
|
||||
@ -292,7 +288,7 @@ namespace Jellyfin.Plugin.NextPVR
|
||||
await using var stream = await _httpClientFactory.CreateClient(NamedClient.Default)
|
||||
.GetStreamAsync(string.Format("{0}/service?method=recording.list&filter=pending&sid={1}", baseUrl, Sid), cancellationToken);
|
||||
|
||||
return new RecordingResponse(baseUrl, _fileSystem, _logger).GetTimers(stream, _jsonSerializer);
|
||||
return await new RecordingResponse(baseUrl, _fileSystem, _logger).GetTimers(stream).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -308,7 +304,7 @@ namespace Jellyfin.Plugin.NextPVR
|
||||
await using var stream = await _httpClientFactory.CreateClient(NamedClient.Default)
|
||||
.GetStreamAsync(string.Format("{0}/service?method=recording.recurring.list&sid={1}", baseUrl, Sid), cancellationToken);
|
||||
|
||||
return new RecurringResponse(baseUrl, _fileSystem, _logger).GetSeriesTimers(stream, _jsonSerializer);
|
||||
return await new RecurringResponse(baseUrl, _fileSystem, _logger).GetSeriesTimers(stream).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -358,7 +354,7 @@ namespace Jellyfin.Plugin.NextPVR
|
||||
await using var stream = await _httpClientFactory.CreateClient(NamedClient.Default)
|
||||
.GetStreamAsync(url, cancellationToken);
|
||||
|
||||
bool? error = new CancelDeleteRecordingResponse().RecordingError(stream, _jsonSerializer, _logger);
|
||||
bool? error = await new CancelDeleteRecordingResponse().RecordingError(stream, _logger).ConfigureAwait(false);
|
||||
if (error == null || error == true)
|
||||
{
|
||||
_logger.LogError("[NextPVR] Failed to create or update the timer with Recurring ID: {0}", info.Id);
|
||||
@ -442,7 +438,7 @@ namespace Jellyfin.Plugin.NextPVR
|
||||
info.Id,
|
||||
info.ProgramId), cancellationToken);
|
||||
|
||||
bool? error = new CancelDeleteRecordingResponse().RecordingError(stream, _jsonSerializer, _logger);
|
||||
bool? error = await new CancelDeleteRecordingResponse().RecordingError(stream, _logger).ConfigureAwait(false);
|
||||
if (error == null || error == true)
|
||||
{
|
||||
_logger.LogError("[NextPVR] Failed to update the timer with ID: {0}", info.Id);
|
||||
@ -467,7 +463,7 @@ namespace Jellyfin.Plugin.NextPVR
|
||||
await using var stream = await _httpClientFactory.CreateClient(NamedClient.Default)
|
||||
.GetStreamAsync(string.Format("{0}/service?method=recording.recurring.delete&recurring_id={1}&sid={2}", baseUrl, timerId, Sid), cancellationToken);
|
||||
|
||||
bool? error = new CancelDeleteRecordingResponse().RecordingError(stream, _jsonSerializer, _logger);
|
||||
bool? error = await new CancelDeleteRecordingResponse().RecordingError(stream, _logger).ConfigureAwait(false);
|
||||
|
||||
if (error == null || error == true)
|
||||
{
|
||||
@ -615,7 +611,7 @@ namespace Jellyfin.Plugin.NextPVR
|
||||
var baseUrl = Plugin.Instance.Configuration.WebServiceUrl;
|
||||
await using var stream = await _httpClientFactory.CreateClient(NamedClient.Default)
|
||||
.GetStreamAsync(string.Format("{0}/service?method=setting.list&sid={1}", baseUrl, Sid), cancellationToken);
|
||||
return new SettingResponse().GetDefaultSettings(stream, _jsonSerializer, _logger);
|
||||
return await new SettingResponse().GetDefaultSettings(stream, _logger).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<ProgramInfo>> GetProgramsAsync(string channelId, DateTime startDateUtc, DateTime endDateUtc, CancellationToken cancellationToken)
|
||||
@ -629,7 +625,7 @@ namespace Jellyfin.Plugin.NextPVR
|
||||
((DateTimeOffset) startDateUtc).ToUnixTimeSeconds(),
|
||||
((DateTimeOffset) endDateUtc).ToUnixTimeSeconds(),
|
||||
channelId), cancellationToken);
|
||||
return new ListingsResponse(baseUrl).GetPrograms(stream, _jsonSerializer, channelId, _logger).ToList();
|
||||
return await new ListingsResponse(baseUrl).GetPrograms(stream, channelId, _logger).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
public Task RecordLiveStream(string id, CancellationToken cancellationToken)
|
||||
@ -654,10 +650,10 @@ namespace Jellyfin.Plugin.NextPVR
|
||||
|
||||
await using (var stream = await httpClient.GetStreamAsync(string.Format("{0}/service?method=setting.version&sid={1}", baseUrl, Sid), cancellationToken))
|
||||
{
|
||||
var versionCheckResponse = new VersionCheckResponse(stream, _jsonSerializer);
|
||||
var versionCheckResponse = new VersionCheckResponse();
|
||||
|
||||
upgradeAvailable = versionCheckResponse.UpdateAvailable();
|
||||
serverVersion = versionCheckResponse.ServerVersion();
|
||||
upgradeAvailable = await versionCheckResponse.UpdateAvailable(stream).ConfigureAwait(false);
|
||||
serverVersion = await versionCheckResponse.ServerVersion(stream).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
|
||||
@ -666,8 +662,7 @@ namespace Jellyfin.Plugin.NextPVR
|
||||
|
||||
using (var stream = await httpClient.GetStreamAsync(string.Format("{0}/service/method=system.status?sid={1}", baseUrl, Sid), cancellationToken).ConfigureAwait(false))
|
||||
{
|
||||
var tuners = new TunerResponse(stream, _jsonSerializer);
|
||||
tvTunerInfos = tuners.LiveTvTunerInfos();
|
||||
tvTunerInfos = await new TunerResponse().LiveTvTunerInfos(stream).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
return new LiveTvServiceStatusInfo
|
||||
@ -688,7 +683,7 @@ namespace Jellyfin.Plugin.NextPVR
|
||||
{
|
||||
await using var stream = await _httpClientFactory.CreateClient(NamedClient.Default)
|
||||
.GetStreamAsync(string.Format("{0}/service?method=recording.lastupdated&ignore_resume=true&sid={1}", baseUrl, Sid));
|
||||
retTime = new LastUpdateResponse().GetUpdateTime(stream, _jsonSerializer, _logger);
|
||||
retTime = await new LastUpdateResponse().GetUpdateTime(stream, _logger).ConfigureAwait(false);
|
||||
if (retTime == DateTimeOffset.FromUnixTimeSeconds(0))
|
||||
{
|
||||
LastUpdatedSidDateTime = DateTimeOffset.MinValue;
|
||||
@ -716,7 +711,7 @@ namespace Jellyfin.Plugin.NextPVR
|
||||
await using var stream = await _httpClientFactory.CreateClient(NamedClient.Default)
|
||||
.GetStreamAsync(string.Format("{0}/service?method=setting.get&key={1}&sid={2}", baseUrl, key, Sid), cancellationToken);
|
||||
|
||||
return new SettingResponse().GetSetting(stream, _jsonSerializer, _logger);
|
||||
return await new SettingResponse().GetSetting(stream, _logger).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
public string HomePageUrl
|
||||
|
@ -3,10 +3,8 @@ using System.Collections.Generic;
|
||||
using MediaBrowser.Common.Configuration;
|
||||
using MediaBrowser.Common.Plugins;
|
||||
using MediaBrowser.Model.Plugins;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
using Jellyfin.Plugin.NextPVR.Configuration;
|
||||
using System.IO;
|
||||
using MediaBrowser.Model.Drawing;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
|
||||
namespace Jellyfin.Plugin.NextPVR
|
||||
{
|
||||
|
@ -5,20 +5,23 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
using Jellyfin.Plugin.NextPVR.Helpers;
|
||||
using System.Text.Json;
|
||||
using MediaBrowser.Common.Json;
|
||||
|
||||
namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
{
|
||||
public class CancelDeleteRecordingResponse
|
||||
{
|
||||
public bool? RecordingError(Stream stream, IJsonSerializer json, ILogger<LiveTvService> logger)
|
||||
private readonly JsonSerializerOptions _jsonOptions = JsonDefaults.GetOptions();
|
||||
|
||||
public async Task<bool?> RecordingError(Stream stream, ILogger<LiveTvService> logger)
|
||||
{
|
||||
var root = json.DeserializeFromStream<RootObject>(stream);
|
||||
var root = await JsonSerializer.DeserializeAsync<RootObject>(stream, _jsonOptions).ConfigureAwait(false);
|
||||
|
||||
if (root.stat != "ok")
|
||||
{
|
||||
UtilsHelper.DebugInformation(logger, string.Format("[NextPVR] RecordingError Response: {0}", json.SerializeToString(root)));
|
||||
UtilsHelper.DebugInformation(logger, string.Format("[NextPVR] RecordingError Response: {0}", JsonSerializer.Serialize(root, _jsonOptions)));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -5,8 +5,10 @@ using System.IO;
|
||||
using System.Linq;
|
||||
using MediaBrowser.Controller.LiveTv;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
using Jellyfin.Plugin.NextPVR.Helpers;
|
||||
using System.Threading.Tasks;
|
||||
using System.Text.Json;
|
||||
using MediaBrowser.Common.Json;
|
||||
|
||||
namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
{
|
||||
@ -14,15 +16,16 @@ namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
{
|
||||
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
|
||||
private readonly string _baseUrl;
|
||||
private readonly JsonSerializerOptions _jsonOptions = JsonDefaults.GetOptions();
|
||||
|
||||
public ChannelResponse(string baseUrl)
|
||||
{
|
||||
_baseUrl = baseUrl;
|
||||
}
|
||||
|
||||
public IEnumerable<ChannelInfo> GetChannels(Stream stream, IJsonSerializer json,ILogger<LiveTvService> logger)
|
||||
public async Task<IEnumerable<ChannelInfo>> GetChannels(Stream stream, ILogger<LiveTvService> logger)
|
||||
{
|
||||
var root = json.DeserializeFromStream<RootObject>(stream);
|
||||
var root = await JsonSerializer.DeserializeAsync<RootObject>(stream, _jsonOptions).ConfigureAwait(false);
|
||||
|
||||
if (root == null)
|
||||
{
|
||||
@ -32,7 +35,7 @@ namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
|
||||
if (root.channels != null)
|
||||
{
|
||||
UtilsHelper.DebugInformation(logger, string.Format("[NextPVR] ChannelResponse: {0}", json.SerializeToString(root)));
|
||||
UtilsHelper.DebugInformation(logger, string.Format("[NextPVR] ChannelResponse: {0}", JsonSerializer.Serialize(root, _jsonOptions)));
|
||||
return root.channels.Select(i => new ChannelInfo
|
||||
{
|
||||
Name = i.channelName,
|
||||
|
@ -1,20 +1,24 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
using Jellyfin.Plugin.NextPVR.Helpers;
|
||||
using MediaBrowser.Common.Json;
|
||||
using System.Text.Json;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
{
|
||||
public class InitializeResponse
|
||||
{
|
||||
public bool LoggedIn(Stream stream, IJsonSerializer json, ILogger<LiveTvService> logger)
|
||||
private readonly JsonSerializerOptions _jsonOptions = JsonDefaults.GetOptions();
|
||||
|
||||
public async Task<bool> LoggedIn(Stream stream, ILogger<LiveTvService> logger)
|
||||
{
|
||||
var root = json.DeserializeFromStream<RootObject>(stream);
|
||||
var root = await JsonSerializer.DeserializeAsync<RootObject>(stream, _jsonOptions).ConfigureAwait(false);
|
||||
|
||||
if (root.stat != "")
|
||||
{
|
||||
UtilsHelper.DebugInformation(logger, string.Format("[NextPVR] Connection validation: {0}", json.SerializeToString(root)));
|
||||
UtilsHelper.DebugInformation(logger, string.Format("[NextPVR] Connection validation: {0}", JsonSerializer.Serialize(root, _jsonOptions)));
|
||||
return root.stat == "ok";
|
||||
}
|
||||
logger.LogError("[NextPVR] Failed to validate your connection with NextPVR.");
|
||||
|
@ -1,22 +1,26 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
using Jellyfin.Plugin.NextPVR.Helpers;
|
||||
using System.Threading.Tasks;
|
||||
using System.Text.Json;
|
||||
using MediaBrowser.Common.Json;
|
||||
|
||||
namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
{
|
||||
public class InstantiateResponse
|
||||
{
|
||||
public ClientKeys GetClientKeys(Stream stream, IJsonSerializer json, ILogger<LiveTvService> logger)
|
||||
private readonly JsonSerializerOptions _jsonOptions = JsonDefaults.GetOptions();
|
||||
|
||||
public async Task<ClientKeys> GetClientKeys(Stream stream, ILogger<LiveTvService> logger)
|
||||
{
|
||||
try
|
||||
{
|
||||
var root = json.DeserializeFromStream<ClientKeys>(stream);
|
||||
var root = await JsonSerializer.DeserializeAsync<ClientKeys>(stream, _jsonOptions).ConfigureAwait(false);
|
||||
|
||||
if (root.sid != null && root.salt != null)
|
||||
{
|
||||
UtilsHelper.DebugInformation(logger, string.Format("[NextPVR] ClientKeys: {0}", json.SerializeToString(root)));
|
||||
UtilsHelper.DebugInformation(logger, string.Format("[NextPVR] ClientKeys: {0}", JsonSerializer.Serialize(root, _jsonOptions)));
|
||||
return root;
|
||||
}
|
||||
logger.LogError("[NextPVR] Failed to validate the ClientKeys from NextPVR.");
|
||||
|
@ -3,17 +3,20 @@ using System.IO;
|
||||
using System;
|
||||
using MediaBrowser.Controller.LiveTv;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
using Jellyfin.Plugin.NextPVR.Helpers;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Common.Json;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
{
|
||||
public class LastUpdateResponse
|
||||
{
|
||||
public DateTimeOffset GetUpdateTime(Stream stream, IJsonSerializer json, ILogger<LiveTvService> logger)
|
||||
private readonly JsonSerializerOptions _jsonOptions = JsonDefaults.GetOptions();
|
||||
public async Task<DateTimeOffset> GetUpdateTime(Stream stream, ILogger<LiveTvService> logger)
|
||||
{
|
||||
var root = json.DeserializeFromStream<RootObject>(stream);
|
||||
UtilsHelper.DebugInformation(logger, string.Format("[NextPVR] LastUpdate Response: {0}", json.SerializeToString(root)));
|
||||
var root = await JsonSerializer.DeserializeAsync<RootObject>(stream, _jsonOptions).ConfigureAwait(false);
|
||||
UtilsHelper.DebugInformation(logger, string.Format("[NextPVR] LastUpdate Response: {0}", JsonSerializer.Serialize(root, _jsonOptions)));
|
||||
return DateTimeOffset.FromUnixTimeSeconds(root.last_update);
|
||||
}
|
||||
}
|
||||
|
@ -6,8 +6,10 @@ using System.Linq;
|
||||
using MediaBrowser.Controller.LiveTv;
|
||||
using MediaBrowser.Model.LiveTv;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
using Jellyfin.Plugin.NextPVR.Helpers;
|
||||
using System.Threading.Tasks;
|
||||
using System.Text.Json;
|
||||
using MediaBrowser.Common.Json;
|
||||
|
||||
namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
{
|
||||
@ -16,16 +18,17 @@ namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
|
||||
private readonly string _baseUrl;
|
||||
private string _channelId;
|
||||
private readonly JsonSerializerOptions _jsonOptions = JsonDefaults.GetOptions();
|
||||
|
||||
public ListingsResponse(string baseUrl)
|
||||
{
|
||||
_baseUrl = baseUrl;
|
||||
}
|
||||
|
||||
public IEnumerable<ProgramInfo> GetPrograms(Stream stream, IJsonSerializer json, string channelId, ILogger<LiveTvService> logger)
|
||||
public async Task<IEnumerable<ProgramInfo>> GetPrograms(Stream stream, string channelId, ILogger<LiveTvService> logger)
|
||||
{
|
||||
var root = json.DeserializeFromStream<RootObject>(stream);
|
||||
UtilsHelper.DebugInformation(logger, string.Format("[NextPVR] GetPrograms Response: {0}", json.SerializeToString(root)));
|
||||
var root = await JsonSerializer.DeserializeAsync<RootObject>(stream, _jsonOptions).ConfigureAwait(false);
|
||||
UtilsHelper.DebugInformation(logger, string.Format("[NextPVR] GetPrograms Response: {0}", JsonSerializer.Serialize(root, _jsonOptions)));
|
||||
|
||||
/*
|
||||
|
||||
|
@ -7,8 +7,10 @@ using MediaBrowser.Controller.LiveTv;
|
||||
using MediaBrowser.Model.IO;
|
||||
using MediaBrowser.Model.LiveTv;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
using Jellyfin.Plugin.NextPVR.Helpers;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Common.Json;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
{
|
||||
@ -18,6 +20,7 @@ namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
private readonly string _baseUrl;
|
||||
private IFileSystem _fileSystem;
|
||||
private readonly ILogger<LiveTvService> _logger;
|
||||
private readonly JsonSerializerOptions _jsonOptions = JsonDefaults.GetOptions();
|
||||
|
||||
public RecordingResponse(string baseUrl, IFileSystem fileSystem, ILogger<LiveTvService> logger)
|
||||
{
|
||||
@ -26,7 +29,7 @@ namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public IEnumerable<MyRecordingInfo> GetRecordings(Stream stream, IJsonSerializer json)
|
||||
public async Task<IEnumerable<MyRecordingInfo>> GetRecordings(Stream stream)
|
||||
{
|
||||
if (stream == null)
|
||||
{
|
||||
@ -34,8 +37,8 @@ namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
throw new ArgumentNullException("stream");
|
||||
}
|
||||
|
||||
var root = json.DeserializeFromStream<RootObject>(stream);
|
||||
UtilsHelper.DebugInformation(_logger, string.Format("[NextPVR] GetRecordings Response: {0}", json.SerializeToString(root)));
|
||||
var root = await JsonSerializer.DeserializeAsync<RootObject>(stream, _jsonOptions).ConfigureAwait(false);
|
||||
UtilsHelper.DebugInformation(_logger, string.Format("[NextPVR] GetRecordings Response: {0}", JsonSerializer.Serialize(root, _jsonOptions)));
|
||||
|
||||
IEnumerable<MyRecordingInfo> Recordings;
|
||||
try
|
||||
@ -53,7 +56,7 @@ namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
return Recordings;
|
||||
}
|
||||
|
||||
public IEnumerable<TimerInfo> GetTimers(Stream stream, IJsonSerializer json)
|
||||
public async Task<IEnumerable<TimerInfo>> GetTimers(Stream stream)
|
||||
{
|
||||
if (stream == null)
|
||||
{
|
||||
@ -61,8 +64,8 @@ namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
throw new ArgumentNullException("stream");
|
||||
}
|
||||
|
||||
var root = json.DeserializeFromStream<RootObject>(stream);
|
||||
UtilsHelper.DebugInformation(_logger, string.Format("[NextPVR] GetTimers Response: {0}", json.SerializeToString(root)));
|
||||
var root = await JsonSerializer.DeserializeAsync<RootObject>(stream, _jsonOptions).ConfigureAwait(false);
|
||||
UtilsHelper.DebugInformation(_logger, string.Format("[NextPVR] GetTimers Response: {0}", JsonSerializer.Serialize(root, _jsonOptions)));
|
||||
IEnumerable<TimerInfo> Timers;
|
||||
try
|
||||
{
|
||||
|
@ -7,9 +7,10 @@ using MediaBrowser.Controller.LiveTv;
|
||||
using MediaBrowser.Model.IO;
|
||||
using MediaBrowser.Model.LiveTv;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
using Jellyfin.Plugin.NextPVR.Helpers;
|
||||
|
||||
using System.Text.Json;
|
||||
using MediaBrowser.Common.Json;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
{
|
||||
@ -19,6 +20,7 @@ namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
private readonly string _baseUrl;
|
||||
private IFileSystem _fileSystem;
|
||||
private readonly ILogger<LiveTvService> _logger;
|
||||
private readonly JsonSerializerOptions _jsonOptions = JsonDefaults.GetOptions();
|
||||
|
||||
public RecurringResponse(string baseUrl, IFileSystem fileSystem, ILogger<LiveTvService> logger)
|
||||
{
|
||||
@ -26,7 +28,7 @@ namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
_fileSystem = fileSystem;
|
||||
_logger = logger;
|
||||
}
|
||||
public IEnumerable<SeriesTimerInfo> GetSeriesTimers(Stream stream, IJsonSerializer json)
|
||||
public async Task<IEnumerable<SeriesTimerInfo>> GetSeriesTimers(Stream stream)
|
||||
{
|
||||
if (stream == null)
|
||||
{
|
||||
@ -34,8 +36,8 @@ namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
throw new ArgumentNullException("stream");
|
||||
}
|
||||
|
||||
var root = json.DeserializeFromStream<RootObject>(stream);
|
||||
UtilsHelper.DebugInformation(_logger, string.Format("[NextPVR] GetSeriesTimers Response: {0}", json.SerializeToString(root)));
|
||||
var root = await JsonSerializer.DeserializeAsync<RootObject>(stream, _jsonOptions).ConfigureAwait(false);
|
||||
UtilsHelper.DebugInformation(_logger, string.Format("[NextPVR] GetSeriesTimers Response: {0}", JsonSerializer.Serialize(root, _jsonOptions)));
|
||||
return root.recurrings
|
||||
.Select(i => i)
|
||||
.Select(GetSeriesTimerInfo);
|
||||
|
@ -2,34 +2,32 @@
|
||||
using System.IO;
|
||||
using MediaBrowser.Controller.LiveTv;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
using Jellyfin.Plugin.NextPVR.Helpers;
|
||||
using System.Threading.Tasks;
|
||||
using System.Text.Json;
|
||||
using MediaBrowser.Common.Json;
|
||||
|
||||
namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
{
|
||||
public class SettingResponse
|
||||
{
|
||||
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
|
||||
private readonly JsonSerializerOptions _jsonOptions = JsonDefaults.GetOptions();
|
||||
|
||||
public bool GetDefaultSettings(Stream stream, IJsonSerializer json, ILogger<LiveTvService> logger)
|
||||
public async Task<bool> GetDefaultSettings(Stream stream, ILogger<LiveTvService> logger)
|
||||
{
|
||||
ScheduleSettings root = GetScheduleSettings(stream, json);
|
||||
UtilsHelper.DebugInformation(logger, string.Format("[NextPVR] GetDefaultTimerInfo Response: {0}", json.SerializeToString(root)));
|
||||
var root = await JsonSerializer.DeserializeAsync<ScheduleSettings>(stream, _jsonOptions).ConfigureAwait(false);
|
||||
UtilsHelper.DebugInformation(logger, string.Format("[NextPVR] GetDefaultTimerInfo Response: {0}", JsonSerializer.Serialize(root, _jsonOptions)));
|
||||
Plugin.Instance.Configuration.PostPaddingSeconds = int.Parse(root.postPadding) * 60;
|
||||
Plugin.Instance.Configuration.PrePaddingSeconds = int.Parse(root.prePadding) * 60;
|
||||
Plugin.Instance.Configuration.ShowRepeat = root.showNewInGuide;
|
||||
return true;
|
||||
}
|
||||
|
||||
private ScheduleSettings GetScheduleSettings(Stream stream, IJsonSerializer json)
|
||||
public async Task<string> GetSetting(Stream stream, ILogger<LiveTvService> logger)
|
||||
{
|
||||
return json.DeserializeFromStream<ScheduleSettings>(stream);
|
||||
}
|
||||
|
||||
public string GetSetting(Stream stream, IJsonSerializer json, ILogger<LiveTvService> logger)
|
||||
{
|
||||
SettingValue root = json.DeserializeFromStream<SettingValue>(stream);
|
||||
UtilsHelper.DebugInformation(logger, string.Format("[NextPVR] GetSetting Response: {0}", json.SerializeToString(root)));
|
||||
var root = await JsonSerializer.DeserializeAsync<SettingValue>(stream, _jsonOptions).ConfigureAwait(false);
|
||||
UtilsHelper.DebugInformation(logger, string.Format("[NextPVR] GetSetting Response: {0}", JsonSerializer.Serialize(root, _jsonOptions)));
|
||||
return root.value;
|
||||
}
|
||||
|
||||
|
@ -2,19 +2,22 @@
|
||||
using System.IO;
|
||||
using MediaBrowser.Controller.LiveTv;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
using Jellyfin.Plugin.NextPVR.Helpers;
|
||||
using System.Threading.Tasks;
|
||||
using System.Text.Json;
|
||||
using MediaBrowser.Common.Json;
|
||||
|
||||
namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
{
|
||||
public class TimerDefaultsResponse
|
||||
{
|
||||
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
|
||||
private readonly JsonSerializerOptions _jsonOptions = JsonDefaults.GetOptions();
|
||||
|
||||
public SeriesTimerInfo GetDefaultTimerInfo(Stream stream, IJsonSerializer json, ILogger<LiveTvService> logger)
|
||||
public async Task<SeriesTimerInfo> GetDefaultTimerInfo(Stream stream, ILogger<LiveTvService> logger)
|
||||
{
|
||||
var root = GetScheduleSettings(stream, json);
|
||||
UtilsHelper.DebugInformation(logger,string.Format("[NextPVR] GetDefaultTimerInfo Response: {0}", json.SerializeToString(root)));
|
||||
var root = await JsonSerializer.DeserializeAsync<ScheduleSettings>(stream, _jsonOptions).ConfigureAwait(false);
|
||||
UtilsHelper.DebugInformation(logger,string.Format("[NextPVR] GetDefaultTimerInfo Response: {0}", JsonSerializer.Serialize(root, _jsonOptions)));
|
||||
|
||||
return new SeriesTimerInfo
|
||||
{
|
||||
@ -25,11 +28,6 @@ namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
RecordNewOnly = root.onlyNew
|
||||
};
|
||||
}
|
||||
|
||||
public ScheduleSettings GetScheduleSettings(Stream stream, IJsonSerializer json)
|
||||
{
|
||||
return json.DeserializeFromStream<ScheduleSettings>(stream);
|
||||
}
|
||||
}
|
||||
|
||||
// Classes created with http://json2csharp.com/
|
||||
|
@ -1,25 +1,22 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.Json;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Common.Json;
|
||||
using MediaBrowser.Controller.LiveTv;
|
||||
using MediaBrowser.Model.Drawing;
|
||||
using MediaBrowser.Model.LiveTv;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
|
||||
namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
{
|
||||
public class TunerResponse
|
||||
{
|
||||
private readonly RootObject _root;
|
||||
private readonly JsonSerializerOptions _jsonOptions = JsonDefaults.GetOptions();
|
||||
|
||||
public TunerResponse(Stream stream, IJsonSerializer json)
|
||||
public async Task<List<LiveTvTunerInfo>> LiveTvTunerInfos(Stream stream)
|
||||
{
|
||||
_root = json.DeserializeFromStream<RootObject>(stream);
|
||||
}
|
||||
|
||||
public List<LiveTvTunerInfo> LiveTvTunerInfos()
|
||||
{
|
||||
return _root.Tuners.Select(GetTunerInformation).ToList();
|
||||
var root = await JsonSerializer.DeserializeAsync<RootObject>(stream, _jsonOptions).ConfigureAwait(false);
|
||||
return root.Tuners.Select(GetTunerInformation).ToList();
|
||||
}
|
||||
|
||||
private LiveTvTunerInfo GetTunerInformation(Tuner i)
|
||||
|
@ -1,33 +1,32 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
using System.Text.Json;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Common.Json;
|
||||
|
||||
namespace Jellyfin.Plugin.NextPVR.Responses
|
||||
{
|
||||
public class VersionCheckResponse
|
||||
{
|
||||
private readonly RootObject _root;
|
||||
private readonly JsonSerializerOptions _jsonOptions = JsonDefaults.GetOptions();
|
||||
|
||||
public VersionCheckResponse(Stream stream, IJsonSerializer json)
|
||||
public async Task<bool> UpdateAvailable(Stream stream)
|
||||
{
|
||||
_root = json.DeserializeFromStream<RootObject>(stream);
|
||||
}
|
||||
|
||||
public Boolean UpdateAvailable()
|
||||
{
|
||||
if (_root.versionCheck != null)
|
||||
var root = await JsonSerializer.DeserializeAsync<RootObject>(stream, _jsonOptions).ConfigureAwait(false);
|
||||
if (root.versionCheck != null)
|
||||
{
|
||||
return _root.versionCheck.upgradeAvailable;
|
||||
return root.versionCheck.upgradeAvailable;
|
||||
}
|
||||
|
||||
throw new Exception("Failed to get the Update Status from NextPVR.");
|
||||
}
|
||||
|
||||
public string ServerVersion()
|
||||
public async Task<string> ServerVersion(Stream stream)
|
||||
{
|
||||
if (_root.versionCheck != null)
|
||||
var root = await JsonSerializer.DeserializeAsync<RootObject>(stream, _jsonOptions).ConfigureAwait(false);
|
||||
if (root.versionCheck != null)
|
||||
{
|
||||
return _root.versionCheck.serverVer;
|
||||
return root.versionCheck.serverVer;
|
||||
}
|
||||
|
||||
throw new Exception("Failed to get the Server Version from NextPVR.");
|
||||
|
Loading…
Reference in New Issue
Block a user