Skip to content

Instantly share code, notes, and snippets.

@noisy
Last active August 29, 2015 13:56
Show Gist options
  • Save noisy/8881989 to your computer and use it in GitHub Desktop.
Save noisy/8881989 to your computer and use it in GitHub Desktop.
#!/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