]> njoseph.me Git - nimcoon.git/blobdiff - src/lib.nim
Add direct download for video
[nimcoon.git] / src / lib.nim
index f5ee8a57001ccafa86eeb8f99e2f861b347eb2f8..ffa4a4a3847a8e55cd3145acf2bc9c3f3233b085 100644 (file)
@@ -56,6 +56,22 @@ proc play*(player: string, args: openArray[string], title: string) =
   else:
     discard execProcess(player, args=args, options=processOptions)
 
+func buildMusicDownloadArgs*(url: string): seq[string] =
+  {.noSideEffect.}:
+    var args = @["--ignore-errors", "-f", "bestaudio", "--extract-audio", "--audio-format", "mp3", "--audio-quality", "0", "-o"]
+    let downloadLocation = &"'{expandTilde(musicDownloadDirectory)}/%(title)s.%(ext)s'"
+    args.add(downloadLocation)
+    args.add(url)
+    return args
+
+func buildVideoDownloadArgs*(url: string): seq[string] =
+  {.noSideEffect.}:
+    var args = @["-f", "best", "-o"]
+    let downloadLocation = &"'{expandTilde(videoDownloadDirectory)}/%(title)s.%(ext)s'"
+    args.add(downloadLocation)
+    args.add(url)
+    return args
+
 proc download*(args: openArray[string], title: string) =
   styledEcho "\n", fgGreen, "Downloading ", styleBright, fgMagenta, title
   discard execShellCmd(&"youtube-dl {args.join(\" \")}")
@@ -69,9 +85,12 @@ func stripZshEscaping(url: string): string =
 func sanitizeURL*(url: string): string =
   urlLongen(stripZshEscaping(url))
 
-proc directPlay*(searchQuery: string, player: string) =
-  let url = sanitizeURL(searchQuery)
-  if searchQuery.startswith("magnet:"):
+proc directPlay*(url: string, player: string) =
+  if url.startswith("magnet:"):
     discard execProcess("peerflix", args=[url, &"--{player}"], options=processOptions)
   else:
     discard execProcess(player, args=[url], options=processOptions)
+
+proc directDownload*(url: string) =
+  let args = buildVideoDownloadArgs(url)
+  discard execShellCmd(&"youtube-dl {args.join(\" \")}")