the home site for me: also iteration 3 or 4 of my site
1{% set profile_part = post | split(pat="profile/") | last %} {% set parts = 2profile_part | split(pat="/") %} {% set handle = parts[0] %} {% set post_id = 3parts[2] %} {% set api_url = 4"https://public.api.bsky.app/xrpc/app.bsky.feed.getPostThread?uri=at://" ~ 5handle ~ "/app.bsky.feed.post/" ~ post_id %} {% set response = 6load_data(url=api_url, format="json") %} {% if response.thread and 7response.thread.post %} {% set post_data = response.thread.post %} {% set author 8= post_data.author.displayName %} {% set handle = post_data.author.handle %} {% 9set content = post_data.record.text %} {% set has_embed = post_data.embed is 10defined and post_data.embed %} 11<blockquote> 12 {{ content }} {% if has_embed %} {% if post_data.embed["$type"] == 13 "app.bsky.embed.video#view" %} 14 <video controls poster="{{ post_data.embed.thumbnail }}"> 15 <source 16 src="{{ post_data.embed.playlist }}" 17 type="application/x-mpegURL" 18 /> 19 </video> 20 {% elif post_data.embed["$type"] == "app.bsky.embed.images#view" %} {% if 21 post_data.embed.images | length > 3 %} 22 <div class="image-gallery gallery-grid"> 23 {% for image in post_data.embed.images %} 24 <img src="{{ image.fullsize }}" alt="{{ image.alt }}" loading="lazy" /> 25 {% endfor %} 26 </div> 27 {% elif post_data.embed.images | length == 2 %} 28 <div class="image-gallery side-by-side"> 29 {% for image in post_data.embed.images %} 30 <img src="{{ image.fullsize }}" alt="{{ image.alt }}" loading="lazy" /> 31 {% endfor %} 32 </div> 33 {% else %} 34 <div class="image-gallery"> 35 {% for image in post_data.embed.images %} 36 <img src="{{ image.fullsize }}" alt="{{ image.alt }}" loading="lazy" /> 37 {% endfor %} 38 </div> 39 {% endif %} {% endif %} {% endif %} 40</blockquote> 41<p> 42 <cite> 43 <a href="{{ post }}" target="_blank" rel="noopener" 44 ><img 45 src="{{ post_data.author.avatar }}" 46 alt="{{ author }}'s avatar" 47 class="avatar" 48 />@{{ handle }}</a 49 ></cite 50 > 51</p> 52{% else %} 53<blockquote> 54 <div class="bsky-post"> 55 <div class="bsky-post-content">"Failed to render Bluesky post"</div> 56 <div class="bsky-post-footer"> 57 <cite 58 ><img 59 src="/img/bluesky-logo.png" 60 alt="Bluesky logo" 61 class="avatar" 62 /> 63 <a href="{{ post }}" target="_blank" rel="noopener" 64 >View on Bluesky</a 65 ></cite 66 > 67 </div> 68 </div> 69</blockquote> 70{% endif %}