mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-17 17:34:09 +02:00
BrowserUtil, tryparse added
This commit is contained in:
16
src/Jackett/BrowserUtil.cs
Normal file
16
src/Jackett/BrowserUtil.cs
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Jackett
|
||||||
|
{
|
||||||
|
public static class BrowserUtil
|
||||||
|
{
|
||||||
|
public static string ChromeUserAgent
|
||||||
|
{
|
||||||
|
get { return "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -1,78 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Jackett
|
|
||||||
{
|
|
||||||
public class ChromeUnsafePorts
|
|
||||||
{
|
|
||||||
public static int[] RestrictedPorts = new int[] {
|
|
||||||
1, // tcpmux
|
|
||||||
7, // echo
|
|
||||||
9, // discard
|
|
||||||
11, // systat
|
|
||||||
13, // daytime
|
|
||||||
15, // netstat
|
|
||||||
17, // qotd
|
|
||||||
19, // chargen
|
|
||||||
20, // ftp data
|
|
||||||
21, // ftp access
|
|
||||||
22, // ssh
|
|
||||||
23, // telnet
|
|
||||||
25, // smtp
|
|
||||||
37, // time
|
|
||||||
42, // name
|
|
||||||
43, // nicname
|
|
||||||
53, // domain
|
|
||||||
77, // priv-rjs
|
|
||||||
79, // finger
|
|
||||||
87, // ttylink
|
|
||||||
95, // supdup
|
|
||||||
101, // hostriame
|
|
||||||
102, // iso-tsap
|
|
||||||
103, // gppitnp
|
|
||||||
104, // acr-nema
|
|
||||||
109, // pop2
|
|
||||||
110, // pop3
|
|
||||||
111, // sunrpc
|
|
||||||
113, // auth
|
|
||||||
115, // sftp
|
|
||||||
117, // uucp-path
|
|
||||||
119, // nntp
|
|
||||||
123, // NTP
|
|
||||||
135, // loc-srv /epmap
|
|
||||||
139, // netbios
|
|
||||||
143, // imap2
|
|
||||||
179, // BGP
|
|
||||||
389, // ldap
|
|
||||||
465, // smtp+ssl
|
|
||||||
512, // print / exec
|
|
||||||
513, // login
|
|
||||||
514, // shell
|
|
||||||
515, // printer
|
|
||||||
526, // tempo
|
|
||||||
530, // courier
|
|
||||||
531, // chat
|
|
||||||
532, // netnews
|
|
||||||
540, // uucp
|
|
||||||
556, // remotefs
|
|
||||||
563, // nntp+ssl
|
|
||||||
587, // stmp?
|
|
||||||
601, // ??
|
|
||||||
636, // ldap+ssl
|
|
||||||
993, // ldap+ssl
|
|
||||||
995, // pop3+ssl
|
|
||||||
2049, // nfs
|
|
||||||
3659, // apple-sasl / PasswordServer
|
|
||||||
4045, // lockd
|
|
||||||
6000, // X11
|
|
||||||
6665, // Alternate IRC [Apple addition]
|
|
||||||
6666, // Alternate IRC [Apple addition]
|
|
||||||
6667, // Standard IRC [Apple addition]
|
|
||||||
6668, // Alternate IRC [Apple addition]
|
|
||||||
6669, // Alternate IRC [Apple addition]};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
@@ -24,5 +24,10 @@ namespace Jackett
|
|||||||
return await client.GetStringAsync(uri, --retries);
|
return await client.GetStringAsync(uri, --retries);
|
||||||
throw exception;
|
throw exception;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string ChromeUserAgent(this HttpClient client)
|
||||||
|
{
|
||||||
|
return "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -45,7 +45,7 @@ namespace Jackett.Indexers
|
|||||||
|
|
||||||
static string GuidUrl = BaseUrl + "/torrents.php?torrentid=";
|
static string GuidUrl = BaseUrl + "/torrents.php?torrentid=";
|
||||||
|
|
||||||
static string chromeUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36";
|
static string chromeUserAgent = BrowserUtil.ChromeUserAgent;
|
||||||
|
|
||||||
CookieContainer cookies;
|
CookieContainer cookies;
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
|
@@ -22,7 +22,7 @@ namespace Jackett.Indexers
|
|||||||
public event Action<IndexerInterface, string, Exception> OnResultParsingError;
|
public event Action<IndexerInterface, string, Exception> OnResultParsingError;
|
||||||
public event Action<IndexerInterface, JToken> OnSaveConfigurationRequested;
|
public event Action<IndexerInterface, JToken> OnSaveConfigurationRequested;
|
||||||
|
|
||||||
static string chromeUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36";
|
static string chromeUserAgent = BrowserUtil.ChromeUserAgent;
|
||||||
|
|
||||||
public string DisplayName
|
public string DisplayName
|
||||||
{
|
{
|
||||||
|
@@ -23,7 +23,7 @@ namespace Jackett
|
|||||||
static string LoginPostUrl = BaseUrl + "/login.php?action=makelogin";
|
static string LoginPostUrl = BaseUrl + "/login.php?action=makelogin";
|
||||||
static string SearchUrl = BaseUrl + "/browse.php";
|
static string SearchUrl = BaseUrl + "/browse.php";
|
||||||
|
|
||||||
static string chromeUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36";
|
static string chromeUserAgent = BrowserUtil.ChromeUserAgent;
|
||||||
|
|
||||||
CookieContainer cookies;
|
CookieContainer cookies;
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
|
@@ -19,8 +19,8 @@ namespace Jackett.Indexers
|
|||||||
public event Action<IndexerInterface, string, Exception> OnResultParsingError;
|
public event Action<IndexerInterface, string, Exception> OnResultParsingError;
|
||||||
|
|
||||||
const string DefaultUrl = "https://hd-torrents.org";
|
const string DefaultUrl = "https://hd-torrents.org";
|
||||||
string BaseUrl;
|
string BaseUrl = DefaultUrl;
|
||||||
static string ChromeUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36";
|
static string chromeUserAgent = BrowserUtil.ChromeUserAgent;
|
||||||
private string SearchUrl = "https://hd-torrents.org/torrents.php?search={0}&active=1&options=0&category%5B%5D=59&category%5B%5D=60&category%5B%5D=30&category%5B%5D=38&page={1}";
|
private string SearchUrl = "https://hd-torrents.org/torrents.php?search={0}&active=1&options=0&category%5B%5D=59&category%5B%5D=60&category%5B%5D=30&category%5B%5D=38&page={1}";
|
||||||
private static string LoginUrl = DefaultUrl + "/login.php";
|
private static string LoginUrl = DefaultUrl + "/login.php";
|
||||||
private static string LoginPostUrl = DefaultUrl + "/login.php?returnto=index.php";
|
private static string LoginPostUrl = DefaultUrl + "/login.php?returnto=index.php";
|
||||||
@@ -75,7 +75,7 @@ namespace Jackett.Indexers
|
|||||||
var message = new HttpRequestMessage();
|
var message = new HttpRequestMessage();
|
||||||
message.Method = HttpMethod.Get;
|
message.Method = HttpMethod.Get;
|
||||||
message.RequestUri = new Uri(url);
|
message.RequestUri = new Uri(url);
|
||||||
message.Headers.UserAgent.ParseAdd(ChromeUserAgent);
|
message.Headers.UserAgent.ParseAdd(chromeUserAgent);
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -160,7 +160,6 @@ namespace Jackett.Indexers
|
|||||||
release = new ReleaseInfo();
|
release = new ReleaseInfo();
|
||||||
long imdbid;
|
long imdbid;
|
||||||
long? size;
|
long? size;
|
||||||
int seeders, peers;
|
|
||||||
|
|
||||||
release.Title = qRow.Find("td.mainblockcontent b a").Text();
|
release.Title = qRow.Find("td.mainblockcontent b a").Text();
|
||||||
release.Description = release.Title;
|
release.Description = release.Title;
|
||||||
@@ -173,23 +172,21 @@ namespace Jackett.Indexers
|
|||||||
|
|
||||||
release.MagnetUri = new Uri(DefaultUrl + "/" + qRow.Find("td.mainblockcontent").Get(3).FirstChild.GetAttribute("href"));
|
release.MagnetUri = new Uri(DefaultUrl + "/" + qRow.Find("td.mainblockcontent").Get(3).FirstChild.GetAttribute("href"));
|
||||||
|
|
||||||
if (int.TryParse(qRow.Find("td").Get(9).FirstChild.FirstChild.InnerText, out seeders))
|
release.Seeders = ParseUtil.TryCoerceInt(qRow.Find("td").Get(9).FirstChild.FirstChild.InnerText);
|
||||||
release.Seeders = seeders;
|
release.Peers = ParseUtil.TryCoerceInt(qRow.Find("td").Get(10).FirstChild.FirstChild.InnerText);
|
||||||
if (int.TryParse(qRow.Find("td").Get(10).FirstChild.FirstChild.InnerText, out peers))
|
|
||||||
release.Peers = peers;
|
|
||||||
|
|
||||||
string fullSize = qRow.Find("td.mainblockcontent").Get(6).InnerText;
|
string fullSize = qRow.Find("td.mainblockcontent").Get(6).InnerText;
|
||||||
string[] sizeSplit = fullSize.Split(' ');
|
string[] sizeSplit = fullSize.Split(' ');
|
||||||
switch (sizeSplit[1].ToLower())
|
switch (sizeSplit[1].ToLower())
|
||||||
{
|
{
|
||||||
case "kb":
|
case "kb":
|
||||||
size = ReleaseInfo.BytesFromKB(float.Parse(sizeSplit[0], CultureInfo.InvariantCulture));
|
size = ReleaseInfo.BytesFromKB(ParseUtil.CoerceFloat(sizeSplit[0]));
|
||||||
break;
|
break;
|
||||||
case "mb":
|
case "mb":
|
||||||
size = ReleaseInfo.BytesFromMB(float.Parse(sizeSplit[0], CultureInfo.InvariantCulture));
|
size = ReleaseInfo.BytesFromMB(ParseUtil.CoerceFloat(sizeSplit[0]));
|
||||||
break;
|
break;
|
||||||
case "gb":
|
case "gb":
|
||||||
size = ReleaseInfo.BytesFromGB(float.Parse(sizeSplit[0], CultureInfo.InvariantCulture));
|
size = ReleaseInfo.BytesFromGB(ParseUtil.CoerceFloat(sizeSplit[0]));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
size = null;
|
size = null;
|
||||||
|
@@ -26,7 +26,7 @@ namespace Jackett.Indexers
|
|||||||
|
|
||||||
public bool IsConfigured { get; private set; }
|
public bool IsConfigured { get; private set; }
|
||||||
|
|
||||||
static string chromeUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36";
|
static string chromeUserAgent = BrowserUtil.ChromeUserAgent;
|
||||||
|
|
||||||
static string BaseUrl = "https://iptorrents.com";
|
static string BaseUrl = "https://iptorrents.com";
|
||||||
|
|
||||||
|
@@ -39,7 +39,7 @@ namespace Jackett.Indexers
|
|||||||
const string SearchTVRageUrl = "/pubapi.php?mode=search&search_tvrage={0}&token={1}&format=json&min_seeders=1";
|
const string SearchTVRageUrl = "/pubapi.php?mode=search&search_tvrage={0}&token={1}&format=json&min_seeders=1";
|
||||||
const string SearchQueryUrl = "/pubapi.php?mode=search&search_string={0}&token={1}&format=json&min_seeders=1";
|
const string SearchQueryUrl = "/pubapi.php?mode=search&search_string={0}&token={1}&format=json&min_seeders=1";
|
||||||
|
|
||||||
static string chromeUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36";
|
static string chromeUserAgent = BrowserUtil.ChromeUserAgent;
|
||||||
|
|
||||||
string BaseUrl;
|
string BaseUrl;
|
||||||
|
|
||||||
|
@@ -36,7 +36,7 @@ namespace Jackett.Indexers
|
|||||||
const string DefaultUrl = "http://showrss.info";
|
const string DefaultUrl = "http://showrss.info";
|
||||||
const string searchAllUrl = DefaultUrl + "/feeds/all.rss";
|
const string searchAllUrl = DefaultUrl + "/feeds/all.rss";
|
||||||
string BaseUrl;
|
string BaseUrl;
|
||||||
static string chromeUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36";
|
static string chromeUserAgent = BrowserUtil.ChromeUserAgent;
|
||||||
|
|
||||||
CookieContainer cookies;
|
CookieContainer cookies;
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
|
@@ -40,7 +40,7 @@ namespace Jackett.Indexers
|
|||||||
const string LoginUrl = BaseUrl + "/tak3login.php";
|
const string LoginUrl = BaseUrl + "/tak3login.php";
|
||||||
const string SearchUrl = BaseUrl + "/browse.php?search={0}&cata=yes&c2=1&c7=1&c14=1&c24=1&c26=1&c31=1&c32=1&c33=1";
|
const string SearchUrl = BaseUrl + "/browse.php?search={0}&cata=yes&c2=1&c7=1&c14=1&c24=1&c26=1&c31=1&c32=1&c33=1";
|
||||||
|
|
||||||
const string chromeUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36";
|
static string chromeUserAgent = BrowserUtil.ChromeUserAgent;
|
||||||
|
|
||||||
CookieContainer cookies;
|
CookieContainer cookies;
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
|
@@ -35,7 +35,7 @@ namespace Jackett.Indexers
|
|||||||
const string DefaultUrl = "https://torrentz.eu";
|
const string DefaultUrl = "https://torrentz.eu";
|
||||||
const string SearchUrl = DefaultUrl + "/feed_verifiedP?f={0}";
|
const string SearchUrl = DefaultUrl + "/feed_verifiedP?f={0}";
|
||||||
string BaseUrl;
|
string BaseUrl;
|
||||||
static string chromeUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36";
|
static string chromeUserAgent = BrowserUtil.ChromeUserAgent;
|
||||||
|
|
||||||
CookieContainer cookies;
|
CookieContainer cookies;
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
|
@@ -24,5 +24,27 @@ namespace Jackett
|
|||||||
return long.Parse(str, NumberStyles.Any, CultureInfo.InvariantCulture);
|
return long.Parse(str, NumberStyles.Any, CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static float TryCoerceFloat(string str)
|
||||||
|
{
|
||||||
|
float val;
|
||||||
|
float.TryParse(str, NumberStyles.Any, CultureInfo.InvariantCulture, out val);
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int TryCoerceInt(string str)
|
||||||
|
{
|
||||||
|
int val;
|
||||||
|
int.TryParse(str, NumberStyles.Any, CultureInfo.InvariantCulture, out val);
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static long TryCoerceLong(string str)
|
||||||
|
{
|
||||||
|
long val;
|
||||||
|
long.TryParse(str, NumberStyles.Any, CultureInfo.InvariantCulture, out val);
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,39 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Security.Cryptography;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Jackett
|
|
||||||
{
|
|
||||||
public class Security
|
|
||||||
{
|
|
||||||
public static string HashMD5(string value)
|
|
||||||
{
|
|
||||||
MD5 md5 = MD5.Create();
|
|
||||||
byte[] inputBytes = Encoding.ASCII.GetBytes(value);
|
|
||||||
byte[] hash = md5.ComputeHash(inputBytes);
|
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
for (int i = 0; i < hash.Length; i++)
|
|
||||||
{
|
|
||||||
sb.Append(hash[i].ToString("X2"));
|
|
||||||
}
|
|
||||||
return sb.ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string Base64Encode(string plainText)
|
|
||||||
{
|
|
||||||
var plainTextBytes = Encoding.UTF8.GetBytes(plainText);
|
|
||||||
return Convert.ToBase64String(plainTextBytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string Base64Decode(string base64EncodedData)
|
|
||||||
{
|
|
||||||
var base64EncodedBytes = Convert.FromBase64String(base64EncodedData);
|
|
||||||
return Encoding.UTF8.GetString(base64EncodedBytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
Reference in New Issue
Block a user