import os def rewrite_file(filepath): with open(filepath, 'r') as f: base = filepath[:-4] base = base.replace("_", " ").strip() newfilepath = base + ".md" with open(newfilepath, 'w') as w: in_block = False for i, line in enumerate(f): if ( (i == 0 and line == "Content-Type: text/x-zim-wiki\n") or (i == 1 and line == "Wiki-Format: zim 0.26\n") or (i == 2 and line == "Creation-Date: Not found\n") or (i == 3 and line == "Modification-Date: Not found\n") or (i == 4 and line == "\n") ): continue if (i == 5): title_pieces = line.split("======") if len(title_pieces) == 3: title = title_pieces[1].strip() # If the filename is the same as the title, do not add # the custom property. (If either this custom property # or the 'actual' title is touched after import, Logseq # will change the filename to that and the custom title # becomes an out-of-date inactive property.) We set it # if different because the initial import does use it! if (title == base): continue w.write("title:: " + title + "\n") w.write("\n") continue if (i == 6): # Types of postable-posted, email-draft, email-sent set when running this for each subdirectory w.write("type:: postable-draft\n") if (i > 5 and line == "\"\"\"\n"): if (in_block == False): # Start our self-styled quotation block with a bullet. line = "- " + line in_block = True else: in_block = False # Close our self-styled quotation block without a bullet. elif (i > 5 and in_block == False): test = line.strip() if (test == ""): continue prefix = "" temp = line.lstrip() if (temp[0:2] == "* " or temp[0:2] == "- "): temp = temp[2:] prefix = prefix + "\t" elif (line[0:1] == "\t" or line[0:2] == " "): # If the source file has two indents without first # having a single indent, Logseq does not blink, so we # do two indents if we think it *might* be warranted # without fear. prefix = prefix + "\t" if (line[0:2] == "\t\t" or line[0:4] == " "): prefix = prefix + "\t" line = prefix + "- " + temp w.write(line) for filepath in os.listdir(): if filepath.endswith(".txt"): rewrite_file(filepath)