mirror of
https://github.com/cooperhammond/irs.git
synced 2024-12-22 17:35:28 +00:00
show video title from url
This commit is contained in:
parent
f962a0ab75
commit
72938a9b6a
|
@ -58,7 +58,7 @@ class Song
|
||||||
# Song.new("Bohemian Rhapsody", "Queen").grab_it
|
# Song.new("Bohemian Rhapsody", "Queen").grab_it
|
||||||
# ```
|
# ```
|
||||||
def grab_it(url : (String | Nil) = nil, flags = {} of String => String)
|
def grab_it(url : (String | Nil) = nil, flags = {} of String => String)
|
||||||
passed_url : (String | Nil) = flags["url"]
|
passed_url : (String | Nil) = flags["url"]?
|
||||||
select_link = flags["select"]?
|
select_link = flags["select"]?
|
||||||
|
|
||||||
outputter("intro", 0)
|
outputter("intro", 0)
|
||||||
|
|
|
@ -34,7 +34,6 @@ module Youtube
|
||||||
|
|
||||||
search_terms = Config.search_terms
|
search_terms = Config.search_terms
|
||||||
|
|
||||||
download_first = flags["dl_first"]?
|
|
||||||
select_link = flags["select"]?
|
select_link = flags["select"]?
|
||||||
|
|
||||||
song_name = spotify_metadata["name"].as_s
|
song_name = spotify_metadata["name"].as_s
|
||||||
|
@ -43,9 +42,9 @@ module Youtube
|
||||||
human_query = song_name + " " + artist_name + " " + search_terms.strip
|
human_query = song_name + " " + artist_name + " " + search_terms.strip
|
||||||
url_query = human_query.gsub(" ", "+")
|
url_query = human_query.gsub(" ", "+")
|
||||||
|
|
||||||
url = "https://www.youtube.com/results?search_query=" + url_query
|
search_url = "https://www.youtube.com/results?search_query=" + url_query
|
||||||
|
|
||||||
response = HTTP::Client.get(url)
|
response = HTTP::Client.get(search_url)
|
||||||
|
|
||||||
yt_metadata = get_yt_search_metadata(response.body)
|
yt_metadata = get_yt_search_metadata(response.body)
|
||||||
|
|
||||||
|
@ -55,19 +54,14 @@ module Youtube
|
||||||
end
|
end
|
||||||
|
|
||||||
root = "https://youtube.com"
|
root = "https://youtube.com"
|
||||||
|
|
||||||
if download_first
|
|
||||||
return root + yt_metadata[0]["href"]
|
|
||||||
end
|
|
||||||
|
|
||||||
ranked = Ranker.rank_videos(spotify_metadata, yt_metadata, human_query)
|
ranked = Ranker.rank_videos(spotify_metadata, yt_metadata, human_query)
|
||||||
|
|
||||||
if select_link
|
if select_link
|
||||||
return root + select_link_menu(spotify_metadata, yt_metadata)
|
return root + select_link_menu(spotify_metadata, yt_metadata)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
puts Style.dim(" Video: ") + yt_metadata[ranked[0]["index"]]["title"]
|
||||||
return root + yt_metadata[ranked[0]["index"]]["href"]
|
return root + yt_metadata[ranked[0]["index"]]["href"]
|
||||||
rescue IndexError
|
rescue IndexError
|
||||||
return nil
|
return nil
|
||||||
|
@ -196,7 +190,12 @@ module Youtube
|
||||||
|
|
||||||
# this is an internal endpoint to validate the video ID
|
# this is an internal endpoint to validate the video ID
|
||||||
response = HTTP::Client.get "https://www.youtube.com/oembed?format=json&url=#{url}"
|
response = HTTP::Client.get "https://www.youtube.com/oembed?format=json&url=#{url}"
|
||||||
|
return nil unless response.success?
|
||||||
|
|
||||||
return response.success? ? url : nil
|
res_json = JSON.parse(response.body)
|
||||||
|
title = res_json["title"].as_s
|
||||||
|
puts Style.dim(" Video: ") + title
|
||||||
|
|
||||||
|
return url
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue