16ae1554aSColin Percival#!/usr/local/bin/python 26ae1554aSColin Percival# 36ae1554aSColin Percival# 46ae1554aSColin Percival# an aggressive little script for trimming duplicate cookies 5*749f65e3SCraig Rodriguesfrom __future__ import print_function 66ae1554aSColin Percivalimport argparse 76ae1554aSColin Percivalimport re 86ae1554aSColin Percival 96ae1554aSColin Percivalwordlist = [ 106ae1554aSColin Percival 'hadnot', 116ae1554aSColin Percival 'donot', 'hadnt', 126ae1554aSColin Percival 'dont', 'have', 'more', 'will', 'your', 136ae1554aSColin Percival 'and', 'are', 'had', 'the', 'you', 146ae1554aSColin Percival 'am', 'an', 'is', 'll', 've', 'we', 156ae1554aSColin Percival 'a', 'd', 'i', 'm', 's', 166ae1554aSColin Percival] 176ae1554aSColin Percival 186ae1554aSColin Percival 196ae1554aSColin Percivaldef hash(fortune): 206ae1554aSColin Percival f = fortune 216ae1554aSColin Percival f = f.lower() 226ae1554aSColin Percival f = re.sub('[\W_]', '', f) 236ae1554aSColin Percival for word in wordlist: 246ae1554aSColin Percival f = re.sub(word, '', f) 256ae1554aSColin Percival# f = re.sub('[aeiouy]', '', f) 266ae1554aSColin Percival# f = re.sub('[^aeiouy]', '', f) 276ae1554aSColin Percival f = f[:30] 286ae1554aSColin Percival# f = f[-30:] 296ae1554aSColin Percival return f 306ae1554aSColin Percival 316ae1554aSColin Percival 326ae1554aSColin Percivaldef edit(datfile): 336ae1554aSColin Percival dups = {} 346ae1554aSColin Percival fortunes = [] 356ae1554aSColin Percival fortune = "" 366ae1554aSColin Percival with open(datfile, "r") as datfiledf: 376ae1554aSColin Percival for line in datfiledf: 386ae1554aSColin Percival if line == "%\n": 396ae1554aSColin Percival key = hash(fortune) 406ae1554aSColin Percival if key not in dups: 416ae1554aSColin Percival dups[key] = [] 426ae1554aSColin Percival dups[key].append(fortune) 436ae1554aSColin Percival fortunes.append(fortune) 446ae1554aSColin Percival fortune = "" 456ae1554aSColin Percival else: 466ae1554aSColin Percival fortune += line 476ae1554aSColin Percival for key in list(dups.keys()): 486ae1554aSColin Percival if len(dups[key]) == 1: 496ae1554aSColin Percival del dups[key] 506ae1554aSColin Percival with open(datfile + "~", "w") as o: 516ae1554aSColin Percival for fortune in fortunes: 526ae1554aSColin Percival key = hash(fortune) 536ae1554aSColin Percival if key in dups: 546ae1554aSColin Percival print('\n' * 50) 556ae1554aSColin Percival for f in dups[key]: 566ae1554aSColin Percival if f != fortune: 576ae1554aSColin Percival print(f, '%') 586ae1554aSColin Percival print(fortune, '%') 596ae1554aSColin Percival if input("Remove last fortune? ") == 'y': 606ae1554aSColin Percival del dups[key] 616ae1554aSColin Percival continue 626ae1554aSColin Percival o.write(fortune + "%\n") 636ae1554aSColin Percival 646ae1554aSColin Percivalparser = argparse.ArgumentParser(description="trimming duplicate cookies") 656ae1554aSColin Percivalparser.add_argument("filename", type=str, nargs=1) 666ae1554aSColin Percivalargs = parser.parse_args() 676ae1554aSColin Percivaledit(args.filename[0]) 68