mirror of
https://gitea.invidious.io/iv-org/invidious-copy-2022-08-14.git
synced 2024-08-15 00:53:20 +00:00
Add filters to '/api/v1/search' endpoint
This commit is contained in:
parent
3f0c823798
commit
3ada6a9234
2 changed files with 128 additions and 4 deletions
|
@ -2569,14 +2569,44 @@ get "/api/v1/search" do |env|
|
|||
page = env.params.query["page"]?.try &.to_i?
|
||||
page ||= 1
|
||||
|
||||
sort_by = env.params.query["sort_by"]?.try &.downcase
|
||||
sort_by ||= "relevance"
|
||||
|
||||
date = env.params.query["date"]?.try &.downcase
|
||||
date ||= ""
|
||||
|
||||
duration = env.params.query["date"]?.try &.downcase
|
||||
duration ||= ""
|
||||
|
||||
features = env.params.query["features"]?.try &.split(",").map { |feature| feature.downcase }
|
||||
features ||= [] of String
|
||||
|
||||
# TODO: Support other content types
|
||||
content_type = "video"
|
||||
|
||||
begin
|
||||
search_params = build_search_params(sort_by, date, content_type, duration, features)
|
||||
rescue ex
|
||||
env.response.content_type = "application/json"
|
||||
next JSON.build do |json|
|
||||
json.object do
|
||||
json.field "error", ex.message
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
client = make_client(YT_URL)
|
||||
html = client.get("/results?q=#{URI.escape(query)}&page=#{page}&sp=EgIQAVAU&disable_polymer=1").body
|
||||
html = client.get("/results?q=#{URI.escape(query)}&page=#{page}&sp=#{search_params}&disable_polymer=1").body
|
||||
html = XML.parse_html(html)
|
||||
|
||||
results = JSON.build do |json|
|
||||
json.array do
|
||||
html.xpath_nodes(%q(//ol[@class="item-section"]/li)).each do |node|
|
||||
anchor = node.xpath_node(%q(.//h3[contains(@class,"yt-lockup-title")]/a)).not_nil!
|
||||
anchor = node.xpath_node(%q(.//h3[contains(@class,"yt-lockup-title")]/a))
|
||||
if !anchor
|
||||
next
|
||||
end
|
||||
|
||||
if anchor["href"].starts_with? "https://www.googleadservices.com"
|
||||
next
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue