-
Notifications
You must be signed in to change notification settings - Fork 1
/
feeds.go
82 lines (63 loc) · 1.94 KB
/
feeds.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package pixiv
import (
"github.com/Crossbell-Box/OperatorSync/app/worker/config"
"github.com/Crossbell-Box/OperatorSync/app/worker/global"
"github.com/Crossbell-Box/OperatorSync/app/worker/types"
"github.com/Crossbell-Box/OperatorSync/app/worker/utils"
commonTypes "github.com/Crossbell-Box/OperatorSync/common/types"
"regexp"
"strings"
)
var (
pixivImageRegex *regexp.Regexp
)
func init() {
// Image regex
pixivImageRegex = regexp.MustCompile(`<img[^>]+\bsrc=["']([^"']+)["'].*?/?>`)
}
func Feeds(cccs *types.ConcurrencyChannels, work *commonTypes.WorkDispatched, collectLink string) (
bool, []commonTypes.RawFeed, uint, string,
) {
// Refer to https://rsshub.app/pixiv/user/87178177
// Concurrency control
cccs.Stateful.Request()
defer cccs.Stateful.Done()
global.Logger.Debug("New feeds request for pixiv")
collectLink =
strings.ReplaceAll(
collectLink,
"{{rsshub_stateful}}",
config.Config.RSSHubEndpointStateful,
)
rawFeed, errCode, err := utils.RSSFeedRequest(
strings.ReplaceAll(collectLink, "{{username}}", work.Username),
true,
)
if err != nil {
return false, nil, errCode, err.Error()
}
var feeds []commonTypes.RawFeed
for _, item := range rawFeed.Items {
if item.PublishedParsed.After(work.DropBefore) && item.PublishedParsed.Before(work.DropAfter) {
feed := commonTypes.RawFeed{
Title: item.Title,
Link: item.Link,
GUID: item.GUID,
Authors: utils.ParseAuthors(item.Authors),
PublishedAt: *item.PublishedParsed,
}
// Process content
rawContent := item.Description
imgs := pixivImageRegex.FindAllStringSubmatch(rawContent, -1)
var normalImages []string
for _, img := range imgs {
normalImages = append(normalImages, img[1])
//rawContent = strings.ReplaceAll(rawContent, img[1], "")
}
feed.Media = utils.UploadAllMedia(normalImages)
//feed.Content = rawContent
feeds = append(feeds, feed)
}
}
return true, feeds, 0, ""
}