diff --git a/src/Pimvidious.nim b/src/Pimvidious.nim index 288a443..0156e08 100644 --- a/src/Pimvidious.nim +++ b/src/Pimvidious.nim @@ -35,6 +35,13 @@ proc staticFileHandler(request: Request) = else: request.respond(404) +proc rssHandler(request: Request) = + echo request.uri + var headers: HttpHeaders + let content = genRSS(path=request.uri) + headers["content-type"] = "application/rss+xml" + request.respond(200, headers, content) + proc createRouter(): Router = var router: Router @@ -46,6 +53,7 @@ proc createRouter(): Router = router.get("/favicon.ico", staticFileHandler) router.get("/favicon.png", staticFileHandler) router.get("/css.css", staticFileHandler) + router.get("/*.rss", rssHandler) return router diff --git a/src/genpage.nim b/src/genpage.nim index 3a231e9..d65e1ef 100644 --- a/src/genpage.nim +++ b/src/genpage.nim @@ -119,16 +119,45 @@ proc compilePage(content: string, video_uri: string = "", search_query: string = page &= RESOURCES["html_end"] return page +proc compileRSSPage(content: string, search_query: string = ""): string = + var rss = RESOURCES["rss_start"] + let urls = parseUrls(content) + let thumbs = parseThumbs(content) + for idx, url in urls: + var + vid_url, vid_thumb: string + vid_url = url.replace("THUMBNUM","0") + if thumbs.len > idx: + vid_thumb = thumbs[idx].replace("THUMBNUM","1") + else: + vid_url = url.replace("THUMBNUM","1") + vid_thumb = thumbs[^1].replace("THUMBNUM","1") + let title = vid_url.split("/")[^1].replace("_"," ") + rss &= fmt"""{title}</titcle><link>{vid_url}</link><description>{title}</description><image><title>{title}{vid_thumb}""" + rss &= RESOURCES["rss_end"] + return rss + const XV = "https://www.xvideos.com" +proc findSearchQuery(query: string): string = + var search_query: string + let search = parseUri(query) + for item in search.query.split("&"): + let parm = item.split("=") + if parm[0] == "k": + search_query = parm[1] + break + return search_query + proc genpage*(path: string, video_uri: string = ""): string = let content = request(XV & path) - var search_query: string + let search_query = findSearchQuery(path) if video_uri == "": - let search = parseUri(path) - for item in search.query.split("&"): - let parm = item.split("=") - if parm[0] == "k": - search_query = parm[1] return compilePage(content, search_query = search_query) else: return compilePage(content, video_uri) + +proc genRSS*(path: string): string = + let content = request(XV & path) + let search_query = findSearchQuery(path) + return compileRSSPage(content, search_query = search_query) + diff --git a/src/resources/rss_end b/src/resources/rss_end new file mode 100644 index 0000000..3a9dbde --- /dev/null +++ b/src/resources/rss_end @@ -0,0 +1,2 @@ + + diff --git a/src/resources/rss_start b/src/resources/rss_start new file mode 100644 index 0000000..64b0b2b --- /dev/null +++ b/src/resources/rss_start @@ -0,0 +1,4 @@ + + +Pimvidious +https://example.com