ribbit/plugin_src/plugin_dilbert.go

72 lines
1.6 KiB
Go
Raw Normal View History

2018-04-26 11:53:03 +00:00
package main
2019-01-10 16:39:42 +00:00
import (
"C"
)
2018-04-26 11:53:03 +00:00
import (
"errors"
"fmt"
"net/http"
"time"
"github.com/PuerkitoBio/goquery"
)
2019-01-10 16:39:42 +00:00
func getFeedList() []Feed {
var ret []Feed
ret = append(ret, *NewFeed("dilbert", "Dilbert", "Scott Adams", "dilbert"))
2018-04-26 11:53:03 +00:00
return ret
}
2019-01-10 16:39:42 +00:00
func getRssItem(slug string) (string, error) {
desc, err := getFeedDesc(time.Now())
2018-04-26 11:53:03 +00:00
if err != nil {
return "", err
}
2019-01-10 16:39:42 +00:00
feed, err := m.GetFeed(SRC_DILBERT, slug)
2018-04-26 11:53:03 +00:00
if err != nil {
return "", err
}
desc = "<![CDATA[" + desc + "]]>"
ret := " <item>\n"
2019-01-10 16:39:42 +00:00
ret += " <title>" + feed.Name + "</title>\n"
ret += " <pubDate>" + feed.LastUpdate.Format(time.RFC1123Z) + "</pubDate>\n"
ret += " <guid>dilbert;" + slug + ";" + feed.LastUpdate.Format(time.RFC1123Z) + "</guid>\n"
ret += " <link>" + getFeedUrl(time.Now()) + "</link>\n"
2018-04-26 11:53:03 +00:00
ret += " <description>" + desc + "</description>\n"
ret += " </item>\n"
return ret, nil
}
2019-01-10 16:39:42 +00:00
func getFeedUrl(date time.Time) string {
2018-04-26 11:53:03 +00:00
return fmt.Sprintf(
"http://dilbert.com/strip/%4d-%02d-%02d",
date.Year(),
date.Month(),
date.Day(),
)
}
2019-01-10 16:39:42 +00:00
func getFeedDesc(date time.Time) (string, error) {
res, err := http.Get(getFeedUrl(date))
2018-04-26 11:53:03 +00:00
if err != nil {
return "", err
}
defer res.Body.Close()
if res.StatusCode != 200 {
return "", errors.New(fmt.Sprintf("Status code error: %d %s", res.StatusCode, res.Status))
}
// Load the HTML document
doc, err := goquery.NewDocumentFromReader(res.Body)
if err != nil {
return "", err
}
// Find the Picture
src, exists := doc.Find("img.img-comic").Attr("src")
if !exists {
return "", errors.New("Couldn't find image source")
}
return "<img src=\"https:" + src + "\" />", nil
2018-04-26 11:53:03 +00:00
}