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
Last revisionBoth sides next revision
python_examples [2018/01/05 16:01] g00r00python_examples [2019/03/09 21:39] 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>
 +
 +<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.txt · Last modified: 2019/03/09 21:40 by g00r00

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki