-import htmlparser
-import httpClient
-import parseopt
-import osproc
-import sequtils, sugar
-import strformat
-import std/[terminal]
-import strtabs
-import strutils
-import uri
-import xmltree
+import
+ htmlparser,
+ httpClient,
+ parseopt,
+ osproc,
+ sequtils,
+ sugar,
+ strformat,
+ std/[terminal],
+ strtabs,
+ strutils,
+ uri,
+ xmltree
import preferences
var searchQuery = ""
var musicOnly = false
+var feelingLucky = false
for kind, key, value in getopt():
case kind
of cmdShortOption, cmdLongOption:
case key
of "m", "music": musicOnly = true
+ of "l", "lucky": feelingLucky = true
of cmdEnd:
discard
-
-if "https://www.youtube.com" in searchQuery:
+if "watch?" in searchQuery or "videos/watch" in searchQuery :
discard execProcess(&"{player} {searchQuery}")
quit(0)
-
+elif searchQuery.startswith("magnet:"):
+ discard execProcess(&"peerflix \"{searchQuery}\" --{player}")
+ quit(0)
let searchResults = extractTitlesAndUrls(getYoutubePage(searchQuery))
-presentVideoOptions(searchResults)
-
-stdout.styledWrite(fgYellow, "Choose video number: ")
-let number = parseInt(readLine(stdin))
+let number =
+ if feelingLucky: 0
+ else:
+ presentVideoOptions(searchResults)
+ stdout.styledWrite(fgYellow, "Choose video number: ")
+ parseInt(readLine(stdin))
styledEcho "\n", fgGreen, "Playing ", styleBright, fgMagenta, searchResults[number].title