kopia lustrzana https://github.com/Stopka/fedicrawl
Porównaj commity
2 Commity
425abd5af0
...
87f5ddc8b1
Autor | SHA1 | Data |
---|---|---|
Štěpán Škorpil | 87f5ddc8b1 | |
Štěpán Škorpil | a8e6dbdb9d |
|
@ -6,10 +6,10 @@ import RobotsTxt from '../RobotsTxt/RobotsTxt.js'
|
|||
const schema = z.object({
|
||||
name: z.string().optional(),
|
||||
software: z.object({
|
||||
name: z.string(),
|
||||
version: z.string()
|
||||
name: z.string().nullable(),
|
||||
version: z.string().nullable()
|
||||
}),
|
||||
protocols: z.array(z.string()),
|
||||
protocols: z.array(z.string()).optional(),
|
||||
usage: z.optional(
|
||||
z.object({
|
||||
users: z.optional(
|
||||
|
|
|
@ -14,7 +14,12 @@ export const refreshNodeInfo = async (
|
|||
const nodeInfo = await retrieveDomainNodeInfo(node.domain, robotsTxt)
|
||||
return await updateNodeInfo(elastic, node, nodeInfo)
|
||||
} catch (error) {
|
||||
console.warn('Failed to update node info', error)
|
||||
return node
|
||||
console.warn('Failed to update node info, unsetting node', error)
|
||||
return await updateNodeInfo(elastic, node, {
|
||||
software: {
|
||||
name: null,
|
||||
version: null
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,6 +30,7 @@ export const createFeed = async (
|
|||
displayName: feedData.displayName,
|
||||
locked: feedData.locked,
|
||||
createdAt: feedData.createdAt.getTime(),
|
||||
refreshedAt: new Date().getTime(),
|
||||
foundAt: new Date().getTime(),
|
||||
fields: feedData.fields.map((field) => {
|
||||
return { name: field.name, value: field.value }
|
||||
|
|
|
@ -7,13 +7,26 @@ export const deleteOldFeeds = async (
|
|||
node: Node
|
||||
): Promise<number> => {
|
||||
await elastic.indices.refresh({ index: feedIndex })
|
||||
// delete by domain and (refreshedAt < node.refreshAttepmtedAt or refreshedAt=null)
|
||||
const result = await elastic.deleteByQuery({
|
||||
index: feedIndex,
|
||||
query: {
|
||||
bool: {
|
||||
must: [
|
||||
{ match: { domain: node.domain } },
|
||||
{ range: { refreshedAt: { lt: node.refreshAttemptedAt } } }
|
||||
{
|
||||
bool: {
|
||||
should: [
|
||||
{ range: { refreshedAt: { lt: node.refreshAttemptedAt } } },
|
||||
{
|
||||
bool: {
|
||||
must_not: { exists: { field: 'refreshedAt' } }
|
||||
}
|
||||
}
|
||||
],
|
||||
minimum_should_match: 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,11 +20,11 @@ export const updateFeed = async (
|
|||
followersCount: feedData.followersCount,
|
||||
followingCount: feedData.followingCount,
|
||||
statusesCount: feedData.statusesCount,
|
||||
lastStatusAt: feedData.lastStatusAt,
|
||||
lastStatusAt: feedData.lastStatusAt?.getTime(),
|
||||
description: feedData.description,
|
||||
displayName: feedData.displayName,
|
||||
locked: feedData.locked,
|
||||
createdAt: feedData.createdAt,
|
||||
createdAt: feedData.createdAt.getTime(),
|
||||
refreshedAt: new Date().getTime(),
|
||||
type: feedData.type,
|
||||
fields: feedData.fields.map((field) => {
|
||||
|
|
|
@ -23,8 +23,8 @@ export const updateNodeInfo = async (
|
|||
doc: {
|
||||
name: nodeInfo?.name,
|
||||
openRegistrations: nodeInfo?.openRegistrations,
|
||||
softwareName: nodeInfo?.software?.name?.toLocaleLowerCase(),
|
||||
softwareVersion: nodeInfo?.software?.version,
|
||||
softwareName: nodeInfo?.software?.name?.toLocaleLowerCase() ?? null,
|
||||
softwareVersion: nodeInfo?.software?.version ?? null,
|
||||
halfYearActiveUserCount: assertPositiveInt(
|
||||
nodeInfo?.usage?.users?.activeHalfyear
|
||||
),
|
||||
|
@ -40,6 +40,6 @@ export const updateNodeInfo = async (
|
|||
await getNode(elastic, node.domain),
|
||||
'Missing node after updating it'
|
||||
)
|
||||
console.info('Updated node info', { node })
|
||||
console.info('Updated node info', { resultNode })
|
||||
return resultNode
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue