X-Git-Url: https://njoseph.me/gitweb/nimcoon.git/blobdiff_plain/4827df7ac6cc2b6cbc55894f95509c2c6a26c095..6ff2dbac3053f8c849caf02c4947dd782ce6227f:/clitube.nim diff --git a/clitube.nim b/clitube.nim index 3714c13..a9792c4 100644 --- a/clitube.nim +++ b/clitube.nim @@ -1,14 +1,16 @@ -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 @@ -42,6 +44,7 @@ let player = selectMediaPlayer() var searchQuery = "" var musicOnly = false +var feelingLucky = false for kind, key, value in getopt(): case kind @@ -50,24 +53,32 @@ for kind, key, value in getopt(): of cmdShortOption, cmdLongOption: case key of "m", "music": musicOnly = true + of "l", "lucky": feelingLucky = true of cmdEnd: discard -let noVideo = if musicOnly: "--no-video" else: "" - -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 +var command = @[player, searchResults[number].url] + +if musicOnly: + command.add("--no-video") + # Play the video using the preferred/available media player -discard execProcess(&"{player} {noVideo} {searchResults[number].url}") +discard execProcess(command.join(" "))