X-Git-Url: https://njoseph.me/gitweb/nimcoon.git/blobdiff_plain/39a495a94d0a6bb74d778c2f62162ad10c50c23b..933e339bee75329a68b7a0674c48b18ae57790cb:/cli_tube.nim diff --git a/cli_tube.nim b/cli_tube.nim index 2c29825..3ed32b0 100644 --- a/cli_tube.nim +++ b/cli_tube.nim @@ -2,11 +2,11 @@ import htmlparser import httpClient import os import osproc +import sequtils, sugar import strtabs import strutils import uri import xmltree -import sequtils, sugar # TODO Pretty colors in terminal # import terminal @@ -15,11 +15,15 @@ import sequtils, sugar # TODO Should go into a config file let supportedPlayers = @["mpv", "mplayer", "vlc"] -proc findSupportedPlayer(): string = - for player in supported_players: - let playerBin = execProcess("which " & player) - if playerBin.len != 0: - return strip(playerBin) +type SearchResult = tuple[title: string, url: string] + +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 + raise newException(OSError, "No supported media player found") + else: + return availablePlayers[0] proc getYoutubePage(searchQuery: string): string = let queryParam = encodeUrl(searchQuery) @@ -29,14 +33,14 @@ proc getYoutubePage(searchQuery: string): string = writeFile("/tmp/cli-tube-page.html", response.body) return "/tmp/cli-tube-page.html" -proc extractTitlesAndUrls(htmlFile: string): seq[tuple[title: string, url: string]] = +proc extractTitlesAndUrls(htmlFile: string): seq[SearchResult] = loadHtml(htmlFile).findAll("a"). filter(a => "watch" in a.attrs["href"] and a.attrs.hasKey "title"). map(a => (a.attrs["title"], "https://www.youtube.com" & a.attrs["href"])) -proc presentVideoOptions(titlesAndUrls: seq[tuple[title: string, url: string]]) = - for number, (title, url) in titlesAndUrls: - echo number, ". ", title, "\n", url, "\n" +proc presentVideoOptions(searchResults: seq[SearchResult]) = + for index, (title, url) in searchResults: + echo index, ". ", title, "\n", url, "\n" presentVideoOptions( extractTitlesAndUrls(