X-Git-Url: https://njoseph.me/gitweb/nimcoon.git/blobdiff_plain/6697cfd20fbad109b18302ab0bb2c094bfdc4b5c..f4db2dfeab3abaf50943765005e3a3218bad0f90:/src/lib.nim diff --git a/src/lib.nim b/src/lib.nim index 25a8016..3dcf78a 100644 --- a/src/lib.nim +++ b/src/lib.nim @@ -33,6 +33,10 @@ proc selectMediaPlayer*(): string = return availablePlayers[0] +proc printTitle(action: string, title: string) = + styledEcho "\n", fgGreen, &"{action} ", styleBright, fgMagenta, title + + ############### # URL CLEANUP # ############### @@ -68,7 +72,7 @@ func buildPlayerArgs(url: string, options: Table[string, bool], player: string): proc play*(player: string, options: Table[string, bool], url: string, title: string = "") = let args = buildPlayerArgs(url, options, player) if title != "": - styledEcho "\n", fgGreen, "Playing ", styleBright, fgMagenta, title + printTitle("Playing", title) if "--no-video" in args: discard execShellCmd(&"{player} {args.join(\" \")}") else: @@ -114,27 +118,29 @@ func buildDownloadArgs(url: string, options: Options): seq[string] = proc download*(args: openArray[string], title: string) = - styledEcho "\n", fgGreen, "Downloading ", styleBright, fgMagenta, title - discard execShellCmd(&"youtube-dl {args.join(\" \")}") + printTitle("Downloading", title) + discard execShellCmd(&"yt-dlp {args.join(\" \")}") proc directDownload*(url: string, options: Options) = let args = buildDownloadArgs(url, options) if "aria2c".isInstalled: - discard execShellCmd(&"youtube-dl {args.join(\" \")} --external-downloader aria2c --external-downloader-args '-x 16 -s 16 -k 2M'") + discard execShellCmd(&"yt-dlp {args.join(\" \")} --external-downloader aria2c --external-downloader-args '-x 16 -s 16 -k 2M'") else: - discard execShellCmd(&"youtube-dl {args.join(\" \")}") + discard execShellCmd(&"yt-dlp {args.join(\" \")}") proc luckyDownload*(searchQuery: string, options: Options) = - let args = @[&"ytsearch:\"{searchQuery}\""] & buildDownloadArgs("", options) - styledEcho "\n", fgGreen, "Searching and downloading using youtube-dl" - discard execShellCmd(&"youtube-dl {args.join(\" \")}") + let args = @[&"ytsearch1:\"{searchQuery}\""] & buildDownloadArgs("", options) + let title = execProcess(&"yt-dlp --get-title {args.join(\" \")}").split("\n")[0] + download(args, title) proc luckyPlay*(searchQuery: string, player: string, options: Options) = let args = @[&"ytsearch:\"{searchQuery}\""] & buildDownloadArgs("", options) - let output = execProcess(&"youtube-dl --get-url {args.join(\" \")}") - let url = output.split("\n")[0] - play(player, options, url) + let output = execProcess(&"yt-dlp --get-url --get-title {args.join(\" \")}").split("\n") + let + title = output[0] + url = &"\"{output[1]}\"" + play(player, options, url, title) ########### # OPTIONS #