fix time comparison bug, add dry run to avoid spamming relays
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user