Ejemplo n.º 1
0
def generate_feed():
    print "Generate feed"
    fn = os.path.join(consts.OUTDIR, 'feed.xml')
    fp = open(fn, 'w')
    ie = entry.empty_entry()
    ie['title'] = 'Feed'
    ie['blurb'] = 'Feed for %s'%consts.TITLE
    fp.write(template.run_template_loop('feed.xml', ie, entry.get_entries(), consts.NUM_INDEX_ENTRIES))
    fp.close()
Ejemplo n.º 2
0
def generate_archive():
    print "Generate archive"
    fn = os.path.join(consts.OUTDIR, 'archive.html')
    fp = open(fn, 'w')
    ie = entry.empty_entry()
    ie['title'] = consts.ARCHIVE_TITLE
    ie['blurb'] = ''
    fp.write(template.run_template_entry('htmlHead.html', ie))
    fp.write(template.run_template_loop('archive.html', ie, entry.get_entries()))
    fp.write(template.run_template_entry('htmlFoot.html', ie))
    fp.close()
Ejemplo n.º 3
0
def pinboard(auth_token):
    """Export saved entries into Pinboard"""

    existing_links = requests.get('https://api.pinboard.in/v1/posts/all',
                                  params={
                                      'auth_token': auth_token,
                                      'format': 'json',
                                  }).json()
    existing_links = set(link['href'] for link in existing_links)

    entries = get_entries()
    unsynced_entries = [e for e in entries if urlify(e) not in existing_links]

    print(f"{len(unsynced_entries)} entries to sync...")

    def show_item(entry):
        if entry == None:
            return ""
        return (entry.title or urlify(entry))[:50]

    with click.progressbar(unsynced_entries,
                           item_show_func=show_item,
                           label='Exporting to Pinboard...') as bar:
        for entry in bar:
            url = urlify(entry)
            title = entry.title or url

            time.sleep(3)

            res = requests.get('https://api.pinboard.in/v1/posts/add',
                               params={
                                   'auth_token': auth_token,
                                   'url': url,
                                   'description': title,
                                   'extended': entry.summary,
                                   'toread': 'no' if entry.read else 'yes',
                                   'replace': 'no',
                                   'dt': entry.time_added.isoformat(),
                                   'tags':
                                   [slugify(tag) for tag in entry.tags],
                                   'format': 'json',
                               })

            result_code = res.json()['result_code']
            if result_code != 'done' and result_code != 'item already exists':
                click.echo(
                    f"Failed to add {title} with result code '{result_code}'.",
                    err=True)
Ejemplo n.º 4
0
def generate_tags():
    print "Generate tags"
    for tag,eids in gTags.iteritems():
        srcentries = entry.get_entries()
        entries = {}
        for eid in eids:
            entries[eid] = srcentries[eid]
        fn = os.path.join(consts.OUTDIR, 'tag', tag + '.html')
        fp = open(fn, 'w')
        ie = entry.empty_entry()
        ie['title'] = 'Posts tagged "%s"'%tag
        ie['blurb'] = 'Posts tagged "%s"'%tag
        fp.write(template.run_template_entry('htmlHead.html', ie))
        fp.write(template.run_template_loop('tag.html', ie, entries))
        fp.write(template.run_template_entry('htmlFoot.html', ie))
        fp.close()
Ejemplo n.º 5
0
def generate_archive_entry():
    aeid = consts.ARCHIVEID
    print "Generate archive as entry %d"%aeid
    oute = entry.empty_entry()
    oute['id'] = aeid
    oute['title'] = consts.ARCHIVE_TITLE
    oute['slug'] = 'archive'
    oute['date'] = s2d('2013-09-25 12:00:00')
    oute['blurb'] = 'A list of all %s posts.'%consts.TITLE
    oute['url'] = '' + oute['slug'] + '.html'
    oute['body'] = '<ul class="archive">\n'
    entries = entry.get_entries()
    for k in entry.sorted_entry_keys(entries):
        oute['body'] += '<li><a href="%s">%s</a></li>\n'%(entries[k]['title'])
    oute['body'] += '</ul>\n'
    entries[oute['id']] = oute
Ejemplo n.º 6
0
def clean_output():
    todel = []
    for fn in glob.glob(os.path.join(consts.OUTDIR, '*.html')):
        fslug = re.sub('\.html.*$', '', re.sub('^.*\/', '', fn))
        if fslug == 'archive' or fslug == 'index':
            continue
        hit = False
        for id,e in entry.get_entries().iteritems():
            if fslug == e['slug']:
                hit = True
                break
        if not hit:
            todel.append(fn)

    for fn in todel:
        print 'Deleting stray file %s'%fn
        os.remove(fn)
Ejemplo n.º 7
0
def generate_entries():
    out = 0
    for id,e in entry.get_entries().iteritems():
        fn = os.path.join(consts.OUTDIR, e['slug'] + '.html')
        doit=True
        if os.path.exists(fn):
            ts = os.path.getmtime(fn)
            if ts > e['editTimestamp']:
                doit=False
        if doit or consts.FORCE:
            print "Generate entry %s"%id
            fp = open(fn, 'w')
            fp.write(template.run_template_entry('htmlHead.html', e))
            s = template.run_template_entry('entry.html', e)
            fp.write(s.encode('ascii', 'xmlcharrefreplace'))
            fp.write(template.run_template_entry('htmlFoot.html', e))
            fp.close()
            out += 1
    return out
Ejemplo n.º 8
0
def generate_index():
    print "Generate index"
    entries = entry.get_entries()
    fn = os.path.join(consts.OUTDIR, 'index.html')
    fp = open(fn, 'w')
    ie = entry.empty_entry()
    ie['title'] = consts.INDEX_TITLE
    ie['blurb'] = consts.BLURB
    fp.write(template.run_template_entry('htmlHead.html', ie))
    fp.write(template.run_template_loop('index.html', ie, entries, consts.NUM_INDEX_ENTRIES))
    fp.write(template.run_template_entry('htmlFoot.html', ie))
    fp.close()

    # write a faked entry back to the input dir(!)
    fn = os.path.join(consts.INDIR, '%d.md'%consts.ARCHIVEID)
    fp = open(fn, 'w')
    fp.write(entry.ENTRY_HEADER%(ie['title'], 'index', d2s_dt(consts.NOW), ie['blurb'], ie['tags']))
    ekeys = entry.sorted_entry_keys(entries)
    for k in ekeys[:consts.NUM_INDEX_ENTRIES]:
        e = entries[k]
        url = '%s/%s.html'%(consts.BASEURL, e['slug'])
        fp.write('<a href="%s">%s</a>\n\n'%(url, e['title']))
    fp.close()