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
4dc792e1
Commit
4dc792e1
authored
Aug 02, 2019
by
cy8aer
Committed by
Alexandre Flament
Aug 02, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[enh] add invidious engine. (#1657)
closes #1372
parent
02bbbf59
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
106 additions
and
0 deletions
+106
-0
invidious.py
searx/engines/invidious.py
+100
-0
settings.yml
searx/settings.yml
+6
-0
invidious.png
searx/static/themes/oscar/img/icons/invidious.png
+0
-0
No files found.
searx/engines/invidious.py
0 → 100644
View file @
4dc792e1
# Invidious (Videos)
#
# @website https://invidio.us/
# @provide-api yes (https://github.com/omarroth/invidious/wiki/API)
#
# @using-api yes
# @results JSON
# @stable yes
# @parse url, title, content, publishedDate, thumbnail, embedded
from
searx.url_utils
import
quote_plus
from
dateutil
import
parser
import
time
# engine dependent config
categories
=
[
"videos"
,
"music"
]
paging
=
True
language_support
=
True
time_range_support
=
True
# search-url
base_url
=
"https://invidio.us/"
# do search-request
def
request
(
query
,
params
):
time_range_dict
=
{
"day"
:
"today"
,
"week"
:
"week"
,
"month"
:
"month"
,
"year"
:
"year"
,
}
search_url
=
base_url
+
"api/v1/search?q={query}"
params
[
"url"
]
=
search_url
.
format
(
query
=
quote_plus
(
query
)
)
+
"&page={pageno}"
.
format
(
pageno
=
params
[
"pageno"
])
if
params
[
"time_range"
]
in
time_range_dict
:
params
[
"url"
]
+=
"&date={timerange}"
.
format
(
timerange
=
time_range_dict
[
params
[
"time_range"
]]
)
if
params
[
"language"
]
!=
"all"
:
lang
=
params
[
"language"
]
.
split
(
"-"
)
if
len
(
lang
)
==
2
:
params
[
"url"
]
+=
"&range={lrange}"
.
format
(
lrange
=
lang
[
1
])
return
params
# get response from search-request
def
response
(
resp
):
results
=
[]
search_results
=
resp
.
json
()
embedded_url
=
(
'<iframe width="540" height="304" '
+
'data-src="'
+
base_url
+
'embed/{videoid}" '
+
'frameborder="0" allowfullscreen></iframe>'
)
base_invidious_url
=
base_url
+
"watch?v="
for
result
in
search_results
:
rtype
=
result
.
get
(
"type"
,
None
)
if
rtype
==
"video"
:
videoid
=
result
.
get
(
"videoId"
,
None
)
if
not
videoid
:
continue
url
=
base_invidious_url
+
videoid
embedded
=
embedded_url
.
format
(
videoid
=
videoid
)
thumbs
=
result
.
get
(
"videoThumbnails"
,
[])
thumb
=
next
(
(
th
for
th
in
thumbs
if
th
[
"quality"
]
==
"sddefault"
),
None
)
if
thumb
:
thumbnail
=
thumb
.
get
(
"url"
,
""
)
else
:
thumbnail
=
""
publishedDate
=
parser
.
parse
(
time
.
ctime
(
result
.
get
(
"published"
,
0
))
)
results
.
append
(
{
"url"
:
url
,
"title"
:
result
.
get
(
"title"
,
""
),
"content"
:
result
.
get
(
"description"
,
""
),
"template"
:
"videos.html"
,
"publishedDate"
:
publishedDate
,
"embedded"
:
embedded
,
"thumbnail"
:
thumbnail
,
}
)
return
results
searx/settings.yml
View file @
4dc792e1
...
...
@@ -392,6 +392,12 @@ engines:
timeout
:
6.0
disabled
:
True
-
name
:
invidious
engine
:
invidious
base_url
:
'
https://invidio.us/'
shortcut
:
iv
timeout
:
5.0
-
name
:
kickass
engine
:
kickass
shortcut
:
kc
...
...
searx/static/themes/oscar/img/icons/invidious.png
0 → 100644
View file @
4dc792e1
3.35 KB
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