working on subdirs by feed
parent
2518c3f263
commit
6efa4e95d9
|
|
@ -11,6 +11,7 @@ import (
|
|||
"local/storage"
|
||||
"log"
|
||||
"net/http"
|
||||
"path"
|
||||
"regexp"
|
||||
"strings"
|
||||
"time"
|
||||
|
|
@ -114,7 +115,7 @@ func pull(db storage.DB, vpntor, outdir, url string) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := handle(vpntor, outdir, s); err != nil {
|
||||
if err := handle(vpntor, path.Join(outdir, gofeed.Copyright), s); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := db.Set(item.Link, []byte{}); err != nil {
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ type Feed struct {
|
|||
TitleFilter string
|
||||
ContentFilter string
|
||||
Tags []string
|
||||
Copyright string
|
||||
}
|
||||
|
||||
func SubmitFeed(f *Feed) error {
|
||||
|
|
@ -72,7 +73,7 @@ func (f *Feed) Pull() error {
|
|||
|
||||
itemTSs := []*time.Time{}
|
||||
for _, i := range gofeed.Items {
|
||||
item, err := newItem(i, f.ContentFilter)
|
||||
item, err := newItem(i, f.ContentFilter, f.Copyright)
|
||||
if err != nil {
|
||||
log.Println("[Pull]", err)
|
||||
continue
|
||||
|
|
|
|||
20
rss/item.go
20
rss/item.go
|
|
@ -16,20 +16,22 @@ import (
|
|||
const nsItems = "nsItems"
|
||||
|
||||
type Item struct {
|
||||
Title string
|
||||
Link string
|
||||
Content string
|
||||
TS time.Time
|
||||
Title string
|
||||
Link string
|
||||
Content string
|
||||
TS time.Time
|
||||
Copyright string
|
||||
}
|
||||
|
||||
type Items []*Item
|
||||
|
||||
func newItem(i *gofeed.Item, contentFilter string) (*Item, error) {
|
||||
func newItem(i *gofeed.Item, contentFilter, copyright string) (*Item, error) {
|
||||
item := &Item{
|
||||
Title: i.Title,
|
||||
Link: i.Link,
|
||||
Content: i.Content,
|
||||
TS: latestTSPtr(i.UpdatedParsed, i.PublishedParsed),
|
||||
Title: i.Title,
|
||||
Link: i.Link,
|
||||
Content: i.Content,
|
||||
TS: latestTSPtr(i.UpdatedParsed, i.PublishedParsed),
|
||||
Copyright: copyright,
|
||||
}
|
||||
|
||||
if item.Content == "" {
|
||||
|
|
|
|||
|
|
@ -30,12 +30,12 @@ func TestRSSItemNewEncodeDecode(t *testing.T) {
|
|||
gofeed.Items[0].Content = ""
|
||||
gofeed.Items[0].Description = ""
|
||||
|
||||
item, err := newItem(gofeed.Items[0], ".*")
|
||||
item, err := newItem(gofeed.Items[0], ".*", "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
itemB, err := newItem(gofeed.Items[0], "Podcast")
|
||||
itemB, err := newItem(gofeed.Items[0], "Podcast", "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,12 +31,18 @@ func TaggedFeeds(tag string) ([]*Feed, error) {
|
|||
}
|
||||
|
||||
func WriteFeed(w io.Writer, tag string, items []*Item) error {
|
||||
copyright := ""
|
||||
if len(items) > 0 {
|
||||
copyright = items[0].Copyright
|
||||
}
|
||||
copyright = "."
|
||||
sort.Sort(Items(items))
|
||||
feed := &feeds.Feed{
|
||||
Title: tag,
|
||||
Link: &feeds.Link{},
|
||||
Description: tag,
|
||||
Items: make([]*feeds.Item, len(items)),
|
||||
Copyright: copyright,
|
||||
}
|
||||
for i, item := range items {
|
||||
feed.Items[i] = &feeds.Item{
|
||||
|
|
|
|||
|
|
@ -79,6 +79,7 @@ func (s *Server) feed(w http.ResponseWriter, r *http.Request) {
|
|||
URL string `json:"url"`
|
||||
Interval string `json:"refresh"`
|
||||
TitleFilter string `json:"items"`
|
||||
Copyright string `json:"copyright"`
|
||||
ContentFilter string `json:"content"`
|
||||
Tags []string `json:"tags"`
|
||||
}
|
||||
|
|
@ -97,6 +98,7 @@ func (s *Server) feed(w http.ResponseWriter, r *http.Request) {
|
|||
TitleFilter: putFeed.TitleFilter,
|
||||
ContentFilter: putFeed.ContentFilter,
|
||||
Tags: putFeed.Tags,
|
||||
Copyright: putFeed.Copyright,
|
||||
}
|
||||
if err := rss.SubmitFeed(f); err != nil {
|
||||
s.error(w, r, err)
|
||||
|
|
|
|||
Loading…
Reference in New Issue