Add search
This commit is contained in:
parent
127e140130
commit
86a8e181bf
|
@ -213,6 +213,31 @@ get "/watch/:video_id" do |env|
|
|||
templated "watch"
|
||||
end
|
||||
|
||||
get "/search" do |env|
|
||||
query = URI.escape(env.params.query["q"])
|
||||
client = HTTP::Client.new("www.youtube.com", 443, context)
|
||||
results_html = client.get("https://www.youtube.com/results?q=#{query}&page=1").body
|
||||
html = XML.parse(results_html)
|
||||
|
||||
videos = html.xpath_nodes(%q(//div[@class="style-scope ytd-item-section-renderer"]/ytd-video-renderer))
|
||||
channels = html.xpath_nodes(%q(//div[@class="style-scope ytd-item-section-renderer"]/ytd-channel-renderer))
|
||||
|
||||
if videos.empty?
|
||||
videos = html.xpath_nodes(%q(//div[contains(@class,"yt-lockup-video")]/div/div[contains(@class,"yt-lockup-thumbnail")]/a/@href))
|
||||
channels = html.xpath_nodes(%q(//div[contains(@class,"yt-lockup-channel")]/div/div[contains(@class,"yt-lockup-thumbnail")]/a/@href))
|
||||
end
|
||||
|
||||
templated "search"
|
||||
end
|
||||
|
||||
error 404 do |env|
|
||||
templated "index"
|
||||
end
|
||||
|
||||
error 500 do |env|
|
||||
templated "index"
|
||||
end
|
||||
|
||||
public_folder "assets"
|
||||
|
||||
Kemal.run
|
||||
|
|
3
src/views/search.ecr
Normal file
3
src/views/search.ecr
Normal file
|
@ -0,0 +1,3 @@
|
|||
<% videos.each do |video| %>
|
||||
<p><a href="<%= video.content %>"><%= video.content %></a></p>
|
||||
<% end %>
|
Loading…
Reference in a new issue