forked from solderpunk/gemfeed
Break into functions.
This commit is contained in:
parent
fac6f4ad73
commit
7798412d74
57
gemfeed.py
57
gemfeed.py
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue