update LoadFeed
This commit is contained in:
6
main.go
6
main.go
@@ -22,11 +22,13 @@ func main() {
|
||||
|
||||
item := podcast.Items[0]
|
||||
fmt.Printf("name: %s, feedUrl: %s\n", item.CollectionName, item.FeedURL)
|
||||
pod, err := model.LoadFeed(item.FeedURL)
|
||||
feedUrl := "http://www.ximalaya.com/album/19206382.xml"
|
||||
|
||||
pod, err := model.LoadFeed(feedUrl)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
for _, e := range pod.Episodes[:5] {
|
||||
for _, e := range pod.Episodes[:2] {
|
||||
fmt.Printf("episode: %+v\n", e)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,9 @@ type Podcast struct {
|
||||
// 版权信息
|
||||
Copyright string `json:"copyright,omitempty"`
|
||||
|
||||
// 语言
|
||||
Language string `json:"language,omitempty"`
|
||||
|
||||
// 是否锁定,表示此订阅是否可以被导入到其他平台
|
||||
Locked *Locked `json:"locked,omitempty"`
|
||||
|
||||
@@ -47,7 +50,7 @@ type Podcast struct {
|
||||
Block []Block `json:"block,omitempty"`
|
||||
|
||||
// 剧集列表
|
||||
Episodes []Episode `json:"episodes,omitempty"`
|
||||
Episodes []*gofeed.Item `json:"episodes,omitempty"`
|
||||
|
||||
// 远程项目
|
||||
RemoteItems []RemoteItem `json:"remote_items,omitempty"`
|
||||
@@ -68,13 +71,18 @@ func LoadFeed(url string) (*Podcast, error) {
|
||||
return nil, errors.New("解析播客订阅失败: 空订阅")
|
||||
}
|
||||
|
||||
imageURL := ""
|
||||
if feed.Image != nil {
|
||||
imageURL = feed.Image.URL
|
||||
}
|
||||
podcast := &Podcast{
|
||||
Title: feed.Title,
|
||||
Description: feed.Description,
|
||||
Link: feed.Link,
|
||||
Image: feed.Image.URL,
|
||||
Image: imageURL,
|
||||
Copyright: feed.Copyright,
|
||||
Episodes: make([]Episode, 0),
|
||||
Language: feed.Language,
|
||||
Episodes: feed.Items,
|
||||
Funding: make([]Funding, 0),
|
||||
Persons: make([]Person, 0),
|
||||
Value: make([]Value, 0),
|
||||
@@ -82,37 +90,5 @@ func LoadFeed(url string) (*Podcast, error) {
|
||||
Medium: MediumPodcast,
|
||||
}
|
||||
|
||||
// 解析剧集
|
||||
for _, item := range feed.Items {
|
||||
episode := Episode{
|
||||
GUID: item.GUID,
|
||||
Title: item.Title,
|
||||
Description: item.Description,
|
||||
Link: item.Link,
|
||||
PublicationDate: item.PublishedParsed,
|
||||
Author: item.Author.Name,
|
||||
}
|
||||
|
||||
// 解析媒体URL
|
||||
if len(item.Enclosures) > 0 {
|
||||
episode.ContentURL = item.Enclosures[0].URL
|
||||
}
|
||||
|
||||
// 解析剧集图片
|
||||
if item.Image != nil && item.Image.URL != "" {
|
||||
episode.ImageURL = item.Image.URL
|
||||
}
|
||||
|
||||
// 解析时长
|
||||
if item.ITunesExt != nil && item.ITunesExt.Duration != "" {
|
||||
// 简单处理,实际应该解析时间格式
|
||||
durationSec := 0
|
||||
fmt.Sscanf(item.ITunesExt.Duration, "%d", &durationSec)
|
||||
episode.Duration = durationSec
|
||||
}
|
||||
|
||||
podcast.Episodes = append(podcast.Episodes, episode)
|
||||
}
|
||||
|
||||
return podcast, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user