29 lines
696 B
JavaScript
29 lines
696 B
JavaScript
const h = require('htmlparser2')
|
|
const Logger = require('../../Logger')
|
|
|
|
/**
|
|
*
|
|
* @param {string} opmlText
|
|
* @returns {Array<{title: string, feedUrl: string}>
|
|
*/
|
|
function parse(opmlText) {
|
|
var feeds = []
|
|
var parser = new h.Parser({
|
|
onopentag: (name, attribs) => {
|
|
if (name === 'outline' && attribs.type === 'rss') {
|
|
if (!attribs.xmlurl) {
|
|
Logger.error('[parseOPML] Invalid opml outline tag has no xmlurl attribute')
|
|
} else {
|
|
feeds.push({
|
|
title: attribs.title || attribs.text || '',
|
|
feedUrl: attribs.xmlurl
|
|
})
|
|
}
|
|
}
|
|
}
|
|
})
|
|
parser.write(opmlText)
|
|
return feeds
|
|
}
|
|
module.exports.parse = parse
|