import
+ os,
parseopt,
std/[terminal],
strformat,
quit(1)
if searchQuery.startswith("https:") or searchQuery.startswith("magnet:"):
- directPlay(searchQuery, player)
+ if options["download"]:
+ directDownload(sanitizeURL(searchQuery))
+ else:
+ directPlay(sanitizeURL(searchQuery), player)
quit(0)
let searchResults = extractTitlesAndUrls(getYoutubePage(searchQuery))
readLine(stdin)
# This is a pure function with no side effects
- func buildArgs(number: int): seq[string] =
+ func buildPlayerArgs(number: int): seq[string] =
var args = @[searchResults[number].url]
if options["musicOnly"]: args.add("--no-video")
if options["fullScreen"]: args.add("--fullscreen")
return args
+ proc handleUserInput(number: int) =
+ if options["download"]:
+ if options["musicOnly"]:
+ download(buildMusicDownloadArgs(searchResults[number].url), searchResults[number].title)
+ else:
+ download(buildVideoDownloadArgs(searchResults[number].url), searchResults[number].title)
+ else:
+ play(player, buildPlayerArgs(number), searchResults[number].title)
+
+
while(true):
let userInput = getUserInput()
if userInput == "all":
for number in 0..(len(searchResults)):
- play(player, buildArgs(number), searchResults[number].title)
+ # TODO `spawn` this?
+ handleUserInput(number)
if userInput == "q":
break
# Play the video using the preferred/available media player
let videoNumber = parseInt(userInput)
- play(player, buildArgs(videoNumber), searchResults[videoNumber].title)
+ handleUserInput(videoNumber)
if options["feelingLucky"]:
break