Last active
August 29, 2015 13:56
-
-
Save noisy/8881989 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/python | |
# -*- coding: utf-8 -*- | |
import wykop | |
import regex as re | |
def analyze(rownanie, r, odjemna, odjemnik, roznica, poprzednia_roznica, entry): | |
ok = odjemna == poprzednia_roznica | |
blad_w_dzialaniu = odjemna - odjemnik == roznica | |
blad_podstawy = "" if ok else poprzednia_roznica | |
#print "[%d][%s] %s: %s - %s = %s" % (r, ok, entry['author'], odjemna, odjemnik, roznica) | |
if blad_w_dzialaniu: | |
print "%s; %s; %s; " \ | |
"%d; %d; %d; %s; %s; ;" \ | |
"%s ; %d; %d; " \ | |
"%s" % \ | |
(entry['date'], entry['author'], rownanie, | |
odjemna, odjemnik, roznica, blad_podstawy, blad_w_dzialaniu, | |
entry['url'], entry['vote_count'], len(entry['comments']), | |
"tak" if entry['embed']!=None else "nie") | |
return True | |
else: | |
return False | |
def analyze_err(rownanie, r, odjemna, odjemnik, roznica, poprzednia_roznica, entry): | |
ok = odjemna == poprzednia_roznica | |
blad_w_dzialaniu = odjemna - odjemnik == roznica | |
blad_podstawy = "" if ok else poprzednia_roznica | |
#print "[%d][%s] %s: %s - %s = %s" % (r, ok, entry['author'], odjemna, odjemnik, roznica) | |
if blad_w_dzialaniu: | |
print "%s; %s; %s; " \ | |
"%d; %d; %d; %s; %s; ;" \ | |
"%s ; %d; %d; " \ | |
"%s" % \ | |
(entry['date'], entry['author'], rownanie, | |
odjemna, odjemnik, roznica, blad_podstawy, blad_w_dzialaniu, | |
entry['url'], entry['vote_count'], len(entry['comments']), | |
"tak" if entry['embed']!=None else "nie") | |
return True | |
else: | |
print "%s; %s; %s; " \ | |
"%d; %d; %d; %s; %s; ;" \ | |
"%s ; %d; %d; " \ | |
"%s" % \ | |
(entry['date'], entry['author'], rownanie, | |
odjemna, odjemnik, roznica, blad_podstawy, blad_w_dzialaniu, | |
entry['url'], entry['vote_count'], len(entry['comments']), | |
"tak" if entry['embed']!=None else "nie") | |
print "###########ERROR###############" | |
print "[%d][%s] %s: %s - %s = %s (!= %d)" % (r, ok, entry['author'], odjemna, odjemnik, roznica, odjemna - odjemnik) | |
print body | |
print "#################################" | |
return False | |
api = wykop.WykopAPI(appkey="oKcgEeDB3Q", secretkey="UmT5HQFnRs", login="noisy", accountkey="V4rdn35ibYdFk7jSXPAc") | |
page=1 | |
norecord=[4489381, 4536719, 4540575, 4540623, 4542737, 4544033, 4544039, 4544151, 4545259, 4559039, 4569021, 4570117, | |
4570493, 4577631, 4582977, 4583151, 4593243, 4593299, 4597769, 4607351, 4620337, 4621199, 4632629, 4634073, | |
4639331, 4640013, 4665943, 4702049, 4702109, 4777501, 4778251, 4782587, 4848871, 4856169, 5063616, 5620438, | |
5782951, 5790437, 5877691, 5879651, 5890075, 5890075, 5909521, 5932129, 5933307, 5963624, 6048738, 6049112, | |
6064862, 6067384, 6090140, 6128620, 6214272, 6239956, 6245480, 6332472, 6341604, 6344356, 6348364, 6361884, | |
6390758, 6398118, 6401656, 6438176, 6470484, 6490552, 6510638, 6537888, 6550294, 6554776, 6556890, 6598484, | |
6600950, 6612020, 6621618, 6637060, 6726464, 6728100, 6733750, 6734570, 6735662, 6746710, 6765526, 6783592, | |
6816696, 6819404, 6864994, 6865164, 6893562, 6894684, 6900556, 6928880, 6947637, 7016952, 7019748, 7020402, | |
7065042, 7089746, 7089908, 7096928, 7098566, 7107458, 7019748, 7020402, 6923170, 6113372] | |
entries = [] | |
while True: | |
tags = api.tag("barylkakrwi", page=page) | |
if len(tags['items']) > 0: | |
page += 1 | |
else: | |
break | |
for entry in tags['items']: | |
if entry['type'] == 'entry': | |
entries.append(entry) | |
entries.reverse() | |
odjemna=0 | |
odjemnik=0 | |
roznica=164000 | |
#146350-450=145900 | |
r1="(\d+)-(\d+)=(\d+)" | |
#146350 - 450 = 145900 (ze spacjami) | |
r2="(\d+)\s*-\s*(\d+)\s*=\s*(\d+)" | |
#146 350 - 450 = 145 900 (ze spacjami wewnatrz liczb) | |
r3="(\d+\s*\d*)\s*-\s*(\d+\s*\d*)\s*=\s*(\d+\s*\d*)" | |
#146,350 - 450 = 145,900 (z przecinkami wewnatrz liczb) | |
r4="(\d+,?\d*)\s*-\s*(\d+,?\d*)\s*=\s*(\d+,?\d*)" | |
#146,350 ml - 450 ml = 145,900 ml (z jednostka i przecinkami lub spacjami wewnatrz liczb) | |
r5="(\d+[\s,]*\d*)(\s?ml\s?)?\s*-\s*(\d+\s?\d*)(\s?ml\s?)?\s*=\s*(\d+,?[^\S\n]?\d*)(\s?ml\s?)?" | |
#146,350 ml – 450 ml = 145,900 ml (z jednostka, przecinkami lub spacjami wewnatrz liczb, z – zamiast minusem -) | |
r6=u"(\d+\s?,?\d*)(\s?ml\s?)?\s*[-–]\s*(\d+\s?\d*)(\s?ml\s?)?\s*=\s*(\d+[^\S\n]?,?\d*)(\s?ml\s?)?" | |
r7="(119 450) - (450) - (119 000)" | |
r8="(\d+)\s*-\s*\((\d+)\s*\*?x?\s*(\d+)\)\s*=\s*(\d+)" | |
r9="(8167) - (450) - (450) = (7267)" | |
r10="(92 100).*-.*(900).*=.*(91 200)" | |
r11="(83650) - (500) - (83150)" | |
""" | |
119 450 - 450 - 119 000 -> 119450 - 450 = 119000 | |
4972- (2x450)= 4072 -> 4972-900= 4072 | |
12067 - (3 * 450) = 10717 -> 12067 - 1350 = 10717 | |
8167 - 450 - 450 = 7267 -> 8167 - 900 = 7267 | |
83650 - 500 - 83150 | |
""" | |
f=re.MULTILINE|re.DOTALL | |
for entry in entries: | |
if entry['id'] in norecord: | |
continue | |
body = unicode(entry.body) | |
poprzednia_roznica=roznica | |
if re.search(r1, body, f): | |
donation = re.search(r1, body, f) | |
odjemna = int(donation.group(1).replace(" ", "").replace(",", "")) | |
odjemnik = int(donation.group(2).replace(" ", "").replace(",", "")) | |
roznica = int(donation.group(3).replace(" ", "").replace(",", "")) | |
if analyze(donation.group(0), 1, odjemna, odjemnik, roznica, poprzednia_roznica, entry): | |
continue | |
if re.search(r2, body, f): | |
donation = re.search(r2, body, f) | |
odjemna = int(donation.group(1).replace(" ", "").replace(",", "")) | |
odjemnik = int(donation.group(2).replace(" ", "").replace(",", "")) | |
roznica = int(donation.group(3).replace(" ", "").replace(",", "")) | |
if analyze(donation.group(0), 2, odjemna, odjemnik, roznica, poprzednia_roznica, entry): | |
continue | |
if re.search(r3, body, f): | |
donation = re.search(r3, body, f) | |
odjemna = int(donation.group(1).replace(" ", "").replace(",", "")) | |
odjemnik = int(donation.group(2).replace(" ", "").replace(",", "")) | |
roznica = int(donation.group(3).replace(" ", "").replace(",", "")) | |
if analyze(donation.group(0), 3, odjemna, odjemnik, roznica, poprzednia_roznica, entry): | |
continue | |
if re.search(r4, body, f): | |
donation = re.search(r4, body, f) | |
odjemna = int(donation.group(1).replace(" ", "").replace(",", "")) | |
odjemnik = int(donation.group(2).replace(" ", "").replace(",", "")) | |
roznica = int(donation.group(3).replace(" ", "").replace(",", "")) | |
if analyze(donation.group(0), 4, odjemna, odjemnik, roznica, poprzednia_roznica, entry): | |
continue | |
if re.search(r5, body, f): | |
donation = re.search(r5, body, f) | |
odjemna = int(donation.group(1).replace(" ", "").replace(",", "")) | |
odjemnik = int(donation.group(3).replace(" ", "").replace(",", "")) | |
roznica = int(donation.group(5).replace(" ", "").replace(",", "")) | |
if analyze(donation.group(0), 5, odjemna, odjemnik, roznica, poprzednia_roznica, entry): | |
continue | |
if re.search(r6, body, f): | |
donation = re.search(r6, body, f) | |
odjemna = int(donation.group(1).replace(" ", "").replace(",", "")) | |
odjemnik = int(donation.group(3).replace(" ", "").replace(",", "")) | |
roznica = int(donation.group(5).replace(" ", "").replace(",", "")) | |
if analyze(donation.group(0), 6, odjemna, odjemnik, roznica, poprzednia_roznica, entry): | |
continue | |
if re.search(r7, body, f): | |
donation = re.search(r7, body, f) | |
odjemna = int(donation.group(1).replace(" ", "").replace(",", "")) | |
odjemnik = int(donation.group(2).replace(" ", "").replace(",", "")) | |
roznica = int(donation.group(3).replace(" ", "").replace(",", "")) | |
if analyze(donation.group(0), 7, odjemna, odjemnik, roznica, poprzednia_roznica, entry): | |
continue | |
if re.search(r8, body, f): | |
donation = re.search(r8, body, f) | |
odjemna = int(donation.group(1).replace(" ", "").replace(",", "")) | |
mnoznik = int(donation.group(2).replace(" ", "").replace(",", "")) | |
odjemnik = int(donation.group(3).replace(" ", "").replace(",", "")) | |
roznica = int(donation.group(4).replace(" ", "").replace(",", "")) | |
if analyze(donation.group(0), 8, odjemna, mnoznik*odjemnik, roznica, poprzednia_roznica, entry): | |
continue | |
if re.search(r9, body, f): | |
donation = re.search(r9, body, f) | |
odjemna = int(donation.group(1).replace(" ", "").replace(",", "")) | |
odjemnik_1 = int(donation.group(2).replace(" ", "").replace(",", "")) | |
odjemnik_2 = int(donation.group(3).replace(" ", "").replace(",", "")) | |
roznica = int(donation.group(4).replace(" ", "").replace(",", "")) | |
if analyze(donation.group(0), 9, odjemna, odjemnik_1+odjemnik_2, roznica, poprzednia_roznica, entry): | |
continue | |
if re.search(r10, body, f): | |
donation = re.search(r10, body, f) | |
odjemna = int(donation.group(1).replace(" ", "").replace(",", "")) | |
odjemnik = int(donation.group(2).replace(" ", "").replace(",", "")) | |
roznica = int(donation.group(3).replace(" ", "").replace(",", "")) | |
if analyze(donation.group(0), 10, odjemna, odjemnik, roznica, poprzednia_roznica, entry): | |
continue | |
if re.search(r11, body, f): | |
donation = re.search(r11, body, f) | |
odjemna = int(donation.group(1).replace(" ", "").replace(",", "")) | |
odjemnik = int(donation.group(2).replace(" ", "").replace(",", "")) | |
roznica = int(donation.group(3).replace(" ", "").replace(",", "")) | |
if analyze_err(donation.group(0), 11, odjemna, odjemnik, roznica, poprzednia_roznica, entry): | |
continue | |
print "===========NO MATCH===========" | |
print "author: " + entry['author'] | |
print "id: " + str(entry['id']) | |
print body | |
print "==================================" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment