| @@ -84,23 +84,32 @@ class AFCCopyvios(Task): | |||||
| self.logger.info(u"Checking [[{0}]]".format(title)) | self.logger.info(u"Checking [[{0}]]".format(title)) | ||||
| result = page.copyvio_check(self.min_confidence, self.max_queries) | result = page.copyvio_check(self.min_confidence, self.max_queries) | ||||
| url = result.url | url = result.url | ||||
| confidence = "{0}%".format(round(result.confidence * 100, 2)) | |||||
| orig_conf = "{0}%".format(round(result.confidence * 100, 2)) | |||||
| if result.violation: | if result.violation: | ||||
| # Things can change in the minute that it takes to do a check. | |||||
| # Confirm that a violation still holds true: | |||||
| page.load() | |||||
| confirm = page.copyvio_compare(url, self.min_confidence) | |||||
| new_conf = "{0}%".format(round(confirm.confidence * 100, 2)) | |||||
| if not confirm.violation: | |||||
| msg = u"A violation was detected in [[{0}]], but couldn't be confirmed. It may have just been edited (best: {1} at {2} -> {3} confidence)" | |||||
| self.logger.info(msg.format(title, url, orig_conf, new_conf)) | |||||
| safeurl = quote(url.encode("utf8"), safe="/:").decode("utf8") | safeurl = quote(url.encode("utf8"), safe="/:").decode("utf8") | ||||
| content = page.get() | content = page.get() | ||||
| template = u"\{\{{0}|url={1}|confidence={2}\}\}\n" | template = u"\{\{{0}|url={1}|confidence={2}\}\}\n" | ||||
| template = template.format(self.template, safeurl, confidence) | |||||
| template = template.format(self.template, safeurl, new_conf) | |||||
| newtext = template + content | newtext = template + content | ||||
| if "{url}" in self.summary: | if "{url}" in self.summary: | ||||
| page.edit(newtext, self.summary.format(url=url)) | page.edit(newtext, self.summary.format(url=url)) | ||||
| else: | else: | ||||
| page.edit(newtext, self.summary) | page.edit(newtext, self.summary) | ||||
| msg = u"Found violation: [[{0}]] -> {1} ({2} confidence)" | msg = u"Found violation: [[{0}]] -> {1} ({2} confidence)" | ||||
| self.logger.info(msg.format(title, url, confidence)) | |||||
| self.logger.info(msg.format(title, url, new_conf)) | |||||
| else: | else: | ||||
| msg = u"No violations detected in [[{0}]] (best: {1} at {2} confidence)" | msg = u"No violations detected in [[{0}]] (best: {1} at {2} confidence)" | ||||
| self.logger.info(msg.format(title, url, confidence)) | |||||
| self.logger.info(msg.format(title, url, orig_conf)) | |||||
| self.log_processed(pageid) | self.log_processed(pageid) | ||||
| if self.cache_results: | if self.cache_results: | ||||
| @@ -150,4 +159,5 @@ class AFCCopyvios(Task): | |||||
| cursor.execute(query1, (pageid,)) | cursor.execute(query1, (pageid,)) | ||||
| if cursor.fetchall(): | if cursor.fetchall(): | ||||
| cursor.execute(query2, (pageid,)) | cursor.execute(query2, (pageid,)) | ||||
| cursor.execute(query3, (pageid, hash, result.url, result.queries, 0)) | |||||
| args = (pageid, hash, result.url, result.queries, 0) | |||||
| cursor.execute(query3, args) | |||||