Add search

This commit is contained in:
Omar Roth 2017-12-30 15:21:43 -06:00
parent 127e140130
commit 86a8e181bf
2 changed files with 28 additions and 0 deletions

View file

@ -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
View file

@ -0,0 +1,3 @@
<% videos.each do |video| %>
<p><a href="<%= video.content %>"><%= video.content %></a></p>
<% end %>