I just spent the last hour resolving this problem (after downloading rev 1096 from Blackbolt's site)...
Though the small fix works, you can do slightly better. Here is my code, which goes in the GetGTNFO function of set_gamercard.py and gamercardupdate.py:
wsock = urllib.urlopen(str(card_url))
card_html = wsock.read()
nfo = re.search('<span class="XbcFLAL">([^<]*)</span>.*?<img class="XbcgcGamertile" height="64" width="64" src="([^"]*)".*?<img src="/xweb/lib/images/gc_repstars_external_([^.]*).gif" />.*?<span class="XbcFLAL"><img alt="Gamerscore" src=".*" /></span><span class="XbcFRAR">(.*)</span>.*?<span class="XbcFLAL">Zone</span><span class="XbcFRAR">(.*)</span>', card_html, re.IGNORECASE).groups()
You'll never have to change a 7 to an 8 again, since this parses the whole page, but if the structure of the gamercard html changes too much then you'll of course have to rewrite the regex. This expression can handle some minor changes, which is better than before.