Repository navigation
Expand file tree
/
Copy pathgetRSS.go
More file actions
145 lines (124 loc) · 3.64 KB
/
Copy pathgetRSS.go
File metadata and controls
145 lines (124 loc) · 3.64 KB
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
package main
import (
"github.com/allanpk716/rssproxy/InstagramRSS"
"github.com/allanpk716/rssproxy/TwitterRSS"
"os"
"sync"
)
var (
// 后台更新 Instagram 的时候,只允许一个运行,所以需要加锁
mutexInstagram sync.Mutex
updateInstagramRunning bool
// 后台更新 Twitter 的时候,只允许一个运行,所以需要加锁
mutexTwitter sync.Mutex
updateTwitterRunning bool
)
// 统一一起获取
func getAllSpecialRSS() {
go getInstagramRSS()
go getTwitterRSS()
}
func getInstagramRSS() {
mutexInstagram.Lock()
log.Infoln("------- Start Update Instagram RSS -------")
defer func() {
updateInstagramRunning = false
mutexInstagram.Unlock()
log.Infoln("------- End Update Instagram RSS -------")
}()
if updateInstagramRunning == true {
log.Infoln("getInstagramRSS is running, so skip this time")
return
}
// 设置已经在后台刷新
updateInstagramRunning = true
userName, err := instagramCache.Value("IGInfo.UserName")
if err != nil {
log.Errorln("instagramCache:IGInfo.UserName:", err)
return
}
passWord, err := instagramCache.Value("IGInfo.PassWord")
if err != nil {
log.Errorln("instagramCache.IGInfo.PassWord:", err)
return
}
httpProxy, err := baseCache.Value("HttpProxy")
if err != nil {
log.Errorln("baseCache.HttpProxy:", err)
return
}
feedMaxItems, err := instagramCache.Value("IGInfo.FeedMaxItems")
if err != nil {
log.Errorln("instagramCache.IGInfo.FeedMaxItems:", err)
return
}
instagramUsers, err := instagramCache.Value("IGInfo.InstagramUsers")
if err != nil {
log.Errorln("instagramCache.IGInfo.InstagramUsers:", err)
return
}
rssMap, err := InstagramRSS.NewInstagramRSS(userName.Data().(string), passWord.Data().(string),
httpProxy.Data().(string), feedMaxItems.Data().(int), instagramUsers.Data().([]string))
if err != nil {
log.Errorln("Get InstagramRSS.InstagramRSS Error:", err)
// 删除缓存的登录文件
if Exists("igCache") {
if err := os.Remove("igCache"); err != nil {
log.Errorln("Del igCache:", err)
}
}
return
}
for k, v := range rssMap {
instagramCache.Add(k, 0 , v)
}
}
func getTwitterRSS() {
mutexTwitter.Lock()
log.Infoln("------- Start Update Twitter RSS -------")
defer func() {
updateTwitterRunning = false
mutexTwitter.Unlock()
log.Infoln("------- End Update Twitter RSS -------")
}()
if updateTwitterRunning == true {
log.Infoln("getTwitterRSS is running, so skip this time")
return
}
// 设置已经在后台刷新
updateTwitterRunning = true
httpProxy, err := baseCache.Value("HttpProxy")
if err != nil {
log.Errorln("baseCache.HttpProxy:", err)
return
}
feedMaxItems, err := twitterCache.Value("TwiInfo.FeedMaxItems")
if err != nil {
log.Errorln("twitterCache.TwiInfo.FeedMaxItems:", err)
return
}
excludeReplies, err := twitterCache.Value("TwiInfo.ExcludeReplies")
if err != nil {
log.Errorln("twitterCache:TwiInfo.ExcludeReplies:", err)
return
}
photoOnly, err := twitterCache.Value("TwiInfo.PhotoOnly")
if err != nil {
log.Errorln("twitterCache:TwiInfo.PhotoOnly:", err)
return
}
twitterUsers, err := twitterCache.Value("TwiInfo.TwitterUsers")
if err != nil {
log.Errorln("twitterCache.TwiInfo.TwitterUsers:", err)
return
}
for _, oneUserID := range twitterUsers.Data().([]string) {
tmpRSSString, err := TwitterRSS.Twitter2RSS(httpProxy.Data().(string), oneUserID, feedMaxItems.Data().(int), excludeReplies.Data().(bool), photoOnly.Data().(bool))
if err != nil {
log.Errorln("Get TwitterRSS.Twitter2RSS", oneUserID, "error", err.Error())
continue
}
twitterCache.Add(oneUserID, 0, tmpRSSString)
log.Infoln("Update Twitter:", oneUserID, "Done")
}
}