import xmltree
# Supported video players in order of preference
-let supportedPlayers = @["mpv", "mplayer", "vlc"]
+let supportedPlayers = @["mpv", "vlc"]
# Only show these many results
let limit = 10
proc selectMediaPlayer(): string =
let availablePlayers = filterIt(supportedPlayers, execProcess("which " & it).len != 0)
if len(availablePlayers) == 0:
- echo "Please install one of the supported media players: ", supportedPlayers
+ stderr.writeLine "Please install one of the supported media players: ", $supportedPlayers
raise newException(OSError, "No supported media player found")
else:
return availablePlayers[0]
for index, (title, url) in searchResults:
styledEcho $index, ". ", styleBright, fgMagenta, title, "\n", resetStyle, fgCyan, url, "\n"
-let searchResults = extractTitlesAndUrls(getYoutubePage(paramStr(1)))
+let input = paramStr(1)
+let player = selectMediaPlayer()
+
+if "https://www.youtube.com" in input:
+ discard execProcess(player & " " & input)
+ quit(0)
+
+let searchResults = extractTitlesAndUrls(getYoutubePage(input))
presentVideoOptions(searchResults)
stdout.styledWrite(fgYellow, "Choose video number: ")
var number: int = parseInt(readLine(stdin))
-var player = selectMediaPlayer()
styledEcho "\n", fgGreen, "Playing ", styleBright, fgMagenta, searchResults[number].title
# Play the video using the preferred/available media player