mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-07-11 07:46:05 -07:00
#254 having an issue with Sonarr
This commit is contained in:
parent
cd135d824c
commit
5411225fa0
10 changed files with 66 additions and 782 deletions
|
@ -36,7 +36,7 @@ namespace PlexRequests.Api.Interfaces
|
||||||
List<SonarrProfile> GetProfiles(string apiKey, Uri baseUrl);
|
List<SonarrProfile> GetProfiles(string apiKey, Uri baseUrl);
|
||||||
|
|
||||||
SonarrAddSeries AddSeries(int tvdbId, string title, int qualityId, bool seasonFolders, string rootPath,
|
SonarrAddSeries AddSeries(int tvdbId, string title, int qualityId, bool seasonFolders, string rootPath,
|
||||||
int seasonCount, int[] seasons, string apiKey, Uri baseUrl);
|
int seasonCount, int[] seasons, string apiKey, Uri baseUrl, bool notMonitored = true);
|
||||||
|
|
||||||
SystemStatus SystemStatus(string apiKey, Uri baseUrl);
|
SystemStatus SystemStatus(string apiKey, Uri baseUrl);
|
||||||
|
|
||||||
|
|
|
@ -1,50 +1,50 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace PlexRequests.Api.Models.Sonarr
|
namespace PlexRequests.Api.Models.Sonarr
|
||||||
{
|
{
|
||||||
public class Season
|
public class Season
|
||||||
{
|
{
|
||||||
public int seasonNumber { get; set; }
|
public int seasonNumber { get; set; }
|
||||||
public bool monitored { get; set; }
|
public bool monitored { get; set; }
|
||||||
public Statistics statistics { get; set; }
|
public Statistics statistics { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Statistics
|
public class Statistics
|
||||||
{
|
{
|
||||||
public int episodeFileCount { get; set; }
|
public int episodeFileCount { get; set; }
|
||||||
public int episodeCount { get; set; }
|
public int episodeCount { get; set; }
|
||||||
public int totalEpisodeCount { get; set; }
|
public int totalEpisodeCount { get; set; }
|
||||||
public long sizeOnDisk { get; set; }
|
public long sizeOnDisk { get; set; }
|
||||||
public float percentOfEpisodes { get; set; }
|
public float percentOfEpisodes { get; set; }
|
||||||
public DateTime previousAiring { get; set; }
|
public DateTime previousAiring { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class SonarrAddSeries
|
public class SonarrAddSeries
|
||||||
{
|
{
|
||||||
public AddOptions addOptions { get; set; }
|
public AddOptions addOptions { get; set; }
|
||||||
public string title { get; set; }
|
public string title { get; set; }
|
||||||
public List<Season> seasons { get; set; }
|
public List<Season> seasons { get; set; }
|
||||||
public string rootFolderPath { get; set; }
|
public string rootFolderPath { get; set; }
|
||||||
public int qualityProfileId { get; set; }
|
public int qualityProfileId { get; set; }
|
||||||
public bool seasonFolder { get; set; }
|
public bool seasonFolder { get; set; }
|
||||||
public bool monitored { get; set; }
|
public bool monitored { get; set; }
|
||||||
public int tvdbId { get; set; }
|
public int tvdbId { get; set; }
|
||||||
public int tvRageId { get; set; }
|
public int tvRageId { get; set; }
|
||||||
public string cleanTitle { get; set; }
|
public string cleanTitle { get; set; }
|
||||||
public string imdbId { get; set; }
|
public string imdbId { get; set; }
|
||||||
public string titleSlug { get; set; }
|
public string titleSlug { get; set; }
|
||||||
public int id { get; set; }
|
public int id { get; set; }
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public List<string> ErrorMessages { get; set; }
|
public List<string> ErrorMessages { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class AddOptions
|
public class AddOptions
|
||||||
{
|
{
|
||||||
public bool ignoreEpisodesWithFiles { get; set; }
|
public bool ignoreEpisodesWithFiles { get; set; }
|
||||||
public bool ignoreEpisodesWithoutFiles { get; set; }
|
public bool ignoreEpisodesWithoutFiles { get; set; }
|
||||||
public bool searchForMissingEpisodes { get; set; }
|
public bool searchForMissingEpisodes { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
139
PlexRequests.Api/MockApiData.Designer.cs
generated
139
PlexRequests.Api/MockApiData.Designer.cs
generated
|
@ -1,139 +0,0 @@
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
// <auto-generated>
|
|
||||||
// This code was generated by a tool.
|
|
||||||
// Runtime Version:4.0.30319.42000
|
|
||||||
//
|
|
||||||
// Changes to this file may cause incorrect behavior and will be lost if
|
|
||||||
// the code is regenerated.
|
|
||||||
// </auto-generated>
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
namespace PlexRequests.Api {
|
|
||||||
using System;
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
|
||||||
/// </summary>
|
|
||||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
|
||||||
// class via a tool like ResGen or Visual Studio.
|
|
||||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
|
||||||
// with the /str option, or rebuild your VS project.
|
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
|
||||||
internal class MockApiData {
|
|
||||||
|
|
||||||
private static global::System.Resources.ResourceManager resourceMan;
|
|
||||||
|
|
||||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
|
||||||
|
|
||||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
|
||||||
internal MockApiData() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns the cached ResourceManager instance used by this class.
|
|
||||||
/// </summary>
|
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
|
||||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
|
||||||
get {
|
|
||||||
if (object.ReferenceEquals(resourceMan, null)) {
|
|
||||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PlexRequests.Api.MockApiData", typeof(MockApiData).Assembly);
|
|
||||||
resourceMan = temp;
|
|
||||||
}
|
|
||||||
return resourceMan;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Overrides the current thread's CurrentUICulture property for all
|
|
||||||
/// resource lookups using this strongly typed resource class.
|
|
||||||
/// </summary>
|
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
|
||||||
internal static global::System.Globalization.CultureInfo Culture {
|
|
||||||
get {
|
|
||||||
return resourceCulture;
|
|
||||||
}
|
|
||||||
set {
|
|
||||||
resourceCulture = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to {
|
|
||||||
/// "title": "Archer (2009)",
|
|
||||||
/// "seasons": [
|
|
||||||
/// {
|
|
||||||
/// "seasonNumber": 5,
|
|
||||||
/// "monitored": true
|
|
||||||
/// },
|
|
||||||
/// {
|
|
||||||
/// "seasonNumber": 4,
|
|
||||||
/// "monitored": true
|
|
||||||
/// },
|
|
||||||
/// {
|
|
||||||
/// "seasonNumber": 3,
|
|
||||||
/// "monitored": true
|
|
||||||
/// },
|
|
||||||
/// {
|
|
||||||
/// "seasonNumber": 2,
|
|
||||||
/// "monitored": true
|
|
||||||
/// },
|
|
||||||
/// {
|
|
||||||
/// "seasonNumber": 1,
|
|
||||||
/// "monitored": true
|
|
||||||
/// },
|
|
||||||
/// {
|
|
||||||
/// "seasonNumber": 0,
|
|
||||||
/// "monitored": false
|
|
||||||
/// }
|
|
||||||
/// ],
|
|
||||||
/// "pat [rest of string was truncated]";.
|
|
||||||
/// </summary>
|
|
||||||
internal static string Sonarr_AddSeriesResult {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("Sonarr_AddSeriesResult", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to [
|
|
||||||
/// {
|
|
||||||
/// "name": "SD",
|
|
||||||
/// "cutoff": {
|
|
||||||
/// "id": 1,
|
|
||||||
/// "name": "SDTV"
|
|
||||||
/// },
|
|
||||||
/// "items": [
|
|
||||||
/// {
|
|
||||||
/// "quality": {
|
|
||||||
/// "id": 1,
|
|
||||||
/// "name": "SDTV"
|
|
||||||
/// },
|
|
||||||
/// "allowed": true
|
|
||||||
/// },
|
|
||||||
/// {
|
|
||||||
/// "quality": {
|
|
||||||
/// "id": 8,
|
|
||||||
/// "name": "WEBDL-480p"
|
|
||||||
/// },
|
|
||||||
/// "allowed": true
|
|
||||||
/// },
|
|
||||||
/// {
|
|
||||||
/// "quality": {
|
|
||||||
/// "id": 2,
|
|
||||||
/// "name": "DVD"
|
|
||||||
/// },
|
|
||||||
/// "allowed": true
|
|
||||||
/// },
|
|
||||||
/// {
|
|
||||||
/// "quality": { [rest of string was truncated]";.
|
|
||||||
/// </summary>
|
|
||||||
internal static string Sonarr_Profiles {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("Sonarr_Profiles", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,485 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="Sonarr_AddSeriesResult" xml:space="preserve">
|
|
||||||
<value>{
|
|
||||||
"title": "Archer (2009)",
|
|
||||||
"seasons": [
|
|
||||||
{
|
|
||||||
"seasonNumber": 5,
|
|
||||||
"monitored": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"seasonNumber": 4,
|
|
||||||
"monitored": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"seasonNumber": 3,
|
|
||||||
"monitored": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"seasonNumber": 2,
|
|
||||||
"monitored": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"seasonNumber": 1,
|
|
||||||
"monitored": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"seasonNumber": 0,
|
|
||||||
"monitored": false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"path": "T:\\Archer (2009)",
|
|
||||||
"qualityProfileId": 1,
|
|
||||||
"seasonFolder": true,
|
|
||||||
"monitored": true,
|
|
||||||
"tvdbId": 110381,
|
|
||||||
"tvRageId": 23354,
|
|
||||||
"cleanTitle": "archer2009",
|
|
||||||
"imdbId": "tt1486217",
|
|
||||||
"titleSlug": "archer-2009",
|
|
||||||
"id": 1
|
|
||||||
}</value>
|
|
||||||
</data>
|
|
||||||
<data name="Sonarr_Profiles" xml:space="preserve">
|
|
||||||
<value>[
|
|
||||||
{
|
|
||||||
"name": "SD",
|
|
||||||
"cutoff": {
|
|
||||||
"id": 1,
|
|
||||||
"name": "SDTV"
|
|
||||||
},
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 1,
|
|
||||||
"name": "SDTV"
|
|
||||||
},
|
|
||||||
"allowed": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 8,
|
|
||||||
"name": "WEBDL-480p"
|
|
||||||
},
|
|
||||||
"allowed": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 2,
|
|
||||||
"name": "DVD"
|
|
||||||
},
|
|
||||||
"allowed": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 4,
|
|
||||||
"name": "HDTV-720p"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 9,
|
|
||||||
"name": "HDTV-1080p"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 10,
|
|
||||||
"name": "Raw-HD"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 5,
|
|
||||||
"name": "WEBDL-720p"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 6,
|
|
||||||
"name": "Bluray-720p"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 3,
|
|
||||||
"name": "WEBDL-1080p"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 7,
|
|
||||||
"name": "Bluray-1080p"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"id": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "HD 720p",
|
|
||||||
"cutoff": {
|
|
||||||
"id": 4,
|
|
||||||
"name": "HDTV-720p"
|
|
||||||
},
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 1,
|
|
||||||
"name": "SDTV"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 8,
|
|
||||||
"name": "WEBDL-480p"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 2,
|
|
||||||
"name": "DVD"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 4,
|
|
||||||
"name": "HDTV-720p"
|
|
||||||
},
|
|
||||||
"allowed": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 9,
|
|
||||||
"name": "HDTV-1080p"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 10,
|
|
||||||
"name": "Raw-HD"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 5,
|
|
||||||
"name": "WEBDL-720p"
|
|
||||||
},
|
|
||||||
"allowed": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 6,
|
|
||||||
"name": "Bluray-720p"
|
|
||||||
},
|
|
||||||
"allowed": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 3,
|
|
||||||
"name": "WEBDL-1080p"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 7,
|
|
||||||
"name": "Bluray-1080p"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"id": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "HD 1080p",
|
|
||||||
"cutoff": {
|
|
||||||
"id": 9,
|
|
||||||
"name": "HDTV-1080p"
|
|
||||||
},
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 1,
|
|
||||||
"name": "SDTV"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 8,
|
|
||||||
"name": "WEBDL-480p"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 2,
|
|
||||||
"name": "DVD"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 4,
|
|
||||||
"name": "HDTV-720p"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 9,
|
|
||||||
"name": "HDTV-1080p"
|
|
||||||
},
|
|
||||||
"allowed": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 10,
|
|
||||||
"name": "Raw-HD"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 5,
|
|
||||||
"name": "WEBDL-720p"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 6,
|
|
||||||
"name": "Bluray-720p"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 3,
|
|
||||||
"name": "WEBDL-1080p"
|
|
||||||
},
|
|
||||||
"allowed": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 7,
|
|
||||||
"name": "Bluray-1080p"
|
|
||||||
},
|
|
||||||
"allowed": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"id": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "HD - All",
|
|
||||||
"cutoff": {
|
|
||||||
"id": 4,
|
|
||||||
"name": "HDTV-720p"
|
|
||||||
},
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 1,
|
|
||||||
"name": "SDTV"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 8,
|
|
||||||
"name": "WEBDL-480p"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 2,
|
|
||||||
"name": "DVD"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 4,
|
|
||||||
"name": "HDTV-720p"
|
|
||||||
},
|
|
||||||
"allowed": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 9,
|
|
||||||
"name": "HDTV-1080p"
|
|
||||||
},
|
|
||||||
"allowed": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 10,
|
|
||||||
"name": "Raw-HD"
|
|
||||||
},
|
|
||||||
"allowed": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 5,
|
|
||||||
"name": "WEBDL-720p"
|
|
||||||
},
|
|
||||||
"allowed": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 6,
|
|
||||||
"name": "Bluray-720p"
|
|
||||||
},
|
|
||||||
"allowed": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 3,
|
|
||||||
"name": "WEBDL-1080p"
|
|
||||||
},
|
|
||||||
"allowed": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quality": {
|
|
||||||
"id": 7,
|
|
||||||
"name": "Bluray-1080p"
|
|
||||||
},
|
|
||||||
"allowed": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"id": 4
|
|
||||||
}
|
|
||||||
]</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,89 +0,0 @@
|
||||||
#region Copyright
|
|
||||||
// /************************************************************************
|
|
||||||
// Copyright (c) 2016 Jamie Rees
|
|
||||||
// File: MockSonarrApi.cs
|
|
||||||
// Created By: Jamie Rees
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
// a copy of this software and associated documentation files (the
|
|
||||||
// "Software"), to deal in the Software without restriction, including
|
|
||||||
// without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
// distribute, sublicense, and/or sell copies of the Software, and to
|
|
||||||
// permit persons to whom the Software is furnished to do so, subject to
|
|
||||||
// the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be
|
|
||||||
// included in all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
||||||
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
||||||
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
||||||
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
// ************************************************************************/
|
|
||||||
#endregion
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
using Newtonsoft.Json;
|
|
||||||
|
|
||||||
using PlexRequests.Api.Interfaces;
|
|
||||||
using PlexRequests.Api.Models.Sonarr;
|
|
||||||
|
|
||||||
namespace PlexRequests.Api.Mocks
|
|
||||||
{
|
|
||||||
public class MockSonarrApi : ISonarrApi
|
|
||||||
{
|
|
||||||
public List<SonarrProfile> GetProfiles(string apiKey, Uri baseUrl)
|
|
||||||
{
|
|
||||||
var json = MockApiData.Sonarr_Profiles;
|
|
||||||
var obj = JsonConvert.DeserializeObject<List<SonarrProfile>>(json);
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SonarrAddSeries AddSeries(int tvdbId, string title, int qualityId, bool seasonFolders, string rootPath, int seasonCount, int[] seasons,
|
|
||||||
string apiKey, Uri baseUrl)
|
|
||||||
{
|
|
||||||
var json = MockApiData.Sonarr_AddSeriesResult;
|
|
||||||
var obj = JsonConvert.DeserializeObject<SonarrAddSeries>(json);
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SystemStatus SystemStatus(string apiKey, Uri baseUrl)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Series> GetSeries(string apiKey, Uri baseUrl)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Series GetSeries(string seriesId, string apiKey, Uri baseUrl)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public IEnumerable<SonarrEpisodes> GetEpisodes(string seriesId, string apiKey, Uri baseUrl)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public SonarrEpisode GetEpisode(string episodeId, string apiKey, Uri baseUrl)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public SonarrEpisode UpdateEpisode(SonarrEpisode episodeInfo, string apiKey, Uri baseUrl)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public SonarrAddEpisodeResult SearchForEpisodes(int[] episodeIds, string apiKey, Uri baseUrl)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -67,12 +67,6 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="ApiRequest.cs" />
|
<Compile Include="ApiRequest.cs" />
|
||||||
<Compile Include="MusicBrainzApi.cs" />
|
<Compile Include="MusicBrainzApi.cs" />
|
||||||
<Compile Include="MockApiData.Designer.cs">
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<DependentUpon>MockApiData.resx</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Mocks\MockSonarrApi.cs" />
|
|
||||||
<Compile Include="SlackApi.cs" />
|
<Compile Include="SlackApi.cs" />
|
||||||
<Compile Include="PushoverApi.cs" />
|
<Compile Include="PushoverApi.cs" />
|
||||||
<Compile Include="PushbulletApi.cs" />
|
<Compile Include="PushbulletApi.cs" />
|
||||||
|
@ -108,12 +102,6 @@
|
||||||
<Name>PlexRequests.Helpers</Name>
|
<Name>PlexRequests.Helpers</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="MockApiData.resx">
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
<LastGenOutput>MockApiData.Designer.cs</LastGenOutput>
|
|
||||||
</EmbeddedResource>
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
|
|
@ -64,7 +64,7 @@ namespace PlexRequests.Api
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SonarrAddSeries AddSeries(int tvdbId, string title, int qualityId, bool seasonFolders, string rootPath, int seasonCount, int[] seasons, string apiKey, Uri baseUrl)
|
public SonarrAddSeries AddSeries(int tvdbId, string title, int qualityId, bool seasonFolders, string rootPath, int seasonCount, int[] seasons, string apiKey, Uri baseUrl, bool monitor = true)
|
||||||
{
|
{
|
||||||
Log.Debug("Adding series {0}", title);
|
Log.Debug("Adding series {0}", title);
|
||||||
Log.Debug("Seasons = {0}, out of {1} seasons", seasons.DumpJson(), seasonCount);
|
Log.Debug("Seasons = {0}, out of {1} seasons", seasons.DumpJson(), seasonCount);
|
||||||
|
@ -82,7 +82,7 @@ namespace PlexRequests.Api
|
||||||
tvdbId = tvdbId,
|
tvdbId = tvdbId,
|
||||||
titleSlug = title,
|
titleSlug = title,
|
||||||
seasons = new List<Season>(),
|
seasons = new List<Season>(),
|
||||||
rootFolderPath = rootPath
|
rootFolderPath = rootPath,
|
||||||
};
|
};
|
||||||
|
|
||||||
for (var i = 1; i <= seasonCount; i++)
|
for (var i = 1; i <= seasonCount; i++)
|
||||||
|
@ -95,12 +95,17 @@ namespace PlexRequests.Api
|
||||||
options.seasons.Add(season);
|
options.seasons.Add(season);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!monitor)
|
||||||
|
{
|
||||||
|
options.monitored = false;
|
||||||
|
}
|
||||||
|
|
||||||
Log.Debug("Sonarr API Options:");
|
Log.Debug("Sonarr API Options:");
|
||||||
Log.Debug(options.DumpJson());
|
Log.Debug(options.DumpJson());
|
||||||
|
|
||||||
request.AddHeader("X-Api-Key", apiKey);
|
request.AddHeader("X-Api-Key", apiKey);
|
||||||
request.AddJsonBody(options);
|
request.AddJsonBody(options);
|
||||||
|
|
||||||
SonarrAddSeries result;
|
SonarrAddSeries result;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
|
@ -89,7 +89,7 @@ namespace PlexRequests.UI.Helpers
|
||||||
// Series doesn't exist, need to add it as unmonitored.
|
// Series doesn't exist, need to add it as unmonitored.
|
||||||
var addResult = await Task.Run(() => SonarrApi.AddSeries(model.ProviderId, model.Title, qualityProfile,
|
var addResult = await Task.Run(() => SonarrApi.AddSeries(model.ProviderId, model.Title, qualityProfile,
|
||||||
sonarrSettings.SeasonFolders, sonarrSettings.RootPath, 0, new int[0], sonarrSettings.ApiKey,
|
sonarrSettings.SeasonFolders, sonarrSettings.RootPath, 0, new int[0], sonarrSettings.ApiKey,
|
||||||
sonarrSettings.FullUri));
|
sonarrSettings.FullUri, false));
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(addResult?.title))
|
if (string.IsNullOrEmpty(addResult?.title))
|
||||||
{
|
{
|
||||||
|
|
|
@ -31,6 +31,10 @@ namespace PlexRequests.UI.Models
|
||||||
{
|
{
|
||||||
public class SearchTvShowViewModel : SearchViewModel
|
public class SearchTvShowViewModel : SearchViewModel
|
||||||
{
|
{
|
||||||
|
public SearchTvShowViewModel()
|
||||||
|
{
|
||||||
|
Episodes = new List<Store.EpisodesModel>();
|
||||||
|
}
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
public string SeriesName { get; set; }
|
public string SeriesName { get; set; }
|
||||||
public List<string> Aliases { get; set; }
|
public List<string> Aliases { get; set; }
|
||||||
|
@ -49,7 +53,7 @@ namespace PlexRequests.UI.Models
|
||||||
public string Rating { get; set; }
|
public string Rating { get; set; }
|
||||||
public string ImdbId { get; set; }
|
public string ImdbId { get; set; }
|
||||||
public int SiteRating { get; set; }
|
public int SiteRating { get; set; }
|
||||||
public Store.EpisodesModel[] Episodes { get; set; }
|
public List<Store.EpisodesModel> Episodes { get; set; }
|
||||||
public bool TvFullyAvailable { get; set; }
|
public bool TvFullyAvailable { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -355,7 +355,7 @@ namespace PlexRequests.UI.Modules
|
||||||
var dbt = dbTv[tvdbid];
|
var dbt = dbTv[tvdbid];
|
||||||
|
|
||||||
viewT.Requested = true;
|
viewT.Requested = true;
|
||||||
viewT.Episodes = dbt.Episodes;
|
viewT.Episodes = dbt.Episodes.ToList();
|
||||||
viewT.Approved = dbt.Approved;
|
viewT.Approved = dbt.Approved;
|
||||||
viewT.Available = dbt.Available;
|
viewT.Available = dbt.Available;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue