fix time comparison bug, add dry run to avoid spamming relays

This commit is contained in:
2023-11-24 10:25:12 -05:00
parent 3ffaaa3412
commit f7c6034fb0
538 changed files with 91995 additions and 13 deletions
+21 -11
View File
@@ -3,6 +3,7 @@ import { SSMClient, GetParameterCommand, PutParameterCommand } from '@aws-sdk/cl
import { extract } from '@extractus/feed-extractor'
import NDK, { NDKEvent, NDKPrivateKeySigner } from '@nostr-dev-kit/ndk'
import bech32 from 'bech32-buffer'
import moment from 'moment'
const toHexString = nsec => {
let buffer = bech32.decode(nsec).data
@@ -19,6 +20,11 @@ export const handler = async (event) => {
const feed = event.feedUrl
const privkey = toHexString(event.nostrNsec)
const lastRunTimeParam = event.lastRunTimeParam
const dryrun = event.dryRun
if (dryrun) {
console.log("Dry run. Simulating publishes to nostr.")
}
let response = {
totalItems: 0,
@@ -32,9 +38,10 @@ export const handler = async (event) => {
}
const ssmGetCommand = new GetParameterCommand(params);
let since = ""
let since = new Date()
ssmClient.send(ssmGetCommand)
.then(data => {
console.log("Using since date:", data.Parameter.Value)
since = data.Parameter.Value
}).catch(err => {
console.error(err)
@@ -76,26 +83,29 @@ export const handler = async (event) => {
return response
})
let filtered = rss.entries.filter(item => Date.parse(item.published) >= Date.parse(since))
let filtered = rss.entries.filter(item => moment(item.published).isAfter(since))
response.totalItems = filtered.length
for (let item of filtered) {
let ndkEvent = new NDKEvent(ndk, {
kind: 1,
pubkey: user.hexpubkey,
content: item.title,
content: `${item.description}\n${item.link}`,
created_at: Math.floor(Date.now() / 1000),
})
try {
const published = await ndkEvent.publish()
if (published) {
response.successes++
}
} catch(e) {
console.error(e)
response.errors.push(e)
if (dryrun) {
response.successes++
continue
}
await ndkEvent.publish()
.then(() => {
response.successes++
}).catch(err => {
console.error(err)
response.errors.push(err)
})
}
params.Name = lastRunTimeParam