From 6efa4e95d9eaaa7f528f91658e01d4096cb2ef9a Mon Sep 17 00:00:00 2001 From: bel Date: Mon, 2 Sep 2019 09:08:53 -0600 Subject: [PATCH] working on subdirs by feed --- handlers/torrent/main.go | 3 ++- rss/feed.go | 3 ++- rss/item.go | 20 +++++++++++--------- rss/item_test.go | 4 ++-- rss/serialize.go | 6 ++++++ server/routes.go | 2 ++ 6 files changed, 25 insertions(+), 13 deletions(-) diff --git a/handlers/torrent/main.go b/handlers/torrent/main.go index 591795b..ea96111 100644 --- a/handlers/torrent/main.go +++ b/handlers/torrent/main.go @@ -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 { diff --git a/rss/feed.go b/rss/feed.go index 5063c17..4247db1 100644 --- a/rss/feed.go +++ b/rss/feed.go @@ -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 diff --git a/rss/item.go b/rss/item.go index 5cbe794..77dff2f 100644 --- a/rss/item.go +++ b/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 == "" { diff --git a/rss/item_test.go b/rss/item_test.go index 6c4f5ba..56a9ac2 100644 --- a/rss/item_test.go +++ b/rss/item_test.go @@ -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) } diff --git a/rss/serialize.go b/rss/serialize.go index e3ad4b1..485a0d1 100644 --- a/rss/serialize.go +++ b/rss/serialize.go @@ -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{ diff --git a/server/routes.go b/server/routes.go index bce9f91..06a4b93 100644 --- a/server/routes.go +++ b/server/routes.go @@ -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)