mirror of
https://github.com/glanceapp/glance.git
synced 2024-11-22 08:23:52 +01:00
Merge pull request #176 from 3rd/release/v0.6.0
feat: add no_shorts option for YouTube feeds
This commit is contained in:
commit
e4435252f4
@ -10,7 +10,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type youtubeFeedResponseXml struct {
|
type youtubeFeedResponseXml struct {
|
||||||
Channel string `xml:"title"`
|
Channel string `xml:"author>name"`
|
||||||
ChannelLink struct {
|
ChannelLink struct {
|
||||||
Href string `xml:"href,attr"`
|
Href string `xml:"href,attr"`
|
||||||
} `xml:"link"`
|
} `xml:"link"`
|
||||||
@ -39,11 +39,19 @@ func parseYoutubeFeedTime(t string) time.Time {
|
|||||||
return parsedTime
|
return parsedTime
|
||||||
}
|
}
|
||||||
|
|
||||||
func FetchYoutubeChannelUploads(channelIds []string, videoUrlTemplate string) (Videos, error) {
|
func FetchYoutubeChannelUploads(channelIds []string, videoUrlTemplate string, includeShorts bool) (Videos, error) {
|
||||||
requests := make([]*http.Request, 0, len(channelIds))
|
requests := make([]*http.Request, 0, len(channelIds))
|
||||||
|
|
||||||
for i := range channelIds {
|
for i := range channelIds {
|
||||||
request, _ := http.NewRequest("GET", "https://www.youtube.com/feeds/videos.xml?channel_id="+channelIds[i], nil)
|
var feedUrl string
|
||||||
|
if !includeShorts && strings.HasPrefix(channelIds[i], "UC") {
|
||||||
|
playlistId := strings.Replace(channelIds[i], "UC", "UULF", 1)
|
||||||
|
feedUrl = "https://www.youtube.com/feeds/videos.xml?playlist_id=" + playlistId
|
||||||
|
} else {
|
||||||
|
feedUrl = "https://www.youtube.com/feeds/videos.xml?channel_id=" + channelIds[i]
|
||||||
|
}
|
||||||
|
|
||||||
|
request, _ := http.NewRequest("GET", feedUrl, nil)
|
||||||
requests = append(requests, request)
|
requests = append(requests, request)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,12 +78,6 @@ func FetchYoutubeChannelUploads(channelIds []string, videoUrlTemplate string) (V
|
|||||||
|
|
||||||
for j := range response.Videos {
|
for j := range response.Videos {
|
||||||
video := &response.Videos[j]
|
video := &response.Videos[j]
|
||||||
|
|
||||||
// TODO: figure out a better way of skipping shorts
|
|
||||||
if strings.Contains(video.Title, "#shorts") {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
var videoUrl string
|
var videoUrl string
|
||||||
|
|
||||||
if videoUrlTemplate == "" {
|
if videoUrlTemplate == "" {
|
||||||
|
@ -17,6 +17,7 @@ type Videos struct {
|
|||||||
CollapseAfterRows int `yaml:"collapse-after-rows"`
|
CollapseAfterRows int `yaml:"collapse-after-rows"`
|
||||||
Channels []string `yaml:"channels"`
|
Channels []string `yaml:"channels"`
|
||||||
Limit int `yaml:"limit"`
|
Limit int `yaml:"limit"`
|
||||||
|
IncludeShorts bool `yaml:"include-shorts"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (widget *Videos) Initialize() error {
|
func (widget *Videos) Initialize() error {
|
||||||
@ -34,7 +35,7 @@ func (widget *Videos) Initialize() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (widget *Videos) Update(ctx context.Context) {
|
func (widget *Videos) Update(ctx context.Context) {
|
||||||
videos, err := feed.FetchYoutubeChannelUploads(widget.Channels, widget.VideoUrlTemplate)
|
videos, err := feed.FetchYoutubeChannelUploads(widget.Channels, widget.VideoUrlTemplate, widget.IncludeShorts)
|
||||||
|
|
||||||
if !widget.canContinueUpdateAfterHandlingErr(err) {
|
if !widget.canContinueUpdateAfterHandlingErr(err) {
|
||||||
return
|
return
|
||||||
|
Loading…
Reference in New Issue
Block a user