···
···
64
-
func createDraftPost(commit jetstream.Commit) (DraftPost, error) {
65
-
var post appbsky.FeedPost
66
-
if err := json.Unmarshal(commit.Record, &post); err != nil {
67
-
log.Println("error parsing appbsky.FeedPost")
68
-
return DraftPost{}, err
72
-
Created: safeTimestamp(post.CreatedAt),
func trimPostsTable(ctx context.Context, queries *mostliked.Queries) {
ticker := time.NewTicker(1 * time.Minute)
···
78
+
func findDetectableText(post appbsky.FeedPost) string {
79
+
// if we have text, detect against that
80
+
// no text but we do have images, detect against first alt text
82
+
if post.Text != "" {
84
+
} else if post.Embed.EmbedImages != nil {
85
+
for _, image := range post.Embed.EmbedImages.Images {
86
+
if image.Alt != "" {
func processEvents(events <-chan []byte) {
ctx := context.Background()
···
if commit.Collection == "app.bsky.feed.post" {
141
+
var post appbsky.FeedPost
postUri := fmt.Sprintf("at://%s/%s/%s", event.Did, commit.Collection, commit.RKey)
141
-
draftPost, err := createDraftPost(commit)
143
+
if err := json.Unmarshal(commit.Record, &post); err != nil {
144
+
log.Println("error parsing appbsky.FeedPost")
145
-
language, _ := detector.DetectLanguageOf(draftPost.Text)
146
-
draftPost.Language = language
147
+
draftPost := DraftPost{
148
+
Created: safeTimestamp(post.CreatedAt),
151
+
if text := findDetectableText(post); text != "" {
152
+
language, _ := detector.DetectLanguageOf(text)
153
+
draftPost.Language = language
154
+
} else if len(post.Langs) > 0 {
155
+
iso := lingua.GetIsoCode639_1FromValue(post.Langs[0])
156
+
draftPost.Language = lingua.GetLanguageFromIsoCode639_1(iso)
drafts.Set(postUri, draftPost, 30*time.Minute)
} else if commit.Collection == "app.bsky.feed.like" {