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

View File

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

View File

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

View File

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

View File

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

View File

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