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