X-Git-Url: https://njoseph.me/gitweb/nimcoon.git/blobdiff_plain/9ed70b9e0ee8ebf8e0b1fc1bbe1b77178d1f008c..5f9cdfeff96bb2848e3dc72bab410859d78b9c65:/src/lib.nim diff --git a/src/lib.nim b/src/lib.nim index 17761f3..204c328 100644 --- a/src/lib.nim +++ b/src/lib.nim @@ -12,7 +12,8 @@ import import config, - types + types, + youtube let @@ -136,7 +137,11 @@ proc offerSelection(searchResults: SearchResults, options: Table[string, bool], proc handleUserInput(searchResult: SearchResult, options: Table[string, bool], player: string) = - if options["download"]: + if options["autoPlay"]: + play(player, options, searchResult.url, searchResult.title) + let nextResult = getAutoPlayVideo(searchResult) + handleUserInput(nextResult, options, player) # inifinite playlist till user quits + elif options["download"]: if options["musicOnly"]: download(buildMusicDownloadArgs(searchResult.url), searchResult.title) else: @@ -147,24 +152,30 @@ proc handleUserInput(searchResult: SearchResult, options: Table[string, bool], p proc isValidOptions*(options: Options): bool = # Check for invalid combinations of options - var invalidCombinations = [("musicOnly", "fullScreen"), ("download", "fullScreen")] + var invalidCombinations = [("musicOnly", "fullScreen"), ("download", "fullScreen"), ("download", "autoPlay")] result = true for combination in invalidCombinations: if options[combination[0]] and options[combination[1]]: stderr.writeLine fmt"Incompatible options provided: {combination[0]} and {combination[1]}" result = false + # TODO Make this overridable in configuration + if options["autoPlay"] and not options["musicOnly"]: + stderr.writeLine "--music-only must be provided with --auto-play. This is to prevent binge-watching." + result = false proc updateOptions(options: Options, newOptions: string): Options = result = options + # Interactive options for option in newOptions: case option of 'm': result["musicOnly"] = true of 'f': result["fullScreen"] = true of 'd': result["download"] = true + of 'a': result["autoPlay"] = true else: - echo "Invalid option provided!" + stderr.writeLine "Invalid option provided!" quit(2) if(not isValidOptions(result)):