mirror of https://github.com/Jackett/Jackett
132 lines
4.7 KiB
C#
132 lines
4.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Jackett.Common.Indexers;
|
|
using Jackett.Common.Utils;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace Jackett.Common.Models
|
|
{
|
|
|
|
public class ReleaseInfo : ICloneable
|
|
{
|
|
public string Title { get; set; }
|
|
public Uri Guid { get; set; }
|
|
public Uri Link { get; set; }
|
|
public Uri Comments { get; set; }
|
|
public DateTime PublishDate { get; set; }
|
|
public ICollection<int> Category { get; set; }
|
|
public long? Size { get; set; }
|
|
public long? Files { get; set; }
|
|
public long? Grabs { get; set; }
|
|
public string Description { get; set; }
|
|
public long? RageID { get; set; }
|
|
public long? TVDBId { get; set; }
|
|
public long? Imdb { get; set; }
|
|
public long? TMDb { get; set; }
|
|
public int? Seeders { get; set; }
|
|
public int? Peers { get; set; }
|
|
public Uri BannerUrl { get; set; }
|
|
public string InfoHash { get; set; }
|
|
public Uri MagnetUri { get; set; }
|
|
public double? MinimumRatio { get; set; }
|
|
public long? MinimumSeedTime { get; set; }
|
|
public double? DownloadVolumeFactor { get; set; }
|
|
public double? UploadVolumeFactor { get; set; }
|
|
[JsonIgnore] // don't export the Origin to the manul search API, otherwise each result line contains a full recursive indexer JSON structure
|
|
public IIndexer Origin;
|
|
|
|
public double? Gain
|
|
{
|
|
get
|
|
{
|
|
var sizeInGB = Size / 1024.0 / 1024.0 / 1024.0;
|
|
return Seeders * sizeInGB;
|
|
}
|
|
}
|
|
|
|
public ReleaseInfo()
|
|
{
|
|
}
|
|
|
|
protected ReleaseInfo(ReleaseInfo copyFrom)
|
|
{
|
|
Title = copyFrom.Title;
|
|
Guid = copyFrom.Guid;
|
|
Link = copyFrom.Link;
|
|
Comments = copyFrom.Comments;
|
|
PublishDate = copyFrom.PublishDate;
|
|
Category = copyFrom.Category;
|
|
Size = copyFrom.Size;
|
|
Files = copyFrom.Files;
|
|
Grabs = copyFrom.Grabs;
|
|
Description = copyFrom.Description;
|
|
RageID = copyFrom.RageID;
|
|
Imdb = copyFrom.Imdb;
|
|
TMDb = copyFrom.TMDb;
|
|
Seeders = copyFrom.Seeders;
|
|
Peers = copyFrom.Peers;
|
|
BannerUrl = copyFrom.BannerUrl;
|
|
InfoHash = copyFrom.InfoHash;
|
|
MagnetUri = copyFrom.MagnetUri;
|
|
MinimumRatio = copyFrom.MinimumRatio;
|
|
MinimumSeedTime = copyFrom.MinimumSeedTime;
|
|
DownloadVolumeFactor = copyFrom.DownloadVolumeFactor;
|
|
UploadVolumeFactor = copyFrom.UploadVolumeFactor;
|
|
}
|
|
|
|
public virtual object Clone()
|
|
{
|
|
return new ReleaseInfo(this);
|
|
}
|
|
|
|
// ex: " 3.5 gb "
|
|
public static long GetBytes(string str)
|
|
{
|
|
var valStr = new string(str.Where(c => char.IsDigit(c) || c == '.').ToArray());
|
|
var unit = new string(str.Where(char.IsLetter).ToArray());
|
|
var val = ParseUtil.CoerceFloat(valStr);
|
|
return GetBytes(unit, val);
|
|
}
|
|
|
|
public static long GetBytes(string unit, float value)
|
|
{
|
|
unit = unit.Replace("i", "").ToLowerInvariant();
|
|
if (unit.Contains("kb"))
|
|
return BytesFromKB(value);
|
|
if (unit.Contains("mb"))
|
|
return BytesFromMB(value);
|
|
if (unit.Contains("gb"))
|
|
return BytesFromGB(value);
|
|
if (unit.Contains("tb"))
|
|
return BytesFromTB(value);
|
|
return (long)value;
|
|
}
|
|
|
|
public static long BytesFromTB(float tb)
|
|
{
|
|
return BytesFromGB(tb * 1024f);
|
|
}
|
|
|
|
public static long BytesFromGB(float gb)
|
|
{
|
|
return BytesFromMB(gb * 1024f);
|
|
}
|
|
|
|
public static long BytesFromMB(float mb)
|
|
{
|
|
return BytesFromKB(mb * 1024f);
|
|
}
|
|
|
|
public static long BytesFromKB(float kb)
|
|
{
|
|
return (long)(kb * 1024f);
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return string.Format("[ReleaseInfo: Title={0}, Guid={1}, Link={2}, Comments={3}, PublishDate={4}, Category={5}, Size={6}, Files={7}, Grabs={8}, Description={9}, RageID={10}, TVDBId={11}, Imdb={12}, TMDb={13}, Seeders={14}, Peers={15}, BannerUrl={16}, InfoHash={17}, MagnetUri={18}, MinimumRatio={19}, MinimumSeedTime={20}, DownloadVolumeFactor={21}, UploadVolumeFactor={22}, Gain={23}]", Title, Guid, Link, Comments, PublishDate, Category, Size, Files, Grabs, Description, RageID, TVDBId, Imdb, TMDb, Seeders, Peers, BannerUrl, InfoHash, MagnetUri, MinimumRatio, MinimumSeedTime, DownloadVolumeFactor, UploadVolumeFactor, Gain);
|
|
}
|
|
}
|
|
}
|