forked from
jollywhoppers.com/witchsky.app
Bluesky app fork with some witchin' additions 馃挮
1{% extends "base.html" %}
2
3{% block head_title %}
4{%- if postView -%}
5 @{{ postView.Author.Handle }} on Bluesky
6{%- elif requiresAuth and profileHandle -%}
7 @{{ profileHandle }} on Bluesky
8{%- else -%}
9 Bluesky
10{%- endif -%}
11{% endblock %}
12
13{% block html_head_extra -%}
14{%- if postView -%}
15 <meta property="og:type" content="article">
16 <meta property="profile:username" content="{{ postView.Author.Handle }}">
17 {%- if requestURI %}
18 <meta property="og:url" content="{{ requestURI }}">
19 <link rel="canonical" href="{{ requestURI|canonicalize_url }}" />
20 {% endif -%}
21 {%- if postView.Author.DisplayName %}
22 <meta property="og:title" content="{{ postView.Author.DisplayName }} (@{{ postView.Author.Handle }})">
23 {% else %}
24 <meta property="og:title" content="@{{ postView.Author.Handle }}">
25 {% endif -%}
26 {%- if postText %}
27 <meta name="description" content="{{ postText }}">
28 <meta property="og:description" content="{{ postText }}">
29 <meta property="twitter:description" content="{{ postText }}">
30 {% endif -%}
31 {%- if imgThumbUrls %}
32 {% for imgThumbUrl in imgThumbUrls %}
33 <meta property="og:image" content="{{ imgThumbUrl }}">
34 <meta property="twitter:image" content="{{ imgThumbUrl }}">
35 {% endfor %}
36 <meta name="twitter:card" content="summary_large_image">
37 {%- if videoUrl %}
38 <meta property="og:video" content="{{ videoUrl }}">
39 <meta property="og:video:type" content="{{ videoType }}">
40 {%- if videoWidth %}
41 <meta property="og:video:width" content="{{ videoWidth }}">
42 <meta property="og:video:height" content="{{ videoHeight }}">
43 {% endif -%}
44 {% endif -%}
45 {% else %}
46 <meta property="og:image" content="{{ postView.Author.Avatar|avatar_thumbnail }}">
47 <meta property="twitter:image" content="{{ postView.Author.Avatar|avatar_thumbnail }}">
48 <meta name="twitter:card" content="summary">
49 {% endif %}
50 <meta name="twitter:label1" content="Posted At">
51 <meta name="twitter:value1" content="{{ postView.IndexedAt }}">
52 {%- if postView.LikeCount %}
53 <meta name="twitter:label2" content="Likes">
54 <meta name="twitter:value2" content="{{ postView.LikeCount }}">
55 {% endif -%}
56 {%- if postView.ReplyCount %}
57 <meta name="twitter:label3" content="Replies">
58 <meta name="twitter:value3" content="{{ postView.ReplyCount }}">
59 {% endif -%}
60 {%- if postView.RepostCount %}
61 <meta name="twitter:label4" content="Reposts">
62 <meta name="twitter:value4" content="{{ postView.RepostCount }}">
63 {% endif -%}
64 <meta property="article:published_time" content="{{ postView.IndexedAt }}">
65 <link rel="alternate" type="application/json+oembed" href="https://embed.bsky.app/oembed?format=json&url={{ postView.Uri | urlencode }}" />
66 <link rel="alternate" href="{{ postView.Uri }}" />
67 <script type="application/ld+json">
68 {
69 "@context": "https://schema.org",
70 "@type": "DiscussionForumPosting",
71 "author": {
72 "@type": "Person",
73 {%- if postView.Author.DisplayName %}
74 "name": "{{ postView.Author.DisplayName }}",
75 "alternateName": "@{{ postView.Author.Handle }}",
76 {% else %}
77 "name": "@{{ postView.Author.Handle }}",
78 {% endif -%}
79 "url": "https://bsky.app/profile/{{ postView.Author.Handle }}"
80 },
81 {%- if postText %}
82 "text": "{{ postText }}",
83 {% endif %}
84 {%- if imageThumbUrls %}
85 "image": "{{ imageThumbUrls[0] }}",
86 {% endif %}
87 "datePublished": "{{ postView.IndexedAt }}",
88 "interactionStatistic": [
89 {
90 "@type": "InteractionCounter",
91 "interactionType": "https://schema.org/LikeAction",
92 "userInteractionCount": {{ postView.LikeCount }}
93 },
94 {
95 "@type": "InteractionCounter",
96 "interactionType": "https://schema.org/CommentAction",
97 "userInteractionCount": {{ postView.ReplyCount }}
98 },
99 {
100 "@type": "InteractionCounter",
101 "interactionType": "https://schema.org/ShareAction",
102 "userInteractionCount": {{ postView.RepostCount + postView.QuoteCount }}
103 }
104 ]
105 }
106 </script>
107{%- elif requiresAuth and profileHandle -%}
108 <meta property="og:type" content="article">
109 <meta property="profile:username" content="{{ profileHandle }}">
110 {%- if requestURI %}
111 <meta property="og:url" content="{{ requestURI }}">
112 <link rel="canonical" href="{{ requestURI|canonicalize_url }}" />
113 {% endif -%}
114 {%- if profileDisplayName %}
115 <meta property="og:title" content="{{ profileDisplayName }} (@{{ profileHandle }})">
116 {% else %}
117 <meta property="og:title" content="@{{ profileHandle }}">
118 {% endif -%}
119 <meta name="description" content="This author has chosen to make their posts visible only to people who are signed in.">
120 <meta property="og:description" content="This author has chosen to make their posts visible only to people who are signed in.">
121 <meta property="twitter:description" content="This author has chosen to make their posts visible only to people who are signed in.">
122 <meta name="twitter:card" content="summary">
123{% endif -%}
124{%- endblock %}
125
126{% block noscript_extra -%}
127{%- if postView -%}
128<div id="bsky_post_summary">
129 <h3>Post</h3>
130 <p id="bsky_display_name">{{ postView.Author.DisplayName }}</p>
131 <p id="bsky_handle">{{ postView.Author.Handle }}</p>
132 <p id="bsky_did">{{ postView.Author.Did }}</p>
133 <p id="bsky_post_text">{{ postText }}</p>
134 <p id="bsky_post_indexedat">{{ postView.IndexedAt }}</p>
135</div>
136{%- elif requiresAuth and profileHandle -%}
137<div id="bsky_post_summary">
138 <h3>Post</h3>
139 <p id="bsky_handle">{{ profileHandle }}</p>
140 <p id="bsky_post_text">This author has chosen to make their posts visible only to people who are signed in.</p>
141</div>
142{% endif -%}
143{%- endblock %}