Module:Bluesky RSS Feed

From NOISZ Wiki
Revision as of 17:36, 6 June 2025 by RiceEmpress (talk | contribs) (are the comments breaking it?)

This module is a custom-designed RSS feed, designed to process a Bluesky RSS feed and output it as a template. Up to three search keywords can be input - OR rather than AND - to find posts that mention any of the keywords. A Bluesky RSS feed can be found by going to any user's page, and typing /rss at the end of the URL before hitting enter.

Usage

{{Template:Bluesky RSS Feed
|url= Bluesky RSS feed URL
|term1= Optional search term
|term2= Optional search term
|term3= Optional search term
}}

Example

{{Template:Bluesky RSS Feed
|url=https://bsky.app/profile/did:plc:ve2p3lz33ivtyikqztvsgtx3/rss
|term1=#NOISZ
}}

Will yield:

01 Mar 2026 05:12 +0000
In DEIFIED LINEAGE, experience 5 songs in two very different ways as they transcend the bounds of time. An upcoming DLC pack for NOISZ STΔRLIVHT and PROJEKT GODHAND! #NOISZ_SL #PK_GODHAND

11 Feb 2026 04:49 +0000
NOISZ SL 4.004 is now available! This version makes some additional fixes and adjustments. (Unless regressions occur, this is likely to be the last version until the next content update.) #NOISZ_SL

10 Feb 2026 14:29 +0000
NOISZ SL 4.003 is now available! This version fixes some additional issues with finale content and a bug with uncleared Recursive events. #NOISZ_SL




local capiunto = require 'capiunto'
local p = {}
function p.main(frame)

local args = frame:getParent().args
local posts = {}
local searchTerms = {}

if args.term1 or args.term2 or args.term3 then
	searchTerms[1] = args.term1
	searchTerms[2] = args.term2
	searchTerms[3] = args.term3
else 
	searchTerms = {""}
end

local rss = mw.ext.externaldata.getWebData {
    url = args.url
  , data = {pubDate = 'pubDate', description = 'description', link= 'link'}
  , format = 'xml'
}


for k, v in ipairs(rss) do
	if v["description"] and v["pubDate"] and v["link"] and k > 1 then
		for a, b in pairs(searchTerms) do
			if string.find(v["description"],b) then
				table.insert(posts, frame:expandTemplate{title = 'Bluesky RSS Feed Row', args = {description = v["description"], pubDate = v["pubDate"], link=v["link"]}})
			end	
		end
	end
end

return table.concat(posts,"")


end

return p