diff options
| -rw-r--r-- | feed/feed.go | 3 | ||||
| -rw-r--r-- | feed/feed_test.go | 20 | ||||
| -rw-r--r-- | schema/schema.go | 11 |
3 files changed, 26 insertions, 8 deletions
diff --git a/feed/feed.go b/feed/feed.go index 7becc17..75143c5 100644 --- a/feed/feed.go +++ b/feed/feed.go @@ -342,6 +342,9 @@ func youtubeUnmarshal(bs []byte) ([]schema.Entry, error) { PubTime: t, Link: e.Link.Url, } + if strings.Contains(e.Link.Url, "shorts") { + entry.ShortMedia = true + } entries = append(entries, entry) } return entries, nil diff --git a/feed/feed_test.go b/feed/feed_test.go index 545d3bd..1057ffa 100644 --- a/feed/feed_test.go +++ b/feed/feed_test.go @@ -56,13 +56,19 @@ func TestUnmarshal(t *testing.T) { "podcast": "testdata/pc-daringfireball.xml", "youtube": "testdata/yt-mkbhd.xml", } - for schema, feed := range testFeeds { - bs, err := file.ReadFile(feed) + for schema, feedUrl := range testFeeds { + var ( + bs []byte + err error + feed *Feed + hasMedia bool + ) + bs, err = file.ReadFile(feedUrl) if err != nil { t.Errorf("read feed: %v", err) return } - feed := new(Feed) + feed = new(Feed) feed.Schema = schema if err = feed.unmarshal(bs); err != nil { t.Errorf("feed unmarshal: %v", err) @@ -82,6 +88,11 @@ func TestUnmarshal(t *testing.T) { t.Errorf("entry desc: %v", entry.Desc) return } + if slices.Contains([]string{"youtube"}, feed.Schema) { + if entry.ShortMedia { + hasMedia = true + } + } if entry.PubTime.Unix() < 994702392 { t.Errorf("entry time: %v", entry.PubTime) return @@ -92,5 +103,8 @@ func TestUnmarshal(t *testing.T) { return } } + if slices.Contains([]string{"youtube"}, feed.Schema) && !hasMedia { + t.Errorf("feed has no media entries") + } } } diff --git a/schema/schema.go b/schema/schema.go index e2efade..969ad70 100644 --- a/schema/schema.go +++ b/schema/schema.go @@ -11,11 +11,12 @@ import ( // Generic entry. type Entry struct { - Id string - Title string - Desc string - PubTime time.Time - Link string + Id string + Title string + Desc string + PubTime time.Time + Link string + ShortMedia bool } // Represents a NPR media link. |
