From 9e6b85681599066dee4fca75097286e5c823875b Mon Sep 17 00:00:00 2001 From: Joseph Nuthalapati Date: Tue, 18 Feb 2020 21:25:56 +0530 Subject: [PATCH] Better UX for playing all search results Also fix a bug with looping over video numbers Signed-off-by: Joseph Nuthalapati --- lib.nim | 11 +++++++---- nimcoon.nim | 9 ++++----- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/lib.nim b/lib.nim index 893422e..fe9d5c0 100644 --- a/lib.nim +++ b/lib.nim @@ -17,6 +17,8 @@ type SearchResult* = tuple[title: string, url: string] CommandLineOptions* = tuple[searchQuery: string, musicOnly: bool, feelingLucky: bool, fullScreen: bool] +let processOptions = {poStdErrToStdOut, poUsePath} + proc selectMediaPlayer*(): string = let availablePlayers = filterIt(supportedPlayers, execProcess("which " & it).len != 0) if len(availablePlayers) == 0: @@ -42,9 +44,10 @@ proc presentVideoOptions*(searchResults: seq[SearchResult]) = for index, (title, url) in searchResults: styledEcho $index, ". ", styleBright, fgMagenta, title, "\n", resetStyle, fgCyan, url, "\n" -proc play*(player: string, args: openArray[string]) = +proc play*(player: string, args: openArray[string], title: string) = # poEchoCmd can be added to options for debugging - discard execProcess(player, args=args, options={poStdErrToStdOut, poUsePath}) + styledEcho "\n", fgGreen, "Playing ", styleBright, fgMagenta, title + discard execProcess(player, args=args, options=processOptions) func urlLongen(url: string): string = url.replace("youtu.be/", "www.youtube.com/watch?v=") @@ -58,6 +61,6 @@ func sanitizeURL*(url: string): string = proc directPlay*(searchQuery: string, player: string) = let url = sanitizeURL(searchQuery) if searchQuery.startswith("magnet:"): - play("peerflix", args=[url, &"--{player}"]) + discard execProcess("peerflix", args=[url, &"--{player}"], options=processOptions) else: - play(player, args=[url]) + discard execProcess("peerflix", args=[url], options=processOptions) diff --git a/nimcoon.nim b/nimcoon.nim index ed3a572..8b1ba59 100644 --- a/nimcoon.nim +++ b/nimcoon.nim @@ -35,6 +35,7 @@ proc main() = if searchQuery.startswith("https:") or searchQuery.startswith("magnet:"): directPlay(searchQuery, player) + quit(0) let searchResults = extractTitlesAndUrls(getYoutubePage(searchQuery)) @@ -57,16 +58,14 @@ proc main() = if userInput == "all": for number in 0..(len(searchResults)): - play(player, buildArgs(number)) + play(player, buildArgs(number), searchResults[number].title) if userInput == "q": break - let videoNumber = parseInt(userInput) - styledEcho "\n", fgGreen, "Playing ", styleBright, fgMagenta, searchResults[videoNumber].title - # Play the video using the preferred/available media player - play(player, buildArgs(videoNumber)) + let videoNumber = parseInt(userInput) + play(player, buildArgs(videoNumber), searchResults[videoNumber].title) if feelingLucky: break -- 2.43.0