Queries-BibliothekNeue Beiträge aus WordPress RSS-Feed importieren
Neue Beiträge aus WordPress RSS-Feed importieren
Diese query importiert alle neuen Beiträge aus einem WordPress RSS-Feed und verwendet dabei Titel, Inhalt und Auszug des Beitrags.
Die neuen Beiträge sind jene, die in den letzten 24 Stunden erstellt wurden (per Variable konfigurierbar). Führe diese persistierte query mit einer täglichen Automatisierungsaufgabe aus, um automatisch alle neuen Beiträge von der anderen Website zu importieren.
Die Variable $url erhält die URL des RSS-Feeds des WordPress-Beitragsarchivs. In der Regel entspricht das der URL des Beitragsarchivs + "/feed/rss/?withoutcomments=1". Beispiel:
https://wordpress.com/blog/feed/rss/?withoutcomments=1Die Variable $timeDeltaInSeconds gibt an, ab wann ein Beitrag als neu gilt. Standardmäßig sind es 86400 Sekunden (d. h. ein Tag).
query GetTime(
$timeDeltaInSeconds: Int! = 86400
) {
now: _time
newPostsStartTime: _intSubtract(
from: $__now
subtract: $timeDeltaInSeconds,
)
@export(as: "newPostsStartTime")
}
query GetPostsFromRSSFeedAndExportData(
$url: URL!
)
@depends(on: "GetTime")
{
_sendHTTPRequest(input: {
url: $url,
method: GET
}) {
body
rssJSON: _strDecodeXMLAsJSON(
xml: $__body
alwaysArrayTagNames: [
"item",
],
)
@export(as: "rssJSON")
}
}
query CreatePostInputsFromRSSFeed
@depends(on: "GetPostsFromRSSFeedAndExportData")
{
items: _objectProperty(
object: $rssJSON,
by: { path: "rss.channel.item" }
)
inputs: _echo(value: $__items)
@underEachArrayItem(
passValueOnwardsAs: "item"
affectDirectivesUnderPos: [1, 2, 3, 4, 6]
)
@applyField(
name: "_objectProperty"
arguments: {
object: $item
by: { key: "pubDate" }
}
passOnwardsAs: "dateAsString"
)
@applyField(
name: "_strToTime",
arguments: {
string: $dateAsString
},
passOnwardsAs: "date"
)
@applyField(
name: "_greaterThanOrEquals",
arguments: {
value1: $date,
value2: $newPostsStartTime
},
passOnwardsAs: "isNewPost"
)
@unless(
condition: $isNewPost
)
@setNull
@if(
condition: $isNewPost
affectDirectivesUnderPos: [1, 2, 3, 4]
)
@applyField(
name: "_objectProperty"
arguments: {
object: $item
by: { key: "title" }
}
passOnwardsAs: "title"
)
@applyField(
name: "_objectProperty"
arguments: {
object: $item
by: { key: "content:encoded" }
}
passOnwardsAs: "content"
)
@applyField(
name: "_objectProperty"
arguments: {
object: $item
by: { key: "description" }
}
passOnwardsAs: "excerpt"
)
@applyField(
name: "_echo",
arguments: {
value: {
status: draft,
contentAs: {
html: $content
},
excerpt: $excerpt
title: $title
}
},
setResultInResponse: true
)
@arrayFilter
@export(as: "inputs")
}
mutation ImportNewPostsFromWordPressRSSFeed
@depends(on: "CreatePostInputsFromRSSFeed")
{
createPosts(inputs: $inputs) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
id
slug
date
status
content
excerpt
title
}
}
}