2026-03-08 22:32:32 +00:00
|
|
|
package sitebuilder
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"net/url"
|
|
|
|
|
"strings"
|
|
|
|
|
|
|
|
|
|
"github.com/PuerkitoBio/goquery"
|
|
|
|
|
"lmika.dev/lmika/weiro/models/pubmodel"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type postMDProcessor func(site pubmodel.Site, dom *goquery.Document) error
|
|
|
|
|
|
|
|
|
|
func uploadAbsoluteURL(site pubmodel.Site, dom *goquery.Document) error {
|
|
|
|
|
siteURL, err := url.Parse(site.BaseURL)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dom.Find("img").Each(func(i int, s *goquery.Selection) {
|
|
|
|
|
srcUrl := s.AttrOr("src", "")
|
|
|
|
|
if site.BaseURL == "" {
|
|
|
|
|
return
|
|
|
|
|
} else if strings.HasPrefix(srcUrl, "http:") || strings.HasPrefix(srcUrl, "https:") {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pu, err := url.Parse(srcUrl)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
absURL := siteURL.ResolveReference(pu)
|
|
|
|
|
|
|
|
|
|
s.SetAttr("src", absURL.String())
|
|
|
|
|
})
|
|
|
|
|
return nil
|
|
|
|
|
}
|
2026-03-28 23:45:45 +00:00
|
|
|
|
|
|
|
|
func removeFootnoteHRs(site pubmodel.Site, dom *goquery.Document) error {
|
|
|
|
|
dom.Find("div.footnotes > hr").Remove()
|
|
|
|
|
return nil
|
|
|
|
|
}
|