User Tools

Site Tools


python_examples

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
python_examples [2018/01/05 16:01] g00r00python_examples [2019/03/09 21:40] (current) – [Simple File Lister] g00r00
Line 129: Line 129:
  
 <file python mcihelp.mpy> <file python mcihelp.mpy>
- 
 import mystic_bbs as bbs; import mystic_bbs as bbs;
  
Line 153: Line 152:
 bbs.writeln("|PA") bbs.writeln("|PA")
  
 +</file>
 +
 +-----
 +===== Simple File Lister =====
 +
 +<file python filelist.mpy>
 +###################################################
 +# Simple File Listing Example using Mystic Python #
 +###################################################
 +
 +# List files in the user's current file base
 +
 +from mystic_bbs import *
 +
 +# filelist flags
 +
 +file_offline = int("01")
 +file_invalid = int("02")
 +file_deleted = int("04")
 +file_failed  = int("08")
 +file_free    = int("10")
 +file_hatched = int("20")
 +
 +# Load the current user and then load their current file base
 +# but fail if they have not selected a file base
 +
 +user  = getuser(0)
 +fbase = getfbaseid(user["fbase"])
 +
 +if fbase is None:
 + writeln ("|CRYou have not selected a file base yet!|CR|CR|PA")
 + quit()
 +
 +# Open the file list then check to make sure its open before reading
 +# data from it
 +
 +flist = fl_open(fbase["filename"]);
 +
 +if flist is None:
 + writeln("Cannot open file listing. Press a key|PN")
 + quit()
 +
 +done = False
 +
 +# Seek to the first file in the list and loop while a file is found calling
 +# next after each file so the next one will be loaded.  Seek should always be
 +# called before cycling through the list
 +
 +fl_seek(flist, 0, True)
 +
 +while fl_found(flist) and not done and not shutdown():
 +
 + # Load the file information into a dictionary and then get the file
 + # description
 +
 + fileinfo = fl_getfile(flist)
 + filedesc = fl_getdesc(flist)
 +
 + # Show the file
 +
 + writeln("|CL|14File #" + str(fileinfo["number"]) + " of " + str(fileinfo["total"]))
 + writeln("")
 + writeln("|09File: |11" + fileinfo["filename"])
 + writeln("|09Date: " + datestr(dated2u(fileinfo["date"]), "NNN DD YYYY HH:II:SS"))
 + writeln("Size: " + str(fileinfo["size"]))
 + writeln("DLs : " + str(fileinfo["dls"]))
 + writeln("ULer: " + fileinfo["ulname"])
 +
 + flags = ""
 +
 + if fileinfo["flags"] & file_offline:
 + flags = flags + "OFFLINE "
 +
 + if fileinfo["flags"] & file_invalid:
 + flags = flags + "INVALID "
 +
 + if fileinfo["flags"] & file_deleted:
 + flags = flags + "DELETED "
 +
 + if fileinfo["flags"] & file_failed:
 + flags = flags + "FAILED "
 +
 + if fileinfo["flags"] & file_free:
 + flags = flags + "FREE "
 +
 + if fileinfo["flags"] & file_hatched:
 + flags = flags + "HATCHED "
 +
 + if flags == "":
 + flags = "NONE"
 +
 + writeln("Flag: |13" + flags)
 + writeln("")
 + writeln("|14Description (" + str(fileinfo["lines"]) + " lines):")
 + writeln("|03")
 +
 + # only print up to the first 10 lines so we can fit it on the screen
 +
 + for line in range(min(fileinfo["lines"], 10)):
 + writeln(filedesc[line])
 +
 + writeln("")
 + write("|16|09File List: (|11A|09)gain, (|11P|09)revious, (|11ENTER|09) Next, (|11Q|09) to Quit: |14")
 +
 + ch = onekey(chr(13) + 'APQ', True);
 +
 + if ch == 'A':
 + # do nothing here so it redisplays the same file
 + pass
 +
 + elif ch == 'P':
 + fl_prev(flist)
 +
 + elif ch == 'Q':
 + done = True
 + break
 + else:
 + fl_next(flist);
 +
 +# Close the file list and report that we're done
 +
 +fl_close(flist)
 +
 +writeln("|CR|12Program complete: Press a key|PN");
 +</file>
 +
 +===== View Dictionaries and Lists =====
 +<file python dump.mpy>
 +from mystic_bbs import *
 +
 +# Dump contents of a dictionary or list to the screen with
 +# screen pause
 +
 +def dump (obj, linecount):
 +  if linecount == 1:
 +    textcolor(7)
 +  if type(obj) == dict:
 +    for k, v in obj.items():
 +      if hasattr(v, '__iter__'):
 +        writeln(k)
 +        dump(v, linecount)
 +      else:
 +        writeln ("{} : {}".format(k,v))
 +      linecount = linecount + 1
 +      if linecount == 23:
 +        write("|PA|07")
 +  elif type(obj) == list:
 +    for v in obj:
 +      if hasattr(v, '__iter__'):
 +        dump(v, linecount)
 +      else:
 +        writeln ("{}".format(v))
 +        linecount = linecount + 1   
 +        if linecount == 23:
 +          write("|PA|07")
 +  else:
 +    writeln("{}".format(obj))
 +    linecount = linecount + 1
 +    if linecount == 23:
 +      write("|PA|07")
 +
 +# grab the current user and dump the contents of their user dictionary
 +# This function can be used to dump anything, users, bases, groups, etc
 +
 +writeln("|CL|14Dumping contents of user:|07")
 +user = getuser(0)
 +dump(user, 1)
 </file> </file>
python_examples.1515189700.txt.gz · Last modified: 2018/01/05 16:01 by g00r00

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki