Repository: idlesign/torrt (language: python)

Issue:
Add tracker EniaHD [RUS]
Просьба добавить новый трекер https://eniahd.com


Discussion / hints:
Сам за реализацию не возьмусь, но готов ответить на вопросы по реализации и осмотреть код и тесты.


Fix patch:
diff --git a/README.rst b/README.rst
index d39b11e..c412dac 100644
--- a/README.rst
+++ b/README.rst
@@ -36,6 +36,7 @@ Automatic updates are available for:
 * AniDUB - http://tr.anidub.com/
 * AniLibria - https://www.anilibria.tv/
 * CasStudio - https://casstudio.tv
+* EniaHD - https://eniahd.com
 * Kinozal - http://kinozal.tv/
 * NNM-Club - http://nnm-club.me/
 * RUTOR - http://rutor.org/
diff --git a/torrt/trackers/eniahd.py b/torrt/trackers/eniahd.py
new file mode 100644
index 0000000..f8139d6
--- /dev/null
+++ b/torrt/trackers/eniahd.py
@@ -0,0 +1,47 @@
+from datetime import datetime
+from typing import List, Optional
+
+from ..base_tracker import GenericPrivateTracker
+
+
+class EniaHDTracker(GenericPrivateTracker):
+    """This class implements .torrent files downloads for https://eniahd.com tracker."""
+
+    alias: str = 'eniahd.com'
+    login_url: str = 'https://%(domain)s/login.php'
+    auth_cookie_name: str = 'bb_data'
+    mirrors: List[str] = ['eniahd.com', 'eniatv.com']
+
+    test_urls: List[str] = [
+        'https://eniatv.com/viewtopic.php?t=1558',
+    ]
+
+    def get_login_form_data(self, login: str, password: str) -> dict:
+        """Returns a dictionary with data to be pushed to authorization form."""
+        return {'login_username': login, 'login_password': password, 'autologin': 1, 'redirect': '', 'login': 'Вход'}
+
+    def extract_page_cover(self) -> str:
+        attrs = getattr(self._torrent_page.select_one('var.postImg'), 'attrs', {})
+        title = attrs.get('title')
+
+        if not title:
+            return super().extract_page_cover()
+
+        return title
+
+    def get_download_link(self, url: str) -> str:
+        """Tries to find .torrent file download link at forum thread page and return that one."""
+
+        page_soup = self.get_torrent_page(url)
+
+        download_link = self.find_links(url, page_soup, definite=r'dl\.php')
+
+        if download_link is None:
+
+            self.log_debug('Login is required to download torrent file')
+            domain = self.extract_domain(url)
+
+            if self.login(domain):
+                download_link = self.get_download_link(url)
+
+        return download_link or ''


Test patch:
diff --git a/tests/trackers/datafixtures/eniahd.html b/tests/trackers/datafixtures/eniahd.html
new file mode 100644
index 0000000..070b4a3
--- /dev/null
+++ b/tests/trackers/datafixtures/eniahd.html
@@ -0,0 +1,411 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<title>Пространство / Экспансия / The Expanse / Сезон: 5 / Серии: 1-9 из 10 (Брек Эйснер) [2020, Канада, США, фантастика, триллер, драма, детектив, WEB-DL 720p] MVO (LostFilm) + Original + Sub (Rus, Eng) :: eniahd.com</title>
+</head>
+<body>
+	<div id="body_container">
+		<div id="page_container">
+			<!--page_content-->
+			<div id="page_content">
+				<table cellspacing="0" cellpadding="0" border="0" style="width: 100%;">
+					<tr>
+						<!--main_content-->
+						<td id="main_content">
+							<div id="main_content_wrap">
+								<h1 class="maintitle">
+									<a class="tt-text"
+										href="viewtopic.php?t=1558">Пространство<wbr> / Экспансия / The Expanse / Сезон: 5 / Серии: 1-9 из 10 (Брек Эйснер) [2020, Канада, США, фантастика, триллер, драма, детектив, WEB-DL 720p] MVO (LostFilm) + Original + Sub (Rus, Eng)</a>
+								</h1>
+								<table class="topic" id="topic_main" cellpadding="0" cellspacing="0">
+									<tr>
+										<th class="thHead td1">Автор</th>
+										<th class="thHead td2">Сообщение</th>
+									</tr>
+									<tbody id="post_5835" class="row1">
+										<tr>
+											<td class="poster_info td1"><a name="5835"></a>
+												<p class="nick" title="Вставить имя или выделенный кусок сообщения."
+													onclick="bbcode.onclickPoster('Grandfather61', 5835);">
+													<a href="#" onclick="return false;"><span title="Пользователь"
+															class="colorUser">Grandfather61</span></a> <sup>&reg;</sup>
+												</p>
+												<p class="avatar"><img
+														src="https://eniatv.com/data/avatars/0/3/5103.jpg" alt="5103"
+														height="" width="" /></p>
+												<p class="joined" title="Зарегистрирован: 2020-11-15"><em>Стаж:</em> 2
+													месяца 18 дней</p>
+												<p class="posts"><em>Сообщений:</em> 50</p>
+												<p><img src="https://eniatv.com/styles/images/spacer.gif" width="142"
+														height="2" border="0" alt="" /></p>
+											</td>
+											<td class="message td2" rowspan="2">
+												<div class="post_head">
+													<p style="float: left; padding: 4px 0 3px;">
+														<img src="./styles/templates/default/images/icon_minipost.gif"
+															class="icon1" alt="Создавать темы" /> <a class="small"
+															href="./viewtopic.php?p=5835#5835"
+															title="Линк на это сообщение">24-Дек-2020 07:44</a>
+													</p>
+													<p style="float: right; padding: 3px 2px 4px;" class="post_btn_1">
+														<a class="txtb" href=""
+															onclick="ajax.exec({ action: 'posts', post_id: 5835, type: 'reply'}); return false;">[Цитировать]</a>&nbsp;
+													</p>
+													<div class="clear"></div>
+												</div>
+												<div class="post_body">
+													<div class="post_wrap">
+														<span id="pe_5835"></span>
+														<span id="pp_5835"><span class="post-hr">-</span><span
+																class="post-hr">-</span><span
+																style="font-size: 24px; line-height: normal;"><span
+																	class="post-align" style="text-align: center;"><span
+																		style="color: blue;"><span
+																			class="post-b">Пространство / Экспансия /
+																			The Expanse</span></span></span></span><span
+																class="post-hr">-</span><span
+																class="post-hr">-</span><var
+																class="postImg postImgAligned img-right"
+																title="https://a.radikal.ru/a01/2012/9b/d9ef857b2246.jpg">&#10;</var><span
+																class="post-b">Год выпуска</span>: 2020<br /><span
+																class="post-b">Страна</span>: Канада, США<br /><span
+																class="post-b">Студия</span>: Alcon Entertainment, Sean
+															Daniel Company<br /><span class="post-b">Жанр</span>:
+															фантастика, триллер, драма, детектив<br /><span
+																class="post-b">Продолжительность</span>: ~
+															00:52:00<br /><span class="post-b">Перевод</span>:
+															Профессиональный (многоголосый закадровый) | <span
+																style="color: blue;">LostFilm</span><span
+																class="post-hr">-</span><span
+																class="post-b">Режиссёр</span>: Брек Эйснер, Джефф
+															Вулнаф, Терри МакДонаф<br /><span class="post-b">В
+																ролях</span>: Стивен Стрейт, Доминик Типпер, Уэс Чэтэм,
+															Шоре Агдашлу, Кэс Анвар, Фрэнки Адамс, Кара Ги, Шон Дойл,
+															Томас Джейн, Флоренс Ванида Фэйвр и другие.<span
+																class="post-hr">-</span><span
+																class="post-b">Описание</span>: Через двести лет от дня
+															сегодняшнего некий сыщик, привыкший всё доводить до конца
+															при любых обстоятельствах, в рамках расследования дела об
+															исчезновении молодой женщины оказывается на борту
+															звездолета, капитан которого решает помочь детективу в его
+															непростом деле. Величайший заговор в истории человечества
+															гарантируется, как и его непременное раскрытие.<span
+																class="post-hr">-</span><span class="post-b">Доп.
+																информация</span>:<br /><a
+																href="http://sendfile.su/1588556" class="postLink"><var
+																	class="postImg"
+																	title="http://i31.fastpic.ru/big/2012/0123/f6/334924975de2dcf16bd14fedc24bb8f6.png">&#10;</var></a><a
+																href="http://www.kinopoisk.ru/film/805092/"
+																class="postLink"><var class="postImg"
+																	title="http://rating.kinopoisk.ru/805092.gif">&#10;</var></a><a
+																href="http://www.imdb.com/title/tt3230854/"
+																class="postLink"><var class="postImg"
+																	title="http://tracker.0day.kiev.ua/imdb/imdb_tt3230854.gif">&#10;</var></a><span
+																class="post-hr">-</span><a
+																href="https://eniahd.com/tracker.php?g=foreign_serials&amp;nm=The.Expanse"
+																class="postLink"><span class="post-b"><span
+																		style="color: blue;">Ссылка на предыдущие и
+																		альтернативные раздачи</span></span></a><span
+																class="post-hr">-</span><span
+																class="post-b">Качество</span>: WEB-DL 720p<br /><span
+																class="post-b">Формат</span>: MKV<br /><span
+																class="post-b">Видео</span>: 1280x720 (16:9), 23.976
+															fps, ~2758 kbps, 0.125 bit/pixel<br /><span
+																class="post-b">Аудио # 1</span>: AC3, 48 kHz, 6 ch, 640
+															kbps - русский<br /><span class="post-b">Аудио # 2</span>:
+															E-AC3, 48 kHz, 6 ch, 640 kbps - английский<br /><span
+																class="post-b">Субтитры</span>: Russian (full), English
+															(SDH)<br /><span class="post-b">Реклама</span>: Отсутствует
+															<div class="sp-wrap">
+																<div class="sp-body" title="Релиз&amp;#58;">
+																	<h3 class="sp-title">Релиз&amp;#58;</h3>Релиз:
+																	Grandfather61<br />Дорожка 1 получена наложением
+																	выделенных голосов от «LostFilm» на центр
+																	оригинального AC3.<br />Монтаж, работа со звуком:
+																	Grandfather61
+																</div>
+															</div>
+															<div class="sp-wrap">
+																<div class="sp-body" title="MediaInfo">
+																	<h3 class="sp-title">MediaInfo</h3>
+																	General<br />Unique ID :
+																	33009144104172570391803307260671220156
+																	(0x18D55474C704A0F55961333D53C8D9BC)<br />Complete
+																	name :
+																	G:\The.Expanse.S05.720p.WEB-DL.LostFilm\The.Expanse.S05E01.720p.WEB-DL.LostFilm.DD5.1.mkv<br />Format
+																	: Matroska<br />Format version : Version 4<br />File
+																	size : 1.46 GiB<br />Duration : 51 min 40
+																	s<br />Overall bit rate : 4 041 kb/s<br />Encoded
+																	date : UTC 2020-12-20 11:41:00<br />Writing
+																	application : mkvmerge v51.0.0 ('I Wish')
+																	64-bit<br />Writing library : libebml v1.4.0 +
+																	libmatroska v1.6.2<span
+																		class="post-br"><br /></span>Video<br />ID :
+																	1<br />Format : AVC<br />Format/Info : Advanced
+																	Video Codec<br />Format profile :
+																	High@L3.1<br />Format settings : CABAC / 4 Ref
+																	Frames<br />Format settings, CABAC : Yes<br />Format
+																	settings, Reference frames : 4 frames<br />Codec ID
+																	: V_MPEG4/ISO/AVC<br />Duration : 51 min 40
+																	s<br />Bit rate mode : Constant<br />Bit rate : 2
+																	758 kb/s<br />Nominal bit rate : 4 000
+																	kb/s<br />Width : 1 280 pixels<br />Height : 720
+																	pixels<br />Display aspect ratio : 16:9<br />Frame
+																	rate mode : Constant<br />Frame rate : 23.976
+																	(24000/1001) FPS<br />Color space : YUV<br />Chroma
+																	subsampling : 4:2:0<br />Bit depth : 8
+																	bits<br />Scan type :
+																	Progressive<br />Bits/(Pixel*Frame) :
+																	0.125<br />Stream size : 1 020 MiB
+																	(68%)<br />Language : English<br />Default :
+																	Yes<br />Forced : No<br />Color range :
+																	Limited<br />Color primaries : BT.709<br />Transfer
+																	characteristics : BT.709<br />Matrix coefficients :
+																	BT.709<span class="post-br"><br /></span>Audio
+																	#1<br />ID : 2<br />Format : AC-3<br />Format/Info :
+																	Audio Coding 3<br />Commercial name : Dolby
+																	Digital<br />Codec ID : A_AC3<br />Duration : 51 min
+																	40 s<br />Bit rate mode : Constant<br />Bit rate :
+																	640 kb/s<br />Channel(s) : 6 channels<br />Channel
+																	layout : L R C LFE Ls Rs<br />Sampling rate : 48.0
+																	kHz<br />Frame rate : 31.250 FPS (1536
+																	SPF)<br />Compression mode : Lossy<br />Stream size
+																	: 237 MiB (16%)<br />Title : LostFilm<br />Language
+																	: Russian<br />Service kind : Complete
+																	Main<br />Default : Yes<br />Forced : No<span
+																		class="post-br"><br /></span>Audio #2<br />ID :
+																	3<br />Format : E-AC-3<br />Format/Info : Enhanced
+																	AC-3<br />Commercial name : Dolby Digital
+																	Plus<br />Codec ID : A_EAC3<br />Duration : 51 min
+																	40 s<br />Bit rate mode : Constant<br />Bit rate :
+																	640 kb/s<br />Channel(s) : 6 channels<br />Channel
+																	layout : L R C LFE Ls Rs<br />Sampling rate : 48.0
+																	kHz<br />Frame rate : 31.250 FPS (1536
+																	SPF)<br />Compression mode : Lossy<br />Stream size
+																	: 237 MiB (16%)<br />Language : English<br />Service
+																	kind : Complete Main<br />Default : No<br />Forced :
+																	No<span class="post-br"><br /></span>Text #1<br />ID
+																	: 4<br />Format : UTF-8<br />Codec ID :
+																	S_TEXT/UTF8<br />Codec ID/Info : UTF-8 Plain
+																	Text<br />Duration : 51 min 25 s<br />Bit rate : 97
+																	b/s<br />Count of elements : 647<br />Stream size :
+																	36.6 KiB (0%)<br />Title : Ru<br />Language :
+																	Russian<br />Default : No<br />Forced : No<span
+																		class="post-br"><br /></span>Text #2<br />ID :
+																	5<br />Format : UTF-8<br />Codec ID :
+																	S_TEXT/UTF8<br />Codec ID/Info : UTF-8 Plain
+																	Text<br />Duration : 49 min 15 s<br />Bit rate : 72
+																	b/s<br />Count of elements : 887<br />Stream size :
+																	26.3 KiB (0%)<br />Title : SDH<br />Language :
+																	English<br />Default : No<br />Forced : No<span
+																		class="post-br"><br /></span>Menu<br />00:00:00.000
+																	: en:Amazon Original<br />00:00:05.000 :
+																	en:Previously On<br />00:01:36.000 : en:Bonafide
+																	space oddity<br />00:07:22.000 : en:Opening
+																	Credits<br />00:08:30.000 : en:The good guy
+																	discount<br />00:12:46.000 : en:The evening
+																	news<br />00:14:16.000 : en:En route to
+																	Luna<br />00:18:47.000 : en:Getting the waiting out
+																	of the way<br />00:19:54.000 : en:Monica's new
+																	story<br />00:23:09.000 : en:Heading
+																	home<br />00:24:10.000 : en:Chasing down
+																	leads<br />00:26:12.000 : en:Holden confronts Fred
+																	Johnson<br />00:31:13.000 : en:Alex tries to
+																	apologize<br />00:36:42.000 : en:Naomi gets
+																	packed<br />00:39:28.000 : en:Chrisjen says hello to
+																	Amos<br />00:45:20.000 : en:The team
+																	divided<br />00:47:58.000 : en:When our day
+																	comes<br />00:49:30.000 : en:End Credits
+																</div>
+															</div>
+															<div class="sp-wrap">
+																<div class="sp-body" title="Скриншоты">
+																	<h3 class="sp-title">Скриншоты</h3><a
+																		href="https://b.radikal.ru/b00/2012/ac/be1397d0b92e.png"
+																		class="postLink"><var class="postImg"
+																			title="https://a.radikal.ru/a21/2012/b5/57f6f025934c.png">&#10;</var></a>
+																	<a href="https://a.radikal.ru/a18/2012/05/797c8ab78d60.png"
+																		class="postLink"><var class="postImg"
+																			title="https://b.radikal.ru/b08/2012/02/29d6fe887bd6.png">&#10;</var></a>
+																	<a href="https://a.radikal.ru/a30/2012/48/f3c39c643eaf.png"
+																		class="postLink"><var class="postImg"
+																			title="https://b.radikal.ru/b23/2012/f9/80d022a29893.png">&#10;</var></a>
+																	<a href="https://b.radikal.ru/b19/2012/b2/680a0ae6c9cc.png"
+																		class="postLink"><var class="postImg"
+																			title="https://b.radikal.ru/b13/2012/a2/1bf60949f3f4.png">&#10;</var></a>
+																</div>
+															</div>
+															<div class="sp-wrap">
+																<div class="sp-body"
+																	title="Внимание! Раздача ведётся путём добавления новых серий">
+																	<h3 class="sp-title">Внимание! Раздача ведётся путём
+																		добавления новых серий</h3>Внимание! Раздача
+																	ведётся путём добавления новых серий; при каждом
+																	добавлении создаётся новый торрент. Чтобы начать
+																	докачку новой серии, пользователям необходимо
+																	сделать следующее:<br /> (1) остановить
+																	скачивание,<br /> (2) удалить старый торрент у себя
+																	из клиента (старые серии удалять не надо),<br /> (3)
+																	скачать новый торрент и запустить его у себя в
+																	клиенте вместо старого, при этом указать клиенту
+																	путь в старую папку куда и должно происходить
+																	скачивание новых серий.<span
+																		class="post-br"><br /></span>Ваш клиент при этом
+																	должен произвести хеширование (проверку) старой
+																	папки (если не производит сам - помогите ему сделать
+																	это), и будет докачивать только те серии которых у
+																	вас ещё нет. Старые серии при этом не удаляются, а
+																	продолжают раздаваться!<span
+																		class="post-br"><br /></span>Eсли вы уже удалили
+																	старые серии, то предотвратить повторную закачку
+																	старых серий можно, отжав галочку в соответствующих
+																	местах при запуске нового торрента. По возможности,
+																	желательно не удалять старые серии как можно дольше
+																	чтобы релизёр не столько продолжал раздавать старые
+																	серии, а смог сконцентрироваться на новых.
+																</div>
+															</div>
+														</span>
+														<div id="pc_5835" style="display: none;">
+															<div id="mc_class_5835" class="alert alert-"
+																style="width: 92%;">
+																<h4 class="alert-heading"></h4>
+																<hr />
+																<div id="mc_comment_5835"></div>
+															</div>
+														</div>
+														<div class="clear"></div>
+														<div class="spacer_8"></div>
+														<table id="tor_blocked" class="error">
+															<tr>
+																<td>
+																	<p class="error_msg">Если ваш рейтинг упадет ниже
+																		0,3, вы не сможете скачивать торренты! <a
+																			href="viewtopic.php?t=3"><b>Подробнее о
+																				рейтинге.</b></a></p>
+																</td>
+															</tr>
+														</table>
+														<div class="spacer_12"></div>
+														<table class="attach bordered med">
+															<tr class="row3">
+																<th colspan="3" class="genmed">
+																	[eniatv.com].t1558.torrent&nbsp;</th>
+															</tr>
+															<tr class="row1">
+																<td width="15%">Торрент:</td>
+																<td width="70%">
+																	Зарегистрирован [ <span title="3 дня">2021-01-31
+																		09:16</span> ]
+																</td>
+																<td width="15%" rowspan="4" class="tCenter pad_6">
+																	<a href="dl.php?id=5669" class="genmed">
+																		<p><img src="./styles/images/icon_dn.gif"
+																				alt="Скачать .torrent" border="0" /></p>
+																		<p><b>Скачать</b></p>
+																	</a>
+																	<p class="small">36&nbsp;KB</p>
+																	<p style="padding-top: 6px;"><input
+																			id="tor-filelist-btn" type="button"
+																			class="lite" value="Список файлов" /></p>
+																</td>
+															</tr>
+															<tr class="row1">
+																<td>Статус:</td>
+																<td>
+																	<span id="tor-5669-status"><span
+																			class="tor-icon tor-dup">R</span>
+																		<b>обновляемая</b>
+																	</span>
+																</td>
+															</tr>
+															<tr class="row1">
+																<td>Скачан:</td>
+																<td><span title="Скачано: 5 раз">5 раз</span></td>
+															</tr>
+															<tr class="row1">
+																<td>Размер:</td>
+																<td style="padding: 2px 5px 5px;">13,81&nbsp;GB
+																	&nbsp;&middot;&nbsp;
+																	<a href="magnet:?xt=urn:btih:3f6fa24b258ba5ccd2c9e599779b3f8897329d6a&tr=http%3A%2F%2Fbt.eniahd.com%2Fannounce.php%3Fuk%3DFnwpwNW8n4">
+																		<class="magnet-link-16"><img
+																				src="./styles/images/icon_magnet_16.png"
+																				width="12" height="12" border="0" />
+																			<span
+																				id="tor-hash">3F6FA24B258BA5CCD2C9E599779B3F8897329D6A</span>
+																	</a>
+																</td>
+															</tr>
+															<tr class="row3 tCenter">
+																<td colspan="3">
+																	<script type="text/javascript">
+																		ajax.callback.change_torrent = function (data) {
+																			if (data.title) alert(data.title);
+																			if (data.url) document.location.href = data.url;
+																		};
+																	</script>
+																	&nbsp;
+																</td>
+															</tr>
+														</table>
+														<form method="POST" action="thx.php">
+															<input type="hidden" name="mode" value="add_thx" />
+															<input type="hidden" name="t" value="1558" />
+															<div class="mrg_8 tCenter">
+																<div class="thx-btn-div"><input type="submit"
+																		class="bold" style="width: 200px;"
+																		value='Сказать "Спасибо"' /></div>
+															</div>
+														</form>
+													</div>
+													<div id="tor-fl-wrap" class="border bw_TRBL row2 hidden">
+														<div id="fl-tbl-wrap">
+															<table class="w100 borderless" cellspacing="0"
+																cellpadding="0">
+																<tr>
+																	<td>
+																		<div id="tor-fl-treecontrol">
+																			<a href="#">Свернуть директории</a>&middot;
+																			<a href="#">Развернуть</a>&middot;
+																			<a href="#">Переключить</a>
+																		</div>
+																	</td>
+																</tr>
+																<tr>
+																	<td class="vTop" style="width: 100%;">
+																		<div id="tor-filelist"
+																			class="border bw_TRBL med row1"><span
+																				class="loading-1">Загружается…</span>
+																		</div>
+																	</td>
+																</tr>
+															</table>
+														</div>
+													</div>
+													<div class="spacer_12"></div>
+												</div>
+												<div class="last_edited"><br /><br />Последний раз редактировалось:
+													Grandfather61 (2021-01-31 09:16), всего редактировалось 6 раз(а)
+												</div>
+							</div>
+						</td>
+					</tr>
+					<tr>
+						<td class="poster_btn td3">
+							<div style=" padding: 2px 6px 4px;" class="post_btn_2">
+								<a class="txtb" href="./profile.php?mode=viewprofile&amp;u=5103">[Профиль]</a>&nbsp; <a
+									class="txtb" href="privmsg.php?mode=post&amp;u=5103">[ЛС]</a>&nbsp;
+							</div>
+						</td>
+					</tr>
+					</tbody>
+				</table>
+			</div>
+			</td>
+			</tr>
+			</table>
+		</div>
+	</div>
+	</div>
+</body>
+</html>
diff --git a/tests/trackers/test_eniahd.py b/tests/trackers/test_eniahd.py
new file mode 100644
index 0000000..cdd911d
--- /dev/null
+++ b/tests/trackers/test_eniahd.py
@@ -0,0 +1,22 @@
+from torrt.trackers.eniahd import EniaHDTracker
+
+
+def test_get_torrent(response_mock, datafix_read, datafix_dir):
+
+    tracker = EniaHDTracker()
+    tracker.raise_on_error_response = True
+
+    test_torrent = (datafix_dir / 'test.torrent').read_bytes()
+
+    with response_mock([
+        f"GET https://eniatv.com/viewtopic.php?t=1558 -> 200: {datafix_read('eniahd.html')}",
+        b"GET https://eniatv.com/dl.php?id=5669 -> 200:" + test_torrent,
+
+    ]) as _:
+        torr = tracker.get_torrent('https://eniatv.com/viewtopic.php?t=1558')
+        assert torr.hash == 'c815be93f20bf8b12fed14bee35c14b19b1d1984'
+        assert torr.url == 'https://eniatv.com/viewtopic.php?t=1558'
+        assert torr.url_file == 'https://eniatv.com/dl.php?id=5669'
+        assert torr.parsed.comment == 'примечание'
+        assert torr.page.cover == 'https://a.radikal.ru/a01/2012/9b/d9ef857b2246.jpg'
+        assert torr.page.title == 'Пространство / Экспансия / The Expanse / Сезон: 5 / Серии: 1-9 из 10 (Брек Эйснер) [2020, Канада, США, фантастика, триллер, драма, детектив, WEB-DL 720p] MVO (LostFilm) + Original + Sub (Rus, Eng) :: eniahd.com'