Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ecf893e

Browse files
author
xuxinhua
committed
修改获取顺序
1 parent 3890290 commit ecf893e

File tree

1 file changed

+42
-16
lines changed
  • websites/code/studygolang/src/service

1 file changed

+42
-16
lines changed

websites/code/studygolang/src/service/reddit.go

Lines changed: 42 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"errors"
1212
"math/rand"
1313
"regexp"
14+
"strconv"
1415
"strings"
1516
"time"
1617

@@ -22,7 +23,7 @@ import (
2223

2324
const (
2425
Reddit = "http://www.reddit.com"
25-
RedditGolang = "/r/golang"
26+
RedditGolang = "/r/golang/new/"
2627
)
2728

2829
// 获取url对应的文章并根据规则进行解析
@@ -44,14 +45,27 @@ func ParseReddit(redditUrl string) error {
4445
return err
4546
}
4647

47-
doc.Find("#siteTable .link").Each(func(i int, contentSelection *goquery.Selection) {
48+
/*
49+
doc.Find("#siteTable .link").Each(func(i int, contentSelection *goquery.Selection) {
4850
49-
err = dealRedditOneResource(contentSelection)
51+
err = dealRedditOneResource(contentSelection)
52+
53+
if err != nil {
54+
logger.Errorln(err)
55+
}
56+
})
57+
*/
58+
59+
// 最后面的先入库处理
60+
resourcesSelection := doc.Find("#siteTable .link")
61+
62+
for i := resourcesSelection.Length() - 1; i >= 0; i-- {
63+
err = dealRedditOneResource(goquery.NewDocumentFromNode(resourcesSelection.Get(i)).Selection)
5064

5165
if err != nil {
5266
logger.Errorln(err)
5367
}
54-
})
68+
}
5569

5670
return err
5771
}
@@ -74,19 +88,25 @@ func dealRedditOneResource(contentSelection *goquery.Selection) error {
7488
return errors.New("resource url is empty")
7589
}
7690

91+
isReddit := false
92+
7793
resource := model.NewResource()
7894
// Reddit 自身的内容
7995
if contentSelection.HasClass("self") {
96+
isReddit = true
8097
resourceUrl = Reddit + resourceUrl
8198
}
8299

83100
err := resource.Where("url=?", resourceUrl).Find("id")
84101
// 已经存在
85102
if resource.Id != 0 {
86-
return errors.New("url" + resourceUrl + "has exists!")
103+
// 如果是 reddit 本身的,可以更新评论信息
104+
if !isReddit {
105+
return errors.New("url" + resourceUrl + "has exists!")
106+
}
87107
}
88108

89-
if contentSelection.HasClass("self") {
109+
if isReddit {
90110

91111
resource.Form = model.ContentForm
92112

@@ -149,18 +169,24 @@ func dealRedditOneResource(contentSelection *goquery.Selection) error {
149169
}
150170
resource.Ctime = ctime
151171

152-
var id int64
153-
id, err = resource.Insert()
172+
if resource.Id == 0 {
173+
var id int64
174+
id, err = resource.Insert()
154175

155-
if err != nil {
156-
return errors.New("insert into Resource error:" + err.Error())
157-
}
176+
if err != nil {
177+
return errors.New("insert into Resource error:" + err.Error())
178+
}
158179

159-
// 存扩展信息
160-
resourceEx := model.NewResourceEx()
161-
resourceEx.Id = int(id)
162-
if _, err = resourceEx.Insert(); err != nil {
163-
return errors.New("insert into ResourceEx error:" + err.Error())
180+
// 存扩展信息
181+
resourceEx := model.NewResourceEx()
182+
resourceEx.Id = int(id)
183+
if _, err = resourceEx.Insert(); err != nil {
184+
return errors.New("insert into ResourceEx error:" + err.Error())
185+
}
186+
} else {
187+
if err = resource.Persist(resource); err != nil {
188+
return errors.New("persist resource:" + strconv.Itoa(resource.Id) + " error:" + err.Error())
189+
}
164190
}
165191

166192
return nil

0 commit comments

Comments
 (0)