Showing content from http://svn.python.org/projects/python/branches/tk_and_idle_maintenance/Demo/scripts/newslist.py below:
Newsgroups available' + detail +'
.html containing links # to those groups beginning with . def createpage(root, tree, p): filename = os.path.join(pagedir,root+'.html') if root == rootpage: detail = '' else: detail = ' under ' + root f = open(filename,'w') # f.write('Content-Type: text/html\n') f.write(' Newsgroups available' + detail + '\n') f.write(' Newsgroups available' + detail +'\n') f.write(' Back to top level
\n') printtree(f,tree,0,p) f.write('This page automatically created by \'newslist\' v. '+rcsrev+'.') f.write(time.ctime(time.time()) + '
') f.close() # Printtree prints the groups as a bulleted list. Groups with # more than subgroups will be put on a separate page. # Other sets of subgroups are just indented. def printtree(f, tree, indent, p): global desc l = len(tree) if l > sublistsize and indent>0: # Create a new page and a link to it f.write('
') f.write(p[1:]+'.*') f.write(''+pagelinkicon+'\n') createpage(p[1:], tree, p) return kl = tree.keys() if l > 1: kl.sort() if indent > 0: # Create a sub-list f.write('
'+p[1:]+'\n
') else: # Create a main list f.write('
') indent = indent + 1 for i in kl: if i == '.': # Output a newsgroup f.write('
- '+ p[1:] + ' ') if desc.has_key(p[1:]): f.write(' '+desc[p[1:]]+'\n') else: f.write('\n') else: # Output a hierarchy printtree(f,tree[i], indent, p+'.'+i) if l > 1: f.write('\n
') # Reading descriptions file --------------------------------------- # This returns an array mapping group name to its description def readdesc(descfile): global desc desc = {} if descfile == '': return try: d = open(descfile, 'r') print 'Reading descriptions...' except (IOError): print 'Failed to open description file ' + descfile return l = d.readline() while l != '': bits = string.split(l) try: grp = bits[0] dsc = string.join(bits[1:]) if len(dsc)>1: desc[grp] = dsc except (IndexError): pass l = d.readline() # Check that ouput directory exists, ------------------------------ # and offer to create it if not def checkopdir(pagedir): if not os.path.isdir(pagedir): print 'Directory '+pagedir+' does not exist.' print 'Shall I create it for you? (y/n)' if sys.stdin.readline()[0] == 'y': try: os.mkdir(pagedir,0777) except: print 'Sorry - failed!' sys.exit(1) else: print 'OK. Exiting.' sys.exit(1) # Read and write current local tree ---------------------------------- def readlocallist(treefile): print 'Reading current local group list...' tree = {} try: treetime = time.localtime(os.stat(treefile)[ST_MTIME]) except: print '\n*** Failed to open local group cache '+treefile print 'If this is the first time you have run newslist, then' print 'use the -a option to create it.' sys.exit(1) treedate = '%02d%02d%02d' % (treetime[0] % 100 ,treetime[1], treetime[2]) try: dump = open(treefile,'r') tree = marshal.load(dump) dump.close() except (IOError): print 'Cannot open local group list ' + treefile return (tree, treedate) def writelocallist(treefile, tree): try: dump = open(treefile,'w') groups = marshal.dump(tree,dump) dump.close() print 'Saved list to '+treefile+'\n' except: print 'Sorry - failed to write to local group cache '+treefile print 'Does it (or its directory) have the correct permissions?' sys.exit(1) # Return list of all groups on server ----------------------------- def getallgroups(server): print 'Getting list of all groups...' treedate='010101' info = server.list()[1] groups = [] print 'Processing...' if skipempty: print '\nIgnoring following empty groups:' for i in info: grpname = string.split(i[0])[0] if skipempty and string.atoi(i[1]) < string.atoi(i[2]): print grpname+' ', else: groups.append(grpname) print '\n' if skipempty: print '(End of empty groups)' return groups # Return list of new groups on server ----------------------------- def getnewgroups(server, treedate): print 'Getting list of new groups since start of '+treedate+'...', info = server.newgroups(treedate,'000001')[1] print 'got %d.' % len(info) print 'Processing...', groups = [] for i in info: grpname = string.split(i)[0] groups.append(grpname) print 'Done' return groups # Now the main program -------------------------------------------- def main(): global desc tree={} # Check that the output directory exists checkopdir(pagedir) try: print 'Connecting to '+newshost+'...' if sys.version[0] == '0': s = NNTP.init(newshost) else: s = NNTP(newshost) connected = 1 except (nntplib.error_temp, nntplib.error_perm), x: print 'Error connecting to host:', x print 'I\'ll try to use just the local list.' connected = 0 # If -a is specified, read the full list of groups from server if connected and len(sys.argv) > 1 and sys.argv[1] == '-a': groups = getallgroups(s) # Otherwise just read the local file and then add # groups created since local file last modified. else: (tree, treedate) = readlocallist(treefile) if connected: groups = getnewgroups(s, treedate) if connected: addtotree(tree, groups) writelocallist(treefile,tree) # Read group descriptions readdesc(descfile) print 'Creating pages...' createpage(rootpage, tree, '') print 'Done' if __name__ == "__main__": main() # That's all folks ######################################################################
RetroSearch is an open source project built by @garambo
| Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4