@@ -397,9 +397,9 @@ def _fetch(self):
397397 f = _util .TimeLimitedFunction ('feed {}' .format (self .name ), timeout , _feedparser .parse )
398398 return f (self .url , self .etag , modified = self .modified , agent = self .user_agent , ** kwargs )
399399
400- def _process (self , parsed ):
400+ def _process (self , parsed , save_config = False ):
401401 _LOG .info ('process {}' .format (self ))
402- self ._check_for_errors (parsed )
402+ self ._check_for_errors (parsed , save_config = save_config )
403403 for entry in reversed (parsed .entries ):
404404 _LOG .debug ('processing {}' .format (entry .get ('id' , 'no-id' )))
405405 processed = self ._process_entry (parsed = parsed , entry = entry )
@@ -413,15 +413,16 @@ def _process(self, parsed):
413413 continue
414414 yield processed
415415
416- def _check_for_errors (self , parsed ):
416+ def _check_for_errors (self , parsed , save_config = False ):
417417 warned = False
418418 status = getattr (parsed , 'status' , 200 )
419419 _LOG .debug ('HTTP status {}' .format (status ))
420420 if status in [301 , 308 ]:
421421 _LOG .info ('redirect {} from {} to {}' .format (
422422 self .name , self .url , parsed ['url' ]))
423423 self .url = parsed ['url' ]
424- # TODO: `url` is not saved -- add config option to call feeds.save_config() in run command
424+ if save_config :
425+ self .save_to_config ()
425426 elif status == 304 :
426427 _LOG .info ('skipping {}: feed was not modified since last update' .format (
427428 self .name , self .url ))
@@ -928,7 +929,7 @@ def _send(self, sender, message):
928929 _email .send (recipient = self .to , message = message ,
929930 config = self .config , section = section )
930931
931- def run (self , send = True , clean = False ):
932+ def run (self , send = True , clean = False , save_config = False ):
932933 """Fetch and process the feed, mailing entry emails.
933934
934935 >>> feed = Feed(
@@ -969,7 +970,7 @@ def run(self, send=True, clean=False):
969970 raise _error .InvalidDigestType (type )
970971 digest = self ._new_digest ()
971972 seen = []
972- for (guid , state , sender , message ) in self ._process (parsed ):
973+ for (guid , state , sender , message ) in self ._process (parsed , save_config = save_config ):
973974 _LOG .debug ('new message: {}' .format (message ['Subject' ]))
974975 seen .append ((guid , state ))
975976 self ._append_to_digest (digest = digest , message = message )
@@ -984,7 +985,7 @@ def run(self, send=True, clean=False):
984985 for (guid , state ) in seen :
985986 self .seen [guid ] = state
986987 else :
987- for (guid , state , sender , message ) in self ._process (parsed ):
988+ for (guid , state , sender , message ) in self ._process (parsed , save_config = save_config ):
988989 _LOG .debug ('new message: {}' .format (message ['Subject' ]))
989990 if send :
990991 self ._send (sender = sender , message = message )
0 commit comments