commit
This commit is contained in:
commit
9bead82ecf
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
node_modules
|
||||
.env
|
50
index.mjs
Normal file
50
index.mjs
Normal file
@ -0,0 +1,50 @@
|
||||
import "dotenv/config";
|
||||
import {Bot, RichText} from "@skyware/bot";
|
||||
|
||||
var bot = new Bot();
|
||||
await bot.login({
|
||||
identifier: process.env.IDENTIFIER,
|
||||
password: process.env.PASSWORD
|
||||
});
|
||||
bot.on("error", console.error);
|
||||
|
||||
bot.on("mention", async mention => {
|
||||
//console.log({mention});
|
||||
var parent = mention.replyRef?.parent;
|
||||
if (!parent) return;
|
||||
//console.log({parent});
|
||||
try {
|
||||
var parentPost = await bot.getPost(parent.uri);
|
||||
//console.log({parentPost});
|
||||
|
||||
var embed = parentPost.embed;
|
||||
if (!embed || !embed.isVideo()) {
|
||||
//await mention.reply({text: "Sorry, it doesn't seem that this post has a video."})
|
||||
return;
|
||||
}
|
||||
|
||||
var did = parentPost.author.did;
|
||||
var cid = embed.cid;
|
||||
var url = `${await getServiceEndpoint(did)}/xrpc/com.atproto.sync.getBlob?did=${did}&cid=${cid}`;
|
||||
url = `https://avps.owo69.me/download.html?filename=${cid}.mp4&url=${encodeURIComponent(url)}`;
|
||||
|
||||
var text = new RichText().addLink("Click or touch here to download this video", url);
|
||||
await mention.reply({text});
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
await mention.reply({text: "error"});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
async function getServiceEndpoint(did) {
|
||||
//try {
|
||||
var doc = await fetch(`https://plc.directory/${did}`).then(res => res.json());
|
||||
var {serviceEndpoint} = doc.service.find(s => s.id == "#atproto_pds");
|
||||
return serviceEndpoint;
|
||||
//} catch (error) {
|
||||
// console.error(error);
|
||||
// return `https://bsky.network`;
|
||||
//}
|
||||
}
|
197
package-lock.json
generated
Normal file
197
package-lock.json
generated
Normal file
@ -0,0 +1,197 @@
|
||||
{
|
||||
"name": "bsky video download bot",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"dependencies": {
|
||||
"@skyware/bot": "^0.3.7",
|
||||
"dotenv": "^16.4.5"
|
||||
}
|
||||
},
|
||||
"node_modules/@atcute/base32": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@atcute/base32/-/base32-1.0.0.tgz",
|
||||
"integrity": "sha512-Mbjsv6kd/ymvDMGjCoh9eqhlpFsoJ6zYguU6xtKxqh1wGhe5rvBOfMRXsEqcp7srn8Bfp8QhevqLgmwrWvzqrA==",
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/@atcute/bluesky": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@atcute/bluesky/-/bluesky-1.0.7.tgz",
|
||||
"integrity": "sha512-2jPHzl7WbcqRtcAXanJy4Lp638ujqnoGmPCPmBlmpEDP34D7EVKQqjN/mlvglb5n539dThA9xlSgIS8yOxwzDA==",
|
||||
"peerDependencies": {
|
||||
"@atcute/client": "^1.0.0 || ^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@atcute/bluesky-richtext-builder": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@atcute/bluesky-richtext-builder/-/bluesky-richtext-builder-1.0.1.tgz",
|
||||
"integrity": "sha512-msyKHZa47id7Oe2zHpgPSuL+l9vLQXmKfi6uyMOS5yw6nLpNd5Tdb96wcgwscMmyH8UR4EoM+2oYLvyH89DcEQ==",
|
||||
"peerDependencies": {
|
||||
"@atcute/bluesky": "^1.0.0",
|
||||
"@atcute/client": "^1.0.0 || ^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@atcute/car": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@atcute/car/-/car-1.1.0.tgz",
|
||||
"integrity": "sha512-Ayi8gilzgMMYZ1sqbHqqP52OOJlxrbsAxgAB3Kgz/NJvl9StlYKKlUQN580gZebsG0B+EYbhToQJYoCs3ioW+A==",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"@atcute/cbor": "^1.0.2",
|
||||
"@atcute/cid": "^1.0.1",
|
||||
"@atcute/varint": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@atcute/cbor": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@atcute/cbor/-/cbor-1.0.5.tgz",
|
||||
"integrity": "sha512-ckWn+ZErzeTgKBuklQfUpsOb5+uAtSJi68Z7+1wJMMEP7iO/V90IIlyTm+19ACuGEuY8SGrfUIWyZvBjhgCTYw==",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"@atcute/base32": "^1.0.0",
|
||||
"@atcute/cid": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@atcute/cid": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@atcute/cid/-/cid-1.0.1.tgz",
|
||||
"integrity": "sha512-92Cor2ruS7y+/wdFutp2qFDjJj4mTcO7HdZ/BhTQRg/nzWdAnTann5DAmYjD+IWRaXd5SYk4dOZnDt4lsGofzg==",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"@atcute/base32": "^1.0.0",
|
||||
"@atcute/varint": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@atcute/client": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@atcute/client/-/client-2.0.3.tgz",
|
||||
"integrity": "sha512-j9GryA5l+4F0BTQWa6/1XmsuSPSq+bqNCY3mrHUGD592hMqUZxgpYDLgRWL+719V287AW/56AwvFYlbjlENp7A=="
|
||||
},
|
||||
"node_modules/@atcute/ozone": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@atcute/ozone/-/ozone-1.0.5.tgz",
|
||||
"integrity": "sha512-53+KoRlvzinv1NUESFOHPPK2kF/CFoQc9um1xH3OPhe29x7RP3PNEBXSc53mnbsAg80dTuh83xqwTrpdJ3o33g==",
|
||||
"peerDependencies": {
|
||||
"@atcute/bluesky": "^1.0.0",
|
||||
"@atcute/client": "^1.0.0 || ^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@atcute/varint": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@atcute/varint/-/varint-1.0.0.tgz",
|
||||
"integrity": "sha512-NEBOGkdaDY8cjlDg49kefIsRM7iv/4oReEnOr3bN4tF3IxBGdc6Io1NCJz1xNBNdUL+3VDG3CKHiRji91HXaTg==",
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/@skyware/bot": {
|
||||
"version": "0.3.7",
|
||||
"resolved": "https://registry.npmjs.org/@skyware/bot/-/bot-0.3.7.tgz",
|
||||
"integrity": "sha512-27k7r4/YA+h8FobXokMa3iv8fm/850a7NmajOHP3/CaMbCYicXXBDnAIY4kIPP58Zl/A/JvdcFLpQBpfFkiQHQ==",
|
||||
"dependencies": {
|
||||
"@atcute/bluesky": "^1.0.7",
|
||||
"@atcute/bluesky-richtext-builder": "^1.0.1",
|
||||
"@atcute/client": "^2.0.3",
|
||||
"@atcute/ozone": "^1.0.5",
|
||||
"quick-lru": "^7.0.0",
|
||||
"rate-limit-threshold": "^0.1.5"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@skyware/firehose": "^0.3.2",
|
||||
"@skyware/jetstream": "^0.1.9"
|
||||
}
|
||||
},
|
||||
"node_modules/@skyware/firehose": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@skyware/firehose/-/firehose-0.3.2.tgz",
|
||||
"integrity": "sha512-CmRaw3lFPEd9euFGV+K/n/TF/o0Rre87oJP5pswC8IExj/qQnWVoncIulAJbL3keUCm5mlt49jCiiqfQXVjigg==",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"@atcute/car": "^1.1.0",
|
||||
"@atcute/cbor": "^1.0.3",
|
||||
"ws": "^8.16.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@skyware/jetstream": {
|
||||
"version": "0.1.9",
|
||||
"resolved": "https://registry.npmjs.org/@skyware/jetstream/-/jetstream-0.1.9.tgz",
|
||||
"integrity": "sha512-87NGqRSmEYmvEuVY0DKZ2ZRbL72tExtDuV+PDvywYqukSp3F/it+9wnU5Xb/Is/pf+KSbd6lWvrnE31HgxJpJg==",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"@atcute/bluesky": "^1.0.6",
|
||||
"partysocket": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/dotenv": {
|
||||
"version": "16.4.5",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
|
||||
"integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://dotenvx.com"
|
||||
}
|
||||
},
|
||||
"node_modules/event-target-shim": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-6.0.2.tgz",
|
||||
"integrity": "sha512-8q3LsZjRezbFZ2PN+uP+Q7pnHUMmAOziU2vA2OwoFaKIXxlxl38IylhSSgUorWu/rf4er67w0ikBqjBFk/pomA==",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=10.13.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/mysticatea"
|
||||
}
|
||||
},
|
||||
"node_modules/partysocket": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/partysocket/-/partysocket-1.0.2.tgz",
|
||||
"integrity": "sha512-rAFOUKImaq+VBk2B+2RTBsWEvlnarEP53nchoUHzpVs8V6fG2/estihOTslTQUWHVuHEKDL5k8htG8K3TngyFA==",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"event-target-shim": "^6.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/quick-lru": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-7.0.0.tgz",
|
||||
"integrity": "sha512-MX8gB7cVYTrYcFfAnfLlhRd0+Toyl8yX8uBx1MrX7K0jegiz9TumwOK27ldXrgDlHRdVi+MqU9Ssw6dr4BNreg==",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/rate-limit-threshold": {
|
||||
"version": "0.1.5",
|
||||
"resolved": "https://registry.npmjs.org/rate-limit-threshold/-/rate-limit-threshold-0.1.5.tgz",
|
||||
"integrity": "sha512-75vpvXC/ZqQJrFDp0dVtfoXZi8kxQP2eBuxVYFvGDfnHhcgE+ZG870u4ItQhWQh54Y6nNwOaaq5g3AL9n27lTg==",
|
||||
"engines": {
|
||||
"node": "^14.13.1 || >=16.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/ws": {
|
||||
"version": "8.18.0",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
|
||||
"integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"bufferutil": "^4.0.1",
|
||||
"utf-8-validate": ">=5.0.2"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"bufferutil": {
|
||||
"optional": true
|
||||
},
|
||||
"utf-8-validate": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
6
package.json
Normal file
6
package.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"@skyware/bot": "^0.3.7",
|
||||
"dotenv": "^16.4.5"
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user