working on subdirs by feed

v0.6
bel 2019-09-02 09:08:53 -06:00
parent 2518c3f263
commit 6efa4e95d9
6 changed files with 25 additions and 13 deletions

View File

@ -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 {

View File

@ -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

View File

@ -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 == "" {

View File

@ -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)
}

View File

@ -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{

View File

@ -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)