python_examples
This is an old revision of the document!
Table of Contents
Mystic Python Examples
This page contains examples of code using Mystic Python. Use the table of contents to jump to the various examples below.
Simple Message Reader
- msgread.mpy
##################################################### # Simple Message Reader Example using Mystic Python # ##################################################### # Reads messages in the user's current message base # With a pause prompt and basic navigation from mystic_bbs import * # Load the current user and then load their current message base # but fail if they have not selected a message base user = getuser(0) mbase = getmbaseid(user["mbase"]) if mbase is None: writeln ("|CRYou have not selected a message base yet!|CR|CR|PA") quit() # Open the message base then check to make sure its open before reading # data from it msg = msg_open(mbase["path"] + mbase["filename"]); if msg is None: quit() done = False # Seek to the first message in the base and loop while a message # is found, calling msg_next after each message so the next one # will be loaded. Seek must be called first even if reading # from the first message. msg_seek(msg, 0) while msg_found(msg) and not done and not shutdown(): # Load the message header information into a dictionary # and the message text into a list msghdr = msg_gethdr(msg) msgtext = msg_gettxt(msg) # Show the message header, setting a line counter that can # be used to pause the screen writeln("|16|CL|15Msg#: " + str(msghdr["number"]) + " of " + str(msghdr["highmsg"])) writeln("|14From: " + msghdr["from"]); writeln("|13 To: " + msghdr["to"]); writeln("|11Subj: " + msghdr["subj"]); writeln("|09-------------------------------------------------------------------------------|07"); pausecount = 4 # loop through each line in the message (list) and pause when # we get more than 23 lines for line in msgtext: # before printing a line check if we need to pause if pausecount >= 23: pausecount = 1 write("|14*PAUSE* Continue? (|15Y|14)es, (|15N|14)o, (|15Q|14)uit: |07") ch = onekey(chr(13) + 'YNQ', False) # after getting input, erase the pause prompt then process the input backspace(wherex(), True) if ch == 'Q': done = True break elif ch == 'N': break # increase pause counter and send a line of message text # unless it is a kludge line: if (line == "") or (line != "" and line[0] != chr(1)): pausecount += 1 writeln(line) # At end of message, so lets give a prompt if we didn't get a quit # from the pause prompt: if not done: write("|CR|09MSG READER: (|11A|09)gain, (|11P|09)revious, (|11ENTER|09) Next, (|11Q|09) to Quit: ") ch = onekey(chr(13) + 'APQ', True); if ch == 'A': # do nothing here so it redisplays the same msg pass elif ch == 'P': if msghdr["number"] != 1: msg_prev(msg) elif ch == 'Q': done = True break else: msg_next(msg); # Close the message base and report that we're done msg_close(msg) writeln("|CR|12Program complete: Press a key|PN");
MCI Helper Functions
- mcihelp.mpy
import mystic_bbs as bbs; def stripmci (str): pos = str.find("|") while pos != -1: str = str[:pos] + str[pos+3:] pos = str.find("|") return str def mcilen (str): return len(stripmci(str)) text = "|12This is a |14test"; bbs.rwriteln(stripmci(text)); bbs.rwriteln(str(mcilen(text))) bbs.writeln("|PA")
python_examples.1515189700.txt.gz · Last modified: 2018/01/05 16:01 by g00r00