]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - games/fortune/tools/do_uniq.py
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / games / fortune / tools / do_uniq.py
1 #!/usr/local/bin/python
2 #
3 # $FreeBSD$
4 #
5 # an aggressive little script for trimming duplicate cookies
6
7 import re, sys
8
9 wordlist = [
10     'hadnot',
11     'donot', 'hadnt',
12     'dont', 'have', 'more', 'will', 'your',
13     'and', 'are', 'had', 'the', 'you',
14     'am', 'an', 'is', 'll', 've', 'we',
15     'a', 'd', 'i', 'm', 's',
16 ]
17
18 def hash(fortune):
19     f = fortune
20     f = f.lower()
21     f = re.sub('[\W_]', '', f)
22     for word in wordlist:
23         f = re.sub(word, '', f)
24 #    f = re.sub('[aeiouy]', '', f)
25 #    f = re.sub('[^aeiouy]', '', f)
26     f = f[:30]
27 #    f = f[-30:]
28     return f
29
30 def edit(datfile):
31     dups = {}
32     fortunes = []
33     fortune = ""
34     for line in file(datfile):
35         if line == "%\n":
36             key = hash(fortune)
37             if key not in dups:
38                 dups[key] = []
39             dups[key].append(fortune)
40             fortunes.append(fortune)
41             fortune = ""
42         else:
43             fortune += line
44     for key in list(dups.keys()):
45         if len(dups[key]) == 1:
46             del dups[key]
47     o = file(datfile + '~', "w")
48     for fortune in fortunes:
49         key = hash(fortune)
50         if key in dups:
51             print('\n' * 50)
52             for f in dups[key]:
53                 if f != fortune:
54                     print(f, '%')
55             print(fortune, '%')
56             if input("Remove last fortune? ") == 'y':
57                 del dups[key]
58                 continue
59         o.write(fortune + "%\n")
60     o.close()
61
62 assert len(sys.argv) == 2
63 edit(sys.argv[1])