update LoadFeed
This commit is contained in:
6
main.go
6
main.go
@@ -22,11 +22,13 @@ func main() {
|
|||||||
|
|
||||||
item := podcast.Items[0]
|
item := podcast.Items[0]
|
||||||
fmt.Printf("name: %s, feedUrl: %s\n", item.CollectionName, item.FeedURL)
|
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 {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
for _, e := range pod.Episodes[:5] {
|
for _, e := range pod.Episodes[:2] {
|
||||||
fmt.Printf("episode: %+v\n", e)
|
fmt.Printf("episode: %+v\n", e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,9 @@ type Podcast struct {
|
|||||||
// 版权信息
|
// 版权信息
|
||||||
Copyright string `json:"copyright,omitempty"`
|
Copyright string `json:"copyright,omitempty"`
|
||||||
|
|
||||||
|
// 语言
|
||||||
|
Language string `json:"language,omitempty"`
|
||||||
|
|
||||||
// 是否锁定,表示此订阅是否可以被导入到其他平台
|
// 是否锁定,表示此订阅是否可以被导入到其他平台
|
||||||
Locked *Locked `json:"locked,omitempty"`
|
Locked *Locked `json:"locked,omitempty"`
|
||||||
|
|
||||||
@@ -47,7 +50,7 @@ type Podcast struct {
|
|||||||
Block []Block `json:"block,omitempty"`
|
Block []Block `json:"block,omitempty"`
|
||||||
|
|
||||||
// 剧集列表
|
// 剧集列表
|
||||||
Episodes []Episode `json:"episodes,omitempty"`
|
Episodes []*gofeed.Item `json:"episodes,omitempty"`
|
||||||
|
|
||||||
// 远程项目
|
// 远程项目
|
||||||
RemoteItems []RemoteItem `json:"remote_items,omitempty"`
|
RemoteItems []RemoteItem `json:"remote_items,omitempty"`
|
||||||
@@ -68,13 +71,18 @@ func LoadFeed(url string) (*Podcast, error) {
|
|||||||
return nil, errors.New("解析播客订阅失败: 空订阅")
|
return nil, errors.New("解析播客订阅失败: 空订阅")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
imageURL := ""
|
||||||
|
if feed.Image != nil {
|
||||||
|
imageURL = feed.Image.URL
|
||||||
|
}
|
||||||
podcast := &Podcast{
|
podcast := &Podcast{
|
||||||
Title: feed.Title,
|
Title: feed.Title,
|
||||||
Description: feed.Description,
|
Description: feed.Description,
|
||||||
Link: feed.Link,
|
Link: feed.Link,
|
||||||
Image: feed.Image.URL,
|
Image: imageURL,
|
||||||
Copyright: feed.Copyright,
|
Copyright: feed.Copyright,
|
||||||
Episodes: make([]Episode, 0),
|
Language: feed.Language,
|
||||||
|
Episodes: feed.Items,
|
||||||
Funding: make([]Funding, 0),
|
Funding: make([]Funding, 0),
|
||||||
Persons: make([]Person, 0),
|
Persons: make([]Person, 0),
|
||||||
Value: make([]Value, 0),
|
Value: make([]Value, 0),
|
||||||
@@ -82,37 +90,5 @@ func LoadFeed(url string) (*Podcast, error) {
|
|||||||
Medium: MediumPodcast,
|
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
|
return podcast, nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user