@@ -386,9 +386,9 @@ def _fetch(self):
386386 f = _util .TimeLimitedFunction ('feed {}' .format (self .name ), timeout , _feedparser .parse )
387387 return f (self .url , self .etag , modified = self .modified , agent = self .user_agent , ** kwargs )
388388
389- def _process (self , parsed ):
389+ def _process (self , parsed , save_config = False ):
390390 _LOG .info ('process {}' .format (self ))
391- self ._check_for_errors (parsed )
391+ self ._check_for_errors (parsed , save_config = save_config )
392392 for entry in reversed (parsed .entries ):
393393 _LOG .debug ('processing {}' .format (entry .get ('id' , 'no-id' )))
394394 processed = self ._process_entry (parsed = parsed , entry = entry )
@@ -402,15 +402,16 @@ def _process(self, parsed):
402402 continue
403403 yield processed
404404
405- def _check_for_errors (self , parsed ):
405+ def _check_for_errors (self , parsed , save_config = False ):
406406 warned = False
407407 status = getattr (parsed , 'status' , 200 )
408408 _LOG .debug ('HTTP status {}' .format (status ))
409409 if status in [301 , 308 ]:
410410 _LOG .info ('redirect {} from {} to {}' .format (
411411 self .name , self .url , parsed ['url' ]))
412412 self .url = parsed ['url' ]
413- # TODO: `url` is not saved -- add config option to call feeds.save_config() in run command
413+ if save_config :
414+ self .save_to_config ()
414415 elif status == 304 :
415416 _LOG .info ('skipping {}: feed was not modified since last update' .format (
416417 self .name , self .url ))
@@ -917,7 +918,7 @@ def _send(self, sender, message):
917918 _email .send (recipient = self .to , message = message ,
918919 config = self .config , section = section )
919920
920- def run (self , send = True , clean = False ):
921+ def run (self , send = True , clean = False , save_config = False ):
921922 """Fetch and process the feed, mailing entry emails.
922923
923924 >>> feed = Feed(
@@ -947,7 +948,7 @@ def run(self, send=True, clean=False):
947948 raise _error .InvalidDigestType (type )
948949 digest = self ._new_digest ()
949950 seen = []
950- for (guid , state , sender , message ) in self ._process (parsed ):
951+ for (guid , state , sender , message ) in self ._process (parsed , save_config = save_config ):
951952 _LOG .debug ('new message: {}' .format (message ['Subject' ]))
952953 seen .append ((guid , state ))
953954 self ._append_to_digest (digest = digest , message = message )
@@ -962,7 +963,7 @@ def run(self, send=True, clean=False):
962963 for (guid , state ) in seen :
963964 self .seen [guid ] = state
964965 else :
965- for (guid , state , sender , message ) in self ._process (parsed ):
966+ for (guid , state , sender , message ) in self ._process (parsed , save_config = save_config ):
966967 _LOG .debug ('new message: {}' .format (message ['Subject' ]))
967968 if send :
968969 self ._send (sender = sender , message = message )
0 commit comments