mirror of
https://github.com/Jackett/Jackett
synced 2025-01-02 21:26:08 +00:00
Convert ArcheTorrent from C# to Definition file (#1987)
* Merge ArcheTorrent from C# to Definition files * Merge ArcheTorrent from C# to Definition files (forgot csproj file)
This commit is contained in:
parent
8ff186d716
commit
6e61f38644
3 changed files with 136 additions and 209 deletions
135
src/Jackett/Definitions/archetorrent.yml
Normal file
135
src/Jackett/Definitions/archetorrent.yml
Normal file
|
@ -0,0 +1,135 @@
|
|||
---
|
||||
site: archetorrent
|
||||
name: ArcheTorrent
|
||||
description: "ArcheTorrent is a FRENCH Private Torrent Tracker"
|
||||
language: fr-fr
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://archetorrent.com
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 18, cat: PC, desc: "Applications: PC"}
|
||||
- {id: 19, cat: PC/Mac, desc: "Applications: Mac"}
|
||||
- {id: 54, cat: PC, desc: "Applications: linux"}
|
||||
- {id: 56, cat: XXX/Other, desc: "Autres: ebook xxx"}
|
||||
- {id: 36, cat: Books, desc: "Autres: E-Books"}
|
||||
- {id: 37, cat: Other, desc: "Autres: Images"}
|
||||
- {id: 38, cat: PC/Phone-Other, desc: "Autres: Telephone-mobile"}
|
||||
- {id: 47, cat: Movies, desc: "Films: Animé"}
|
||||
- {id: 1, cat: Movies/DVD, desc: "Films: DVD"}
|
||||
- {id: 2, cat: Movies/SD, desc: "Films: Dvdrip"}
|
||||
- {id: 68, cat: Movies, desc: "Films: TAT Releases"}
|
||||
- {id: 70, cat: Movies/HD, desc: "Films: UHD 4K"}
|
||||
- {id: 69, cat: Movies, desc: "Films: Retro"}
|
||||
- {id: 3, cat: Movies/HD, desc: "Films: HD1080"}
|
||||
- {id: 42, cat: Movies/HD, desc: "Films: HD720"}
|
||||
- {id: 4, cat: Movies, desc: "Films: Cam/Ts"}
|
||||
- {id: 22, cat: Movies/BluRay, desc: "Films: bluray"}
|
||||
- {id: 23, cat: Movies/3D, desc: "Films: 3D"}
|
||||
- {id: 24, cat: Movies/Foreign, desc: "Films: VOSTFR"}
|
||||
- {id: 25, cat: XXX, desc: "Films: Adulte"}
|
||||
- {id: 48, cat: TV/Documentary, desc: "Films: Documentaire"}
|
||||
- {id: 49, cat: Movies/Other, desc: "Films: Spectacle"}
|
||||
- {id: 51, cat: Movies/SD, desc: "Films: R5"}
|
||||
- {id: 52, cat: Movies/SD, desc: "Films: bdrip"}
|
||||
- {id: 53, cat: Movies/SD, desc: "Films: brrip"}
|
||||
- {id: 55, cat: Movies/DVD, desc: "Films: dvd-pack"}
|
||||
- {id: 57, cat: Movies, desc: "Films: manga"}
|
||||
- {id: 59, cat: Movies/WEBDL, desc: "Films: Webrip"}
|
||||
- {id: 63, cat: Movies/SD, desc: "Films: M-HD"}
|
||||
- {id: 10, cat: PC/Games, desc: "Jeux: PC"}
|
||||
- {id: 11, cat: Console/Other, desc: "Jeux: PS2"}
|
||||
- {id: 43, cat: Console/PS3, desc: "Jeux: PS3"}
|
||||
- {id: 12, cat: Console/PSP, desc: "Jeux: PSP"}
|
||||
- {id: 14, cat: Console/Xbox 360, desc: "Jeux: Xbox360"}
|
||||
- {id: 44, cat: Console/Wii, desc: "Jeux: Wii"}
|
||||
- {id: 45, cat: Console/NDS, desc: "Jeux: DS"}
|
||||
- {id: 27, cat: Audio/Video, desc: "Musique: Clip Video"}
|
||||
- {id: 62, cat: TV/SD, desc: "Serie tv: TV BDRip"}
|
||||
- {id: 5, cat: TV/SD, desc: "Serie tv: Dvdrip"}
|
||||
- {id: 41, cat: TV/HD, desc: "Serie tv: Hd"}
|
||||
- {id: 60, cat: TV/SD, desc: "Serie tv: pack série tv"}
|
||||
- {id: 64, cat: TV/FOREIGN, desc: "Serie tv: vostfr"}
|
||||
- {id: 65, cat: TV/HD, desc: "Serie tv: Série tv 720P"}
|
||||
- {id: 66, cat: TV/HD, desc: "Serie tv: Série tv 1080P"}
|
||||
- {id: 67, cat: TV/HD, desc: "Serie tv: Série tv PackHD"}
|
||||
- {id: 73, cat: TV/Anime, desc: "Serie tv: Anime "}
|
||||
- {id: 72, cat: TV/Sport, desc: "Sport: sport"}
|
||||
- {id: 61, cat: TV/SD, desc: "Tv: DVDRip"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
|
||||
login:
|
||||
path: account-login.php
|
||||
method: post
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: form:contains("Erreur")
|
||||
message:
|
||||
selector: form
|
||||
remove: table
|
||||
test:
|
||||
path: torrents-search.php
|
||||
|
||||
search:
|
||||
path: torrents-search.php
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Query.Keywords }}"
|
||||
incldead: "1"
|
||||
|
||||
rows:
|
||||
selector: table.ttable_headinner > tbody > tr[class^="t-row"]
|
||||
fields:
|
||||
download:
|
||||
selector: a[href^="torrents-details.php?id="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["torrents-details.php", "download.php"]
|
||||
date:
|
||||
selector: td:nth-child(2) a
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "Poster le: </b>(.*?)<br />"
|
||||
- name: dateparse
|
||||
args: "02-01-2006"
|
||||
title:
|
||||
selector: a[href^="torrents-details.php?id="]
|
||||
filters:
|
||||
- name: replace
|
||||
args: [" - (Nouveau!)", ""]
|
||||
category:
|
||||
selector: a[href^="torrents.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
details:
|
||||
selector: a[href^="torrents-details.php?id="]
|
||||
attribute: href
|
||||
banner:
|
||||
selector: img.rounded-img
|
||||
attribute: src
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
grabs:
|
||||
selector: td:nth-child(8) font b
|
||||
seeders:
|
||||
selector: td:nth-child(6) font b
|
||||
leechers:
|
||||
selector: td:nth-child(7) font b
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[title="freeleech"]: "0"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"*": "1"
|
|
@ -1,204 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using AngleSharp.Parser.Html;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
using Jackett.Models;
|
||||
using Jackett.Models.IndexerConfig;
|
||||
using Jackett.Services;
|
||||
using Jackett.Utils;
|
||||
using Jackett.Utils.Clients;
|
||||
|
||||
namespace Jackett.Indexers
|
||||
{
|
||||
class ArcheTorrent : BaseWebIndexer
|
||||
{
|
||||
string LoginUrl { get { return SiteLink + "account-login.php"; } }
|
||||
string BrowseUrl { get { return SiteLink + "torrents-search.php"; } }
|
||||
string DownloadUrl { get { return SiteLink + "download.php"; } }
|
||||
|
||||
new ConfigurationDataBasicLogin configData
|
||||
{
|
||||
get { return (ConfigurationDataBasicLogin)base.configData; }
|
||||
set { base.configData = value; }
|
||||
}
|
||||
|
||||
public ArcheTorrent(IIndexerConfigurationService configService, IWebClient webClient, Logger logger, IProtectionService protectionService)
|
||||
: base(name: "Arche Torrent",
|
||||
description: "French Torrent Tracker",
|
||||
link: "https://www.archetorrent.com/",
|
||||
configService: configService,
|
||||
logger: logger,
|
||||
p: protectionService,
|
||||
client: webClient,
|
||||
configData: new ConfigurationDataBasicLogin()
|
||||
)
|
||||
{
|
||||
Encoding = Encoding.GetEncoding("UTF-8");
|
||||
Language = "fr-fr";
|
||||
Type = "private";
|
||||
|
||||
AddCategoryMapping (18, TorznabCatType.PC, "Applications: PC");
|
||||
AddCategoryMapping (19, TorznabCatType.PCMac, "Applications: Mac");
|
||||
AddCategoryMapping (54, TorznabCatType.PC, "Applications: linux");
|
||||
AddCategoryMapping (56, TorznabCatType.XXXOther, "Autres: ebook xxx");
|
||||
AddCategoryMapping (36, TorznabCatType.Books, "Autres: E-Books");
|
||||
AddCategoryMapping (37, TorznabCatType.Other, "Autres: Images");
|
||||
AddCategoryMapping (38, TorznabCatType.PCPhoneOther, "Autres: Telephone-mobile");
|
||||
AddCategoryMapping (47, TorznabCatType.Movies, "Films: Animé");
|
||||
AddCategoryMapping (1, TorznabCatType.MoviesDVD, "Films: DVD");
|
||||
AddCategoryMapping (2, TorznabCatType.MoviesSD, "Films: Dvdrip");
|
||||
AddCategoryMapping (68, TorznabCatType.Movies, "Films: TAT Releases");
|
||||
AddCategoryMapping (70, TorznabCatType.MoviesHD, "Films: UHD 4K");
|
||||
AddCategoryMapping (69, TorznabCatType.Movies, "Films: Retro");
|
||||
AddCategoryMapping (3, TorznabCatType.MoviesHD, "Films: HD1080");
|
||||
AddCategoryMapping (42, TorznabCatType.MoviesHD, "Films: HD720");
|
||||
AddCategoryMapping (4, TorznabCatType.Movies, "Films: Cam/Ts");
|
||||
AddCategoryMapping (22, TorznabCatType.MoviesBluRay, "Films: bluray");
|
||||
AddCategoryMapping (23, TorznabCatType.Movies3D, "Films: 3D");
|
||||
AddCategoryMapping (24, TorznabCatType.MoviesForeign, "Films: VOSTFR");
|
||||
AddCategoryMapping (25, TorznabCatType.XXX, "Films: Adulte");
|
||||
AddCategoryMapping (48, TorznabCatType.TVDocumentary, "Films: Documentaire");
|
||||
AddCategoryMapping (49, TorznabCatType.MoviesOther, "Films: Spectacle");
|
||||
AddCategoryMapping (51, TorznabCatType.MoviesSD, "Films: R5");
|
||||
AddCategoryMapping (52, TorznabCatType.MoviesSD, "Films: bdrip");
|
||||
AddCategoryMapping (53, TorznabCatType.MoviesSD, "Films: brrip");
|
||||
AddCategoryMapping (55, TorznabCatType.MoviesDVD, "Films: dvd-pack");
|
||||
AddCategoryMapping (57, TorznabCatType.Movies, "Films: manga");
|
||||
AddCategoryMapping (59, TorznabCatType.MoviesWEBDL, "Films: Webrip");
|
||||
AddCategoryMapping (63, TorznabCatType.MoviesSD, "Films: M-HD");
|
||||
AddCategoryMapping (10, TorznabCatType.PCGames, "Jeux: PC");
|
||||
AddCategoryMapping (11, TorznabCatType.ConsoleOther, "Jeux: PS2");
|
||||
AddCategoryMapping (43, TorznabCatType.ConsolePS3, "Jeux: PS3");
|
||||
AddCategoryMapping (12, TorznabCatType.ConsolePSP, "Jeux: PSP");
|
||||
AddCategoryMapping (14, TorznabCatType.ConsoleXbox360, "Jeux: Xbox360");
|
||||
AddCategoryMapping (44, TorznabCatType.ConsoleWii, "Jeux: Wii");
|
||||
AddCategoryMapping (45, TorznabCatType.ConsoleNDS, "Jeux: DS");
|
||||
AddCategoryMapping (27, TorznabCatType.AudioVideo, "Musique: Clip Video");
|
||||
AddCategoryMapping (62, TorznabCatType.TVSD, "Serie tv: TV BDRip");
|
||||
AddCategoryMapping (5, TorznabCatType.TVSD, "Serie tv: Dvdrip");
|
||||
AddCategoryMapping (41, TorznabCatType.TVHD, "Serie tv: Hd");
|
||||
AddCategoryMapping (60, TorznabCatType.TVSD, "Serie tv: pack série tv");
|
||||
AddCategoryMapping (64, TorznabCatType.TVFOREIGN, "Serie tv: vostfr");
|
||||
AddCategoryMapping (65, TorznabCatType.TVHD, "Serie tv: Série tv 720P");
|
||||
AddCategoryMapping (66, TorznabCatType.TVHD, "Serie tv: Série tv 1080P");
|
||||
AddCategoryMapping (67, TorznabCatType.TVHD, "Serie tv: Série tv PackHD");
|
||||
AddCategoryMapping (73, TorznabCatType.TVAnime, "Serie tv: Anime ");
|
||||
AddCategoryMapping (72, TorznabCatType.TVSport, "Sport: sport");
|
||||
AddCategoryMapping (61, TorznabCatType.TVSD, "Tv: DVDRip");
|
||||
}
|
||||
|
||||
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
|
||||
{
|
||||
configData.LoadValuesFromJson(configJson);
|
||||
|
||||
var pairs = new Dictionary<string, string>
|
||||
{
|
||||
{ "username", configData.Username.Value },
|
||||
{ "password", configData.Password.Value }
|
||||
};
|
||||
|
||||
var result = await PostDataWithCookies(LoginUrl, pairs);
|
||||
|
||||
await ConfigureIfOK(result.Cookies, result.Cookies != null, () =>
|
||||
{
|
||||
var errorMessage = result.Content;
|
||||
throw new ExceptionWithConfigData(errorMessage, configData);
|
||||
});
|
||||
|
||||
return IndexerConfigurationStatus.RequiresTesting;
|
||||
}
|
||||
|
||||
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
|
||||
{
|
||||
var releases = new List<ReleaseInfo>();
|
||||
var searchString = query.GetQueryString();
|
||||
|
||||
var arraySearchString = searchString.Split(' ');
|
||||
searchString = "";
|
||||
foreach (var subSearchString in arraySearchString)
|
||||
{
|
||||
searchString += "+" + subSearchString + " ";
|
||||
}
|
||||
searchString = searchString.Trim ();
|
||||
|
||||
var queryCollection = new Dictionary<string, string>();
|
||||
queryCollection.Add ("search", searchString);
|
||||
queryCollection.Add ("cat", "0");
|
||||
queryCollection.Add ("incldead", "0");
|
||||
queryCollection.Add ("freeleech", "0");
|
||||
queryCollection.Add ("lang", "0");
|
||||
|
||||
var searchUrl = BrowseUrl + "?" + queryCollection.GetQueryString ();
|
||||
|
||||
var results = await RequestStringWithCookies (searchUrl);
|
||||
|
||||
try
|
||||
{
|
||||
var bannerRe = new Regex("src=(.*?)>");
|
||||
var dateRe = new Regex("Poster le: </b>(.*?)<br /><b>Heure: </b>(.*?)<br>");
|
||||
|
||||
var RowsSelector = "table.ttable_headinner tr.t-row";
|
||||
var SearchResultParser = new HtmlParser();
|
||||
var SearchResultDocument = SearchResultParser.Parse(results.Content);
|
||||
var Rows = SearchResultDocument.QuerySelectorAll(RowsSelector);
|
||||
var lastDate = DateTime.Now;
|
||||
|
||||
foreach (var Row in Rows)
|
||||
{
|
||||
var release = new ReleaseInfo();
|
||||
release.MinimumRatio = 1;
|
||||
release.MinimumSeedTime = 0;
|
||||
|
||||
var category = Row.QuerySelector("td:nth-child(1) a");
|
||||
var title = Row.QuerySelector("td:nth-child(2) a b");
|
||||
|
||||
var link = Row.QuerySelector("td:nth-child(2) a");
|
||||
var mouseover = link.GetAttribute("onMouseover");
|
||||
var Size = Row.QuerySelector("td:nth-child(5)");
|
||||
var Grabs = Row.QuerySelector("td:nth-child(8) font b");
|
||||
var Seeders = Row.QuerySelector("td:nth-child(6) font b");
|
||||
var Leechers = Row.QuerySelector("td:nth-child(7) font b");
|
||||
var categoryId = category.GetAttribute("href").Split('=').Last();
|
||||
var torrentId = link.GetAttribute ("href").Split ('&').First ().Split ('=').Last ();
|
||||
|
||||
release.Title = title.TextContent;
|
||||
release.Category = MapTrackerCatToNewznab(categoryId);
|
||||
release.Comments = new Uri(SiteLink + link.GetAttribute("href"));
|
||||
release.Link = new Uri(DownloadUrl + "?id=" + torrentId);
|
||||
release.Guid = release.Link;
|
||||
release.Size = ReleaseInfo.GetBytes(Size.TextContent);
|
||||
release.Seeders = ParseUtil.CoerceInt(Seeders.TextContent);
|
||||
release.Peers = ParseUtil.CoerceInt(Leechers.TextContent) + release.Seeders;
|
||||
release.Grabs = ParseUtil.CoerceLong(Grabs.TextContent);
|
||||
|
||||
var bannerReMatch = bannerRe.Match(mouseover);
|
||||
if (bannerReMatch.Success)
|
||||
release.BannerUrl = new Uri(bannerReMatch.Groups[1].Value);
|
||||
|
||||
var dateReMatch = dateRe.Match(mouseover);
|
||||
if (dateReMatch.Success)
|
||||
{
|
||||
var dateStr = dateReMatch.Groups[1].Value + " " + dateReMatch.Groups[2].Value;
|
||||
var dateTime = DateTime.ParseExact(dateStr, "dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture);
|
||||
release.PublishDate = dateTime.ToLocalTime();
|
||||
}
|
||||
|
||||
releases.Add(release);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
OnParseError(results.Content, ex);
|
||||
}
|
||||
|
||||
return releases;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -178,7 +178,6 @@
|
|||
<Compile Include="Controllers\DownloadController.cs" />
|
||||
<Compile Include="Engine.cs" />
|
||||
<Compile Include="Indexers\Abstract\CouchPotatoTracker.cs" />
|
||||
<Compile Include="Indexers\ArcheTorrent.cs" />
|
||||
<Compile Include="Indexers\HDOnly.cs" />
|
||||
<Compile Include="Indexers\cgpeers.cs" />
|
||||
<Compile Include="Indexers\LostFilm.cs" />
|
||||
|
@ -589,10 +588,7 @@
|
|||
<MonoDevelop>
|
||||
<Properties>
|
||||
<Policies>
|
||||
<TextStylePolicy TabWidth="4" IndentWidth="4" RemoveTrailingWhitespace="True" NoTabsAfterNonTabs="False" EolMarker="Native" FileWidth="80" TabsToSpaces="True" scope="text/plain">
|
||||
<inheritsSet />
|
||||
<inheritsScope />
|
||||
</TextStylePolicy>
|
||||
<TextStylePolicy TabWidth="4" IndentWidth="4" RemoveTrailingWhitespace="True" NoTabsAfterNonTabs="False" EolMarker="Native" FileWidth="80" TabsToSpaces="True" scope="text/plain" />
|
||||
</Policies>
|
||||
</Properties>
|
||||
</MonoDevelop>
|
||||
|
|
Loading…
Reference in a new issue