X-Git-Url: https://njoseph.me/gitweb/nimcoon.git/blobdiff_plain/d09270c390b7c8d2c6cc25f3f1a416b43c8c3387..6697cfd20fbad109b18302ab0bb2c094bfdc4b5c:/src/peertube.nim diff --git a/src/peertube.nim b/src/peertube.nim new file mode 100644 index 0000000..36f1054 --- /dev/null +++ b/src/peertube.nim @@ -0,0 +1,18 @@ +import + httpClient, + json, + re, + strformat, + strutils + +let PEERTUBE_REGEX = re"videos\/watch\/[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}" + +proc getPeerTubeMagnetLink*(url: string): string = + ## Gets the magnet link of the best possible resolution from PeerTube + let uuid = url.substr(find(url, PEERTUBE_REGEX) + "videos/watch/".len) + let domainName = url.substr(8, find(url, '/', start=8) - 1) + let apiURL = &"https://{domainName}/api/v1/videos/{uuid}" + let client = newHttpClient() + let response = get(client, apiURL) + let jsonNode = parseJson($response.body) + jsonNode["files"][0]["magnetUri"].getStr()