diff --git a/reddiscparser.py b/reddiscparser.py index 3a6f43b..43417f3 100644 --- a/reddiscparser.py +++ b/reddiscparser.py @@ -109,7 +109,7 @@ class DiscussionParserBot( for fam in red_page.parse(): # Run RedFamParser on section text - redfam.RedFamParser.parser( fam, red_page.page._pageid, + redfam.RedFamParser.parser( fam, red_page.page, red_page.is_archive() ) fam_counter += 1 diff --git a/redfam.py b/redfam.py index 3dec12f..a78b150 100644 --- a/redfam.py +++ b/redfam.py @@ -137,14 +137,14 @@ class RedFamParser( RedFam ): wurde gewünscht von:" __done_notice2 = "{{Erledigt|" - def __init__( self, heading, red_page_id, red_page_archive, + def __init__( self, heading, red_page, red_page_archive, beginning, ending=None ): """ Creates a RedFam object based on data collected while parsing red_pages combined with possibly former known data from db @param red_fam_heading str Wikitext heading of section - @param red_page_id int MediaWiki page_id + @param red_page page Pywikibot.page object @param red_page_archive bool Is red_page an archive @param beginning datetime Timestamp of beginning str as strptime parseable string @@ -153,7 +153,7 @@ class RedFamParser( RedFam ): """ # Set object attributes: - self._red_page_id = red_page_id + self._red_page_id = red_page._pageid self._red_page_archive = red_page_archive self._fam_hash = None @@ -341,7 +341,7 @@ class RedFamParser( RedFam ): return False @classmethod - def parser( cls, text, pageid, isarchive=False ): + def parser( cls, text, page, isarchive=False ): """ Handles parsing of redfam section @@ -359,8 +359,21 @@ class RedFamParser( RedFam ): # Extract beginnig and maybe ending (beginning, ending) = RedFamParser.extract_dates( text, isarchive ) + # Missing beginning (Task: FS#76) + # Use first day of month of reddisc + if not beginning: + match = re.search( + jogobot.config["redundances"]["reddiscs_onlyinclude_re"], + page.title() ) + + if match: + beginning = datetime.strptime( + "01. {month} {year}".format( + month=match.group(1), year=match.group(2)), + "%d. %B %Y" ) + # Create the RedFam object - RedFamParser( heading, pageid, isarchive, beginning, ending ) + RedFamParser( heading, page, isarchive, beginning, ending ) @classmethod def extract_dates( cls, text, isarchive=False ): @@ -401,6 +414,10 @@ class RedFamParser( RedFam ): else: ending = None + # Missing dates (Task: FS#76) + else: + beginning = None + ending = None return (beginning, ending)