From d21158eb91ebf8c77082c2547a3d0b5262f474b8 Mon Sep 17 00:00:00 2001 From: rra Date: Fri, 9 Sep 2022 13:22:32 +0200 Subject: [PATCH] add support for videos in posts --- konfluks/hashtag.py | 44 +++++++++++++++++++++++------------ konfluks/templates/hashtag.md | 14 ++++++++++- 2 files changed, 42 insertions(+), 16 deletions(-) diff --git a/konfluks/hashtag.py b/konfluks/hashtag.py index ff29707..39c2a00 100644 --- a/konfluks/hashtag.py +++ b/konfluks/hashtag.py @@ -11,19 +11,19 @@ instance = "https://social.lumbung.space" email = "" password = "" hashtags = [ - "documentafifteen", - "harvestedbyputra", - "jalansesama", - "lumbungdotspace", - "majelisakakbar", - "majelisakbar", - "warungkopi", - "lumbungkios", - "kassel_ecosystem", - "ruruhaus", - "offbeatentrack_kassel", - "lumbungofpublishers", - "lumbungkiosproducts", + "documentafifteen"#, + # "harvestedbyputra", + # "jalansesama", + # "lumbungdotspace", + # "majelisakakbar", + # "majelisakbar", + # "warungkopi", + # "lumbungkios", + # "kassel_ecosystem", + # "ruruhaus", + # "offbeatentrack_kassel", + # "lumbungofpublishers", + # "lumbungkiosproducts", ] @@ -60,6 +60,21 @@ def download_media(post_directory, media_attachments): with open(os.path.join(post_directory, image), "wb") as img_file: shutil.copyfileobj(response.raw, img_file) print("Downloaded cover image", image) + elif item["type"] == "video": + video = localize_media_url(item["url"]) + if not os.path.exists(os.path.join(post_directory, video)): + # download video file + response = requests.get(item["url"], stream=True) + with open(os.path.join(post_directory, video), "wb") as video_file: + shutil.copyfileobj(response.raw, video_file) + print("Downloaded video in post", video) + if not os.path.exists(os.path.join(post_directory, "thumbnail.png")): + #download video preview + response = requests.get(item["preview_url"], stream=True) + with open(os.path.join(post_directory, "thumbnail.png"), "wb") as thumbnail: + shutil.copyfileobj(response.raw, thumbnail) + print("Downloaded thumbnail for", video) + def create_post(post_directory, post_metadata): @@ -78,7 +93,6 @@ def create_post(post_directory, post_metadata): post_metadata["account"]["display_name"] = name env.filters["localize_media_url"] = localize_media_url env.filters["filter_mastodon_urls"] = filter_mastodon_urls - template = env.get_template("hashtag.md") with open(os.path.join(post_directory, "index.html"), "w") as f: @@ -130,7 +144,7 @@ def main(): timeline ) # returns all the rest n.b. can take a while because of rate limit - for post_metadata in timeline: + for post_metadata in timeline[:6]: post_dir = os.path.join(hashtag_dir, str(post_metadata["id"])) # if there is a post in the feed we dont already have locally, make it if str(post_metadata["id"]) not in all_existing_posts: diff --git a/konfluks/templates/hashtag.md b/konfluks/templates/hashtag.md index 4a61a7a..1148b79 100644 --- a/konfluks/templates/hashtag.md +++ b/konfluks/templates/hashtag.md @@ -5,13 +5,25 @@ authors: ["{{ post_metadata.account.display_name }}"] contributors: ["{{ post_metadata.account.acct}}"] avatar: {{ post_metadata.account.avatar }} categories: ["shouts"] -images: [{% for i in post_metadata.media_attachments %} {{ i.url }}, {% endfor %}] title: {{ post_metadata.account.display_name }} tags: [{% for i in post_metadata.tags %} "{{ i.name }}", {% endfor %}] +images: [{% for i in post_metadata.media_attachments %}{% if i.type == "image" %}"{{ i.url | localize_media_url }}", {%endif%}{% endfor %}] +videos: [{% for i in post_metadata.media_attachments %}{% if i.type == "video" %}"{{ i.url | localize_media_url }}", {%endif%}{% endfor %}] --- {% for item in post_metadata.media_attachments %} +{% if item.type == "image" %} {{item.description}} +{% endif %} +{% endfor %} + +{% for item in post_metadata.media_attachments %} +{% if item.type == "video" %} + +{% endif %} {% endfor %} {{ post_metadata.content | filter_mastodon_urls }}