added starts of rss feeds... ha

This commit is contained in:
Paul Wilde 2024-12-18 14:09:57 +00:00
parent dcbe4c565e
commit 13ae6c3fbd
4 changed files with 49 additions and 6 deletions

View file

@ -35,6 +35,13 @@ proc staticFileHandler(request: Request) =
else: else:
request.respond(404) 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 = proc createRouter(): Router =
var router: Router var router: Router
@ -46,6 +53,7 @@ proc createRouter(): Router =
router.get("/favicon.ico", staticFileHandler) router.get("/favicon.ico", staticFileHandler)
router.get("/favicon.png", staticFileHandler) router.get("/favicon.png", staticFileHandler)
router.get("/css.css", staticFileHandler) router.get("/css.css", staticFileHandler)
router.get("/*.rss", rssHandler)
return router return router

View file

@ -119,16 +119,45 @@ proc compilePage(content: string, video_uri: string = "", search_query: string =
page &= RESOURCES["html_end"] page &= RESOURCES["html_end"]
return page 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"""<item><title>{title}</titcle><link>{vid_url}</link><description>{title}</description><image><title>{title}</title><url>{vid_thumb}</url></image></item>"""
rss &= RESOURCES["rss_end"]
return rss
const XV = "https://www.xvideos.com" 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 = proc genpage*(path: string, video_uri: string = ""): string =
let content = request(XV & path) let content = request(XV & path)
var search_query: string let search_query = findSearchQuery(path)
if video_uri == "": 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) return compilePage(content, search_query = search_query)
else: else:
return compilePage(content, video_uri) 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)

2
src/resources/rss_end Normal file
View file

@ -0,0 +1,2 @@
</channel>
</rss>

4
src/resources/rss_start Normal file
View file

@ -0,0 +1,4 @@
<rss version="2.0">
<channel>
<title>Pimvidious</title>
<link>https://example.com</link>