mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-09 21:24:42 +02:00
Compare commits
8 Commits
v0.12.1345
...
v0.12.1354
Author | SHA1 | Date | |
---|---|---|---|
![]() |
0cd46efe35 | ||
![]() |
1433ffcd13 | ||
![]() |
450bc8b5ff | ||
![]() |
4eadff404a | ||
![]() |
213141f55e | ||
![]() |
370f95f888 | ||
![]() |
7c8ad8ac41 | ||
![]() |
f7401d6344 |
@@ -127,6 +127,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* Deildu
|
||||
* DXP (Deaf Experts)
|
||||
* EniaHD
|
||||
* ExtremlymTorrents
|
||||
* Film-Paleis
|
||||
* Gay-Torrents.net
|
||||
* Gay-Torrents.org
|
||||
@@ -210,6 +211,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* CHDBits
|
||||
* ChannelX
|
||||
* Cinemageddon
|
||||
* CinemaMovies
|
||||
* Cinematik
|
||||
* CinemaZ (EuTorrents)
|
||||
* Classix
|
||||
@@ -410,7 +412,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* ToTheGlory
|
||||
* TranceTraffic
|
||||
* Trezzor
|
||||
* TurkTorrent (TT) [![(invite needed)][inviteneeded]](#)
|
||||
* TurkTorrent (TT)
|
||||
* TV Chaos UK (TVCUK)
|
||||
* TV-Vault
|
||||
* TVstore
|
||||
|
@@ -33,6 +33,7 @@
|
||||
options:
|
||||
"time": "created"
|
||||
"length": "size"
|
||||
"popular": "seeders"
|
||||
|
||||
search:
|
||||
paths:
|
||||
@@ -59,12 +60,10 @@
|
||||
selector: div[class$="info"] span:nth-of-type(3)
|
||||
filters:
|
||||
- name: timeago
|
||||
grabs:
|
||||
selector: div[class$="info"] span:nth-of-type(4)
|
||||
seeders:
|
||||
text: 1
|
||||
selector: div[class$="info"] span:nth-of-type(4)
|
||||
leechers:
|
||||
text: 1
|
||||
selector: div[class$="info"] span:nth-of-type(5)
|
||||
downloadvolumefactor:
|
||||
text: 0
|
||||
uploadvolumefactor:
|
||||
|
137
src/Jackett.Common/Definitions/cinemamovies.yml
Normal file
137
src/Jackett.Common/Definitions/cinemamovies.yml
Normal file
@@ -0,0 +1,137 @@
|
||||
---
|
||||
site: cinemamovies
|
||||
name: CinemaMovies
|
||||
description: "CinemaMovies is a POLISH Private Torrent Tracker for MOVIES / TV / GENERAL"
|
||||
language: pl-pl
|
||||
type: private
|
||||
encoding: ISO-8859-2
|
||||
links:
|
||||
- https://cinemamovies.pl/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 3, cat: Movies/BluRay, desc: "Filmy BD25/50_5/9"}
|
||||
- {id: 5, cat: Movies/3D, desc: "Filmy 3D"}
|
||||
- {id: 6, cat: Movies/DVD, desc: "Filmy DVD5/9"}
|
||||
- {id: 8, cat: Movies/HD, desc: "Filmy HD"}
|
||||
- {id: 11, cat: Movies/SD, desc: "Filmy SD"}
|
||||
- {id: 12, cat: Movies/Other, desc: "Filmy Inne"}
|
||||
- {id: 32, cat: Movies/UHD, desc: "Filmy UHD"}
|
||||
- {id: 2, cat: TV/Anime, desc: "Anime"}
|
||||
- {id: 2, cat: TV/Documentary, desc: "TV Dokumentalne"}
|
||||
- {id: 20, cat: TV, desc: "TV Paczki"}
|
||||
- {id: 22, cat: TV/Sport, desc: "TV Sport"}
|
||||
- {id: 24, cat: TV/HD, desc: "TV HD"}
|
||||
- {id: 25, cat: TV/SD, desc: "TV SD"}
|
||||
- {id: 1, cat: PC, desc: "Aplikacje"}
|
||||
- {id: 15, cat: PC/Games, desc: "Gry"}
|
||||
- {id: 16, cat: PC/Phone-Other, desc: "Mobile"}
|
||||
- {id: 17, cat: Other, desc: "Inne"}
|
||||
- {id: 19, cat: Audio, desc: "Muzyka"}
|
||||
- {id: 21, cat: Books, desc: "Book"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings:
|
||||
- name: cookie
|
||||
type: text
|
||||
label: Cookie
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Select the <b>Headers</b> tab<li>Find 'cookie:' in the <b>Request Headers</b> section<li>Copy & paste the whole cookie string to here.</ol>"
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: "2"
|
||||
options:
|
||||
"2": "created"
|
||||
"5": "seeders"
|
||||
"3": "size"
|
||||
"1": "title"
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: "desc"
|
||||
options:
|
||||
"desc": "desc"
|
||||
"asc": "asc"
|
||||
|
||||
login:
|
||||
method: cookie
|
||||
inputs:
|
||||
cookie: "{{ .Config.cookie }}"
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href^="/logout.php"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
# 0 onlyactive 1 all 4 requests 5 onlydead 6 polish 8 free 10 doubleup 11 premier 13 VOD
|
||||
incldead: 1
|
||||
# 0 title 1 descr
|
||||
blah: 0
|
||||
sort: "{{ .Config.sort }}"
|
||||
type: "{{ .Config.type }}"
|
||||
|
||||
rows:
|
||||
selector: table[width="100%"] > tbody > tr:has(a[href^="browse.php?cat="])
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="browse.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
title:
|
||||
selector: a[href^="details.php?id="]
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php/"]
|
||||
attribute: href
|
||||
banner:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "src=(.+?) "
|
||||
description:
|
||||
optional: true
|
||||
selector: img[src="pic/Poland.png"]
|
||||
attribute: src
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["pic/Poland.png", "Polish"]
|
||||
date:
|
||||
selector: td[width="66%"] > span > span
|
||||
filters:
|
||||
- name: append
|
||||
args: " +00:00"
|
||||
- name: dateparse
|
||||
args: "2006-01-02 15:04:05 -07:00"
|
||||
size:
|
||||
selector: td:nth-child(4)
|
||||
seeders:
|
||||
selector: a[href$="#seedy"]
|
||||
leechers:
|
||||
selector: a[href$="#leechy"]
|
||||
grabs:
|
||||
selector: td:last-child > small> span
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="pic/free.png"]: 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
img[src="pic/double.png"]: 2
|
||||
"*": 1
|
168
src/Jackett.Common/Definitions/extremlymtorrents.yml
Normal file
168
src/Jackett.Common/Definitions/extremlymtorrents.yml
Normal file
@@ -0,0 +1,168 @@
|
||||
---
|
||||
site: extremlymtorrents
|
||||
name: ExtremlymTorrents
|
||||
description: "ExtremlymTorrents is a Semi-Private tracker for MOVIES / TV / GENERAL"
|
||||
language: en-us
|
||||
type: semi-private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://extremlymtorrents.ws/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 22, cat: Movies/HD, desc: "720p HD"}
|
||||
- {id: 15, cat: Movies/HD, desc: "1080p HD"}
|
||||
- {id: 40, cat: Movies/UHD, desc: "4K UHD 2160p"}
|
||||
- {id: 12, cat: Movies/BluRay, desc: "BluRay"}
|
||||
- {id: 5, cat: Movies/DVD, desc: "DVDRip "}
|
||||
- {id: 16, cat: Movies/3D, desc: "BluRay 3D"}
|
||||
- {id: 13, cat: TV/HD, desc: "HDTV"}
|
||||
- {id: 47, cat: XXX, desc: "Porn UHD 4K -[+18]- xXx"}
|
||||
- {id: 11, cat: XXX, desc: "Porn -[+18]- xXx"}
|
||||
- {id: 41, cat: TV, desc: "TVRip"}
|
||||
- {id: 6, cat: Audio, desc: "Music Mp3 | FLAC"}
|
||||
- {id: 9, cat: TV, desc: "Kidz | Cartoons"}
|
||||
- {id: 8, cat: Books/Ebook, desc: "Comics | EBook"}
|
||||
- {id: 10, cat: TV, desc: "TV Episode | Season Complete"}
|
||||
- {id: 27, cat: Movies/DVD, desc: "DVD | PAL | NTSC"}
|
||||
- {id: 25, cat: Movies/WEBDL, desc: "WEBRip | WEB-DL"}
|
||||
- {id: 35, cat: Movies, desc: "BRRip | BDRip | HDRip"}
|
||||
- {id: 3, cat: PC, desc: "Applications"}
|
||||
- {id: 17, cat: Console/PSP, desc: "PSP | Playstation "}
|
||||
- {id: 30, cat: TV/SD, desc: "PDTV | SDTV"}
|
||||
- {id: 18, cat: Console/PS3, desc: "PS3 | Playstation 3 "}
|
||||
- {id: 46, cat: Console/PS4, desc: "PS4 | PlayStation 4"}
|
||||
- {id: 20, cat: PC/Phone-IOS, desc: "Iphone iOS"}
|
||||
- {id: 19, cat: PC/Phone-Android, desc: "Android Apk"}
|
||||
- {id: 21, cat: Movies, desc: "Pack"}
|
||||
- {id: 49, cat: TV/UHD, desc: "TV UHD | 2160p | Episodes"}
|
||||
- {id: 24, cat: Audio/Video, desc: "VideoClip"}
|
||||
- {id: 26, cat: Console/Wii, desc: "Wii Games"}
|
||||
- {id: 31, cat: TV/Documentary, desc: "DOC's"}
|
||||
- {id: 36, cat: Movies, desc: "CAMRip | REC"}
|
||||
- {id: 38, cat: Movies, desc: "TS: TeleSync | HD-TS"}
|
||||
- {id: 48, cat: Audio/Video, desc: "4K | 2160p | Music Video"}
|
||||
- {id: 28, cat: TV/Anime, desc: "Anime | Japanese"}
|
||||
- {id: 43, cat: XXX, desc: "Hentai | Manga"}
|
||||
- {id: 29, cat: PC/0day, desc: "Windows PC"}
|
||||
- {id: 7, cat: PC/Mac, desc: "Mac"}
|
||||
- {id: 23, cat: PC, desc: "Linux"}
|
||||
- {id: 32, cat: PC/Phone-Other, desc: "GPS Navigation"}
|
||||
- {id: 45, cat: Audio, desc: "Vinyl Rip"}
|
||||
- {id: 2, cat: Console/Xbox 360, desc: "XBOX 360"}
|
||||
- {id: 1, cat: PC/Games, desc: "Games PC"}
|
||||
- {id: 14, cat: Other, desc: "Wallpapers"}
|
||||
- {id: 44, cat: Movies, desc: "Bollywood"}
|
||||
- {id: 42, cat: Other/Misc, desc: "X EXTERN ONLY MAGNET"}
|
||||
- {id: 39, cat: TV/Sport, desc: "Sport TV"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: "id"
|
||||
options:
|
||||
"id": "created"
|
||||
"seeders": "seeders"
|
||||
"size": "size"
|
||||
"name": "title"
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: "desc"
|
||||
options:
|
||||
"desc": "desc"
|
||||
"asc": "asc"
|
||||
|
||||
login:
|
||||
path: account-login.php
|
||||
method: post
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: span.titlebar:contains("Access Denied")
|
||||
message:
|
||||
selector: td.text
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href="account-logout.php"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: torrents-search.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
# 0 all 1 English 2 etc...
|
||||
lang: 0
|
||||
sort: "{{ .Config.sort }}"
|
||||
order: "{{ .Config.type }}"
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["(\\w+)", " +$1"] # prepend + to each word
|
||||
|
||||
rows:
|
||||
selector: table.xtrz > tbody > tr[class^="ttable_col"]
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="torrents.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
language:
|
||||
selector: td:nth-last-child(5)
|
||||
description:
|
||||
optional: true
|
||||
selector: img[src="/images/vip-icon.png"]
|
||||
attribute: src
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["/images/vip-icon.png", " VIP ONLY"]
|
||||
title:
|
||||
selector: a[href^="file.php?id="] b
|
||||
filters:
|
||||
- name: append
|
||||
args: " {{ .Result.language }}{{ .Result.description }}"
|
||||
details:
|
||||
selector: a[href^="file.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
banner:
|
||||
selector: a[href^="file.php?id="]
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "src=(.+?) "
|
||||
date:
|
||||
selector: td:nth-last-child(1)
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "02.01.200615:04:05"
|
||||
leechers:
|
||||
selector: td:nth-last-child(2)
|
||||
seeders:
|
||||
selector: td:nth-last-child(3)
|
||||
size:
|
||||
selector: td:nth-last-child(4)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="/images/free.png"]: 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
text: 1
|
@@ -54,7 +54,7 @@
|
||||
label: Sort requested from site
|
||||
default: "id"
|
||||
options:
|
||||
"is": "created"
|
||||
"id": "created"
|
||||
"seeders": "seeders"
|
||||
"size": "size"
|
||||
"name": "title"
|
||||
|
@@ -40,6 +40,7 @@
|
||||
"adult fisting": XXX
|
||||
"adult hairy": XXX
|
||||
"adult hentai": XXX
|
||||
"adult interracial": XXX
|
||||
"adult lesbian": XXX
|
||||
"adult milf": XXX
|
||||
"adult squirting": XXX
|
||||
@@ -87,14 +88,6 @@
|
||||
# andmatch filter removed, see #3737
|
||||
|
||||
fields:
|
||||
category:
|
||||
optional: true
|
||||
selector: dt
|
||||
remove: a
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["[^a-zA-Z\\s]+", ""]
|
||||
- name: trim
|
||||
title:
|
||||
selector: dt a
|
||||
details:
|
||||
@@ -128,6 +121,14 @@
|
||||
args: "magnet:?xt=urn:btih:"
|
||||
- name: append
|
||||
args: "&dn={{ .Result.magfile }}.torrent&tr=udp://tracker.coppersurfer.tk:6969&tr=udp://tracker.leechers-paradise.org:6969&tr=udp://tracker.opentrackr.org:1337"
|
||||
category:
|
||||
optional: true
|
||||
selector: dt
|
||||
remove: a
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["[^a-zA-Z0-9\\s]+", ""]
|
||||
- name: trim
|
||||
date:
|
||||
selector: dd span:nth-child(2)
|
||||
attribute: title
|
||||
|
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using AngleSharp.Html.Parser;
|
||||
using AngleSharp.Html.Parser;
|
||||
using Jackett.Common.Models;
|
||||
using Jackett.Common.Models.IndexerConfig;
|
||||
using Jackett.Common.Services.Interfaces;
|
||||
@@ -12,18 +6,24 @@ using Jackett.Common.Utils;
|
||||
using Jackett.Common.Utils.Clients;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Jackett.Common.Indexers
|
||||
{
|
||||
public class Pier720 : BaseWebIndexer
|
||||
{
|
||||
private string LoginUrl { get { return SiteLink + "ucp.php?mode=login"; } }
|
||||
private string SearchUrl { get { return SiteLink + "search.php"; } }
|
||||
private string LoginUrl => SiteLink + "ucp.php?mode=login";
|
||||
private string SearchUrl => SiteLink + "search.php";
|
||||
|
||||
private new ConfigurationDataBasicLoginWithRSSAndDisplay configData
|
||||
{
|
||||
get { return (ConfigurationDataBasicLoginWithRSSAndDisplay)base.configData; }
|
||||
set { base.configData = value; }
|
||||
get => (ConfigurationDataBasicLoginWithRSSAndDisplay)base.configData;
|
||||
set => base.configData = value;
|
||||
}
|
||||
|
||||
public Pier720(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
|
||||
@@ -40,7 +40,7 @@ namespace Jackett.Common.Indexers
|
||||
Encoding = Encoding.UTF8;
|
||||
Language = "ru-ru";
|
||||
Type = "private";
|
||||
|
||||
|
||||
AddCategoryMapping(32, TorznabCatType.TVSport, "Basketball");
|
||||
AddCategoryMapping(34, TorznabCatType.TVSport, "Basketball - NBA");
|
||||
AddCategoryMapping(87, TorznabCatType.TVSport, "Basketball - NBA Playoffs");
|
||||
@@ -113,14 +113,20 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
var pairs = new Dictionary<string, string>
|
||||
{
|
||||
{ "username", configData.Username.Value },
|
||||
{ "password", configData.Password.Value },
|
||||
{ "redirect", "/" },
|
||||
{ "login", "Login" }
|
||||
{"username", configData.Username.Value},
|
||||
{"password", configData.Password.Value},
|
||||
{"redirect", "/"},
|
||||
{"login", "Login"},
|
||||
{"autologin", "on"}
|
||||
};
|
||||
var htmlParser = new HtmlParser();
|
||||
var loginDocument = htmlParser.ParseDocument((await RequestStringWithCookies(LoginUrl)).Content);
|
||||
pairs["creation_time"] = loginDocument.GetElementsByName("creation_time")[0].GetAttribute("value");
|
||||
pairs["form_token"] = loginDocument.GetElementsByName("form_token")[0].GetAttribute("value");
|
||||
pairs["sid"] = loginDocument.GetElementsByName("sid")[0].GetAttribute("value");
|
||||
|
||||
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl, true);
|
||||
await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("ucp.php?mode=logout&"), () =>
|
||||
await ConfigureIfOK(result.Cookies, result.Content?.Contains("ucp.php?mode=logout&") == true, () =>
|
||||
{
|
||||
var errorMessage = result.Content;
|
||||
throw new ExceptionWithConfigData(errorMessage, configData);
|
||||
@@ -133,16 +139,18 @@ namespace Jackett.Common.Indexers
|
||||
var releases = new List<ReleaseInfo>();
|
||||
var searchString = query.GetQueryString();
|
||||
|
||||
WebClientStringResult results = null;
|
||||
var queryCollection = new NameValueCollection();
|
||||
var queryCollection = new NameValueCollection
|
||||
{
|
||||
{"st", "0"},
|
||||
{"sd", "d"},
|
||||
{"sk", "t"},
|
||||
{"tracker_search", "torrent"},
|
||||
{"t", "0"},
|
||||
{"submit", "Search"},
|
||||
{"sr", "topics"},
|
||||
{"ot", "1" }
|
||||
};
|
||||
|
||||
queryCollection.Add("st", "0");
|
||||
queryCollection.Add("sd", "d");
|
||||
queryCollection.Add("sk", "t");
|
||||
queryCollection.Add("tracker_search", "torrent");
|
||||
queryCollection.Add("t", "0");
|
||||
queryCollection.Add("submit", "Search");
|
||||
queryCollection.Add("sr", "topics");
|
||||
//queryCollection.Add("sr", "posts");
|
||||
//queryCollection.Add("ch", "99999");
|
||||
|
||||
@@ -150,7 +158,6 @@ namespace Jackett.Common.Indexers
|
||||
if (string.IsNullOrWhiteSpace(searchString))
|
||||
{
|
||||
queryCollection.Add("search_id", "active_topics");
|
||||
queryCollection.Add("ot", "1");
|
||||
}
|
||||
else // use the normal search
|
||||
{
|
||||
@@ -159,11 +166,10 @@ namespace Jackett.Common.Indexers
|
||||
queryCollection.Add("sf", "titleonly");
|
||||
queryCollection.Add("sr", "topics");
|
||||
queryCollection.Add("pt", "t");
|
||||
queryCollection.Add("ot", "1");
|
||||
}
|
||||
|
||||
var searchUrl = SearchUrl + "?" + queryCollection.GetQueryString();
|
||||
results = await RequestStringWithCookies(searchUrl);
|
||||
var results = await RequestStringWithCookies(searchUrl);
|
||||
if (!results.Content.Contains("ucp.php?mode=logout"))
|
||||
{
|
||||
await ApplyConfiguration(null);
|
||||
@@ -171,47 +177,53 @@ namespace Jackett.Common.Indexers
|
||||
}
|
||||
try
|
||||
{
|
||||
string RowsSelector = "ul.topics > li.row";
|
||||
const string rowsSelector = "ul.topics > li.row";
|
||||
|
||||
var ResultParser = new HtmlParser();
|
||||
var SearchResultDocument = ResultParser.ParseDocument(results.Content);
|
||||
var Rows = SearchResultDocument.QuerySelectorAll(RowsSelector);
|
||||
foreach (var Row in Rows)
|
||||
var resultParser = new HtmlParser();
|
||||
var searchResultDocument = resultParser.ParseDocument(results.Content);
|
||||
var rows = searchResultDocument.QuerySelectorAll(rowsSelector);
|
||||
foreach (var row in rows)
|
||||
{
|
||||
try
|
||||
{
|
||||
var release = new ReleaseInfo();
|
||||
{
|
||||
var release = new ReleaseInfo
|
||||
{
|
||||
MinimumRatio = 1,
|
||||
MinimumSeedTime = 0,
|
||||
DownloadVolumeFactor = 1,
|
||||
UploadVolumeFactor = 1,
|
||||
Seeders = ParseUtil.CoerceInt(row.QuerySelector("span.seed").TextContent),
|
||||
Grabs = ParseUtil.CoerceLong(row.QuerySelector("span.complet").TextContent),
|
||||
};
|
||||
release.Peers = ParseUtil.CoerceInt(row.QuerySelector("span.leech").TextContent) + release.Seeders;
|
||||
|
||||
release.MinimumRatio = 1;
|
||||
release.MinimumSeedTime = 0;
|
||||
|
||||
var qDetailsLink = Row.QuerySelector("a.topictitle");
|
||||
var qDetailsLink = row.QuerySelector("a.topictitle");
|
||||
|
||||
release.Title = qDetailsLink.TextContent;
|
||||
release.Comments = new Uri(SiteLink + qDetailsLink.GetAttribute("href"));
|
||||
release.Guid = release.Comments;
|
||||
|
||||
var detailsResult = await RequestStringWithCookies(SiteLink + qDetailsLink.GetAttribute("href"));
|
||||
var DetailsResultDocument = ResultParser.ParseDocument(detailsResult.Content);
|
||||
var qDownloadLink = DetailsResultDocument.QuerySelector("table.table2 > tbody > tr > td > a[href^=\"/download/torrent.php?id\"]");
|
||||
var detailsResultDocument = resultParser.ParseDocument(detailsResult.Content);
|
||||
var qDownloadLink = detailsResultDocument.QuerySelector("table.table2 > tbody > tr > td > a[href^=\"/download/torrent\"]");
|
||||
|
||||
release.Link = new Uri(SiteLink + qDownloadLink.GetAttribute("href").TrimStart('/'));
|
||||
|
||||
release.Seeders = ParseUtil.CoerceInt(Row.QuerySelector("span.seed").TextContent);
|
||||
release.Peers = ParseUtil.CoerceInt(Row.QuerySelector("span.leech").TextContent) + release.Seeders;
|
||||
release.Grabs = ParseUtil.CoerceLong(Row.QuerySelector("span.complet").TextContent);
|
||||
|
||||
var author = Row.QuerySelector("dd.lastpost > span");
|
||||
var timestr = author.TextContent.Split('\n')[4].Trim();
|
||||
var author = row.QuerySelector("dd.lastpost > span");
|
||||
var timestr = author.TextContent.Split('\n')
|
||||
.Where(str => !str.IsNullOrEmptyOrWhitespace()) //Filter blank lines
|
||||
.Skip(1) //Skip author name
|
||||
.FirstOrDefault()
|
||||
.Trim();
|
||||
|
||||
release.PublishDate = DateTimeUtil.FromUnknown(timestr, "UK");
|
||||
|
||||
var forum = Row.QuerySelector("a[href^=\"./viewforum.php?f=\"]");
|
||||
var forum = row.QuerySelector("a[href^=\"./viewforum.php?f=\"]");
|
||||
var forumid = forum.GetAttribute("href").Split('=')[1];
|
||||
|
||||
release.Category = MapTrackerCatToNewznab(forumid);
|
||||
|
||||
var size = Row.QuerySelector("dl.row-item > dt > div.list-inner > div[style^=\"float:right\"]").TextContent;
|
||||
var size = row.QuerySelector("dl.row-item > dt > div.list-inner > div[style^=\"float:right\"]").TextContent;
|
||||
size = size.Replace("GiB", "GB");
|
||||
size = size.Replace("MiB", "MB");
|
||||
size = size.Replace("KiB", "KB");
|
||||
@@ -222,14 +234,11 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
release.Size = ReleaseInfo.GetBytes(size);
|
||||
|
||||
release.DownloadVolumeFactor = 1;
|
||||
release.UploadVolumeFactor = 1;
|
||||
|
||||
releases.Add(release);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Error(string.Format("{0}: Error while parsing row '{1}':\n\n{2}", ID, Row.OuterHtml, ex));
|
||||
logger.Error($"{ID}: Error while parsing row '{row.OuterHtml}':\n\n{ex}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user