tangled
alpha
login
or
join now
t1c.dev
/
BlueSkyLabeler
0
fork
atom
For those who call Bluesky "BlueSky"
0
fork
atom
overview
issues
pulls
pipelines
use atcute for jetstream
Kainoa Kanter
6 months ago
5a43f12b
24330523
+59
-25
3 changed files
expand all
collapse all
unified
split
bun.lock
index.ts
package.json
+11
-1
bun.lock
···
4
"": {
5
"name": "bluesky",
6
"dependencies": {
0
0
0
7
"@skyware/bot": "^0.4.0",
8
-
"@skyware/jetstream": "^0.2.5",
9
"@skyware/labeler": "^0.2.0",
10
},
11
"devDependencies": {
···
32
"@atcute/client": ["@atcute/client@4.0.3", "", { "dependencies": { "@atcute/identity": "^1.0.2", "@atcute/lexicons": "^1.0.3" } }, "sha512-RIOZWFVLca/HiPAAUDqQPOdOreCxTbL5cb+WUf5yqQOKIu5yEAP3eksinmlLmgIrlr5qVOE7brazUUzaskFCfw=="],
33
34
"@atcute/identity": ["@atcute/identity@1.1.0", "", { "dependencies": { "@atcute/lexicons": "^1.1.1", "@badrap/valita": "^0.4.5" } }, "sha512-6vRvRqJatDB+JUQsb+UswYmtBGQnSZcqC3a2y6H5DB/v5KcIh+6nFFtc17G0+3W9rxdk7k9M4KkgkdKf/YDNoQ=="],
0
0
35
36
"@atcute/lexicons": ["@atcute/lexicons@1.1.1", "", { "dependencies": { "esm-env": "^1.2.2" } }, "sha512-k6qy5p3j9fJJ6ekaMPfEfp3ni4TW/XNuH9ZmsuwC0fi0tOjp+Fa8ZQakHwnqOzFt/cVBfGcmYE/lKNAbeTjgUg=="],
37
···
78
"@libsql/linux-x64-musl": ["@libsql/linux-x64-musl@0.4.7", "", { "os": "linux", "cpu": "x64" }, "sha512-nI6tpS1t6WzGAt1Kx1n1HsvtBbZ+jHn0m7ogNNT6pQHZQj7AFFTIMeDQw/i/Nt5H38np1GVRNsFe99eSIMs9XA=="],
79
80
"@libsql/win32-x64-msvc": ["@libsql/win32-x64-msvc@0.4.7", "", { "os": "win32", "cpu": "x64" }, "sha512-7pJzOWzPm6oJUxml+PCDRzYQ4A1hTMHAciTAHfFK4fkbDZX33nWPVG7Y3vqdKtslcwAzwmrNDc6sXy2nwWnbiw=="],
0
0
0
0
81
82
"@neon-rs/load": ["@neon-rs/load@0.0.4", "", {}, "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw=="],
83
···
246
"tiny-emitter": ["tiny-emitter@2.1.0", "", {}, "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="],
247
248
"toad-cache": ["toad-cache@3.7.0", "", {}, "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw=="],
0
0
249
250
"typescript": ["typescript@5.9.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A=="],
251
···
4
"": {
5
"name": "bluesky",
6
"dependencies": {
7
+
"@atcute/bluesky": "^3.2.2",
8
+
"@atcute/jetstream": "^1.1.0",
9
+
"@atcute/lexicons": "^1.1.1",
10
"@skyware/bot": "^0.4.0",
0
11
"@skyware/labeler": "^0.2.0",
12
},
13
"devDependencies": {
···
34
"@atcute/client": ["@atcute/client@4.0.3", "", { "dependencies": { "@atcute/identity": "^1.0.2", "@atcute/lexicons": "^1.0.3" } }, "sha512-RIOZWFVLca/HiPAAUDqQPOdOreCxTbL5cb+WUf5yqQOKIu5yEAP3eksinmlLmgIrlr5qVOE7brazUUzaskFCfw=="],
35
36
"@atcute/identity": ["@atcute/identity@1.1.0", "", { "dependencies": { "@atcute/lexicons": "^1.1.1", "@badrap/valita": "^0.4.5" } }, "sha512-6vRvRqJatDB+JUQsb+UswYmtBGQnSZcqC3a2y6H5DB/v5KcIh+6nFFtc17G0+3W9rxdk7k9M4KkgkdKf/YDNoQ=="],
37
+
38
+
"@atcute/jetstream": ["@atcute/jetstream@1.1.0", "", { "dependencies": { "@atcute/lexicons": "^1.1.1", "@badrap/valita": "^0.4.6", "@mary-ext/event-iterator": "^1.0.0", "@mary-ext/simple-event-emitter": "^1.0.0", "partysocket": "^1.1.5", "type-fest": "^4.41.0", "yocto-queue": "^1.2.1" } }, "sha512-XrSeEHLt2FnVNm3KBDQYY7+rWM0IQKBjLQUjdoCj4mnkMCdm3/dC09qs5ubQQGrHieUWeKHHEko/D6EB891hPg=="],
39
40
"@atcute/lexicons": ["@atcute/lexicons@1.1.1", "", { "dependencies": { "esm-env": "^1.2.2" } }, "sha512-k6qy5p3j9fJJ6ekaMPfEfp3ni4TW/XNuH9ZmsuwC0fi0tOjp+Fa8ZQakHwnqOzFt/cVBfGcmYE/lKNAbeTjgUg=="],
41
···
82
"@libsql/linux-x64-musl": ["@libsql/linux-x64-musl@0.4.7", "", { "os": "linux", "cpu": "x64" }, "sha512-nI6tpS1t6WzGAt1Kx1n1HsvtBbZ+jHn0m7ogNNT6pQHZQj7AFFTIMeDQw/i/Nt5H38np1GVRNsFe99eSIMs9XA=="],
83
84
"@libsql/win32-x64-msvc": ["@libsql/win32-x64-msvc@0.4.7", "", { "os": "win32", "cpu": "x64" }, "sha512-7pJzOWzPm6oJUxml+PCDRzYQ4A1hTMHAciTAHfFK4fkbDZX33nWPVG7Y3vqdKtslcwAzwmrNDc6sXy2nwWnbiw=="],
85
+
86
+
"@mary-ext/event-iterator": ["@mary-ext/event-iterator@1.0.0", "", { "dependencies": { "yocto-queue": "^1.2.1" } }, "sha512-l6gCPsWJ8aRCe/s7/oCmero70kDHgIK5m4uJvYgwEYTqVxoBOIXbKr5tnkLqUHEg6mNduB4IWvms3h70Hp9ADQ=="],
87
+
88
+
"@mary-ext/simple-event-emitter": ["@mary-ext/simple-event-emitter@1.0.0", "", {}, "sha512-meA/zJZKIN1RVBNEYIbjufkUrW7/tRjHH60FjolpG1ixJKo76TB208qefQLNdOVDA7uIG0CGEDuhmMirtHKLAg=="],
89
90
"@neon-rs/load": ["@neon-rs/load@0.0.4", "", {}, "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw=="],
91
···
254
"tiny-emitter": ["tiny-emitter@2.1.0", "", {}, "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="],
255
256
"toad-cache": ["toad-cache@3.7.0", "", {}, "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw=="],
257
+
258
+
"type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="],
259
260
"typescript": ["typescript@5.9.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A=="],
261
+45
-23
index.ts
···
0
0
0
1
import { LabelerServer } from "@skyware/labeler";
2
-
import { Jetstream } from "@skyware/jetstream";
3
4
const server = new LabelerServer({
5
-
did: process.env.LABELER_DID,
6
-
signingKey: process.env.SIGNING_KEY
7
});
8
9
server.start(14831, (error) => {
10
-
if (error) {
11
-
console.error("Failed to start server:", error);
12
-
} else {
13
-
console.log("Labeler server running on port 14831");
14
-
}
15
});
16
17
-
const jetstream = new Jetstream();
18
-
jetstream.start();
19
-
20
-
jetstream.onCreate("app.bsky.feed.post", async (event) => {
21
-
try {
22
-
if (event.commit.record.text.includes("BlueSky")) {
23
-
console.log("Labeling: ", JSON.stringify(event.commit))
24
-
await server.createLabel({
25
-
uri: event.did,
26
-
val: "blue-sky",
27
-
});
28
-
}
29
-
} catch (e) {
30
-
console.error(`Error occured on record ${event.commit.cid}: `, (e as Error).toString())
31
-
}
32
});
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
···
1
+
import { AppBskyFeedPost } from "@atcute/bluesky";
2
+
import { JetstreamSubscription } from "@atcute/jetstream";
3
+
import { is } from "@atcute/lexicons";
4
import { LabelerServer } from "@skyware/labeler";
0
5
6
const server = new LabelerServer({
7
+
did: process.env.LABELER_DID,
8
+
signingKey: process.env.SIGNING_KEY,
9
});
10
11
server.start(14831, (error) => {
12
+
if (error) {
13
+
console.error("Failed to start server:", error);
14
+
} else {
15
+
console.log("Labeler server running on port 14831");
16
+
}
17
});
18
19
+
const subscription = new JetstreamSubscription({
20
+
url: "wss://jetstream2.us-east.bsky.network",
21
+
wantedCollections: ["app.bsky.feed.post"],
0
0
0
0
0
0
0
0
0
0
0
0
22
});
23
+
24
+
for await (const event of subscription) {
25
+
if (event.kind === "commit") {
26
+
const commit = event.commit;
27
+
28
+
if (commit.collection !== "app.bsky.feed.post") {
29
+
continue;
30
+
}
31
+
32
+
if (commit.operation === "create") {
33
+
const record = commit.record;
34
+
if (!is(AppBskyFeedPost.mainSchema, record)) {
35
+
continue;
36
+
}
37
+
38
+
try {
39
+
if (record.text.includes("BlueSky")) {
40
+
console.log("Labeling: ", JSON.stringify(event.commit));
41
+
await server.createLabel({
42
+
uri: event.did,
43
+
val: "blue-sky",
44
+
});
45
+
}
46
+
} catch (e) {
47
+
console.error(
48
+
`Error occured on record ${commit.cid}: `,
49
+
(e as Error).toString(),
50
+
);
51
+
}
52
+
}
53
+
}
54
+
}
+3
-1
package.json
···
13
"typescript": "^5"
14
},
15
"dependencies": {
0
0
0
16
"@skyware/bot": "^0.4.0",
17
-
"@skyware/jetstream": "^0.2.5",
18
"@skyware/labeler": "^0.2.0"
19
}
20
}
···
13
"typescript": "^5"
14
},
15
"dependencies": {
16
+
"@atcute/bluesky": "^3.2.2",
17
+
"@atcute/jetstream": "^1.1.0",
18
+
"@atcute/lexicons": "^1.1.1",
19
"@skyware/bot": "^0.4.0",
0
20
"@skyware/labeler": "^0.2.0"
21
}
22
}