|
@@ -215,7 +215,13 @@ class WikiProjectTagger(Task): |
|
|
|
|
|
|
|
|
def process_category(self, page, job, recursive): |
|
|
def process_category(self, page, job, recursive): |
|
|
"""Try to tag all pages in the given category.""" |
|
|
"""Try to tag all pages in the given category.""" |
|
|
|
|
|
if page.title in job.processed_cats: |
|
|
|
|
|
self.logger.debug(u"Skipping category, already processed: [[%s]]", |
|
|
|
|
|
page.title) |
|
|
|
|
|
return |
|
|
self.logger.info(u"Processing category: [[%s]]", page.title) |
|
|
self.logger.info(u"Processing category: [[%s]]", page.title) |
|
|
|
|
|
job.processed_cats.add(page.title) |
|
|
|
|
|
|
|
|
if job.tag_categories: |
|
|
if job.tag_categories: |
|
|
self.process_page(page, job, is_category=True) |
|
|
self.process_page(page, job, is_category=True) |
|
|
for member in page.get_members(): |
|
|
for member in page.get_members(): |
|
@@ -231,13 +237,20 @@ class WikiProjectTagger(Task): |
|
|
|
|
|
|
|
|
def process_page(self, page, job, is_category=False): |
|
|
def process_page(self, page, job, is_category=False): |
|
|
"""Try to tag a specific *page* using the *job* description.""" |
|
|
"""Try to tag a specific *page* using the *job* description.""" |
|
|
|
|
|
if not page.is_talkpage: |
|
|
|
|
|
page = page.toggle_talk() |
|
|
|
|
|
|
|
|
|
|
|
if page.title in job.processed_pages: |
|
|
|
|
|
self.logger.debug(u"Skipping page, already processed: [[%s]]", |
|
|
|
|
|
page.title) |
|
|
|
|
|
return |
|
|
|
|
|
job.processed_pages.add(page.title) |
|
|
|
|
|
|
|
|
if job.counter % 10 == 0: # Do a shutoff check every ten pages |
|
|
if job.counter % 10 == 0: # Do a shutoff check every ten pages |
|
|
if self.shutoff_enabled(page.site): |
|
|
if self.shutoff_enabled(page.site): |
|
|
raise _ShutoffEnabled() |
|
|
raise _ShutoffEnabled() |
|
|
job.counter += 1 |
|
|
job.counter += 1 |
|
|
|
|
|
|
|
|
if not page.is_talkpage: |
|
|
|
|
|
page = page.toggle_talk() |
|
|
|
|
|
try: |
|
|
try: |
|
|
code = page.parse() |
|
|
code = page.parse() |
|
|
except exceptions.PageNotFoundError: |
|
|
except exceptions.PageNotFoundError: |
|
@@ -438,7 +451,10 @@ class _Job(object): |
|
|
self.nocreate = kwargs["nocreate"] |
|
|
self.nocreate = kwargs["nocreate"] |
|
|
self.tag_categories = kwargs["tag_categories"] |
|
|
self.tag_categories = kwargs["tag_categories"] |
|
|
self.dry_run = kwargs["dry_run"] |
|
|
self.dry_run = kwargs["dry_run"] |
|
|
|
|
|
|
|
|
self.counter = 0 |
|
|
self.counter = 0 |
|
|
|
|
|
self.processed_cats = set() |
|
|
|
|
|
self.processed_pages = set() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class _ShutoffEnabled(Exception): |
|
|
class _ShutoffEnabled(Exception): |
|
|