Adding images to scraping data (#157)

* Fredy now supports pulling the main Image from the listing and send it together with the usual information
This commit is contained in:
Christian Kellner
2025-08-30 21:21:34 +02:00
committed by GitHub
parent da743c8279
commit f0b146fd7f
26 changed files with 1141 additions and 1135 deletions

View File

@@ -1,32 +1,41 @@
import { markdown2Html } from '../../services/markdown.js';
import { getJob } from '../../services/storage/jobStorage.js';
import fetch from 'node-fetch';
import { normalizeImageUrl } from '../../utils.js';
export const send = ({ serviceName, newListings, notificationConfig, jobKey }) => {
const { priority, server, topic } = notificationConfig.find((adapter) => adapter.id === config.id).fields;
const job = getJob(jobKey);
const jobName = job == null ? jobKey : job.name;
const promises = newListings.map((newListing) => {
const message = `
Address: ${newListing.address}
Size: ${newListing.size.replace(/2m/g, '$m^2$')}
Price: ${newListing.price}
Link: ${newListing.link}`;
return fetch(server, {
Address: ${newListing.address}
Size: ${newListing.size == null ? 'N/A' : newListing.size.replace(/2m/g, '$m^2$')}
Price: ${newListing.price}
Link: ${newListing.link}`;
const headers = {
Title: newListing.title,
Priority: String(priority),
Tags: `${serviceName},${jobName}`,
Click: newListing.link,
};
if (newListing.image && typeof newListing.image === 'string') {
headers.Attach = normalizeImageUrl(newListing.image);
}
return fetch(`${server}/${topic}`, {
method: 'POST',
body: JSON.stringify({
topic: topic,
message: message,
title: newListing.title,
tags: [serviceName, jobName],
priority: parseInt(priority),
click: newListing.link,
}),
headers,
body: message,
});
});
return Promise.all(promises);
};
export const config = {
id: 'ntfy',
name: 'ntfy',