conf parsing for uri option of the rss section

This commit is contained in:
Carl Chenet 2017-08-01 23:34:11 +02:00
parent 1e5e215a78
commit ad5f3ec940
2 changed files with 67 additions and 35 deletions

View file

@ -34,6 +34,7 @@ from feed2toot.confparsers.feedparser import parsefeedparser
from feed2toot.confparsers.plugins import parseplugins from feed2toot.confparsers.plugins import parseplugins
from feed2toot.confparsers.rss.pattern import parsepattern from feed2toot.confparsers.rss.pattern import parsepattern
from feed2toot.confparsers.rss.toot import parsetoot from feed2toot.confparsers.rss.toot import parsetoot
from feed2toot.confparsers.rss.uri import parseuri
from feed2toot.confparsers.rss.urilist import parseurilist from feed2toot.confparsers.rss.urilist import parseurilist
class ConfParse: class ConfParse:
@ -71,41 +72,10 @@ class ConfParse:
################# #################
feeds = [] feeds = []
feeds = parseurilist(config, accept_bozo_exceptions) feeds = parseurilist(config, accept_bozo_exceptions)
section = 'rss'
if config.has_section(section):
############ ############
# uri option # uri option
############ ############
if not feeds and not self.clioptions.rss_uri: options['rss_uri'], feed, feedname, options['nopatternurinoglobalpattern'] = parseuri(config, self.clioptions.rss_uri, feeds)
confoption = 'uri'
if config.has_option(section, confoption):
urifeed = config.get('rss', 'uri')
feedname = None
if '<' in urifeed:
matches = re.match('(.*) <(.*)>', urifeed)
if not matches:
sys.exit('This uri to parse is not formatted correctly: {urifeed}'.format(urifeed))
feedname, finaluri = matches.groups()
options['rss_uri'] = finaluri
else:
options['rss_uri'] = config.get('rss', 'uri')
else:
sys.exit('{confoption} parameter in the [{section}] section of the configuration file is mandatory. Exiting.'.format(section=section, confoption=confoption))
else:
options['rss_uri'] = self.clioptions.rss_uri
# get the rss feed for rss parameter of [rss] section
feed = feedparser.parse(options['rss_uri'])
if not feed:
sys.exit('Unable to parse the feed at the following url: {rss}'.format(rss=rss))
#########################################
# no_uri_pattern_no_global_pattern option
#########################################
currentoption = 'no_uri_pattern_no_global_pattern'
# default value
options['nopatternurinoglobalpattern'] = False
if config.has_option(section, currentoption):
options['nopatternurinoglobalpattern'] = config.getboolean(section, currentoption)
########################### ###########################
# the cache section # the cache section
########################### ###########################

View file

@ -0,0 +1,62 @@
# -*- coding: utf-8 -*-
# Copyright © 2015-2017 Carl Chenet <carl.chenet@ohmytux.com>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/
# Get value of the uri option of rss section
'''Get value of the uri option of the rss section'''
# standard library imports
import feedparser
import sys
import re
def parseuri(config, clioption, feeds):
'''Parse configuration value of the uri option of the rss section'''
rssuri = ''
feedname =''
nopatternurinoglobalpattern = False
section = 'rss'
if config.has_section(section):
############
# uri option
############
if not feeds and not clioption:
confoption = 'uri'
if config.has_option(section, confoption):
urifeed = config.get('rss', 'uri')
feedname = None
if '<' in urifeed:
matches = re.match('(.*) <(.*)>', urifeed)
if not matches:
sys.exit('This uri to parse is not formatted correctly: {urifeed}'.format(urifeed))
feedname, finaluri = matches.groups()
rssuri = finaluri
else:
rssuri = config.get('rss', 'uri')
else:
sys.exit('{confoption} parameter in the [{section}] section of the configuration file is mandatory. Exiting.'.format(section=section, confoption=confoption))
else:
rssuri = clioption
# get the rss feed for rss parameter of [rss] section
feed = feedparser.parse(rssuri)
if not feed:
sys.exit('Unable to parse the feed at the following url: {rss}'.format(rss=rss))
#########################################
# no_uri_pattern_no_global_pattern option
#########################################
currentoption = 'no_uri_pattern_no_global_pattern'
# default value
if config.has_option(section, currentoption):
nopatternurinoglobalpattern = config.getboolean(section, currentoption)
return rssuri, feed, feedname, nopatternurinoglobalpattern