]> njoseph.me Git - nimcoon.git/blobdiff - src/youtube.nim
Add fake user-agent
[nimcoon.git] / src / youtube.nim
index a83e23372fb21b6e66822648812bf60ef062aacf..e293f755365b0fe9ccaa794b9ce5abb0ee218898 100644 (file)
@@ -1,6 +1,7 @@
 import
   httpClient,
   json,
+  std/[terminal],
   strformat,
   strutils,
   uri
@@ -24,8 +25,15 @@ proc getSearchResults*(searchQuery: string): SearchResults =
   # Using Invidious API to retrieve the search results but playing the results directly from YouTube.
   let queryParam = encodeUrl(searchQuery)
   let client = newHttpClient()
+  client.headers = newHttpHeaders({"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36"})
   let response = get(client, &"{invidiousInstance}/api/v1/search?q={queryParam}")
   let jsonData = parseJson($response.body)
+  if jsonData.kind == JObject: # Could be a 403 error
+    stdout.styledWrite(fgRed, $response.body)
+    quit(1)
+  if len(jsonData) == 0:
+    stdout.styledWrite(fgRed, "Got empty response from Invidious instance")
+    quit(2)
   var searchResults: SearchResults = @[]
   for item in jsonData:
     if item["type"].getStr() == "video":