ghost-styles
JD Cantrell 4 years ago
parent 29c1cc3cca
commit c01a944439

@ -14,6 +14,7 @@ ankh = {git = "https://github.com/jdcantrell/ankh.git",ref = "master"}
pillow = "*"
livereload = "*"
click = "*"
werkzeug = "*"
[dev-packages]
flake8 = "*"

70
Pipfile.lock generated

@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
"sha256": "364f0e68322aad8a81e6162af9c3531665f13c1ce9a702b19d4a7811b4612da9"
"sha256": "53612f283242aec9b8f1fc93fc88969f547d5c5ca9c8ddb263a4341c082a0a44"
},
"pipfile-spec": 6,
"requires": {
@ -122,47 +122,39 @@
},
"mistune": {
"hashes": [
"sha256:5c1e41f26d8d5fbbdc9ca5da0c8c7b8c0b988471fe93df3204418ab47e34d050",
"sha256:69b88119b4243f69fd8d0e6daf9cb3b15a10584d25b33dbacf4eccce3de76092"
"sha256:1ee1415cab4f8722c4d1e36c060c00b09e3e5c0abcd3bb4a4e424eb9950fa0ed",
"sha256:dffb6b7a92a341b95e5432fab8532f2731f903165c25fe2fbef8f4218374acaa"
],
"index": "pypi",
"version": "==2.0.0a1"
"version": "==2.0.0a2"
},
"pillow": {
"hashes": [
"sha256:047d9473cf68af50ac85f8ee5d5f21a60f849bc17d348da7fc85711287a75031",
"sha256:0f66dc6c8a3cc319561a633b6aa82c44107f12594643efa37210d8c924fc1c71",
"sha256:12c9169c4e8fe0a7329e8658c7e488001f6b4c8e88740e76292c2b857af2e94c",
"sha256:248cffc168896982f125f5c13e9317c059f74fffdb4152893339f3be62a01340",
"sha256:27faf0552bf8c260a5cee21a76e031acaea68babb64daf7e8f2e2540745082aa",
"sha256:285edafad9bc60d96978ed24d77cdc0b91dace88e5da8c548ba5937c425bca8b",
"sha256:384b12c9aa8ef95558abdcb50aada56d74bc7cc131dd62d28c2d0e4d3aadd573",
"sha256:38950b3a707f6cef09cd3cbb142474357ad1a985ceb44d921bdf7b4647b3e13e",
"sha256:4aad1b88933fd6dc2846552b89ad0c74ddbba2f0884e2c162aa368374bf5abab",
"sha256:4ac6148008c169603070c092e81f88738f1a0c511e07bd2bb0f9ef542d375da9",
"sha256:4deb1d2a45861ae6f0b12ea0a786a03d19d29edcc7e05775b85ec2877cb54c5e",
"sha256:59aa2c124df72cc75ed72c8d6005c442d4685691a30c55321e00ed915ad1a291",
"sha256:5a47d2123a9ec86660fe0e8d0ebf0aa6bc6a17edc63f338b73ea20ba11713f12",
"sha256:5cc901c2ab9409b4b7ac7b5bcc3e86ac14548627062463da0af3b6b7c555a871",
"sha256:6c1db03e8dff7b9f955a0fb9907eb9ca5da75b5ce056c0c93d33100a35050281",
"sha256:7ce80c0a65a6ea90ef9c1f63c8593fcd2929448613fc8da0adf3e6bfad669d08",
"sha256:809c19241c14433c5d6135e1b6c72da4e3b56d5c865ad5736ab99af8896b8f41",
"sha256:83792cb4e0b5af480588601467c0764242b9a483caea71ef12d22a0d0d6bdce2",
"sha256:846fa202bd7ee0f6215c897a1d33238ef071b50766339186687bd9b7a6d26ac5",
"sha256:9f5529fc02009f96ba95bea48870173426879dc19eec49ca8e08cd63ecd82ddb",
"sha256:a423c2ea001c6265ed28700df056f75e26215fd28c001e93ef4380b0f05f9547",
"sha256:ac4428094b42907aba5879c7c000d01c8278d451a3b7cccd2103e21f6397ea75",
"sha256:b1ae48d87f10d1384e5beecd169c77502fcc04a2c00a4c02b85f0a94b419e5f9",
"sha256:bf4e972a88f8841d8fdc6db1a75e0f8d763e66e3754b03006cbc3854d89f1cb1",
"sha256:c6414f6aad598364aaf81068cabb077894eb88fed99c6a65e6e8217bab62ae7a",
"sha256:c710fcb7ee32f67baf25aa9ffede4795fd5d93b163ce95fdc724383e38c9df96",
"sha256:c7be4b8a09852291c3c48d3c25d1b876d2494a0a674980089ac9d5e0d78bd132",
"sha256:c9e5ffb910b14f090ac9c38599063e354887a5f6d7e6d26795e916b4514f2c1a",
"sha256:e0697b826da6c2472bb6488db4c0a7fa8af0d52fa08833ceb3681358914b14e5",
"sha256:e9a3edd5f714229d41057d56ac0f39ad9bdba6767e8c888c951869f0bdd129b0"
"sha256:0a628977ac2e01ca96aaae247ec2bd38e729631ddf2221b4b715446fd45505be",
"sha256:4d9ed9a64095e031435af120d3c910148067087541131e82b3e8db302f4c8946",
"sha256:54ebae163e8412aff0b9df1e88adab65788f5f5b58e625dc5c7f51eaf14a6837",
"sha256:5bfef0b1cdde9f33881c913af14e43db69815c7e8df429ceda4c70a5e529210f",
"sha256:5f3546ceb08089cedb9e8ff7e3f6a7042bb5b37c2a95d392fb027c3e53a2da00",
"sha256:5f7ae9126d16194f114435ebb79cc536b5682002a4fa57fa7bb2cbcde65f2f4d",
"sha256:62a889aeb0a79e50ecf5af272e9e3c164148f4bd9636cc6bcfa182a52c8b0533",
"sha256:7406f5a9b2fd966e79e6abdaf700585a4522e98d6559ce37fc52e5c955fade0a",
"sha256:8453f914f4e5a3d828281a6628cf517832abfa13ff50679a4848926dac7c0358",
"sha256:87269cc6ce1e3dee11f23fa515e4249ae678dbbe2704598a51cee76c52e19cda",
"sha256:875358310ed7abd5320f21dd97351d62de4929b0426cdb1eaa904b64ac36b435",
"sha256:8ac6ce7ff3892e5deaab7abaec763538ffd011f74dc1801d93d3c5fc541feee2",
"sha256:91b710e3353aea6fc758cdb7136d9bbdcb26b53cefe43e2cba953ac3ee1d3313",
"sha256:9d2ba4ed13af381233e2d810ff3bab84ef9f18430a9b336ab69eaf3cd24299ff",
"sha256:a62ec5e13e227399be73303ff301f2865bf68657d15ea50b038d25fc41097317",
"sha256:ab76e5580b0ed647a8d8d2d2daee170e8e9f8aad225ede314f684e297e3643c2",
"sha256:bf4003aa538af3f4205c5fac56eacaa67a6dd81e454ffd9e9f055fff9f1bc614",
"sha256:bf598d2e37cf8edb1a2f26ed3fb255191f5232badea4003c16301cb94ac5bdd0",
"sha256:c18f70dc27cc5d236f10e7834236aff60aadc71346a5bc1f4f83a4b3abee6386",
"sha256:c5ed816632204a2fc9486d784d8e0d0ae754347aba99c811458d69fcdfd2a2f9",
"sha256:dc058b7833184970d1248135b8b0ab702e6daa833be14035179f2acb78ff5636",
"sha256:ff3797f2f16bf9d17d53257612da84dd0758db33935777149b3334c01ff68865"
],
"index": "pypi",
"version": "==6.2.1"
"version": "==7.0.0"
},
"pygments": {
"hashes": [
@ -222,6 +214,14 @@
"sha256:f3c5fd51747d450d4dcf6f923c81f78f811aab8205fda64b0aba34a4e48b0745"
],
"version": "==1.25.7"
},
"werkzeug": {
"hashes": [
"sha256:7280924747b5733b246fe23972186c6b348f9ae29724135a6dfc1e53cea433e7",
"sha256:e5f4a1f98b52b18a93da705a7458e55afb26f32bff83ff5d19189f92462d65c4"
],
"index": "pypi",
"version": "==0.16.0"
}
},
"develop": {

@ -8,5 +8,20 @@
"date": "2020-01-02",
"image": "2020-01-02.jpg",
"title": "Majestic Blink"
},
{
"date": "2020-01-03",
"image": "2020-01-03.jpg",
"title": "blep"
},
{
"date": "2020-01-04",
"image": "2020-01-04.jpg",
"title": "a challenge"
},
{
"date": "2020-01-05",
"image": "2020-01-05.jpg",
"title": "wake up!"
}
]
]

@ -7,6 +7,7 @@ import click
from PIL import Image
from jinja2 import Environment, FileSystemLoader
from jinja2.exceptions import TemplateNotFound, TemplateError
from werkzeug.contrib.atom import AtomFeed
def get_rows():
@ -86,6 +87,16 @@ def render_day(row, is_today=False):
print("done.")
def get_rss_html(row):
env = Environment(loader=FileSystemLoader(os.path.abspath("src/")))
tpl = env.get_template("motd/{}".format("_rss_entry.html.j2"))
try:
return tpl.render(row)
except TemplateError as err:
print("Could not parse template: %s" % err)
return None
@click.group()
def motd():
pass
@ -124,7 +135,7 @@ def add(image, day, title):
im = Image.open(image)
im.thumbnail((730, 730), Image.ANTIALIAS)
im.thumbnail((1460, 1460), Image.ANTIALIAS)
thumb_filename = "{}.jpg".format(day)
thumb_path = os.path.join("src", "images", "motd", thumb_filename)
@ -165,6 +176,30 @@ def build(all):
for row in earlier_rows[:-1]:
render_day(row)
print("Rendering atom feed:")
feed = AtomFeed(
"motd",
feed_url="https://goodrobot.net/motd/atom.xml",
url="https://goodrobot.net/motd/",
subtitle="Mango of the day",
)
for row in earlier_rows[-10:]:
row_datetime = datetime.strptime(row["date"], "%Y-%m-%d")
feed.add(
row["title"],
get_rss_html(row),
url="https://goodrobot.net/motd/{}.html".format(row["date"]),
content_type="html",
updated=row_datetime,
published=row_datetime,
author="jd",
title_type="text",
)
with open("build/motd/atom.xml", "wb") as atom_file:
atom_file.write(feed.get_response().data)
print("Done!")
if __name__ == "__main__":
motd()

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 KiB

@ -13,6 +13,7 @@
<meta property="og:url" content="/motd/{{ date }}.html">
<meta property="og:image" content="https://goodrobot.net/images/motd/{{ image }}">
<meta property="og:title" content="mango of the day - {{ title }}">
<link type="application/atom+xml" rel="alternate" href="atom.xml"/>
{% endblock %}
{% block content %}

@ -13,6 +13,7 @@
<meta property="og:url" content="/motd">
<meta property="og:image" content="https://goodrobot.net/images/motd/{{ rows[0].image }}">
<meta property="og:title" content="mango of the day - {{ rows[0].title }}">
<link type="application/atom+xml" rel="alternate" href="atom.xml"/>
{% endblock %}
{% block content %}

@ -0,0 +1,3 @@
<h1>{{ title }}</h1>
<img src="https://goodrobot.net/images/motd/{{ image }}">
Loading…
Cancel
Save