X-Git-Url: https://njoseph.me/gitweb/nimcoon.git/blobdiff_plain/d65a1dcf24e9c17cea89385c78b1c39c314f0f97..906bd0c755e2d53a6a7bfe13f8acafb998949e39:/lib.nim diff --git a/lib.nim b/lib.nim index 25669a3..de088b4 100644 --- a/lib.nim +++ b/lib.nim @@ -31,10 +31,11 @@ proc getYoutubePage*(searchQuery: string): string = let response = get(client, &"https://www.youtube.com/results?hl=en&search_query={queryParam}") return $response.body -proc extractTitlesAndUrls*(html: string): seq[SearchResult] = - parseHtml(html).findAll("a"). - filter(a => "watch" in a.attrs["href"] and a.attrs.hasKey "title"). - map(a => (a.attrs["title"], "https://www.youtube.com" & a.attrs["href"]))[..(limit-1)] +func extractTitlesAndUrls*(html: string): seq[SearchResult] = + {.noSideEffect.}: + parseHtml(html).findAll("a"). + filter(a => "watch" in a.attrs["href"] and a.attrs.hasKey "title"). + map(a => (a.attrs["title"], "https://www.youtube.com" & a.attrs["href"]))[..(limit-1)] proc presentVideoOptions*(searchResults: seq[SearchResult]) = echo "" @@ -56,7 +57,8 @@ func sanitizeURL*(url: string): string = urlLongen(stripZshEscaping(url)) proc directPlay*(searchQuery: string, player: string) = - if "watch?" in searchQuery or "videos/watch" in searchQuery or "soundcloud.com" in searchQuery: - play(player, args=[sanitizeURL(searchQuery)]) - elif searchQuery.startswith("magnet:"): - play("peerflix", args=[searchQuery, &"--{player}"]) + let url = sanitizeURL(searchQuery) + if searchQuery.startswith("magnet:"): + play("peerflix", args=[url, &"--{player}"]) + else: + play(player, args=[url])