{{- $author := index .Site.Data ((or .Params.author .Site.Author.default.user) | default "default") -}} {{- $feeds := slice -}} {{- if $author.webring.rss -}} {{- range $key, $value := (seq 3) -}} {{- range $author.webring.rss -}} {{- with resources.GetRemote . -}} {{- with .Err -}} {{- warnf "Feed fetch %s" . -}} {{- end -}} {{- end -}} {{- with resources.GetRemote . | transform.Unmarshal -}} {{- $title := "No Title Found" -}} {{- $link := "https://example.com/link" -}} {{- $description := "No description found." -}} {{- $content := "No content found." -}} {{- $sourceTitle := "No source title found" -}} {{- $sourceLink := "https://example.com/" -}} {{- $sourceDescription := "No source description found." -}} {{- $date := now.Format "2006-01-02T15:04:05Z" -}} {{- $enclosure := "" -}} {{- with .channel -}} {{- $sourceTitle = .title -}} {{- $sourceDescription = .description -}} {{- if reflect.IsSlice .link -}} {{- if reflect.IsMap (index .link 0) -}} {{- $sourceLink = index (index .link 0) "-href" -}} {{- else -}} {{- $sourceLink = index .link 0 -}} {{- end -}} {{- else -}} {{- $sourceLink = .link -}} {{- end -}} {{- with .item -}} {{- if reflect.IsMap . -}} {{- $title = index . "title" -}} {{- $link = index . "link" -}} {{- $date = index . "pubDate" -}} {{- else -}} {{- range first $value . -}} {{- $description = .description -}} {{- $content = .description -}} {{- $title = .title -}} {{- $link = .link -}} {{- $date = .pubDate -}} {{- with .enclosure -}} {{- $enclosure = index . "-url" -}} {{- end -}} {{- end -}} {{- end -}} {{- end -}} {{- if not $date -}} {{- $date = .lastBuildDate -}} {{- end -}} {{- else -}} {{- with .link -}} {{- $sourceLink = index (index . 0) "-href" -}} {{- end -}} {{- with .subtitle -}} {{- if reflect.IsMap . -}} {{- $sourceDescription = index . "#text" -}} {{- else -}} {{- $sourceDescription = . -}} {{- end -}} {{- end -}} {{- with .title -}} {{- if reflect.IsMap . -}} {{- $sourceTitle = index . "#text" -}} {{- else -}} {{- $sourceTitle = . -}} {{- end -}} {{- end -}} {{- with .entry -}} {{- range first $value . -}} {{- $date = .updated -}} {{- with .link -}} {{- if reflect.IsMap . -}} {{- $link = index . "-href" -}} {{- else -}} {{- if reflect.IsMap (index . 0) -}} {{- $link = index (index . 0) "-href" -}} {{- else -}} {{- $link = . -}} {{- end -}} {{- end -}} {{- end -}} {{- with .title -}} {{- if reflect.IsMap . -}} {{- $title = index . "#text" -}} {{- else -}} {{- $title = . -}} {{- end -}} {{- end -}} {{- with .content -}} {{- $content = index . "#text" -}} {{- end -}} {{- with .summary -}} {{- $description = index . "#text" -}} {{- end -}} {{- with .group -}} {{- $description = .description -}} {{- $content = index .content "#text" -}} {{- $enclosure = index .thumbnail "-url" -}} {{- end -}} {{- end -}} {{- end -}} {{- end -}} {{- /* Common time zone typos. */ -}} {{- $date = strings.Replace $date "G6T" "GST" -}} {{- /* If missing seconds split and try again. */ -}} {{- if lt (len (split $date ":")) 3 -}} {{- $date = delimit (first 3 (after 1 (split $date " "))) " " -}} {{- end -}} {{ $feeds = $feeds | append (dict "FeedContent" ($content | plainify | htmlUnescape) "FeedContentShort" (delimit (first 2 (split ($content | plainify | htmlUnescape) "\n")) " " | truncate 250) "FeedDate" ($date | plainify | htmlUnescape | time.Format "January 2, 2006") "FeedDateTime" ($date | plainify | htmlUnescape | time.Format "2006-01-02T15:04:05Z") "FeedDateTitle" ($date | plainify | htmlUnescape | time.Format "Monday, January 2 2006 at 15:04:05 MST") "FeedDescription" ($description | plainify | htmlUnescape) "FeedDescriptionShort" (delimit (first 2 (split ($description | plainify | htmlUnescape) "\n")) " " | truncate 250) "FeedEnclosure" ($enclosure | plainify | htmlUnescape) "FeedLink" ($link | plainify | htmlUnescape) "FeedName" (delimit ((delimit (first 2 (split ($sourceTitle | plainify | htmlUnescape) " ")) " ") | findRE "^([^.|?|!|\n|\"|]+)") " " | replaceRE "[^a-zA-Z ]" "") "FeedSourceDescription" ($sourceDescription | plainify | htmlUnescape) "FeedSourceDomain" (($sourceLink | plainify | htmlUnescape | urls.Parse).Host) "FeedSourceLink" ($sourceLink | plainify | htmlUnescape) "FeedSourceTitle" ($sourceTitle | plainify | htmlUnescape) "FeedTitle" ($title | plainify | htmlUnescape) ) -}} {{- end -}} {{- end -}} {{- end -}} {{- range $feeds -}} {{- $imageCanonicalURL := (print "https://t1.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=" "http://" .FeedSourceDomain "&size=64" ) -}} {{- $404image := resources.Get "data/media/404.png" -}} {{- $imageSource := $404image.RelPermalink -}} {{- $imageTitle := "No image found" -}} {{- with $image := resources.GetRemote $imageCanonicalURL -}} {{- with .Err -}} {{- warnf "%s" . -}} {{- else -}} {{- $imageContent := $image.Content | resources.FromString (print (partial "function-paths-media.html") "/" ($image | urlize)) -}} {{- $imageSource = $imageContent.RelPermalink -}} {{- $imageTitle = $imageCanonicalURL -}} {{- end -}} {{- end -}} {{- $template := resources.Get "templates/markdown-feed.yaml" -}} {{- $name := print (delimit (first 8 (split (.FeedTitle | urlize) "-")) "-" | humanize | urlize) "-" (.FeedLink | sha256 | truncate 8 "") | humanize | urlize -}} {{- $path := print "/data/generates/content/" $author.user "/feeds/" $name ".md" -}} {{- $description := .FeedDescriptionShort -}} {{- if gt (len .FeedTitle) (len .FeedDescriptionShort) -}} {{- $description = .FeedTitle -}} {{- end -}} {{- $content := .FeedContentShort -}} {{- if or (eq $content "No content found.") (gt (len .FeedTitle) (len $content)) -}} {{- $content = .FeedTitle -}} {{- end -}} {{- $link := .FeedLink -}} {{- $enclosure := .FeedEnclosure -}} {{- if or (in .FeedLink ".apng") (in .FeedLink ".avif") (in .FeedLink ".gif") (in .FeedLink ".jfif") (in .FeedLink ".jpeg") (in .FeedLink ".jpg") (in .FeedLink ".pjp") (in .FeedLink ".pjpeg") (in .FeedLink ".png") (in .FeedLink ".svg") (in .FeedLink ".webp") -}} {{- if (.Feedlink | urls.Parse).Host -}} {{- else -}} {{- $enclosure = print "http://" .FeedSourceDomain .FeedLink -}} {{- $link = $enclosure -}} {{- end -}} {{- end -}} {{- $markdown := resources.ExecuteAsTemplate $path (dict "author" $author.user "content" $content "date" .FeedDateTime "description" .FeedSourceTitle "domain" .FeedSourceDomain "enclosure" $enclosure "image" $imageSource "link" $link "name" .FeedName "raw" (strings.TrimLeft "/" $path) "self" (print $author.user "/feeds/" $name "/") "tags" "[rss]" ) $template -}} {{- $writeToFile := $markdown.RelPermalink -}} {{ end }}

Web Ring

{{- end -}}