Freshon.tv completed

This commit is contained in:
zone117x
2015-04-18 15:08:00 -06:00
parent cd2d6949b6
commit 1318039fb3
4 changed files with 100 additions and 29 deletions

View File

@@ -135,12 +135,13 @@ namespace Jackett
{
List<ReleaseInfo> releases = new List<ReleaseInfo>();
foreach (var title in query.ShowTitles)
foreach (var title in query.ShowTitles ?? new string[] { string.Empty })
{
var searchString = title + " " + query.GetEpisodeSearchString();
var searchUrl = string.Format("{0}?search={1}&cat=0", SearchUrl, HttpUtility.UrlEncode(searchString));
var results = await client.GetStringAsync(searchUrl);
var episodeSearchUrl = string.Format("{0}?search={1}&cat=0", SearchUrl, HttpUtility.UrlEncode(searchString));
var results = await client.GetStringAsync(episodeSearchUrl);
CQ dom = results;
var table = dom["tbody > tr > .latest"].Parent().Parent();
@@ -172,13 +173,7 @@ namespace Jackett
var sizeCol = row.ChildElements.ElementAt(6);
var sizeVal = float.Parse(sizeCol.ChildNodes[0].NodeValue);
var sizeUnit = sizeCol.ChildNodes[2].NodeValue;
switch (sizeUnit)
{
case "GB": release.Size = ReleaseInfo.BytesFromGB(sizeVal); break;
case "MB": release.Size = ReleaseInfo.BytesFromMB(sizeVal); break;
case "KB": release.Size = ReleaseInfo.BytesFromKB(sizeVal); break;
}
release.Size = ReleaseInfo.GetBytes(sizeUnit, sizeVal);
release.Seeders = int.Parse(row.ChildElements.ElementAt(8).Cq().Text());
release.Peers = int.Parse(row.ChildElements.ElementAt(9).Cq().Text()) + release.Seeders;

View File

@@ -2,12 +2,14 @@
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.UI.WebControls;
namespace Jackett
@@ -67,12 +69,9 @@ namespace Jackett
};
var content = new FormUrlEncodedContent(pairs);
var message = new HttpRequestMessage();
var message = CreateHttpRequest(new Uri(LoginPostUrl));
message.Method = HttpMethod.Post;
message.Content = content;
message.RequestUri = new Uri(LoginPostUrl);
message.Headers.Referrer = new Uri(LoginUrl);
message.Headers.UserAgent.ParseAdd(chromeUserAgent);
var response = await client.SendAsync(message);
var responseContent = await response.Content.ReadAsStringAsync();
@@ -101,10 +100,7 @@ namespace Jackett
public async Task VerifyConnection()
{
var message = new HttpRequestMessage();
message.Method = HttpMethod.Get;
message.RequestUri = new Uri(SearchUrl);
message.Headers.UserAgent.ParseAdd(chromeUserAgent);
var message = CreateHttpRequest(new Uri(SearchUrl));
var response = await client.SendAsync(message);
var result = await response.Content.ReadAsStringAsync();
@@ -118,10 +114,77 @@ namespace Jackett
IsConfigured = true;
}
public Task<ReleaseInfo[]> PerformQuery(TorznabQuery query)
HttpRequestMessage CreateHttpRequest(Uri uri)
{
var message = new HttpRequestMessage();
message.Method = HttpMethod.Get;
message.RequestUri = uri;
message.Headers.UserAgent.ParseAdd(chromeUserAgent);
return message;
}
public async Task<ReleaseInfo[]> PerformQuery(TorznabQuery query)
{
List<ReleaseInfo> releases = new List<ReleaseInfo>();
return Task.FromResult<ReleaseInfo[]>(releases.ToArray());
foreach (var title in query.ShowTitles ?? new string[] { string.Empty })
{
string episodeSearchUrl;
if (string.IsNullOrEmpty(title))
episodeSearchUrl = SearchUrl;
else
{
var searchString = title + " " + query.GetEpisodeSearchString();
episodeSearchUrl = string.Format("{0}?search={1}&cat=0", SearchUrl, HttpUtility.UrlEncode(searchString));
}
var request = CreateHttpRequest(new Uri(episodeSearchUrl));
var response = await client.SendAsync(request);
var results = await response.Content.ReadAsStringAsync();
CQ dom = results;
var rows = dom["#highlight > tbody > tr"];
foreach (var row in rows.Skip(1))
{
var release = new ReleaseInfo();
var qRow = row.Cq();
var qLink = qRow.Find("a.torrent_name_link").First();
release.MinimumRatio = 1;
release.MinimumSeedTime = 172800;
release.Title = qLink.Attr("title");
release.Description = release.Title;
release.Guid = new Uri(BaseUrl + qLink.Attr("href"));
release.Comments = release.Guid;
release.Link = new Uri(BaseUrl + qRow.Find("td.table_links > a").First().Attr("href"));
DateTime pubDate;
var dateString = qRow.Find("td.table_added").Text().Trim();
if (dateString.StartsWith("Today "))
pubDate = (DateTime.UtcNow + TimeSpan.Parse(dateString.Split(' ')[1])).ToLocalTime();
else if (dateString.StartsWith("Yesterday "))
pubDate = (DateTime.UtcNow + TimeSpan.Parse(dateString.Split(' ')[1]) - TimeSpan.FromDays(1)).ToLocalTime();
else
pubDate = DateTime.ParseExact(dateString, "dd-MMM-yyyy HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal).ToLocalTime();
release.PublishDate = pubDate;
release.Seeders = int.Parse(qRow.Find("td.table_seeders").Text().Trim());
release.Peers = int.Parse(qRow.Find("td.table_leechers").Text().Trim()) + release.Seeders;
var sizeCol = qRow.Find("td.table_size")[0];
var sizeVal = float.Parse(sizeCol.ChildNodes[0].NodeValue.Trim());
var sizeUnit = sizeCol.ChildNodes[2].NodeValue.Trim();
release.Size = ReleaseInfo.GetBytes(sizeUnit, sizeVal);
releases.Add(release);
}
}
return releases.ToArray();
}
public Task<byte[]> Download(Uri link)

View File

@@ -120,17 +120,17 @@ namespace Jackett.Indexers
{
List<ReleaseInfo> releases = new List<ReleaseInfo>();
foreach (var title in query.ShowTitles)
foreach (var title in query.ShowTitles ?? new string[] { string.Empty })
{
var searchString = title + " " + query.GetEpisodeSearchString();
var searchUrl = BaseUrl + string.Format(SearchUrl, HttpUtility.UrlEncode(searchString));
var episodeSearchUrl = BaseUrl + string.Format(SearchUrl, HttpUtility.UrlEncode(searchString));
var message = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri(BaseUrl + SwitchSingleViewUrl)
};
message.Headers.Referrer = new Uri(searchUrl);
message.Headers.Referrer = new Uri(episodeSearchUrl);
var response = await client.SendAsync(message);
var results = await response.Content.ReadAsStringAsync();
@@ -176,12 +176,7 @@ namespace Jackett.Indexers
var sizeString = row.ChildElements.ElementAt(4).Cq().Text().Split(' ');
var sizeVal = float.Parse(sizeString[0]);
var sizeUnit = sizeString[1];
switch (sizeUnit)
{
case "GiB": release.Size = ReleaseInfo.BytesFromGB(sizeVal); break;
case "MiB": release.Size = ReleaseInfo.BytesFromMB(sizeVal); break;
case "KiB": release.Size = ReleaseInfo.BytesFromKB(sizeVal); break;
}
release.Size = ReleaseInfo.GetBytes(sizeUnit, sizeVal);
release.Seeders = int.Parse(row.ChildElements.ElementAt(5).Cq().Text());
release.Peers = int.Parse(row.ChildElements.ElementAt(6).Cq().Text()) + release.Seeders;

View File

@@ -29,6 +29,24 @@ namespace Jackett
public long? MinimumSeedTime { get; set; }
public static long GetBytes(string unit, float value)
{
switch (unit.ToLower())
{
case "kb":
case "kib":
return BytesFromKB(value);
case "mb":
case "mib":
return BytesFromMB(value);
case "gb":
case "gib":
return BytesFromGB(value);
default:
return 0;
}
}
public static long BytesFromGB(float gb)
{
return BytesFromMB(gb * 1024f);