From 6a78ab1e277e444d7bc859c892fbd8ad9af65627 Mon Sep 17 00:00:00 2001 From: Brian Lee Date: Thu, 11 Jan 2024 11:08:10 -0800 Subject: [PATCH] Track changes to mvp web of trust. --- .gitignore | 2 + README.md | 23 +++ create-tables.sql | 10 ++ create-tables.ts | 18 +++ pubkeys.premium.json | 364 +++++++++++++++++++++++++++++++++++++++++++ run.ts | 49 ++++++ scratchpad.ts | 63 ++++++++ 7 files changed, 529 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 create-tables.sql create mode 100644 create-tables.ts create mode 100644 pubkeys.premium.json create mode 100644 run.ts create mode 100644 scratchpad.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cf2b394 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.db +archive/ \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..06fa062 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +# web of npubs + +Tool to get user contact lists. + +## Running + +todo + +## Development + +Use repl: + +```shell +export DEBUG='ndk:*' +deno repl -A +``` + +Paste code. + +## Reference + +* [NDK docs](https://ndk.fyi/docs/) +* [Deno and databases](https://docs.deno.com/runtime/manual/basics/connecting_to_databases) \ No newline at end of file diff --git a/create-tables.sql b/create-tables.sql new file mode 100644 index 0000000..b8684e5 --- /dev/null +++ b/create-tables.sql @@ -0,0 +1,10 @@ +CREATE TABLE IF NOT EXISTS subscribers ( + pubkey TEXT PRIMARY KEY, + created_at INTEGER +); + +CREATE TABLE IF NOT EXISTS foaf ( + foaf_pubkey TEXT, + subscriber_pubkey TEXT, + FOREIGN KEY (subscriber_pubkey) REFERENCES subscribers(pubkey) +); diff --git a/create-tables.ts b/create-tables.ts new file mode 100644 index 0000000..41ac0a4 --- /dev/null +++ b/create-tables.ts @@ -0,0 +1,18 @@ +// https://deno.land/x/sqlite +import { DB } from "https://deno.land/x/sqlite/mod.ts"; + +const db = new DB("pubkeys.db"); +db.query(` + CREATE TABLE IF NOT EXISTS subscribers ( + pubkey TEXT PRIMARY KEY, + created_at INTEGER + ) +`); +db.query(` + CREATE TABLE IF NOT EXISTS foaf ( + foaf_pubkey TEXT, + subscriber_pubkey TEXT, + FOREIGN KEY (subscriber_pubkey) REFERENCES subscribers(pubkey) + ) +`); +db.close(); diff --git a/pubkeys.premium.json b/pubkeys.premium.json new file mode 100644 index 0000000..e70ffad --- /dev/null +++ b/pubkeys.premium.json @@ -0,0 +1,364 @@ +[ + "69a0a0910b49a1dbfbc4e4f10df22b5806af5403a228267638f2e908c968228d", + "32e1827635450ebb3c5a7d12c1f8e7b2b514439ac10a67eef3d9fd9c5c68e245", + "e774934cb65e2b29e3b34f8b2132df4492bc346ba656cc8dc2121ff407688de0", + "2f7463a476b4d5ad3d2e7a7e2f57be020f8548d6a30a150e17f2d94ce92b8023", + "7317f913c3de739e83ab2ddc6700a8f5caf45fac5a02c6a886b55ef9b7e34d41", + "d427a054bfdc93bd73cb263fba6d3dc4c9e352ff9bfe7a0e33693d2cf15759eb", + "c933319100dd1c4dd9cbb40b7fe31d386c5de5b1cd889f6aaac53a7623b48a12", + "6d2a43408ee74c2e35fd7f4eb3288b73cfafd88cd2d059e6c05058e676fc5290", + "feb4e6277e69aedd3b6c0f2c1904976397f30b8f003b201a4908ea3fa7a7bfe8", + "ecbb3ac538fffa6c50e5973f0387292bf08693af0bf3389ef4a27bfaaa7f4587", + "34fb6b5e1aa2f5b4d6925b085144b43860d8a549a2394a57cfacec3fa266367d", + "7e654de4f6cb53249809279fab9551aec2fcf5c3289b36208b7dbda80859d387", + "552a5a9768c0215f5834c8af38980729813fa85b5a7220c02a464d46a0b1f5b8", + "237506ca399e5b1b9ce89455fe960bc98dfab6a71936772a89c5145720b681f4", + "1867f985d7e06ea5b10065947dc1fe0cb810450c7002f1b5b2fae153bd57d9c9", + "7e9bff2ecc1f6021bac3aa341d56171aec663ca10fce288ae63d19e61f1f6a64", + "597b42de56a9e0c19ee2d0cde5797dd58d48ce8dd25c732b4c873af11161f9fd", + "83768054ef906ca493dcf703dd93b73fa71054ec80f83e71e2eb68eb5139e1d6", + "5a36b20ed0f635904a2082d3710ee01a3435d06bff3d4ddfa11905352e287364", + "4f2118e124779291eef71a4fbdfc3458e5709d8efcdb941bf54ce2094e987729", + "5748528068b958db3f33cf0ebf63096f8c780d719a18decaf4df12ea3421a15f", + "7ca66d4166b16f54a16868191ba1c6386a976624f4634f3896d9b6740a388ca3", + "9839a36d51b5f190497f9b2d268ee08903eec7f5ed2e9ae3ceeb5db89aabba10", + "654430bbc6e24c0fcf78031f543908102a2caf399aae7dff54733d2146ea63b1", + "49e25ac5d0ffd29c3eea8d2e54c92d6be212b306dc9120b18f8a46216882eaee", + "3b7fc823611f1aeaea63ee3bf69b25b8aa16ec6e81d1afc39026808fe194354f", + "1e5a3ec4fb39c1c5c231877da6a09106041ae5d01f6f0924317619e7aa4be43b", + "16f85a0467c75ab411f958c27acd41aaa243a97fa39866ea836b6b2391e7b10d", + "a614a08cce34a685f1ae55960b2238e7436e80825b436d5ec7e9077fc3c61215", + "1dc754f1925916b903245f0378ba4cb9147b88bf493103855386deb7b9baeded", + "6c0e9016b9c1efe7edef87e505e2a1e03db1fbbcfdc3ed6b4f8aaa4b540ad98f", + "fbe2f7997f5288a4f6da13ccd6a08675b4e1524e32851916c80bf64547c2fe38", + "547fcc5c7e655fe7c83da5a812e6332f0a4779c87bf540d8e75a4edbbf36fe4a", + "5278241e504717007e3abee30215297cbf6ba8bf5e145e5f73f07db955c9d12e", + "9e02ef62bf212188aab2ad6a5a1b9893707a11d08ec2c39f087f1e8efe780797", + "1e7e09f47f25b0f3e8c7b348fea256ec4d4177c12c8c8fffeea2e3a8396567a8", + "b8469b16b1d60861ad19fb6b720efbf8686795458ee8640eb34c4b48efaa351b", + "554a9ea5dff8e3a6d2978b2087499adbf0b683958eb0d9b9946e2e6093edaedc", + "33efb7f9d1f5b77ae8dda72c83d1f1d5669d8101f4100d10725e1a72dd4edb65", + "b9e76546ba06456ed301d9e52bc49fa48e70a6bf2282be7a1ae72947612023dc", + "7923c60ad5ccc4bbc763e0d10cccdd35d0e7ad324b0f423a1fa8e97078557931", + "2d5b6404df532de082d9e77f7f4257a6f43fb79bb9de8dd3ac7df5e6d4b500b0", + "cd0ea239c10e2dbe12e5171537ff0b8619747bfcd8dcf939f4bceed340b38c87", + "4bc24e06601229868a0061dfca7b0c65acb3af300a8bb4a89e506d0bd204d3d5", + "ecfa3c5c82d589c867c044056f75d6cff794f1886d5ebcdd48ad851da47adae4", + "b0c9eb8db72991857e8c22e3dedfe4bd2287ec62292c03f2ea7e094d8799aa79", + "644aa0bf6f56b8457bfb1fb159f32b318c9c504ec0d956c7314f2f3de2de8126", + "c6f7077f1699d50cf92a9652bfebffac05fc6842b9ee391089d959b8ad5d48fd", + "8f53d7490d373d97459a0ead7ccb28557decf4a5df46f1289f9daff8c01cee23", + "5778420eb7247fe5137645a5c9f9c5a6621fea979066ffc7bc13445eb5f5cbb5", + "6efb74e66b7ed7fb9fb7b8b8f12e1fbbabe7f45823a33a14ac60cc9241285536", + "079d727bee3d805e24758861ea4d028b2e6a37805f8db45bf8045bf900099650", + "06fca9f06f74cf86a16fe4c2feec508700643e2b105b519fd93d35332c51ad53", + "75f457569d7027f819de92e8bb13795c0febe9750dc3fb1b5c42aeb502d0841d", + "6f9b0f6990bfc9466769c4d60515d71e2a0684616836eee542dad40b31d37e2d", + "dba3fb1babfda48b7a44b55cb3daf8319a8030dc0513c8c4946436b88cddde06", + "31da2214d943b6db29848bfe7e3cf8ec0380014414f06cddb0eeacc9af2508e2", + "217a1a2704b87e63b32529f922df3ac87c5ebb9881630ec61f040cf8cf881286", + "3f503eef50d5b9f73af8d44ed380e4a3090e2c63631bffa9cd919bea38356a64", + "b1429477b8d90a3972ebbf1417a05d064c6bc292e075f65088fa6b22a6b42768", + "9f807153876ccb1db650a96fb7ada5a1dbaaa0dc3f22fd3fcf545204aeef43f5", + "5b380071ce7f87ea7e5c8e7fa42b8f433ff83fc7b3f9940f505eafbcfdde4897", + "afb18dfa9cdbc569bfe32a50570fa852344325ca8d521dddaee33a0913281dd1", + "f514ef7d18da12ecfce55c964add719ce00a1392c187f20ccb57d99290720e03", + "b22fef18cbf5eeb5d79451ef9c4cda28efd47fa794a2bc7d04495ccb1bba6e1f", + "f87d7e594c12133de18296f9e4a574c307b3b7f1c39f0806fe7d1992f6ce58ed", + "09d6f0c84d7135d58fa1239442852303669bd79e5023fcbb58463764ce517e64", + "470be0e81485a5ff4d430dab3c7b26c5c74fa5223370a63d7710907a619c49d7", + "50a9326de0b1aed1b364bf02affc4129fe320e27438e471acbb0605c81ab87bb", + "e998cd0639d0167fb71d3fcc1c140dc6241f372884d5fd300bbec95e206163b5", + "db333633799ef7f9dbb2967abcbed657b6c67578459f2bc2bd88d5842a60f954", + "3f751c3eeb89898a7bc4946575279e687f27f043bfdcf7fc082f1c21381a49ca", + "7a78fbfec68c2b3ab6084f1f808321ba3b5ea47502c41115902013e648e76288", + "e11e3b9a52a763eb8ea9d421d840ed2d58e60975dac42eefbd2c3a1c82178ceb", + "4c32ed26972d9ad77fdf1c20fa3bd89c36ae86bfde40cefd8d908d480a5ecae8", + "50ad643263736d66a4e61e5bd16303718cbee7427703b156e33e4bf894bc4ca4", + "3d82e8f6cc6c096544bf33e4875a03f5600acff7ec467e150a1cc7712d214dc9", + "1dee50db69d7f42f28a722349404b418adb35645e1839b4cf2f4434b1698b791", + "8c7b73dc2dd8045e2b545ad68eeacbce0552bebb6b196971f2e2e8cf9bab4afc", + "f7380c11f6a40c7681d2661ef601b9305991141b6bf45ad70585da5cd5c75df4", + "6871d8df0d425a2b07ecdc30a3b53ffaef14d9ad2573fc1542694d654a9396c1", + "e005ba6cc009ec8d78ec378660a43cc0af09c1f299e6c6321ae25b3e28c2663f", + "a7fa4b91d1913a262d1c0b19991b80104d471e139f42464138fb900ddc495cb0", + "939ddb0c77d18ccd1ebb44c7a32b9cdc29b489e710c54db7cf1383ee86674a24", + "35b0335221cf5ceb30507366f742e64f5a55c04070c70d5eac9ebc1291b8d3ae", + "7c490afa9822333f558844548b81210d458c5d13407ba73d3e100d0088a2d377", + "13bb52c08b8c29616589b8531111ce671cea24cc350e4297dd988afb7a8bd512", + "84dee6e676e5bb67b4ad4e042cf70cbd8681155db535942fcc6a0533858a7240", + "c78388160281fc98f07a221ade1dd0472757afe54a7b0ae66c02c3693099afe8", + "f94362713ff95e37914b12d5d2067d83e314bebf1e5b49e9ff4371738c572090", + "c6ce4c595db9fd2a769f04c2b17747f172371e4b409bfc8df1dcc5d180d1d006", + "2e59e1a87995fa4aca34df446fc0e5452b12b0c15bb58fe9529163fc20ab305c", + "6fda5bce2882176bfbabfab503a1b5281329582d71c4be84bbb567e65c1a791f", + "e0df47e83aef0241f5cab162397786318a7dd0decd9e96a2a066c69470afc95c", + "1e0da54fdcb611d77fd1bd1deb828bba594596b147f6ce3a997d48bd40746dc3", + "b6f856ffc06f6b1d3cc6fbee75adffaed247825b50b929f1bd3483a65b519e34", + "000000000332c7831d9c5a99f183afc2813a6f69a16edda7f6fc0ed8110566e6", + "f8fdb8bd5045d7e9bc837a98906605ac9a0b4e71d2bf6867a74ad1aa4aa4259c", + "9e4d08814508c0f98ec0aff2884c5ccf5b03b9931fd14be7a959ae6a97c46363", + "5fb0091aaeb72eacdcbe9fb3a649ee3b8870454c2adb9275064848c8c9c0dd1d", + "d40023204289dae3ad69ecf5e64893988e108f7cbf3fca6df9786cc275d4627e", + "d908a4771ea8f5b9f1393023ad7783cfd3b83564afd181520d154f0420484b11", + "925ed95833a708dea46396d3075bd406e1d9485ca309238be2f7bad6eb2e93d6", + "0dcfcaac3d6f6796f7bc300a7d0d3b71bad1457f4e6b72f9cf490e1e55767be4", + "16b7e4b067cba8c86bda96a8d932e7593f398118d24bd8060da39ccfd7315f5c", + "e9d58d53b009ac6d3524c17f899149073f4e7db9ddf1aee70f207dcb685df0ff", + "ef72be13f5cb3c62fc5ab963f9c4c5effb5f2ec2400a40cbb33db211742e21b7", + "e8f5a9ed3480e0cd5b9797033e3b78c96ed9ea3695d4c3eb865be9769d410a18", + "cb4763237f0e04e73568b7cb58198f19dccb953a920e325fbf819e9584b372fa", + "d41e81dbd009554a2df052a1cc5077eeef04c554bccedc18526894873c78dc3d", + "1cb14ab335876fc9efc37d838ba287cf17e5adcccb20bf6d49f9da9695d52462", + "b75fd036342562bf1769dffa013d22909ae58b9795719cf4614b019798b30e01", + "a4f6914461c47395346e414942d2ac7de25560df241c565269f9ef14da045c8c", + "43c73e0ceadf599a6b7ac127093a929dd2d54961d7d20e3a5df295d0c90ccb5f", + "36c2f3b9de4db8fa01d7247ed442f96023a38242ec34a3f2c1042aee4f99c3d0", + "7039ce3410d3de6e94b8022ca5a6c513689efce1742051d6a576d3a376616d3f", + "fc874280ea20ea8e5c1c585696b80570bbcc334831b8f55877c2b324a1e7e99c", + "b17fccdf07ba2387f038b34426720cd68d112df923bca2bed8f8c309b7211155", + "38c1face36ad0a02afc3511dfff184a90548d687465ccfb1cbcf515f8cc86069", + "e8541da6f0332957cb2a09bf01da12ae3e71cdb2b8c0fb9d766e3314972db059", + "00000000057913d77ed857cc4ce4f79ef5cbde523e3f9154f88942dfe9cf7e19", + "3c559080f647074a638e9cc6d4c487a06bfab810402aab9a6794fb49a053153e", + "e3fe90d407dc2feb3d75d5e75f45724b6654838d552b939c22bc82e39922113a", + "6867d899ce6b677b89052602cfe04a165f26bb6a1a6390355f497f9ee5cb0796", + "86add3aba38a0ab83ac0b8dc44c6547e41ee2d6d9883f096c71d0b0e1fad3267", + "7f1bff247a85afdec212e7ad6702d0d657ff7b786da23a89167ae6b04b65eec2", + "4ca9928dc50ffd9136d8331bf9c9311162492f9cc18076282ef6683a47b9fc05", + "d169fab3ab0142c460da7bfffa97775bf14b695789916ed04d4b1f1ca1e5c0ab", + "6389be6491e7b693e9f368ece88fcd145f07c068d2c1bbae4247b9b5ef439d32", + "ca1d66e38e6fbf8ff8ce088f473457b3b8ee2a7b45e165aa62c7a074380e2745", + "28992ac21304a67647c003efdf680a5313566677b70cd77a99bc05c903a49701", + "acb2b6d4b22aa5c42ca8ebdc3113ae9e30c2b640fb8d46d81e0be0b49a844968", + "5761f717e9f4adbbf51af40cb2790f06be064f7652193ba360ea6aa0ba09fefb", + "9e5d0a8b53c5ebd6eb3e603aabb047d4b89fef16fa44fa9866683c5af90bf28e", + "7479839a51a3f7dd9126378ce8081767f1c08ac173e21768998945a28bee54ca", + "711c1ddfcea9af9c7d25e536a815564326f29e0734bbfe9eab2fabfbd95720b8", + "f4d89779148ccd245c8d50914a284fd62d97cb0fb68b797a70f24a172b522db9", + "1248addadce5dd58de00ec9b4124f263e2aabcd9257988a11a43093a258489bb", + "8906a8ad2c35980ecdde87aebeeb8f1fc9deb9443e76564d9baefa304599b740", + "9108cb00ee431cc0cf0de4f8ac4cb14bb3c5bafa25a6450b2ccb9f955414744c", + "1870bad2b82a55dc5747dcab95cd400ba216ec250200b1282ec4ef7ba39cd564", + "260f234c5616d5984da3037b9d7c5dd03ee11838115a3093452c8b6f1b2b186c", + "dfcf45f39d8aa0d48f4c5489eddfdd89b01b1ce358cad6570a1e13f2c5b01dc2", + "21580a98aaf64f7d66705abe7bf7a7acf4ee440fcf6b59d0b76e16217824d895", + "3a0392022aef09e2879e57a473e617f31d80549bad0641f6ec7e5441902de851", + "e9e64f39046db8f6a13f520d0259f301481e8c10570f1656c7f7e7572227e000", + "fcfd0eadebe6d439045c476d1da242d1e9e85877bc5ec1039bd644bcf5ea78b0", + "60010e9c4f3849362e5c78c6af42651318a3811fdaa1eb2a517a19fdd30fa749", + "9710dbd5ab8dd29cc91c6cc954932fbd61480886bdd816a60cced54ab2b37fa7", + "7f5c2b4e48a0e9feca63a46b13cdb82489f4020398d60a2070a968caa818d75d", + "62f6a8a347fea437b744cc747296cd4a8a5049c13f4e5c4dada39b5b249663b0", + "dd5e0ac3b0e89ffc9e0bc51604ab04480ae532a7104c649f3f8098cfdf9127dd", + "e682494211a293c1d66a2fe8a97b5a5155516ae475e1a9ffd4f58689a3f54fc4", + "843f283727b977f3efcb6eaf7285bacc65f6a2b34b7239fb1afababdc04f857a", + "5b924c9e669cd2b0249da8a049575d58c3db6dd0c00c45fa450ee8749b8ac5a1", + "673d0e7cf0f762fbf4d06923ed641de90175d1e1654cca4cb56a1dcedde80db8", + "18905d0a5d623ab81a98ba98c582bd5f57f2506c6b808905fc599d5a0b229b08", + "df15bb7f6163b9209989632b02bae791e13431d1f56b6491f44827582eb44f4b", + "6c94c27c2bb3f51abba44b0c088d53805ee4f9162f3956cebc1d89d32de55063", + "91ea09ba13c114f14d929edd2da5629abf4439b7e4c0727a25fbe63cb5eb234d", + "803cc5ed330bc5b87ace85f1d8d2c256004101aeea309dd89e2dbd2dce9b114d", + "dad682d23b94ae2053a03bc263190b256418b86f806d119aaaa63c7247c3d404", + "7b3f7803750746f455413a221f80965eecb69ef308f2ead1da89cc2c8912e968", + "87e98bb670527d44379bd73a6c920afeb115297c0c0650cc182138388d6616f4", + "34af8b767587351a5dd76f57a1b7aae09d90cbb20c29e6ef45f3be3d2c45fe2d", + "9d70fd73f8ee51789748c1d15de2107a3266a30fa3b072880537ce23b53951a5", + "f28c05fedd55e8bb20b7a329c803a5c30e87102010730436dce149bdbffb2e44", + "a2d9f796461e3926e82d6ff02661be5fc57d3d6b3b31b6aaf76344db8280e331", + "548ce7c9f49011f0046fa8f1a22ed1dbe568778bb6d9a4cbcacdf0ccdcc74666", + "ca4ef0d885f25c5b1aa6d424f591b1b7a7d37af1cf58eaaa21a6e0d584e65287", + "b8b43d56fba9c6d99c8cfa18ad8f7222afb1a791b734c76d0c08b1c1e01e1048", + "435d0addfa045737179f6f2d6ba975acf3c5736845b97f05406be1bca9b3bb5b", + "fbeb2be7271a14196a8426e78ee4c747706be2424392b036f5fabe44331f55e3", + "8c795a5c58f8d7154397d292ff14a781240f45896875abfd44acd68579a9496d", + "311bdd272774bb71b41e62f047edde3f4a4d7b5b60cb8378910042ccea3fdc10", + "3d97bc26c0aa94269e30001c18b9661852038a6c50c345e0161d1b5b6aa0d1fa", + "85a8679df872002a2701d93f908d9fa41d82c68a42a253ddb5b69c3881ad3f10", + "efba4c3bc34558d20ff0a433dd81a0fbce0c3734d7b579d6d020d8629bbdcb79", + "d7607464225c8ab610da99495bc70c8a3a45a03f8a22a95f06fcb5bc421e573a", + "7cc328a08ddb2afdf9f9be77beff4c83489ff979721827d628a542f32a247c0e", + "47f387cf194fde012199db1e7e10b7fadbc9ec4f4dfafc361fbdc09c072aaa65", + "391819e2f2f13b90cac7209419eb574ef7c0d1f4e81867fc24c47a3ce5e8a248", + "864d087149c8395df5ab76db9bedcb1178ec78f39c18a3e268539b82b9cd0f6a", + "71ecabd8b6b33548e075ff01b31568ffda19d0ac2788067d99328c6de4885975", + "7b102dc5f434bd1be02f5000b9695cef15ceb6665955a81d86009ff60f42d059", + "9dc2b6bf922f34009f3b293501a9f36959669d7882189bb2c58f44227caa6aa9", + "fee7116b333a648c9dbfe10384e6faf9e5da81aeefac854435ecdc744e797371", + "dd840e433b978795bb35a408bc61ef7e99688ba0b166f8cb4c7cebcb5318ecb0", + "45021250316112d36dbe5f00d814342a6fa9bb6fc1f5b32d35253ed6a83d9425", + "ff347d7a0607233a14d6669d92805f46405cc95b0620088c73272ba85cf36213", + "88c77fa5e2cdab3d12897f4cea8ae00843374e49bd197e4011e8d936958b13fd", + "17620bccf40b3bbc2c8284c294a2698d450870fadef2ecdd7c2cba93f0f6309d", + "2af01e0d6bd1b9fbb9e3d43157d64590fb27dcfbcabe28784a5832e17befb87b", + "ab953547fd84a8dd8d1dd95283f2b09b6918d861e1bd570052afbdf8365b8ca9", + "26bd32c67232bdf16d05e763ec67d883015eb99fd1269025224c20c6cfdb0158", + "f901616f00a63f4f9c7881d4871a03df3d4cee7291eafd7adcbeea7c95c58e27", + "b6c29682e195420f56ffba98f83030c9ec0e579416a35867660fad2c9614c184", + "02748827a1016a393c780aec1d96191a3b8df1c397d09351029cbb25b2d83443", + "00000000964f13582cda177e102d9274cc41f5228686956c7cccf07985013e88", + "ebdc02c6e0510b15e56bf554c88f8d8e9c3f68d7677a65f8dcebcf951eeb9e52", + "1f08483005471387f911df54814334a9f23b13a967568cbd65315bf691bfda10", + "d94a32534797563a10ed43ad43a18eb64fe68a9ce455bd01eb98f91138a40c97", + "63acdbe3a0346cf9e89675689fc55318b5c34e484c2511c5e7ce4dd13460ae39", + "8f9efe5e5b5b13fa967568f037811e1d8fa8ece3101a8c65ad0a5d75665fe6da", + "c2d1d3a7123084ea702baae00d0907dd9a17506b627fc7fb4ede1eb0c8549485", + "e7a95b8b85f54a5271f2f73f176d40d7ff35653abe9e5db82ca292ef25d83e5c", + "8fb140b4e8ddef97ce4b821d247278a1a4353362623f64021484b372f948000c", + "92f31545254ed2f9ec4e91038768f80c60a0c5e22a6f007eb6cdfa4b20706e75", + "98b62941fc20cfbb094e54b33593afa0090e43f263e92689a0b66b7e97cf39de", + "31312140ea93476d078607bc9e176ca0b1464ea104a7d2e703bae5aa2471509b", + "75c48bcd0f016de9085f38ef32c1f1ddd1636194beb2db996743429e3e80b22c", + "273d77da30025faa363e40b61155afc83d9bf76b77a937c23357f3fd92f85aca", + "308e8d827bf138466b5d99475337ef12ae33715baccd198f46ab1404a99152f6", + "92892ba97a81b125e8b8c6a222c833019825d980cc3f7d9156bb565d895521d1", + "6b3133a52e787476efc45fe76710e6afa369ef3c4ca7723dffd064f6290d8d73", + "12cfc2ec5a39a39d02f921f77e701dbc175b6287f22ddf0247af39706967f1d9", + "06da2d9edbf64f040a0210363cbbc0e74d9912415c3ae27c75d06c470f5ab6b6", + "4b896a24c4c5a65b1fec821eaa34ed259e351a7e3620901308b580124a75164e", + "7c8f4ac0324b92570516c6c57d8c7ac8ccf51b8630b20d3da3e66b9cb70b7fca", + "d7f14d8d3ebe2651cf10eb8b99b87402f904abee26e32a0646485a61afd3176f", + "d75e8cfd74940eed5758ce4fd8791f7ca0bade69ff271fcb67145d50d4177ba2", + "3c0a6d434e28f68a4b31d38ece15b33c1518aa58299b7d315426d716c5493ed4", + "43b4a21dded6d5e93fdb38c2b1bb18067c2024ae4698c2d714b8341cfee87233", + "dee97518077808091745015441953ad814c22d4eaeaba6996385a3d7dc3d191e", + "e07773a92a610a28da20748fdd98bfb5af694b0cad085224801265594a98108a", + "7f1b2d20466fd5ff836c6bca1a0849f9c77162cfc00b7e708a9142763c021673", + "d258eb7757854ac140b48327205ab0d49ebd8003eb8430f76639df0500cf4aaf", + "df4cafee85f79769545851db202a8856f82dc917548093c760f3094896e987b2", + "37ba1761c1e406e4f5c4b1c8a4c67d13eddd62bd91e961119138a4f7ecd308c8", + "bc815d16028c8b012103018596386b77cbd6ef27f10f1992ada4986104df0cab", + "623ed218de81311783656783d6ce690b521a89c4dc09f28962e5bfd4fa549249", + "8582d172e1d6d8335d959929f73e5c04ec37bab924eaf6c59c66bfebf5f676cc", + "cc76679480a4504b963a3809cba60b458ebf068c62713621dda94b527860447d", + "4753d3bc785c1aa5f6188d03f0a686d9f3e1875c2b5fe554e3005e94415bb591", + "1bc35d648dab39e6cf78a78920e788655f31cec5d7c138dd6623064515434292", + "7dd1b95459baead91a6c5240e37f5d4ebc1a79dad450cb17229fd6e874a241fd", + "a6223de378ea5daad05577b87c9c07eda41b171b02465a6e64f9f4356f46025b", + "6f54ca69a51cbad9e49d955dc5ff84fe45d0baecbc4c2801eee2b707c4ab6d8b", + "ad49127db00a4d123198c944d248c611df299484d5757675d9d08bb579dccbcd", + "b9200c760dc2a151da379310e2eafd09536bc563acb7199507e8772eb08575b4", + "957033b60b95076e405ac1aefd8bd4437074431389fe59092618ac66c93894d1", + "418a17eb8c7a403fb15334264f85fb7a35d33e1cfc7d6bed610931d1b64b2b3a", + "f82aeed49547756ffa1a1334ebc7465e72ad24609f8da773046775c84ae85952", + "ef3ec783a580cc5c96c71baa5303f49acc5c4fe240a499ef70ee379fb8e9526b", + "30c1e4e2ce204a74f35f402862cce22273cb763d9d4c984d57ab7f07e944c1fd", + "449326b34b1dc4786d3ad9b52cb7ac23c6a914499476e1eebdb82dcb36085563", + "b488b594d84bb3e7c8421a4b91b19a006dc13d0c00da304a0263355d02195f04", + "eff26639ec9a8098b77109021e2626d2c6402f1291b0f3d83e1911cf749caef1", + "f72150c457007eec5f5510b7a7d49dbf01d28c055df6575c85ac8e0f9efa6400", + "bafa4121e25170867c3346ff55c0413d1f41b7c83ae1344bd73d5105af6063c5", + "469179475d290add06ac15460d08e370c06deb2cffe7fbd96ad6694b948f0683", + "af2f682f512899852c6654ff065aa405a41d15e2b1cb6c9173123605744f06e6", + "83bba55a7884b2e0936bde9525a51392912e3843502954bf98ad123c16355b3c", + "4ee021c9b2e631636d6ec65cad79ae910d8b2a3bfa98dd1380273cfc6c727cda", + "deba271e547767bd6d8eec75eece5615db317a03b07f459134b03e7236005655", + "5b54d5c6b7b869ea236e2d61f9b07c72a0a71e9a317df93e469aa08478f909f1", + "13bc95d921c8b6b26cf35494964daf86f9312fe50924483d266827979d80897d", + "975d0ba9c395954e0d06a801aa27bbd7a631d9a9a8a461df191328cd1505419c", + "47a513866d5dc08470124af426a318026f87998e471a142e441d027b35de5d60", + "472be9f9264eea1254f2b2f7cd2da0c319dae4fe4cd649f0424e94234dcacf97", + "cdb54315a64dce0d2b4fae57133707728d1baa3998684db7082ea0f40338c0ea", + "5713e796a988f0e1cc66228db7a706cbd11e9d3518f3c982a0dbda6097590678", + "5220b963482c7a269df0a4dbb73ec8ab6634108c97bd1903c58ea8636837730d", + "f597dd19ddac5abfd0b65955e58a2673ebc1a604d30c85d9be65c851f9d803de", + "e8c7df1dfef1d97c1acb27e77ef3262faf349bfb333642b778fe15c48bebae52", + "d625f5a9137cf6a0bcb2c8527a455f3f33f71b8cf52ed436917b57d1e4b0a304", + "76482d5e45bc5a595a1501ae4f603ab52191948ebd7899cee9e4ab9e4ecb9987", + "bd2a104e0674346fb0e3963350410f082c1a81de7600b6d51d2bdaefcc2fa729", + "be6e23eb5bc4fb578e9df8fbaee12a6f8ed52f39a72bb18320ed3cdee59c7fcf", + "9358c67695d9e78bde2bf3ce1eb0a5059553687632a177e7d25deeff9f2912fc", + "c8df6ae886c711b0e87adf24da0181f5081f2b653a61a23b1055a36022293a06", + "9ed3a7bb4cf149fc05156bb3c27f083040b8d67e27a46cdc2a22a60b8b26af89", + "c1831fbe2653f76164421d57db6cee38b8cef8ce6771bc65c12f8543de4b39bf", + "4680dbb0b1c7e5ec8f238c6d2f591528c61e2b5dc9876994b208018d57bfd716", + "9a7b7cbe37b2caa703062c51b207eb6ec4c42d06bfa909d979aa2d5005ac3d65", + "52b9e1aca3df269710568d1caa051abf40fbdf8c2489afb8d2b7cdb1d1d0ce6f", + "5d8cd871f09822c3ee6904b73a89e1fbea91bf37009a9023af690d9ae8578dea", + "5e3bf6499074af41bae38a08eda64245d77c9a416b44cf98792b8c900ab9e009", + "22f457c1865117b2f64c1aca0b9df69ab947b20d766980ca6bbe84835749716b", + "5e5fc1434c928bcdcba6f801859d5238341093291980fd36e33b7416393d5a2c", + "8781706462080b2f1f62f42f9ae426e7b571dd5d4f0cce4249e8a6f0bdc694d6", + "75404395df72580bb3f25cd58472b23cafa4e1ff9102004ba7883b72c4c40e6e", + "4564d670cc2b516c0173a27814abe5d8ca60abc8f883ac82b47b5c980877484b", + "a514ab3befb752faaeb536192d04941dc25b88458e89407f9539bb89f39daf78", + "af314f3920509af44417a7c2cb0150632d2f9523e0886988a2b969962a5d0bbc", + "55a7b4888739838ab6fcf928f5fef89f46ff62a16c5c50a42dafe7086dd762c7", + "f480bda9debbedbf3e97daa9057a7e43399ccd5f29f93f425446e2b492c5448a", + "444960e888caa7015071c69e45e954ccd336cffceaff079d8563bc1a62cf6771", + "7e5da8523278d19681c43993827335a92f02030d91433d235d021bcd8ecc2d70", + "804fa01a6715b03fb6092ba566a7c7ad358a5ed419dc8bcee09a30153e95e04d", + "680f386d8c42b072319e3522b4c9e2c5e07c38fe8abbac49fd6d7bb680277efd", + "dc4cd086cd7ce5b1832adf4fdd1211289880d2c7e295bcb0e684c01acee77c06", + "ea1e3eba0b2609e9f67cc6a02ab147f0e79ccd44e87008a5afd17ca49e781dc4", + "faab95b63b736cfbbc6f91cf682cc4fd5c73bf26d052c73baf5913a01ddf99c4", + "f70b24684aa1b8419d6efe8f8aa9c4f547f5dbc3b9c498a766823a377a94ae32", + "9065607855a8aafb49dcc2671865dba575e7818487f3ee65e28cb53003913f7a", + "586d22080c30b1839ca8c747a1c16b5838e51f271322f2af1c72ac7fbfb1d7b5", + "fa6afdb459873dfd0ce7f00557dd405227ca2a0ac56e7883317d01f2aee9b046", + "28e179f63b9e5aa05002b7918b70d81f77525849a9db2f9f39474e34a5fc7af6", + "53ac90ebaef84b0439cdf4f1d955ff1f1e98febc04fb789eff4a08fe53316483", + "09f2e9a7def3a08b992d9fc4c16f33633f58fc46197d01f9b7e2afcdb79b101a", + "87fedb9fd2cd0dc569fe07a83da3dc8b365b07ab6940a8cb4984d9600da83419", + "f6499fae7651521774864664c44dd97d10489d69b222ff2596614cbb15c39278", + "f91f2529318cb52308613485d36328214946679c96458c9c8f966fec347ea758", + "676e827c056230b30887c76b6971180a3ad033a182814b43ec5aa43ee3bc60e1", + "87816efbed5f4734a3f75c90dae23778eefa476c43f920a6cda7e534da4599ff", + "a6a6dc4d4607fac3b86b22916398a05ef33f38cae5feabec66832ce029bc1755", + "0d3f0394b117eee4832bd31ee415733d0386928c7daae05525483ff8c9eb046b", + "747adf8e9036ed78b47eca762bf80bc41af34df6da7bd44876cf2d27e6b7dd64", + "7386fd93c25635fb2194bbde54cc19ed69ffeb448e6594c618db33c04d8717a5", + "ca1a73104ddbc1c2065b491f9fc68d8e752c1505244da41873307c1d9f4c21b6", + "efdd75e5bda78d9678eb43acaeb7e2aeef52ce2c1442cbce375a358ec1dd2628", + "37f2654c028c224b36507facf80c62d53b6c2eebb8d5590aa238d71d3c48723a", + "bc10bd1557c52725ab7a45e193b8db08fcd889c7b3c89294bbb8df1ad693c8ad", + "be0635e88a6ff009e39514130cbf796ad880495aaae1e8bda1f49f5b7f1272b2", + "535a8eb6063eb4a1068909d25012671dd5c37d1ff80561384b75c925fd4d47ee", + "ad45c7530c499495041d7d4a958f5a4e4f846a44b56db461bdc73fc18067ee80", + "87053eb525a888a7808375f0f6701dc456c98337aad3c2b7dd3c8963d38fb741", + "1846fbe8912d1a97d70416267e3789893362a5157d5ae7f40a8840bf3f6f2232", + "03e10daf1b88cb47bb20d92c19c382e7087d9eba8a1145773ac13b16d65536fb", + "5ff8a870580c78f567f36509f3738ef813a635c6f378b80e9442472b4eb8eff8", + "221d591e1d3122ca9e46d112e980c671685fe3eb0dc978c78d6c58ecd4e05c50", + "04c1dfa8a501ba63ab5fe4a88e99ea09596005745db130f67ce9d7b92c16258b", + "3be0212ad95d88956d94a5fc5c67cc23c4935bc2027684a4a57478f82e0ce95d", + "b66eb6f62cc19c034c3da1fe9aced8346f7d5e2aac0fe003d82435a39cef2da3", + "419bd323c11e188c42a167c6767705e962bd72e1bbdc9e3032da8e079fd3a10a", + "d9987652d3cbb2c0fa39b6305cc0f2d03ca987afc1e56bc97a81c79e138152a8", + "06345c4bd52067f555479d5189a04271c7599a9d46e7ab4b6b5b57c7a5f161f0", + "77ce56f89d1228f7ff3743ce1ad1b254857b9008564727ebd5a1f317362f6ca7", + "091b7eace5aaff909726fb04c508f58dc11ac709de17e5636fb1db4b29919342", + "6c887397ed199ccb113af7989160eb0e89ddc4ebb93fc4ec1122754711d375bc", + "1d77d27d2e99ac3af1c6bf0d59a24594242c60e963c2d206eb0e2fc6744bbc46", + "b377757fa3efd9d4f56170bd08508872b13680a000be9b19f3c0f6fea3d861bc", + "f717d66780a2393589d4e84bf3010d860790234549c2f5260706226905d8922a", + "8c54c9b34d507291813c410bf54e9912f9a3e2f820cc2a446ec17e6540589956", + "88e9326a185488072480e0383d2968f7c2f1bc73ef7ad9999f400459afc053dc", + "c13b48ff647b105a5c41eb7cb48694f93ce903e873fab83c2b96efa7bfa1eb13", + "927b3039555c9b1bb87b9af63416ef51a57051d04d2d07cb6c909d9ee6256385", + "96ba39cf2a9c6576d761864afde2ae150d93e22ba5ec7029617a2daada3de51f", + "3b4164353e9bf18c261f4a90ba64efd5cc2e87eb9e8ab8f4a62ad366af835bce", + "34a199b925388816138f8953e67b5ec6e323c30f9269403627316b39a84ea18b", + "1cc11d55093c7d20484c1dfd0514b2010c018ed1e43d7505146f86fe9b97dd54", + "95fbe89f6ffe485532c4823f757ff6635a27bb7a7bb00ec5f49e5cae88b8a530", + "f6ca76815f1370e7ebdb746b3d3a1d5f11d28a2023069345ba1a1fe1c1d10f9f", + "ce2fb8588e047b61e738bee312bf63e03f9c1fd849ab67ab4c5f9b39643d5ffd", + "922945779f93fd0b3759f1157e3d9fa20f3fd24c4b8f2bcf520cacf649af776d", + "e14b2e4e32a1fe9f712dd037a4d4b7154efe18708035efe64d8a18b829a994cd", + "36ae0a7f4bd784a3b128f64d823220bcd8a3f6535bef7563d98bf49087ef66fd", + "83c4be8babdf9525a4a7100114e35111d475e8bbc28f2168208671ef13d57889", + "5257f6d685301de8792099a0b173c3f57f42750612dd876fa0955aaac90192b1", + "b2d670de53b27691c0c3400225b65c35a26d06093bcc41f48ffc71e0907f9d4a", + "a733c2cc75e4fd3a05b35747335574df6a4f198d8e9ccab1a76fb271a93aac13", + "c03be92f51cc5ca98b26bb279a45d670d0ee3c8e0779fa791b22d33f88ed4c59", + "ab7bf21bfd569382ffa03e741fc66c6f71bd3cfa73986e954e4e016d4a33a2f5", + "da07617922ee01842e0427548ec6117d712796aa321a59d1eba8a67373c34f27", + "51fc7209201b1414f721c3d2d2b3430699b1e6317716c5182cc1d7945072e358", + "8dacfe2a58663e3cc6f2de1f2aa651093549524d052d3926823376268ba8d974", + "5c0775b1ae0a5140da9599aa9cd1c5beea55c2d55a5d681808525eb5fce37b32", + "e73a03150acca50c854ef768bc5093cae4727da9b89ee6e976527f503d6a3e76", + "3d32d22c7ae88d503f3c4236a89dfb604015f55ac19548588fb4934aea76b3bb", + "a9b9525992a486aa16b3c1d3f9d3604bca08f3c15b712d70711b9aecd8c3dc44", + "0155373ac79b7ffb0f586c3e68396f9e82d46f7afe7016d46ed9ca46ba3e1bed" +] \ No newline at end of file diff --git a/run.ts b/run.ts new file mode 100644 index 0000000..34dce7e --- /dev/null +++ b/run.ts @@ -0,0 +1,49 @@ +import NDK, {NDKFilter} from 'npm:@nostr-dev-kit/ndk'; +const ndk = new NDK({ + explicitRelayUrls: [ + //"ws://127.0.0.1", // localhost access is be whitelist + "wss://bitcoiner.social", + "wss://offchain.pub", + "wss://relay.snort.social", + "wss://nos.lol", + ], +}); +await ndk.connect(); + +function getName(profile: NDKUserProfile): string { + if (profile.nip05) { + return profile.nip05; + } else if (profile.name) { + return profile.name; + } else if (profile.username) { + return profile.username; + } else { + return profile.npub; + } +} + +const premiumPubkeysFile = await Deno.readTextFile('pubkeys.premium.json'); +const premiumPubkeys: string[] = JSON.parse(premiumPubkeysFile); + +for (const subscriberPubkey of premiumPubkeys) { + const subscriber = ndk.getUser({ + pubkey: subscriberPubkey, + }); + console.log("Subscriber:",subscriber.npub) + await subscriber.fetchProfile(); + //const subscriberName = getName(subscriber.profile); + //console.log("Subscriber Name:",subscriberName) + //const follows = await subscriber.follows(); + //console.log(`${subscriberName} follows ${follows.size}`); +} + + + +for (const foaf of follows) { + console.log(foaf.pubkey); +} +const test = ndk.getUser({ + pubkey: "69a0a0910b49a1dbfbc4e4f10df22b5806af5403a228267638f2e908c968228d", +}); +await test.fetchProfile(); +getName(test.profile); \ No newline at end of file diff --git a/scratchpad.ts b/scratchpad.ts new file mode 100644 index 0000000..e50dcc8 --- /dev/null +++ b/scratchpad.ts @@ -0,0 +1,63 @@ +import NDK, {NDKFilter} from 'npm:@nostr-dev-kit/ndk'; +const ndk = new NDK({ + explicitRelayUrls: [ + //"wss://bitcoiner.social", + "wss://offchain.pub", + "wss://relay.snort.social", + "wss://nos.lol", + ], + outboxRelayUrls: [ + "wss://purplepag.es", + ], + enableOutboxModel: true, +}); +await ndk.connect(); + +//const filter: NDKFilter = { kinds: [3], authors: ["69a0a0910b49a1dbfbc4e4f10df22b5806af5403a228267638f2e908c968228d"] }; +//const event = await ndk.fetchEvent(filter); + +// https://ndk.fyi/docs/classes/NDKEvent.html +//console.log(event.rawEvent()); +//console.log(event?.content); +//console.log(event?.created_at); +//console.log(event?.tags.length); + +//event.rawEvent().tags.forEach((tag) => { +// if (tag[0] === "p"){ +// console.log(tag[1]) +// } +//}); + +async function insertFoaf(subscriberPubkey: string, foafPubkey: string) { + db.query("INSERT INTO foaf (foaf_pubkey, subscriber_pubkey) VALUES (?, ?)", [foafPubkey, subscriberPubkey]); +} + + +const filter: NDKFilter = { kinds: [3], authors: [subscriberPubkey] }; +const follows = await ndk.fetchEvent(filter); + +follows.tags.forEach((tag) => { + if (tag[0] === "p") { + const foafPubkey = tag[1]; // Extract the FOAF pubkey + console.log(foafPubkey); // Log the FOAF pubkey + + // Insert the FOAF pubkey into the database + insertFoaf(subscriber_pubkey, foafPubkey); + } +}); + +// npub1dxs2pygtfxsah77yuncsmu3ttqr274qr5g5zva3c7t5s3jtgy2xszsn4st +// hex: 69a0a0910b49a1dbfbc4e4f10df22b5806af5403a228267638f2e908c968228d +const blee = ndk.getUser({ + npub: "npub1dxs2pygtfxsah77yuncsmu3ttqr274qr5g5zva3c7t5s3jtgy2xszsn4st", +}); +// https://ndk.fyi/docs/classes/NDKUser.html#follows +const follows = await blee.follows(); +console.log("Number of follows:", follows.size); + + +for (const foaf of follows) { + console.log(foaf.pubkey); +} +// Will return only the first event +event = await ndk.fetchEvent(filter);