Exemplo n.º 1
0
def publish_gopher(gopher_path, entry_filenames):
    """This function (re)generates a user's list of feels posts in their gopher
    directory and their gophermap."""
    entry_filenames = entry_filenames[:]  # force a copy since this might be shared state in core.py
    ttbp_gopher = os.path.join(os.path.expanduser('~/public_gopher'),
                               gopher_path)

    if not os.path.isdir(ttbp_gopher):
        print(
            '\n\tERROR: something is wrong. your gopher directory is missing. re-enable gopher publishing from the settings menu to fix this up!'
        )
        return

    with open(os.path.join(ttbp_gopher, 'gophermap'), 'w') as gophermap:
        gophermap.write(GOPHERMAP_HEADER.format(user=getpass.getuser()))
        for entry_filename in entry_filenames:
            filename = os.path.basename(entry_filename)

            gopher_entry_symlink = os.path.join(
                ttbp_gopher, os.path.basename(entry_filename))
            if not os.path.exists(gopher_entry_symlink):
                subprocess.call(
                    ["ln", "-s", entry_filename, gopher_entry_symlink])

            label = "-".join(util.parse_date(entry_filename))
            gophermap.write('0{file_label}\t{filename}\n'.format(
                file_label=label, filename=filename))
Exemplo n.º 2
0
def write_page(filename):
    '''
    permalink generator

    * makes a page out of a single entry for permalinking, using filename/date as
    url
    '''

    outurl = os.path.join(config.WWW,
                          "".join(util.parse_date(filename)) + ".html")
    outfile = open(outurl, "w")

    outfile.write("<!--generated by the envs.net blogging platform on " +
                  time.strftime("%d %B %y") +
                  "\nhttps://envs.net/ttbp/-->\n\n")

    for line in HEADER:
        outfile.write(line)

    outfile.write("\n")

    for line in write_entry(filename):
        outfile.write(line)

    outfile.write("\n")

    for line in FOOTER:
        outfile.write(line)

    outfile.close()

    return outurl
Exemplo n.º 3
0
def write_entry(filename):
    '''
    entry text generator

    * dump given file into entry format by parsing file as markdown
    * return as list of strings
    '''

    date = util.parse_date(filename)

    entry = [
        "\t\t<p><a name=\"" + date[0] + date[1] + date[2] +
        "\"></a><br /><br /></p>\n", "\t\t<div class=\"entry\">\n",
        "\t\t\t<h5><a href=\"#" + date[0] + date[1] + date[2] + "\">" +
        date[2] + "</a> " + chatter.month(date[1]) + " " + date[0] + "</h5>\n"
        #"\t\t\t<P>"
    ]

    raw = []
    rawfile = open(os.path.join(config.MAIN_FEELS, filename), "r")

    for line in rawfile:
        raw.append(line)
    rawfile.close()

    entry.append("\t\t\t" +
                 mistune.markdown("".join(raw), escape=False, hard_wrap=False))

    #for line in raw:
    #entry.append(line+"\t\t\t")
    #if line == "\n":
    #    entry.append("</p>\n\t\t\t<p>")

    #entry.append("</p>\n")
    entry.append("\t\t\t<p class=\"permalink\"><a href=\"" + "".join(date) +
                 ".html\">permalink</a></p>\n")
    entry.append("\n\t\t</div>\n")

    return entry
Exemplo n.º 4
0
def meta(entries=FILES):
    '''
    metadata generator

    * takes a list of filenames and returns a 2d list:
      [0] absolute path
      [1] mtime
      [2] wc -w
      [3] timestamp "DD month YYYY at HH:MM"
      [4] entry date YYYY-MM-DD
      [5] author

    * sorted in reverse date order by [4]
    '''

    meta = []

    for filename in entries:
        mtime = os.path.getmtime(filename)
        try:
            wc = int(
                subprocess.check_output(["wc", "-w", filename],
                                        stderr=subprocess.STDOUT).split()[0])
        except subprocess.CalledProcessError:
            wc = "???"
        timestamp = time.strftime("%Y-%m-%d at %H:%M", time.localtime(mtime))
        date = "-".join(util.parse_date(filename))
        author = os.path.split(
            os.path.split(os.path.split(os.path.split(filename)[0])[0])[0])[1]

        meta.append([filename, mtime, wc, timestamp, date, author])

    #meta.sort(key = lambda filename:filename[4])
    #meta.reverse()

    return meta