Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
searx-engine
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gargantext
searx-engine
Commits
d14e2781
Commit
d14e2781
authored
Aug 24, 2017
by
misnyo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[fix]torrentz search engine fixed for new version
parent
700baf21
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
42 additions
and
34 deletions
+42
-34
torrentz.py
searx/engines/torrentz.py
+22
-16
settings.yml
searx/settings.yml
+6
-0
test_torrentz.py
tests/unit/engines/test_torrentz.py
+14
-18
No files found.
searx/engines/torrentz.py
View file @
d14e2781
"""
Torrentz.eu (BitTorrent meta-search engine)
Torrentz
2
.eu (BitTorrent meta-search engine)
@website https://torrentz.eu/
@website https://torrentz
2
.eu/
@provide-api no
@using-api no
...
...
@@ -14,24 +14,24 @@
import
re
from
lxml
import
html
from
datetime
import
datetime
from
searx.engines.nyaa
import
int_or_zero
,
get_filesize_mul
from
searx.engines.xpath
import
extract_text
from
searx.url_utils
import
urlencode
from
searx.utils
import
get_torrent_size
# engine dependent config
categories
=
[
'files'
,
'videos'
,
'music'
]
paging
=
True
# search-url
# https://torrentz.eu/search?f=EXAMPLE&p=6
base_url
=
'https://torrentz.eu/'
# https://torrentz
2
.eu/search?f=EXAMPLE&p=6
base_url
=
'https://torrentz
2
.eu/'
search_url
=
base_url
+
'search?{query}'
# do search-request
def
request
(
query
,
params
):
page
=
params
[
'pageno'
]
-
1
query
=
urlencode
({
'
q
'
:
query
,
'p'
:
page
})
query
=
urlencode
({
'
f
'
:
query
,
'p'
:
page
})
params
[
'url'
]
=
search_url
.
format
(
query
=
query
)
return
params
...
...
@@ -54,22 +54,29 @@ def response(resp):
# extract url and remove a slash in the beginning
link
=
links
[
0
]
.
attrib
.
get
(
'href'
)
.
lstrip
(
'/'
)
seed
=
result
.
xpath
(
'./dd/span[@class="u"]/text()'
)[
0
]
.
replace
(
','
,
''
)
leech
=
result
.
xpath
(
'./dd/span[@class="d"]/text()'
)[
0
]
.
replace
(
','
,
''
)
seed
=
0
leech
=
0
try
:
seed
=
int
(
result
.
xpath
(
'./dd/span[4]/text()'
)[
0
]
.
replace
(
','
,
''
))
leech
=
int
(
result
.
xpath
(
'./dd/span[5]/text()'
)[
0
]
.
replace
(
','
,
''
))
except
:
pass
params
=
{
'url'
:
base_url
+
link
,
'title'
:
title
,
'seed'
:
int_or_zero
(
seed
)
,
'leech'
:
int_or_zero
(
leech
)
,
'seed'
:
seed
,
'leech'
:
leech
,
'template'
:
'torrent.html'
}
# let's try to calculate the torrent size
try
:
size_str
=
result
.
xpath
(
'./dd/span[@class="s"]/text()'
)[
0
]
size
,
suffix
=
size_str
.
split
()
params
[
'filesize'
]
=
int
(
size
)
*
get_filesize_mul
(
suffix
)
filesize_info
=
result
.
xpath
(
'./dd/span[3]/text()'
)[
0
]
filesize
,
filesize_multiplier
=
filesize_info
.
split
()
filesize
=
get_torrent_size
(
filesize
,
filesize_multiplier
)
params
[
'filesize'
]
=
filesize
except
:
pass
...
...
@@ -80,9 +87,8 @@ def response(resp):
# extract and convert creation date
try
:
date_str
=
result
.
xpath
(
'./dd/span[@class="a"]/span'
)[
0
]
.
attrib
.
get
(
'title'
)
# Fri, 25 Mar 2016 16:29:01
date
=
datetime
.
strptime
(
date_str
,
'
%
a,
%
d
%
b
%
Y
%
H:
%
M:
%
S'
)
date_ts
=
result
.
xpath
(
'./dd/span[2]'
)[
0
]
.
attrib
.
get
(
'title'
)
date
=
datetime
.
fromtimestamp
(
float
(
date_ts
))
params
[
'publishedDate'
]
=
date
except
:
pass
...
...
searx/settings.yml
View file @
d14e2781
...
...
@@ -552,6 +552,12 @@ engines:
timeout
:
6.0
disabled
:
True
-
name
:
torrentz
engine
:
torrentz
shortcut
:
tor
url
:
https://torrentz2.eu/
timeout
:
3.0
-
name
:
twitter
engine
:
twitter
shortcut
:
tw
...
...
tests/unit/engines/test_torrentz.py
View file @
d14e2781
...
...
@@ -14,7 +14,7 @@ class TestTorrentzEngine(SearxTestCase):
params
=
torrentz
.
request
(
query
,
dic
)
self
.
assertTrue
(
'url'
in
params
)
self
.
assertTrue
(
query
in
params
[
'url'
])
self
.
assertTrue
(
'torrentz.eu'
in
params
[
'url'
])
self
.
assertTrue
(
'torrentz
2
.eu'
in
params
[
'url'
])
def
test_response
(
self
):
resp
=
mock
.
Mock
(
text
=
'<html></html>'
)
...
...
@@ -30,13 +30,11 @@ class TestTorrentzEngine(SearxTestCase):
books ebooks
</dt>
<dd>
<span class="v">1</span>
<span class="a">
<span title="Sun, 22 Nov 2015 03:01:42">4 months</span>
</span>
<span class="s">30 MB</span>
<span class="u">14</span>
<span class="d">1</span>
<span>1</span>
<span title="1503595924">5 hours</span>
<span>30 MB</span>
<span>14</span>
<span>1</span>
</dd>
</dl>
...
...
@@ -48,13 +46,11 @@ class TestTorrentzEngine(SearxTestCase):
books ebooks
</dt>
<dd>
<span class="v">1</span>
<span class="a">
<span title="Sun, 2124091j0j190gm42">4 months</span>
</span>
<span class="s">30MB</span>
<span class="u">5,555</span>
<span class="d">1,234,567</span>
<span>1</span>
<span title="1503595924 aaa">5 hours</span>
<span>30MB</span>
<span>5,555</span>
<span>1,234,567</span>
</dd>
</dl>
</div>
...
...
@@ -68,10 +64,10 @@ class TestTorrentzEngine(SearxTestCase):
# testing against the first result
r
=
results
[
0
]
self
.
assertEqual
(
r
[
'url'
],
'https://torrentz.eu/4362e08b1d80e1820fb2550b752f9f3126fe76d6'
)
self
.
assertEqual
(
r
[
'url'
],
'https://torrentz
2
.eu/4362e08b1d80e1820fb2550b752f9f3126fe76d6'
)
self
.
assertEqual
(
r
[
'title'
],
'Completely valid info books ebooks'
)
# 22 Nov 2015 03:01:42
self
.
assertEqual
(
r
[
'publishedDate'
],
datetime
(
201
5
,
11
,
22
,
3
,
1
,
42
))
self
.
assertEqual
(
r
[
'publishedDate'
],
datetime
(
201
7
,
8
,
24
,
19
,
32
,
4
))
self
.
assertEqual
(
r
[
'seed'
],
14
)
self
.
assertEqual
(
r
[
'leech'
],
1
)
self
.
assertEqual
(
r
[
'filesize'
],
30
*
1024
*
1024
)
...
...
@@ -79,7 +75,7 @@ class TestTorrentzEngine(SearxTestCase):
# testing against the second result
r
=
results
[
1
]
self
.
assertEqual
(
r
[
'url'
],
'https://torrentz.eu/poaskdpokaspod'
)
self
.
assertEqual
(
r
[
'url'
],
'https://torrentz
2
.eu/poaskdpokaspod'
)
self
.
assertEqual
(
r
[
'title'
],
'Invalid hash and date and filesize books ebooks'
)
self
.
assertEqual
(
r
[
'seed'
],
5555
)
self
.
assertEqual
(
r
[
'leech'
],
1234567
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment