Break into functions.

This commit is contained in:
Solderpunk 2020-03-16 18:54:49 +01:00
parent fac6f4ad73
commit 7798412d74
1 changed files with 34 additions and 23 deletions

View File

@ -4,33 +4,22 @@ import os.path
from feedgen.feed import FeedGenerator
base_url = "gemini://gemini.circumlunar.space/"
def find_files():
files = []
for extension in ("gmi", "gem", "gemini"):
files.extend(glob.glob("*.{}".format(extension)))
index = "index.{}".format(extension)
if index in files:
files.remove(index)
return files
feed = FeedGenerator()
feed.id(base_url)
feed.title('A Gemini feed.')
feed.link( href=base_url, rel='alternate' )
feed.link( href=base_url + "atom.xml", rel='self' )
files = []
for extension in ("gmi", "gem", "gemini"):
files.extend(glob.glob("*.{}".format(extension)))
index = "index.{}".format(extension)
if index in files:
files.remove(index)
latest_update = datetime.datetime.fromtimestamp(0, tz=datetime.timezone.utc)
for filename in files:
entry = feed.add_entry()
def populate_entry_from_file(filename, base_url, entry):
url = base_url + filename
entry.guid(url)
entry.link(href=url)
updated = os.path.getctime(filename)
updated = datetime.datetime.fromtimestamp(updated, tz=datetime.timezone.utc)
entry.updated(updated)
if updated > latest_update:
latest_update = updated
with open(filename) as fp:
for line in fp:
if line.startswith("#"):
@ -40,8 +29,30 @@ for filename in files:
break
else:
title = filename
print("Adding {} with title '{}'...".format(filename, title))
entry.title(title)
feed.updated(latest_update)
feed.atom_file('atom.xml', pretty=True)
def main(base_url="gemini://gemini.circumlunar.space/"):
# Setup feed
feed = FeedGenerator()
feed.id(base_url)
feed.title('A Gemini feed.')
feed.link(href=base_url, rel='alternate')
feed.link(href=base_url + "atom.xml", rel='self')
# Add one entry per .gmi file
files = find_files()
latest_update = datetime.datetime.fromtimestamp(0, tz=datetime.timezone.utc)
for filename in files:
entry = feed.add_entry()
populate_entry_from_file(filename, base_url, entry)
print("Adding {} with title '{}'...".format(filename, entry.title()))
if entry.updated() > latest_update:
latest_update = entry.updated()
feed.updated(latest_update)
# Write file
feed.atom_file('atom.xml', pretty=True)
if __name__ == "__main__":
main()