-

@ a514ab3b:f39daf78
2025-03-18 00:22:21
https://blossom.primal.net/9dda1168339bc4d406f71bfafc95fa3dcb547e38ab7b4aead4610a8522bbc10b.mp4
-

@ a514ab3b:f39daf78
2025-03-18 00:10:38
Well done Fish npub.blossom.band... 🌸 🥁
https://npub15522kwl0kaf04t44xcvj6py5rhp9hzz936y5qlu48xacnuua4auqpc9emz.blossom.band/aedb5b9103f590499aef7ae8a4fa6391de0d21f08f920b34254485ab5221a250.png
-

@ a514ab3b:f39daf78
2025-03-16 02:35:55
@The Fishcake is on fire ジ https://image.nostr.build/578b7a5bb6daadb94f8d753111326360efc38e29621377e10447026fb0d627f7.jpg
-

@ a514ab3b:f39daf78
2025-03-16 02:02:17
nostr:npub1xtscya34g58tk0z605fvr788k263gsu6cy9x0mhnm87echrgufzsevkk5s says to write a banger note in replies but since treads are still alpha ッ
-

@ a514ab3b:f39daf78
2025-03-16 01:29:26
Got a little impatient so hello from Notedeck running on Debian proot-distro on phone with vnc https://image.nostr.build/78b500a5c4df252d758c274103ced3865bed1c3e3adfaa9861643c3cd2220867.jpg
-

@ a514ab3b:f39daf78
2025-03-11 22:51:50
Tamagochi, nostr style? Brb to wake up the kids :cheers_cat:
-

@ a514ab3b:f39daf78
2025-03-11 19:07:05
Ima zap the goats 🤣
-

@ a514ab3b:f39daf78
2025-03-11 15:13:31
#runstr + #wavlale 🔥
https://nostr-run-club.vercel.app/
nostr:nevent1qqsqxwrfce85ay5msd6fhru37qgqefmuglz9w94dytng23khdfe30jqpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtczyqcvadjwwvvh5pv43j9aj24s08yptw6yl0am866ajanv2grlpz7l2qcyqqqqqqgxua24p
-

@ a514ab3b:f39daf78
2025-03-10 10:06:06
Dunno. All of these apart from the first one run on phone fine plus the separate blossom for sometime now. Ditto is rinning on the arch distro with deno. Chorus is stopped for now.
https://haven.puhcho.me/2fab7f6ad195f98a01d031f0f377e487e8e400809c34cc30353b24bfc5170939.jpg
https://haven.puhcho.me/f8e99024227fa476b336bda4804d01a82611941a67af78137510fa7ba636bd03.jpg
https://haven.puhcho.me/8d1e222c24d5c87e4152efcb4ee58e1b3b3aaaad5066a35dc2376ba90d4d18ee.jpg
-

@ a514ab3b:f39daf78
2025-03-07 21:30:24
nostr:nprofile1qqswgvmv65ja7706f5a0xe8ajcqdfvgdeeppt2jvx0kh06sggg6ykyqpr3mhxue69uhkummnw3ezucnfw33k76twv4ezuum0vd5kzmqpramhxue69uhkummnw3ezuetfde6kuer6wasku7nfvuh8xurpvdjsz8thwden5te0wfjkccte9ehx7um5wgh8w6tjv4jxuet59e48qxuatmf
-

@ a514ab3b:f39daf78
2025-03-07 12:25:13
Yeah seems got picked up but minibits should be ok with these.
-

@ a514ab3b:f39daf78
2025-03-07 12:13:29
https://image.nostr.build/8749b0e7e1c794f024c8f8d64c24dab139115a76871dbab2580281c0705b5c89.png
➡️ https://memeamigo.lol/decode
-

@ a514ab3b:f39daf78
2025-03-06 13:48:03
Kiwi got deprecated in Jan. Still can find old vers.
Nowser works https://github.com/haorendashu/nowser
-

@ a514ab3b:f39daf78
2025-03-05 23:41:43
https://github.com/anton10xr/gibber-mcp
-

@ a514ab3b:f39daf78
2025-03-04 15:42:20
No prisoners, lfg 🔥🔥🔥
nostr:nevent1qqs286nd4e5w8qxqekjas4uy9cwnuz3k4x0yshzlkssry09a6cc8sccprfmhxue69uhkx6rjdahxjcmvv5h8qatgvd5x7tndv5hsygxya2awr03u7etmcxz4acz7d80f7pvuk7s9jgn3dzuqhztkrj7yuqpsgqqqqqqs48zdvu
-

@ a514ab3b:f39daf78
2025-02-19 14:51:52
Zap da zap da zap zap da nuts 🔥
-

@ a514ab3b:f39daf78
2025-02-19 13:03:20
🍕󠅓󠅑󠅣󠅘󠅥󠄲󠅠󠄷󠄶󠅤󠅔󠄢󠅘󠄠󠅔󠄸󠄲󠅪󠄿󠅙󠄨󠅦󠅉󠄢󠄶󠅪󠅑󠄸󠅅󠅥󠅓󠄸󠅆󠅟󠅉󠄢󠅘󠅦󠄼󠅝󠄡󠅜󠅉󠅈󠅆󠅚󠅓󠄢󠄶󠄠󠅉󠅈󠅃󠄲󠅟󠅝󠄶󠅠󠅃󠄱󠄴󠅏󠄡󠄹󠅥󠅀󠅈󠅣󠄝󠄱󠅉󠅈󠄳󠄳󠅠󠄷󠄶󠅘󠄱󠅝󠄶󠅪󠅕󠄵󠄲󠅘󠅉󠅄󠄶󠅘󠄾󠅇󠅆󠅚󠅊󠅇󠅂󠅙󠄾󠅪󠅛󠄤󠅊󠅄󠅘󠅛󠅉󠅝󠅂󠅝󠅊󠅝󠅊󠅚󠄿󠄴󠅘󠅚󠄾󠅄󠄲󠅚󠅊󠄴󠄾󠅘󠅉󠅇󠄹󠄡󠄽󠄷󠅅󠅪󠄿󠅇󠄺󠅘󠄾󠅚󠅜󠅝󠅉󠄢󠄶󠅙󠅉󠅚󠄾󠅚󠄿󠅄󠄽󠄥󠄽󠄢󠄾󠅚󠄾󠄷󠅊󠅚󠄾󠄢󠄶󠅙󠅉󠅪󠄵󠄡󠅉󠅇󠄾󠅉󠄹󠅁󠄻󠄻󠅁󠅄󠅈󠄠󠄽󠅂󠅓󠅜󠄤󠄺󠅡󠅪󠄝󠅀󠄷󠅇󠅁󠄳󠄨󠄣󠄱󠄣󠅦󠅗󠄡󠅁󠄸󠄸󠅇󠅘󠅗󠅊󠅊󠄝󠅇󠅦󠄩󠅞󠄽󠄷󠄝󠄢󠄶󠅛󠅟󠄢󠄶󠅜󠅇󠄳󠄳󠅛󠅜󠅠󠅚󠄷󠅟󠄸󠄶󠄴󠄵󠄽󠅦󠅘󠄹󠅗󠅑󠅪󠄩󠅂󠄿󠄿󠄱󠅀󠅀󠄲󠅀󠄨󠄤󠄩󠅪󠄡󠅜󠅝󠅨󠄣󠄠󠄻󠅘󠅆󠅜󠄲󠅈󠅝󠄶󠅪󠅇󠄳󠄲󠅞󠅘󠅝󠅅󠄡󠅔󠅉󠄲󠅦󠅢󠄩󠄴󠅄󠅄󠅕󠅄󠅡󠅡󠄹󠅒󠄺󠄹󠄡󠄣󠄡󠄡󠅛󠅗󠄨󠄽󠅅󠄥󠅕󠄣󠅇󠄽󠄾󠅉󠅞󠄦󠅡󠅢󠅝󠄶󠅩󠅇󠄳󠄱󠅒󠅉󠅑󠄸󠅂󠄺󠄽󠄹󠅤󠄵󠅊󠅅󠄠󠅨󠄱󠅂󠅉󠅆󠅃󠅈󠄶󠅚󠅓󠄾󠅠󠄥󠅒󠅅󠄹󠅀󠄥󠅂󠄹󠅆󠅥󠅞󠅤󠅣󠅥󠅥󠅏󠄠󠅑󠅂󠅘󠅉󠅁󠅘󠅘󠅓󠄣󠅘󠄱󠄾󠅄󠅜󠅝󠄽󠅚󠅉󠄡󠄾󠅪󠄱󠅧󠅉󠅪󠅜󠅝󠅊󠄴󠄾󠅘󠅊󠄴󠅉󠄡󠄾󠅪󠄽󠄠󠄾󠅄󠄶󠅙󠄽󠄢󠅅󠄥󠄾󠅄󠅛󠄠󠄽󠅚󠅗󠄡󠄽󠅚󠅓󠄣󠄽󠄷󠅊󠅜󠄾󠄴󠅆󠅜󠅊󠄷󠄹󠄡󠄽󠅚󠄺󠅛󠅉󠅝󠄵󠄥󠄾󠅪󠅛󠄠󠄾󠅄󠅅󠄢󠄽󠅝󠅉󠄤󠅊󠅚󠄵󠄠󠄿󠅇󠄶󠅚󠅇󠄳󠄵󠄳󠄿󠄱󠄧󠄵󠄡󠄴󠅤󠅕󠅘󠄱󠅝󠄾󠄴󠄴󠄾󠅇󠄠󠅩󠅊󠄧󠄺󠄨󠅅󠄶󠄽󠅅󠅄󠅣󠅤󠄥󠅑󠅨󠅣󠄷󠅊󠄴󠄠󠅑󠄶󠄢󠅩󠄺󠄥󠅘󠅊󠄻󠄾󠅘󠅊󠅆󠅗󠅗󠄴󠅥󠅃󠅀󠅇󠄹󠄺󠅠󠅀󠄹󠄢󠄱󠄡󠅜󠄨󠄡󠄦󠄶󠅝󠅠󠅈󠅞󠄧󠅃󠄡󠅨󠄴󠅞󠄵󠅘󠅨󠅇󠅜󠅗󠅒󠄠󠅜󠄷󠅙󠅏󠅊󠄣󠄡󠅘󠅓󠄡󠅗󠅗󠅠󠄻󠅆󠅗󠅟󠄶󠅧󠅧󠅏󠄧󠅩󠄵󠄼󠄨󠄳󠅂󠄵󠅄󠄠󠄸󠅔󠅁󠄴󠅓󠅘󠅄󠅖󠅉󠅥󠄷󠄶󠄽󠅖󠅩󠅆󠄽󠄥󠄩󠅞󠅑󠄴󠅩󠄡󠅘󠅓󠅜󠅗󠅗󠅚󠄹󠄡󠄸󠅧󠅓󠅞󠄾󠄿󠄶󠄺󠅧󠄺󠄣󠅅󠄡󠅝󠅟󠅗󠅒󠅅󠄤󠅀󠅓󠄷󠅧󠄺󠄼󠄷󠅅󠅪󠅘󠅏󠅁󠄹󠅆󠄩󠅡󠄠󠄶󠄺󠅀󠅜󠅘󠅊󠄸󠄺󠅄󠅊󠅇󠄥󠄠󠄹󠄷󠅊󠅩󠅒󠄢󠄠󠅗󠅄󠅇󠅜󠅥󠅑󠅇󠄺󠅠󠅔󠄸󠄽
-

@ a514ab3b:f39daf78
2025-02-11 17:04:23
Uhm, you need to publish on the onion exposed relays and/or spin 1-2 to be reliable. Clients who connect users to nostr through tor could manage. There are relays that relay between both anyway.
-

@ a514ab3b:f39daf78
2025-02-10 22:50:57
You guys are already using nostr events, some can be used to anounce working onions in tags the same way mints are anounced for wallets, up to clients or the mobile app to work with that. The source tag in the events already displays some usable ones from the last orders.
-

@ a514ab3b:f39daf78
2025-02-07 11:49:22
Bridge fucking ol 🔥🔥🔥
nostr:nevent1qqswpnlmv36q0ptu556kdgdmfrgjfdf4vgfjfpfj956rdjwfzwe9g7sppemhxue69uhkummn9ekx7mp0qgsdxm5qs0a8kdk6aejxew9nlx074g7cnedrjeggws0sq03p4s9khmqrqsqqqqqpl4ke2d
nostr:nevent1qqspccxd8yg4l00ftwta80unxvu9vlkr6nq8qfaxst6vqdgpsa2veuqppemhxue69uhkummn9ekx7mp0qgsdxm5qs0a8kdk6aejxew9nlx074g7cnedrjeggws0sq03p4s9khmqrqsqqqqqp5al8w3
-

@ a514ab3b:f39daf78
2025-01-31 16:33:23
Kiwis for canaries, meh.
-

@ a514ab3b:f39daf78
2025-01-28 20:24:53
Shopstr.store and https://plebeian.market/ have book categories although not audiobooks strictly but may do. If you publish on shopstr that shows in the marketplace tab of a nostr client that supports it like amethyst without the need to publish separately.
nostr:nprofile1qqs8qy3p9qnnhhq847d7wujl5hztcr7pg6rxhmpc63pkphztcmxp3wgpz9mhxue69uhkummnw3ezuamfdejj7qgmwaehxw309a6xsetxdaex2um59ehx7um5wgcjucm0d5hsz9nhwden5te0dehhxarjv4kxjar9wvhx7un89uqaujaz any plans you guys expand Alexandria to audiobooks?
-

@ a514ab3b:f39daf78
2025-01-28 19:49:15
Yes. But also if they are already hosted somewhere, most clients play directly most of the media links, posted in notes like this for example (first chapt of Treasure island on librivox). Eventually someone may make a specific audiobook client over nostr with dedicated nostr kind for this. But for now depending size and format you can upload them if you like to a blossom server, nostr.build , nostrcheck.me , cdn.satellite.earth etc.
https://www.archive.org/download/treasure_island_ap_librivox/treasure_island_01-02_stevenson_64kb.mp3
-

@ a514ab3b:f39daf78
2025-01-22 07:35:05
nostr:nevent1qqsy7jze4tpped684jhqmep2369jqv89rwfnwl0rlzppaevt00z3tgcpz9mhxue69uhkummnw3ezuamfdejj7q3qcmmswlckn82se7f2jeftl6ll4szlc6zzh8hrjyyfm9vm3t2afr7sxpqqqqqqzhh9xy7
https://freeross.org/
-

@ a514ab3b:f39daf78
2025-01-13 00:56:33
Ah chorus also supports blossom, nice.
-

@ a514ab3b:f39daf78
2025-01-06 19:27:11
Hey we don't mind a barn stream of sleeping goats either 🤣
-

@ a514ab3b:f39daf78
2025-01-04 15:41:06
https://v.nostr.build/4f56gooq9bSpNWNs.mp4
-

@ a514ab3b:f39daf78
2025-01-02 20:48:52
AntennaPod is fine
https://cdn.nostrcheck.me/743c5d5175ce1388aec4370f1a8f563a218cd11a69fa5d6af4e7f2c224e4990a.jpeg
-

@ a514ab3b:f39daf78
2024-12-31 09:54:26
https://blossom.puhcho.me/32148464d24bf8bd0cb618f97a74931a44e59136ee3f619e3fe248cb05b2f894.mp4
-

@ a514ab3b:f39daf78
2024-12-28 23:46:38
Bahahahah
https://cdn.nostrcheck.me/327badcadac0e0af4579e2f8159789a2a001351cd7ee8f2dbfabf86cc9cbf4e0.jpeg
https://cdn.nostrcheck.me/4c2f846e0bd1248e17ab7bc71a91b2dfa73a23bb01cf336e24183c4b9dd627a8.jpeg
nostr:nevent1qqsgew37ft2rjntmmyswcztm2kqstvvcz4ctkxj89064hkq7wntezncppemhxue69uhkummn9ekx7mp0qgsqght7u0cqpkg92pyx7vpcr9ekv0k6heahanxxwj2ll84a7x5mamqrqsqqqqqp82lfgj
-

@ a514ab3b:f39daf78
2024-12-15 15:24:13
nostr:naddr1qqjr2vfexvcxzvmy94nxgdny956xyerz95unscnp95mrvcehxe3nsvfcv5crgq3qeaz6dwsnvwkha5sn5puwwyxjgy26uusundrm684lg3vw4ma5c2jsxpqqqpmxwrfzm7z
nostr:nevent1qqstzxe3p3z6m5ku9d74wrh6wfpp37xxat23d0y55lwxzh9jtxhp3dgpzpmhxue69uhkummnw3ezumt0d5hsyg8nk6g7kefzsfu5ssfau8dyghud778nuaduuvhprt40tyj24xjuxypsgqqqqqqsgk0m7j
-

@ a514ab3b:f39daf78
2024-12-14 23:03:52
The best article about #nostr user experience for the last year, hands down 🤙
nostr:nevent1qqs0qfffnuan4jymuukdw9u7a4pj9hnwdd8zs44q3mxj05g2eu8jcdqprfmhxue69uhkx6rjdahxjcmvv5h8qatgvd5x7tndv5hsygrt7tfrjpyaqqspzf2pas2g3699zgh3xuph9xvaxpn720f3kgrgkupsgqqqqqqsjv96ep
-

@ a514ab3b:f39daf78
2024-12-14 22:03:35
https://youtu.be/BL5vUVQvmX4
-

@ a514ab3b:f39daf78
2024-12-13 15:33:06
nostr:nevent1qqswhctp7xw870k2qqj02wfnvaws79kmf2g2ntmwdd206u5r07rfm7spzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtczyp9udepuf2rvwepqsyz0erpwrr9n3fgtfwlza2kx82sedavga9chsqcyqqqqqqgqnm3dy
-

@ a514ab3b:f39daf78
2024-12-11 22:00:14
..
-

@ a514ab3b:f39daf78
2024-12-05 11:29:18
http://blossom.puhcho.me/1c01c7e3117aa537265787d3d489d6967f4cbfad1d443eee52e8a8dcee575d43.gif
-

@ a514ab3b:f39daf78
2024-12-04 18:24:56
If you make it longer, we may go nuts 🤙
nostr:nevent1qqsfvhuxr8rjf5ll48tecvyfsxlqyyqrqranegcfgfhfpyuxceflssgpzemhxue69uhksctkv4hzuur4dp3ksmewd4jj7q3qf49twdlzlw667r74jz6t06xxlemd8gp2j7g77l76easpl8jsltvqxpqqqqqqznf60g3
-

@ a514ab3b:f39daf78
2024-11-29 21:27:56
nostr:nevent1qqs8r37qwtmhct97jfzq34r68dvghftk39h3e7lsezrlha745m3mr2qpz4mhxue69uhksctkv4hzuur4dp3ksmewd4jsyg99zj4nhmah2ta2adfkryksf9qacfdcs3vw39q8l9fehwyl88d00qpsgqqqqs5s68rcr0
-

@ a514ab3b:f39daf78
2024-11-29 18:41:37
Oh I get it. Agree but it is a nice mobile convenience.
-

@ a514ab3b:f39daf78
2024-11-29 18:38:59
Btw teemux on the phone compiles amethyst pretty nicely. Hot but nice, going for the ocean 🤣
-

@ a514ab3b:f39daf78
2024-11-29 18:37:26
Like I said preference. Same opinion is about pronouns.
-

@ a514ab3b:f39daf78
2024-11-29 18:35:37
No prob. Termux is your fren +
https://github.com/hzrd149/blossom-server.git
There is blossom-drive as well if you want it. But with many nostr clients who support blossom like amethyst, nostomo and nostrudel, its up to a preference. Haven and chronicle relays also can run there which save the other bits, and support it.
-

@ a514ab3b:f39daf78
2024-11-29 18:28:28
Well I run one blossom on the phone as a true degen 🤣 thankful for the upstreams.
-

@ a514ab3b:f39daf78
2024-11-28 22:12:48
Yeah but catstrr first hahah
-

@ a514ab3b:f39daf78
2024-11-28 22:03:08
Where swarmstr go?
-

@ a514ab3b:f39daf78
2024-11-28 20:42:49
nostr:nprofile1qqs0r7dsn9k5ludlwhneunxg2a7gn6mr8e5yzhrl4a6v79aq00uqhkqpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszythwden5te0dehhxarj9emkjmn99uqsuamnwvaz7tmwdaejumr0dshsjxxttw you good?
-

@ a514ab3b:f39daf78
2024-11-27 17:28:23
One go as blossom.puhcho.me is configured to upstream to the others. I should put cdn.satellite.earth in there but I use it with an alt pub. Anyways 🌸💜
-

@ a514ab3b:f39daf78
2024-11-27 17:19:37
Lfg 🌸🔥
Uploaded to blossom, went to haven 🌊, and nostrcheck without the extention, fuck knows what hash is on primal 😂.
http://blossom.puhcho.me/3b3cd28aa8fd5f2f9dfad973c7cfe6a5e3f61f5d6e3600a2257f4300f4aa636d.jpeg
-

@ a514ab3b:f39daf78
2024-11-26 14:52:51
nostr:nprofile1qqsqgc0uhmxycvm5gwvn944c7yfxnnxm0nyh8tt62zhrvtd3xkj8fhgprdmhxue69uhkwmr9v9ek7mnpw3hhytnyv4mz7un9d3shjqgcwaehxw309ahx7umywf5hvefwv9c8qtmjv4kxz7gpzemhxue69uhhyetvv9ujumt0wd68ytnsw43z7s3al0v and this may help a bit:
https://github.com/nbd-wtf/go-nostr/tree/master/nip86
-

@ a514ab3b:f39daf78
2024-11-24 15:46:52
I'm still running an older vers of hostr but blossoms will be great. 5394, 93, 92 and so on...
https://github.com/studiokaiji/nostr-webhost/tree/main
-

@ a514ab3b:f39daf78
2024-11-22 20:48:04
Baths,amigo, baths.
https://image.nostr.build/441e33e2b465921c343088c8dbde7e8460d21966452d49b6cd0109e209759e7e.jpg
-

@ a514ab3b:f39daf78
2024-11-22 17:09:26
https://video.nostr.build/9f2a5e004bce4379af4d779fac9d15a3176d7b7d740f2f0c5dd55c973945e4ec.mp4
-

@ a514ab3b:f39daf78
2024-11-22 15:01:15
Amethyst 🌸 support incoming in 3,2,1 ... 🔥
Fyi cdn.nostrcheck.me and cdn.satellite.earth will do great in your options, plus if you run haven. As because I am too lazy to hop to the strudel and nostromo just for the blossom support. Btw if primal stops fucking up the hash, blossom.primal.net will do too. The whole point is to find the file everywhere and to get delivered no matter which one of the 🌸 works at the time.
nostr:nevent1qqs8gl8t88hvc90xcgnw6qmsm7xnf73mcg72l8r54h54q7ydgf7v3hsqcdk57
-

@ a514ab3b:f39daf78
2024-11-18 21:14:12
:rock_it:
https://cdn.satellite.earth/2f4f99c4277f5afcb9cc1f7ec2bd614f361e0b25878c3340931fd49e0d60e302.jpg
-

@ a514ab3b:f39daf78
2024-11-18 11:03:26
🍌
-

@ a514ab3b:f39daf78
2024-11-17 21:59:23
Bahahahah
-

@ a514ab3b:f39daf78
2024-11-15 15:40:58
https://v.nostr.build/dmrUxJ7eUEUrE5Hz.mp4
-

@ a514ab3b:f39daf78
2024-11-14 20:51:12
Anything that uses nostr-login really ( nostr.band , amethyst.social , hivetalk etc). The bunker url is buried in advanced though.
-

@ a514ab3b:f39daf78
2024-11-12 08:44:48
Update this to clients, edited on one, life goes on on another 🤣
-

@ a514ab3b:f39daf78
2024-11-11 10:44:34
My study shows that cats have 32 muscles in each ear to help them do exactly the above.
-

@ a514ab3b:f39daf78
2024-11-09 21:10:11
https://image.nostr.build/fd7daa50c22c5442f65f0bf6fea5fedf2a3d43428f1f062d436d14052d8a1614.png
-

@ a514ab3b:f39daf78
2024-11-04 20:27:53
🔥
nostr:nevent1qqsg2nc9xw0v7xw7vxzrzdhezzhyavkex9wgtzmdfkgpefzpq9gdu6spzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtczyze2pfgua0c0j0ws0dc7y8a4qzsjvuh24atndtv23vvhsq8tr2dnsqcyqqqqqqgum4z45
-

@ a514ab3b:f39daf78
2024-11-02 09:00:03
PV #catstr 🤘
nostr:nevent1qqs2chyt8768duf7rgmstyvrv4yaxhtxlc98eudfyckr8trcuvs9frgpzpmhxue69uhkummnw3ezumt0d5hsygy42sesjm72ygljnt0a22sv9hs850zjad5qlx6dn6mvgmv3jmz5pcpsgqqqqqqs4hmx80
-

@ a514ab3b:f39daf78
2024-10-31 19:45:01
"Access-Control-Allow-Methods": "GET,HEAD,PUT,POST,OPTIONS", "Access-Control-Allow-Headers": "Authorization, Content-Type"
-

@ a514ab3b:f39daf78
2024-10-31 19:32:55
🤙
https://haven.puhcho.me/302013b538527f37c86c836c87bcdbd9542a1865d5fdc9bac2d3375eee40aa02.jpg
-

@ a514ab3b:f39daf78
2024-10-29 11:07:53
nostr:nevent1qqsxsuldhc6y4x6raj6ygxtv9l8fw459evecvkrp9pnf2mg39pgrw5gppemhxue69uhkummn9ekx7mp0qgsf24pnp9hu5g3l9xkl654qct0q0g7996mgp7d5m84kc3ker9k9grsrqsqqqqqp8eetwq
-

@ a514ab3b:f39daf78
2024-10-27 17:38:17
Yes, now!
-

@ a514ab3b:f39daf78
2024-10-26 10:57:18
Catstrr looks great there nostr:nprofile1qqs0r7dsn9k5ludlwhneunxg2a7gn6mr8e5yzhrl4a6v79aq00uqhkqpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszythwden5te0dehhxarj9emkjmn99uqsuamnwvaz7tmwdaejumr0dshsjxxttw
nostr:nevent1qqsqqq84rcushjlhfkpg8xfve83fqpdccly46nmgncl4xncjkx73m3qpy9mhxue69uhhyetvv9ujumr90p5kuem5dahxy6t5vdhkjm3wdaexwtczyqalp33lewf5vdq847t6te0wvnags0gs0mu72kz8938tn24wlfze6qcyqqqqqqgx24mcc
-

@ a514ab3b:f39daf78
2024-10-19 17:37:23
🤣 nostr:nprofile1qqsypkaqscn69ukxnscrzenpfx6kw950qjvff2juggsr5wfq500gfqcpp4mhxue69uhkummn9ekx7mqpzamhxue69uhkummnw3ezuendwsh8w6t69e3xj7spz3mhxue69uhhyetvv9ujuerpd46hxtnfdutdru4a
-

@ a514ab3b:f39daf78
2024-10-19 16:21:22
Absolutely. Especially on government waters.
-

@ a514ab3b:f39daf78
2024-10-19 03:57:56
Different locations and ips each time depending nodes it connects to.
-

@ a514ab3b:f39daf78
2024-10-17 09:00:45
https://cdn.nostrcheck.me/1dee665e409f902037cd354ba751a6d23273cc7c65f58043f962f7e01cdc0777
-

@ a514ab3b:f39daf78
2024-10-15 07:15:27
nostr:nprofile1qqs0wa4ucy38r0nel3cmv40ne0lt829pd8enacfntlxqcg5znyqa5jsprdmhxue69uhhyetvv9ujumtpva5kxcmfw3ujumrfwejj7qg5waen5te0wfjkccte9ehx7um5wghxyee0qy2hwumn8ghj7un9d3shjtnwdaehgu3wvfnj7g263rs
-

@ a514ab3b:f39daf78
2024-10-14 14:03:54
Try to, microapps for different things, also the idea is for frens to get onboarded to nostr. Which reminds me onosendai and fanfares.io should be in there too.
-

@ a514ab3b:f39daf78
2024-10-14 09:35:20
Yeah that's my deck 🃏 the idea is from webcore.live but wanted straight easier management. I find the N fallback funnier and don't want an api.
https://image.nostr.build/9c281ac482006a564c2649bc66ad023f15f2da1a2d0247aaba656b28b33da8ae.jpg
-

@ a514ab3b:f39daf78
2024-10-13 04:33:17
Yes 🤣
https://image.nostr.build/a9b6d9d5f78b19ed5d292bbfa570a359a13af85a246a721bed6baa615ae5893f.jpg
-

@ a514ab3b:f39daf78
2024-10-08 18:06:00
nostr:naddr1qqjrxvf3x3jnve3k943nzepk956xzen994sngve495ukvdpk8qmkxcecx43x2q3qeaz6dwsnvwkha5sn5puwwyxjgy26uusundrm684lg3vw4ma5c2jsxpqqqpmxw7m6kla
-

@ a514ab3b:f39daf78
2024-10-07 12:14:27
https://cdn.satellite.earth/7d70aeb344a04b8185f34ec62aede724dd2571e28aa90ea6d9261cdf6c569857.gif
-

@ a514ab3b:f39daf78
2024-10-07 12:14:00
Second. They are already in gallery if shared. The ui would be good to have quote in note from that but amethyst is not there yet. So you just put the note id like this
nostr:nevent1qqstqfhggxlfdj7s8t03e6z85nep86dtrzand3f7ppdxck3lh088t6gprdmhxue69uhkg6t5w3hjuur4dp3ksmewd4jj7un9d3shjq3qj42rxzt0eg3r72ddl4f2psk7q73u2t4ksrumfk0td3rdjxtv2s8qxpqqqqqqzy8csdf
-

@ a514ab3b:f39daf78
2024-10-07 11:57:52
Catstr is very popular in the hosehold, also the mandalorian 🤣 then quoting the note id the gif is in from the gallery in a note, reply etc. If you already have a gif folder, that goes up easy. Or scraping tenor etc for old movies gifs and so on.
nostr:nevent1qqs0s2l0gj5xx9s3yv20q4xfkugqz5klrp790wmamumww5wve7aduaspy9mhxue69uhkxenjv4kxz7fwwp6kscmgduh8wmmjddjhyuewv3jhvtczyzj3f2ema7m4974wk5mpjtgyjswuykuggk8gjsrlj5umhz0nnkhhsqcyqqqqqqge6s7yn
-

@ a514ab3b:f39daf78
2024-10-07 11:44:28
Autoupload them to blossoms for the kids so they can send whatever they like to amethyst's gallery. Then note id etc.
https://video.nostr.build/94e07f0010d96c85d033e11b6cfa92ff82aa33769d9a089f3ce007be4454267f.mp4
-

@ a514ab3b:f39daf78
2024-10-05 21:34:36
nostr:nprofile1qqsp7utc64te4chwhsyst8suj8ung9x3uryu873gru7phfuujkwd2kgpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszrnhwden5te0dehhxtnvdakz7qg6waehxw309aex2mrp0yhxwctvw3ekwatvvd5zucmr9utjc7hj we need nostrava 🤙
nostr:nevent1qqsvx473hd495kj5amh0xl95ut9k9kwp5alvjgaqpxt08yx9k4mawwqpr9mhxue69uhhyetvv9ujumn0wd68ytnrdakjuct49upzq8m30r240xhza67qjpv7rjgljdq568svnsl69q0ncxa8nj2ee42eqvzqqqqqqyqytc8y
-

@ a514ab3b:f39daf78
2024-10-02 09:39:04
Mmm iris.to is becoming a goto client. Need cashu zaps.
https://image.nostr.build/445961ae98a7d9094240ca49cd85d571e4469b4b90fd078998a4f289a428303b.jpg
nostr:nevent1qqsgdl8wc4a35s2l4ey6y09wd348wq4nl5qvdjvl2sj34083n9s83kqpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsygz9ywl935u4kxced2dceq4s8zmgjh9s9d5r6rp98224q6xm58av6qpsgqqqqqqs6k9u0y
-

@ a514ab3b:f39daf78
2024-09-30 10:40:07
Me, playing with enhanced rss to listen to frens pubs from the podcasts apps and zap them from there(pulls the lud16).
Some podcast apps are... that is not just for e mail, bitch. Catch the f up.
nostr:nevent1qqsdpakeyfjv555krhcwufp46948a5sa38yk8nzlxze3va98586np9gpzpmhxue69uhkummnw3ezumt0d5hsyg89fn7azqc90hdl92j7m2uspg0dhjyzqk3lrjhl289dvzu7s66n8spsgqqqqqqs85r48k
nostr:nevent1qqsr672g6950r3rkr7vcuzasl22p5033fd226qudrf40s6ppttac8zcpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtczyrj5elw3qvzhmklj4f0d4wgq58kmezpqtgl3etl4rjkkpw0gddfncqcyqqqqqqg4q4gtr
-

@ a514ab3b:f39daf78
2024-09-30 10:05:58
Starting with basics #onosendai
https://v.nostr.build/q4pb1nHAyEFugCR3.mp4
-

@ a514ab3b:f39daf78
2024-09-29 09:33:10
Hello from https://lumilumi.vercel.app/
https://nostrcheck.me/media/955433096fca223f29adfd52a0c2de07a3c52eb680f9b4d9eb6c46d9196c540e/d57d9a372276cb57c5ba7503fe6dc30d6e06c12e11d464f8a90df7f360a8f4cd.mp4
-

@ a514ab3b:f39daf78
2024-09-25 18:55:05
The relay, THE RELAY 🤣🔥
nostr:nevent1qqstdeudu2kfw55eueeyzmcq9tng76wpr32s7xtxhvwk84udwrgztaqpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtczyrclnvyed48lr0m4u70yejzh0jy7kce7dpq4cla0wn830grmlq9asqcyqqqqqqgew9h0m
-

@ a514ab3b:f39daf78
2024-09-24 22:41:18
Flare.pub for music videos.
Fanfares.io for podccasting (mp3 supports etc)
You can host yoyr files on cdn.satellite.earth (small sat fee per GB/month) and post the links in nostr notes or elsewhere.
-

@ a514ab3b:f39daf78
2024-09-23 06:49:17
Yeah I don't care about some dickhead that every now and then discovers spamster or makes one, I like the reply girls that are a fan of nostr:nprofile1qqsr9cvzwc652r4m83d86ykplrnm9dg5gwdvzzn8ameanlvut35wy3gpzpmhxue69uhkummnw3ezuamfdejsz9rhwden5te0wfjkccte9ejxzmt4wvhxjmcpz4mhxue69uhhyetvv9ujumt0wd68ytnsw43qdwkdtx and blossom up the ai response (the primal one). Now that's an effort hahah.
https://image.nostr.build/a7e76025376f2266935313b80145eb582ef2c69c27cc14c89786e6514b00fa38.jpg
-

@ a514ab3b:f39daf78
2024-09-18 20:55:05
Ahaha gotta love nostr. nostr:nprofile1qqspcxtmzt9feczptdcwwszmjac0pmrtena4nvetvw406sktyshpvssprdmhxue69uhhw6r9v96zu6rpwpc8jarpwejhym3wvdhj7qg4waehxw309aex2mrp0yhxgctdw4eju6t09uqsuamnwvaz7tmwdaejumr0dshsm8xw8z check this out. Wanted to play with nostr:nprofile1qqsw2n8a6yps2lwm7249ak4eqzs7m0ygypdr789075w26c9eap44x0qpzpmhxue69uhkummnw3ezumt0d5hsz9thwden5te0wfjkccte9ejxzmt4wvhxjme0qy88wumn8ghj7mn0wvhxcmmv9upz06yf nostr-rss (which nostter.app uses, but could be used with any web nostr client) to turn some(any) pubs rss(with media in notes) to be used by podbean and podcast republic which handle video (antennapod trots the m3u8 support as well so meh) and now you are on my podbean playlist so keep the good stuff coming 🤣🤙 Sharing from the pod apps to oxchat and geting the dms on amethyst is 🔥
https://cdn.satellite.earth/7863513e4d61f7eeb52ba1c9c83070ac57264616bcbc2ec9432b9680da506180.mp4
-

@ a514ab3b:f39daf78
2024-09-17 08:13:28
```
import { NSecSigner, NRelay1, NSchema as n } from '@nostrify/nostrify';
import { BlossomUploader } from '@nostrify/nostrify/uploaders';
import * as nip19 from 'nostr-tools/nip19';
// Helper function to convert a hex string to Uint8Array
function hexToUint8Array(hex: string): Uint8Array {
if (hex.length % 2 !== 0) {
throw new Error("Hex string must have an even length");
}
const array = new Uint8Array(hex.length / 2);
for (let i = 0; i < hex.length; i += 2) {
array[i / 2] = parseInt(hex.substr(i, 2), 16);
}
return array;
}
// Function to read uploaded files from JSON
async function readUploadedFiles(uploadedFilesPath: string): Promise<Set<string>> {
try {
const data = await Deno.readTextFile(uploadedFilesPath);
return new Set(JSON.parse(data));
} catch {
return new Set();
}
}
// Function to write uploaded files to JSON
async function writeUploadedFiles(uploadedFiles: Set<string>, uploadedFilesPath: string) {
await Deno.writeTextFile(uploadedFilesPath, JSON.stringify(Array.from(uploadedFiles)));
}
// Function to append a URL to a text file
async function appendUrlToFile(fileUrl: string, urlFilePath: string) {
try {
await Deno.writeTextFile(urlFilePath, fileUrl + '\n', { append: true });
console.log(`Appended URL to file: ${fileUrl}`);
} catch (error) {
console.error('Error appending URL to file:', error);
}
}
// Function to sign, parse, and upload a media file
async function signAndUploadMedia(
filePath: string,
uploadedFiles: Set<string>,
urlFilePath: string,
signer: NSecSigner,
relays: { relay: NRelay1; url: string }[]
) {
try {
// Check if the file has already been uploaded
if (uploadedFiles.has(filePath)) {
console.log(`File ${filePath} has already been uploaded. Skipping.`);
return;
}
// Get the public key from the signer
const pubkey = await signer.getPublicKey();
// Initialize the uploader
const uploader = new BlossomUploader({
servers: [
'https://cdn.satellite.earth',
'https://nstore.nostrver.se',
'https://blossom.puhcho.me',
'https://blossom.primal.net',
'https://cdn.nostrcheck.me'
],
signer: signer,
});
// Read the file
const fileBuffer = await Deno.readFile(filePath);
const file = new File([fileBuffer], filePath.split('/').pop()!);
// Upload the file and get the tags
const tags = await uploader.upload(file);
// Find the URL in the tags
let fileUrl = 'Unknown URL';
for (const tag of tags) {
if (tag[0] === "url" && tag[1]) {
fileUrl = tag[1];
break;
}
}
// Append the URL to the text file
await appendUrlToFile(fileUrl, urlFilePath);
// Create event data
const eventData = {
kind: 1,
content: `${fileUrl}`,
tags: tags,
created_at: Math.floor(Date.now() / 1000),
};
// Sign the event to get id and sig
const signedEvent = await signer.signEvent(eventData);
const completeEventData = {
...eventData,
id: signedEvent.id,
pubkey: pubkey,
sig: signedEvent.sig,
};
// Parse and validate the complete event data using NSchema
const event = n.event().parse(completeEventData);
console.log('Parsed and validated event:', event);
// Send the event to each relay
for (const { relay, url } of relays) {
try {
console.log(`Sending event to relay ${url}`);
await relay.event(event);
console.log(`Event sent successfully to ${url}`);
} catch (error) {
console.error(`Error sending event to relay ${url}:`, error);
} finally {
try {
await relay.close();
console.log(`Relay ${url} closed`);
} catch (closeError) {
console.error(`Error closing relay ${url}:`, closeError);
}
}
}
// Add the file to the uploaded files set and update the JSON file
uploadedFiles.add(filePath);
await writeUploadedFiles(uploadedFiles, './uploaded_files.json');
console.log("Done!");
} catch (error) {
console.error('Error signing and uploading media:', error);
}
}
// Function to select a random valid file from a folder
async function getRandomValidFileFromFolder(folderPath: string, uploadedFiles: Set<string>): Promise<string | null> {
const validExtensions = ['jpg', 'mp4', 'webp', 'gif'];
const files: string[] = [];
for await (const dirEntry of Deno.readDir(folderPath)) {
if (dirEntry.isFile) {
const extension = dirEntry.name.split('.').pop()?.toLowerCase();
if (extension && validExtensions.includes(extension)) {
files.push(dirEntry.name);
}
}
}
// Filter out files that have already been uploaded
const unuploadedFiles = files.filter(file => !uploadedFiles.has(`${folderPath}/${file}`));
if (unuploadedFiles.length === 0) {
console.log('All files have been uploaded. Selecting a random URL to publish.');
return null;
}
const randomIndex = Math.floor(Math.random() * unuploadedFiles.length);
return `${folderPath}/${unuploadedFiles[randomIndex]}`;
}
// Function to publish a Nostr event with a random URL
async function publishRandomUrlEvent(urlFilePath: string, signer: NSecSigner, relays: { relay: NRelay1; url: string }[]) {
try {
const urls = (await Deno.readTextFile(urlFilePath)).trim().split('\n');
if (urls.length === 0) {
console.error('No URLs found in the URL file.');
return;
}
const randomUrl = urls[Math.floor(Math.random() * urls.length)];
// Create event data
const eventData = {
kind: 1,
content: `${randomUrl}`,
tags: [],
created_at: Math.floor(Date.now() / 1000),
};
// Sign the event to get id and sig
const signedEvent = await signer.signEvent(eventData);
const completeEventData = {
...eventData,
id: signedEvent.id,
pubkey: await signer.getPublicKey(),
sig: signedEvent.sig,
};
// Parse and validate the complete event data using NSchema
const event = n.event().parse(completeEventData);
console.log('Parsed and validated event:', event);
for (const { relay, url } of relays) {
try {
console.log(`Sending event to relay ${url}`);
await relay.event(event);
console.log(`Event sent successfully to ${url}`);
} catch (error) {
console.error(`Error sending event to relay ${url}:`, error);
} finally {
try {
await relay.close();
console.log(`Relay ${url} closed`);
} catch (closeError) {
console.error(`Error closing relay ${url}:`, closeError);
}
}
}
console.log("Published random URL event successfully!");
} catch (error) {
console.error('Error publishing random URL event:', error);
}
}
// Main function to execute the script
async function main() {
const hexSecretKey = Deno.env.get('SECRET_KEY_HEX');
if (!hexSecretKey) {
console.error('Environment variable "SECRET_KEY_HEX" is not set.');
Deno.exit(1);
return;
}
const secretKey: Uint8Array = hexToUint8Array(hexSecretKey);
// Initialize the signer with your secret key
const signer = new NSecSigner(secretKey);
// Define the relay URLs
const relayUrls = [
'wss://nostr.mom',
'wss://nos.lol',
'wss://relay.primal.net',
'wss://e.nos.lol',
'wss://relay.damus.io',
'wss://nostr.lu.ke',
'wss://nostr.oxtr.dev',
'wss://relay.nostrcheck.me',
'wss://nostr.data.haus',
'wss://ditto.puhcho.me/relay',
'wss://offchain.pub',
'wss://strfry.iris.to'
];
// Create an array of NRelay1 instances with their URLs
const relays = relayUrls.map(url => ({ relay: new NRelay1(url), url }));
// Path to the JSON file that stores uploaded files
const uploadedFilesPath = './home/user/test_bloom/uploaded_files.json';
// Path to the text file that stores uploaded URLs
const urlFilePath = './home/user/test_bloom/uploaded_urls.txt';
// Example usage
const folderPath = Deno.env.get('MEDIA_FOLDER_PATH');
if (folderPath) {
try {
const uploadedFiles = await readUploadedFiles(uploadedFilesPath);
const randomFilePath = await getRandomValidFileFromFolder(folderPath, uploadedFiles);
if (randomFilePath) {
await signAndUploadMedia(randomFilePath, uploadedFiles, urlFilePath, signer, relays);
} else {
await publishRandomUrlEvent(urlFilePath, signer, relays);
}
} catch (error) {
console.error('Error during execution:', error);
} finally {
Deno.exit();
}
} else {
console.error('Environment variable "MEDIA_FOLDER_PATH" is not set.');
Deno.exit(1);
}
}
// Execute main function
main();
```
Better as it was uploading to just one blossom.
-

@ a514ab3b:f39daf78
2024-09-14 11:32:27
Yo, my favorite new blossom+deno to nostr shit is to scrape tenor #catstr gifs and 🌸 them up now that nostrcheck is in as well, thanks to nostr:nprofile1qqszv6q4uryjzr06xfxxew34wwc5hmjfmfpqn229d72gfegsdn2q3fgpz9mhxue69uhkummnw3ezuamfdejj7qg6waehxw309ahx7um5wgh8g6r9wdsk6etrv96zu6t09uqsuamnwvaz7tmwdaejumr0dshs9h69jx nostr:nprofile1qqsqgc0uhmxycvm5gwvn944c7yfxnnxm0nyh8tt62zhrvtd3xkj8fhgprdmhxue69uhkwmr9v9ek7mnpw3hhytnyv4mz7un9d3shjqgcwaehxw309ahx7umywf5hvefwv9c8qtmjv4kxz7gpzemhxue69uhhyetvv9ujumt0wd68ytnsw43z7s3al0v and the heads up of nostr:nprofile1qqsgdp0taan9xwxadyc79nxl8svanu895yr8eyv0ytnss8p9tru047qpp4mhxue69uhkummn9ekx7mqpz3mhxue69uhhyetvv9ujuerpd46hxtnfduq3qamnwvaz7tmwdaehgu3wwa5kuegzls3js instagram script.
nostr:nevent1qqsq5t4scgw95pma9w0gk8tk0j5t07mu9lel3qv4ssa7p40a95gg5fgpzfmhxue69uhkummnw3ezumr49e4k2tczyz24gvcfdl9zy0ef4h749gxzmcr683fwk6q0ndxeadkydkged32quqcyqqqqqqg3phnsz
```
import { NSecSigner, NRelay1, NSchema as n } from '@nostrify/nostrify';
import { BlossomUploader } from '@nostrify/nostrify/uploaders'; import * as nip19 from 'nostr-tools/nip19'; // Helper function to convert a hex string to Uint8Array function hexToUint8Array(hex: string): Uint8Array { if (hex.length % 2 !== 0) { throw new Error("Hex string must have an even length"); } const array = new Uint8Array(hex.length / 2); for (let i = 0; i < hex.length; i += 2) { array[i / 2] = parseInt(hex.substr(i, 2), 16); } return array; } // Retrieve the secret key from an environment variable const hexSecretKey = Deno.env.get('SECRET_KEY_HEX');
if (!hexSecretKey) { throw new Error('Environment variable "SECRET_KEY_HEX" is not set.'); } const secretKey: Uint8Array = hexToUint8Array(hexSecretKey); // Initialize the signer with your secret key const signer = new NSecSigner(secretKey);
// Define the relay URLs
const relayUrls = [
'wss://nostr.mom', 'wss://nos.lol', 'wss://relay.primal.net', 'wss://e.nos.lol', 'wss://relay.nostr.band' ];
// Create an array of NRelay1 instances const relays = relayUrls.map(url => new NRelay1(url)); // Path to the JSON file that stores uploaded files
const uploadedFilesPath = './uploaded_files.json'; // Function to read uploaded files from JSON async function readUploadedFiles(): Promise<Set<string>> {
try { const data = await Deno.readTextFile(uploadedFilesPath); return new Set(JSON.parse(data)); } catch { return new Set();
} }
// Function to write uploaded files to JSON
async function writeUploadedFiles(uploadedFiles: Set<string>) { await Deno.writeTextFile(uploadedFilesPath, JSON.stringify(Array.from(uploadedFiles))); }
// Function to sign, parse, and upload a media file async function signAndUploadMedia(filePath: string, uploadedFiles: Set<string>) { try {
// Check if the file has already been uploaded if (uploadedFiles.has(filePath)) {
console.log(`File ${filePath} has already been uploaded. Skipping.`); return; }
// Get the public key from the signer const pubkey = await signer.getPublicKey();
// Initialize the uploader const uploader = new BlossomUploader({
servers: [ 'https://cdn.satellite.earth',
'https://nstore.nostrver.se',
'https://blossom.puhcho.me',
'https://blossom.primal.net', 'https://files.v0l.io/', 'https://cdn.nostrcheck.me' ],
signer: signer, // Use the signer for authentication
}); // Read the file const fileBuffer = await Deno.readFile(filePath);
const file = new File([fileBuffer], filePath.split('/').pop()!);
// Upload the file and get the tags const tags = await uploader.upload(file);
// Find the URL in the tags let fileUrl = 'Unknown URL';
for (const tag of tags) {
if (tag[0] === "url" && tag[1]) {
fileUrl = tag[1];
break; } } // Create event data
const eventData = { kind: 1,
content: `${fileUrl}`,
tags: tags, created_at: Math.floor(Date.now() / 1000), };
// Sign the event to get id and sig
const signedEvent = await signer.signEvent(eventData);
const completeEventData = {
...eventData, id: signedEvent.id, pubkey: pubkey, sig: signedEvent.sig,
};
// Parse and validate the complete event data using NSchema
const event = n.event().parse(completeEventData); console.log('Parsed and validated event:', event);
// Send the event to each relay for (const relay of relays) { console.log('Sending event to relay:', relay); console.log(await relay.event(event));
await relay.close(); } // Add the file to the uploaded files set and update the JSON file uploadedFiles.add(filePath); await writeUploadedFiles(uploadedFiles);
console.log("Done!");
} catch (error) {
console.error('Error signing and uploading media:', error);
} } // Function to select a random valid file from a folder
async function getRandomValidFileFromFolder(folderPath: string, uploadedFiles: Set<string>): Promise<string | null> { const validExtensions = ['jpg', 'mp4', 'webp', 'gif']; const files: string[] = []; for await (const dirEntry of Deno.readDir(folderPath)) { if (dirEntry.isFile) {
const extension = dirEntry.name.split('.').pop()?.toLowerCase(); if (extension && validExtensions.includes(extension)) { files.push(dirEntry.name); } }
} // Filter out files that have already been uploaded const unuploadedFiles = files.filter(file => !uploadedFiles.has(`${folderPath}/${file}`));
if (unuploadedFiles.length === 0) { console.error('No unuploaded valid files found. Please add new JPG, MP4, or WEBP files.');
return null; } const randomIndex = Math.floor(Math.random() * unuploadedFiles.length);
return `${folderPath}/${unuploadedFiles[randomIndex]}`;
}
// Example usage
const folderPath = Deno.env.get('MEDIA_FOLDER_PATH');
if (folderPath) { readUploadedFiles().then((uploadedFiles) => {
getRandomValidFileFromFolder(folderPath, uploadedFiles).then((randomFilePath) => { if (randomFilePath) {
signAndUploadMedia(randomFilePath, uploadedFiles);
}
});
});
} else {
console.error('Environment variable "MEDIA_FOLDER_PATH" is not set.');
}
```
Also puts amethyst gallery to good use:
https://v.nostr.build/ICPPrle8VODjFOPV.mp4
-

@ a514ab3b:f39daf78
2024-09-08 11:40:41
Shinoa is playing.
nostr:nevent1qqsf6d4699lfm3fjp9lwzw0ua59ka65hv05cr85nf83y0addkl6q2lqpzpmhxue69uhkummnw3ezumt0d5hsygztc7vzcnhyq79j4kjngzhxw0cc6wm2ve93l9lg6eueucr5edwrn5psgqqqqqqsfazdz3
-

@ a514ab3b:f39daf78
2024-09-08 04:36:03
Nah, just for that 1.23.0 is fine.
-

@ a514ab3b:f39daf78
2024-09-08 04:27:08
Termux
-

@ a514ab3b:f39daf78
2024-09-08 04:23:40
Citrine is ok.
-

@ a514ab3b:f39daf78
2024-09-08 04:19:43
Running utxo's relay on the phone to see how it will "go". The go vers was too up, and had to change the db to sqlite, but overall ok. Khartu runs well there, could be onioned, changed some prefered relays 🤙
https://image.nostr.build/b1ce886834915ce4c4f806e207758b136f05935da1479b7b70a56997ca0ec365.jpg
-

@ a514ab3b:f39daf78
2024-09-07 14:46:09
Gone fishing today as amethyst words block certain thing but the spam in notifications is still there so here we go 🤣
The first uses nak to stream the random spawn pubs that irritate my notifications to quote the same post and get their npub, the second spams them back with 1984 reports on a cronjob every 3 min (maybe should be less). Not bad if the relay ops take note.
Yah I know I could have pulled the relay list but just plugged in the ones that annoy me in the weekend.
So if you see my post somethink like 🐟 ○o。. that is bait so ignore unless you want to reply 🤣
https://i.nostr.build/qBD3oOfRN2U1FGqJ.jpg
https://i.nostr.build/wcvOw40gqMYI26KT.jpg
https://i.nostr.build/rEaBZMIBTRO6dDoJ.jpg
nostr:nevent1qqsrx6pgevh8v55gwjmsxz2hlzjqmx7heclewky2dcngdh82mj4fy0cpzfmhxue69uhkummnw3ezumr49e4k2tczyz24gvcfdl9zy0ef4h749gxzmcr683fwk6q0ndxeadkydkged32quqcyqqqqqqgm9h6g7
-

@ a514ab3b:f39daf78
2024-09-01 08:24:51
Amethyst. Just open the pic post itself. The geotag is there.
-

@ a514ab3b:f39daf78
2024-09-01 06:37:20
London is London.
https://image.nostr.build/6dd28566e92bc814d496e126bc565a76ec0dd454ea4799e6e27bfb8b3dadb2ec.jpg