Module:Bluesky RSS Feed: Difference between revisions
RiceEmpress (talk | contribs) No edit summary |
RiceEmpress (talk | contribs) (are the comments breaking it?) |
||
| Line 8: | Line 8: | ||
local searchTerms = {} | local searchTerms = {} | ||
if args.term1 or args.term2 or args.term3 then | if args.term1 or args.term2 or args.term3 then | ||
searchTerms[1] = args.term1 | searchTerms[1] = args.term1 | ||
| Line 14: | Line 13: | ||
searchTerms[3] = args.term3 | searchTerms[3] = args.term3 | ||
else | else | ||
searchTerms = {""} | searchTerms = {""} | ||
end | end | ||
local rss = mw.ext.externaldata.getWebData { | local rss = mw.ext.externaldata.getWebData { | ||
url = args.url | url = args.url | ||
| Line 25: | Line 22: | ||
} | } | ||
for k, v in ipairs(rss) do | for k, v in ipairs(rss) do | ||
if v["description"] and v["pubDate"] and v["link"] and k > 1 then | if v["description"] and v["pubDate"] and v["link"] and k > 1 then | ||
for a, b in pairs(searchTerms) do | for a, b in pairs(searchTerms) do | ||
if string.find(v["description"],b) then | 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"]}}) | table.insert(posts, frame:expandTemplate{title = 'Bluesky RSS Feed Row', args = {description = v["description"], pubDate = v["pubDate"], link=v["link"]}}) | ||
end | end | ||
| Line 42: | Line 33: | ||
end | end | ||
return table.concat(posts,"") | return table.concat(posts,"") | ||
Revision as of 17:36, 6 June 2025
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