From 6ce616106b4bb0009461bd4820ff0556fcacbac4 Mon Sep 17 00:00:00 2001 From: pictuga Date: Wed, 18 Mar 2020 16:20:42 +0100 Subject: [PATCH] feeds: disable 'multi' ruleset RSS ruleset has been cut into 4 rulesets --- morss/feedify.ini | 119 ++++++++++++++++++++++------------------------ morss/feeds.py | 22 +-------- 2 files changed, 59 insertions(+), 82 deletions(-) diff --git a/morss/feedify.ini b/morss/feedify.ini index 3707d55..3a4becf 100644 --- a/morss/feedify.ini +++ b/morss/feedify.ini @@ -1,76 +1,73 @@ -[rss] -mode = xpath +[rss-rdf] +mode = xml -;RSS, rdf:rdf -;RSS, channel -;Atom -;Atom 03 +timeformat = %a, %d %b %Y %H:%M:%S %Z -timeformat = - %a, %d %b %Y %H:%M:%S %Z - %a, %d %b %Y %H:%M:%S %Z - %Y-%m-%dT%H:%M:%SZ - %Y-%m-%dT%H:%M:%SZ +base = -base = - - - - +title = /rdf:RDF/rssfake:channel/rssfake:title +desc = /rdf:RDF/rssfake:channel/rssfake:description +items = /rdf:RDF/rssfake:channel/rssfake:item -title = - /rdf:RDF/rssfake:channel/rssfake:title - /rss/channel/title - /atom:feed/atom:title - /atom03:feed/atom03:title +item_title = rssfake:title +item_link = rssfake:link +item_desc = rssfake:description +item_content = content:encoded +item_time = rssfake:pubDate -desc = - /rdf:RDF/rssfake:channel/rssfake:description - /rss/channel/description - /atom:feed/atom:subtitle - /atom03:feed/atom03:subtitle -items = - /rdf:RDF/rssfake:channel/rssfake:item - /rss/channel/item - /atom:feed/atom:entry - /atom03:feed/atom03:entry +[rss-channel] +mode = xml -item_title = - rssfake:title - title - atom:title - atom03:title +timeformat = %a, %d %b %Y %H:%M:%S %Z -item_link = - rssfake:link - link - atom:link/@href - atom03:link/@href +base = -item_desc = - rssfake:description - description - atom:summary - atom03:summary +title = /rss/channel/title +desc = /rss/channel/description +items = /rss/channel/item -item_content = - content:encoded - content:encoded - atom:content - atom03:content +item_title = title +item_link = link +item_desc = description +item_content = content:encoded +item_time = pubDate -item_time = - rssfake:pubDate - pubDate - atom:published - atom03:published -item_updated = - ; N/A - ; N/A - atom:updated - atom03:updated +[rss-atom] +mode = xml + +timeformat = %Y-%m-%dT%H:%M:%SZ + +base = + +title = /atom:feed/atom:title +desc = /atom:feed/atom:subtitle +items = /atom:feed/atom:entry + +item_title = atom:title +item_link = atom:link/@href +item_desc = atom:summary +item_content = atom:content +item_time = atom:published +item_updated = atom:updated + +[rss-atom03] +mode = xml + +timeformat = %Y-%m-%dT%H:%M:%SZ + +base = +title = /atom03:feed/atom03:title +desc = /atom03:feed/atom03:subtitle +items = /atom03:feed/atom03:entry + +item_title = atom03:title +item_link = atom03:link/@href +item_desc = atom03:summary +item_content = atom03:content +item_time = atom03:published +item_updated = atom03:updated [json] mode = json diff --git a/morss/feeds.py b/morss/feeds.py index 21df9c8..8d2eff8 100644 --- a/morss/feeds.py +++ b/morss/feeds.py @@ -67,31 +67,11 @@ class ParserBase(object): self.rules = rules if data is None: - if isinstance(self.rules['items'], list): - data = rules['base'][0] - - else: - data = rules['base'] + data = rules['base'] self.root = self.parse(data) self.parent = parent - # do `if multi` and select the correct rule for each (and split \n) - if isinstance(self.rules['items'], list): - for (i, rule) in enumerate(self.rules['items']): - if self.rule_search(rule) is not None: - key = i - break - - else: - key = 0 - - len_items = len(rules['items']) - - for arg in self.rules.keys(): - if (isinstance(self.rules[arg], list) - and len(self.rules[arg]) == len_items): - self.rules[arg] = self.rules[arg][key] def parse(self, raw): pass