#!/usr/bin/python import sys, string, re # run within the /folk/ folder: # python ../scripts/make-folklist.py index.htm # re-run it every time you edit the folk.csv file to add someone you have forgotten # it needs to be run on the server too as the file produced is ignored by hg headcount = 0 pics = 0 allyears = 0 recordholders = [] output = "" lines = sys.stdin.readlines() headcounts_byyear = [0]*(len(lines[0].split(","))-5) for r in lines[1:]: r = r.replace("\n","") r = r.replace("\r", "") cells = r.split(",") # chomp newline (name, surname, guest, vfho, mug) = cells[:5] years = cells[5:] expos_caving = len([t for t in years if t == "1"]) expos_notcaving = len([t for t in years if t == "-1"]) if(expos_caving == 0 and expos_notcaving == 0): sys.stderr.write("Error processing " + name + ". No attendances found\n") sys.exit(1) if(expos_caving and name != 'Rover Richardson' and name != 'Bier Tent'): headcount += 1 if mug: pics +=1 output += '' if expos_caving == 0: output += '' # Middle names still not working: MorvenBeranek-Stanley , Sarah Livia Zerbes # Need to manage names e.g. Leif Hornsved (Nickname) => LeifHornsved namevis = name.replace('""', '"').strip('"') # Need to manage e.g.Olaf Kähler # Need to manage e.g. Bal%26aacute%3BzsIzapy nameurl = namevis.replace(' ', '') nameurl = nameurl.replace('&', '%26') nameurl = nameurl.replace(';', '%3B') nameurl = re.sub('<[^>]*>','',nameurl) nameurl = re.sub('\([^\)]*\)','',nameurl) # mostly noit needed, but is for Wookey namelink= "" + namevis + "" output += namelink #output += name.replace('""', '"') if expos_caving == 0: output += '' output += '' if guest: output += '§' output += '' if vfho: output += '¤' output += '' if mug: output += ':-)' % mug output += '' for y in xrange(len(years)): if(years[y]): m = str(76 + y)[-2:] if(years[y]=='-1'): m = ''+ m + '' else: try: headcounts_byyear[y] += 1 except IndexError: sys.stderr.write(repr(r) +":::"+ str(y) + "\n") raise output += '' + m + '' else: output += '' # print number of expos, non-caving in red. Only print numbers > 0 output += '' if(expos_notcaving): if(expos_caving): output += '%d+%d' % (expos_caving, expos_notcaving) else: output += '%d' % expos_notcaving else: output += '%d' % expos_caving output += '\n' recordholders.append((expos_caving, name)) def collapse(m): n = (m.span()[1]-m.span()[0]) / 9 if(n == 1): return m.group() else: return '' % n #output = re.sub(r'()+',collapse, output) lastyear=1976+1+len([t for t in headcounts_byyear if t > 0]) # no expo in 1986 # moved to main.css #

CUCC members and guests in Austria
1976 to %s

""" % lastyear print """

This is a pretty much complete list of all the personnel on %d CUCC expeditions (there was no expo in 1986), together with the total number of expeditions each has attended and the total number of people on each expedition.

Qualification for inclusion involves some active contribution to the expedition such as going underground, surface surveying, sherpa-ing, camp-shopping or diving for resurgences. Years marked in red indicate some certainty that the person didn't go underground that year. Persons marked in red are thought to have never been underground on expo at all. Note that diving in Altausseer See for the resurgence has been counted as underground:- it certainly counts as effort expended in the pursuit of speleology!

In the table, a section mark (§) indicates someone who was an individual guest of CUCC or of a CUCC member, or who was a member of UBSS or ULSA when they were present as guest clubs in 1981,1982 or 2008-onwards or any other clubs in more recent years. We don't guarantee to have got all such people correctly marked. Similarly, the currency symbol (¤) marks those who are (or were) individual members of the local Austrian group Verein für Höhlenkunde im Obersteier. A face icon indicates a link to a mugshot (and brief notes) in our Rogues' Gallery. Two of the members listed are inanimate objects - no prizes for guessing which without looking at the photos :-)

The table doesn't include the local cavers who have caved with us at various times. These include particularly Karl Gaisberger :-), Gunter Graf, Sepp Steinberger and Robert Seebacher :-).

""" % len([t for t in headcounts_byyear if t > 0]) y2 = lastyear-2 y1 = lastyear-1 print """

Links to recent expos: last year


""" % y1 print output print "", for y in headcounts_byyear: print '' % y, print """
Expo head count%d

%d people have taken part in expo altogether (not counting non-combatants or vehicles(!)), of whom %d have their pictures on the site so far.

Although few take such statistics seriously, the most dedicated expoers are """ % (headcount, pics) recordholders.sort() recordholders.reverse() k = 2 while recordholders[k + 1][0] == recordholders[k][0]: k = k + 1 print "%s (%d expos)," % (recordholders[0][1],recordholders[0][0]) for r in recordholders[1:k]: print "%s (%d)," % (r[1],r[0]), print """and %s (%d). Julian Todd holds the record for consecutive expo attendance (10), (along with Mark Shinwell, but he didn't actually go caving on all of those visits). A more obscure record of longest gap between expos has been held by various people since 2004 at 13, and then 17, years, but in 2017 was upped to 34 years by Phil Sargent, which is going to be extremely hard to beat!

""" % (recordholders[k][1],recordholders[k][0]) print """

Outside-expo caving happens from time to time, with Becka Lawson, Neil Pacey, Julian Todd and Wookey joining various Arge and VfHO trips since about 2000. However, the much talked-about winter expedition/holiday has still not happened, though there is still a lot to be said for it. With draughts reversed in the cold, top entrances should be more obvious and skiing would make a nice change from sitting watching the rain. Some entrances would inevitably be blocked by snow but others seem to remain open all winter.


"""