point-tools-crawler/point_post_crawler.go

98 lines
1.9 KiB
Go
Raw Normal View History

2016-03-07 20:04:50 +00:00
package main
import (
"flag"
2016-03-15 22:21:50 +00:00
"fmt"
"bitbucket.org/skobkin/point-tools-crawler/point"
"bitbucket.org/skobkin/point-tools-crawler/point_tools"
2016-03-07 20:04:50 +00:00
"log"
"time"
"strconv"
2016-03-07 20:04:50 +00:00
)
func main() {
2016-03-15 22:21:50 +00:00
var login, password string
2016-03-07 20:04:50 +00:00
flag.StringVar(&login, "l", "", "Account login")
flag.StringVar(&password, "p", "", "Account password")
flag.Parse()
if len(login) < 1 || len(password) < 1 {
fmt.Printf("Login and password must be defined")
return
}
pointClient := point.NewClient("https://point.im/api/")
pointToolsClient := point_tools.NewClient("http://point-tools.local:8000/api/crawler/")
2016-03-07 20:04:50 +00:00
_, loginErr := pointClient.Login(login, password)
2016-03-07 20:04:50 +00:00
if loginErr != nil {
fmt.Printf("Login error %s", loginErr)
2016-03-15 22:21:50 +00:00
return
} else {
fmt.Printf("Successfully authenticated!\n")
}
2016-03-07 20:04:50 +00:00
page, reqErr := pointClient.GetRecentAllPostsPage()
2016-03-07 20:04:50 +00:00
if reqErr != nil {
log.Fatal(reqErr)
2016-03-15 22:21:50 +00:00
return
}
2016-03-07 20:04:50 +00:00
2016-03-15 22:21:50 +00:00
fmt.Printf("1 page requested\n")
2016-03-07 20:04:50 +00:00
if len(page.Posts) > 0 {
fmt.Println("Last uid", strconv.Itoa(page.Posts[len(page.Posts)-1].Uid))
}
sendResp, sendErr := pointToolsClient.SendPage(page)
if sendErr != nil {
log.Fatal(sendErr)
}
if point_tools.STATUS_SUCCESS != sendResp.Status || false == sendResp.Data.Continue {
fmt.Println("API rejected next page request")
fmt.Println("Exiting.")
return
}
pageNumber := 1
2016-03-07 20:04:50 +00:00
2016-03-15 22:21:50 +00:00
for page.HasNext {
pageNumber++
2016-03-07 20:04:50 +00:00
page, reqErr = pointClient.GetNextAllPostsPage(page)
2016-03-07 20:04:50 +00:00
if reqErr != nil {
log.Fatal(reqErr)
2016-03-15 22:21:50 +00:00
return
2016-03-07 20:04:50 +00:00
}
fmt.Printf("%d page requested", pageNumber)
if len(page.Posts) > 0 {
fmt.Printf(", last uid %d", page.Posts[len(page.Posts)-1].Uid)
}
fmt.Printf(" -> %d posts\n", len(page.Posts))
2016-03-15 22:56:51 +00:00
sendResp, sendErr := pointToolsClient.SendPage(page)
2016-03-07 20:04:50 +00:00
if sendErr != nil {
log.Fatal(sendErr)
}
if point_tools.STATUS_SUCCESS != sendResp.Status || false == sendResp.Data.Continue {
fmt.Println("API rejected next page request")
break
}
time.Sleep(time.Second)
2016-03-07 20:04:50 +00:00
}
fmt.Println("Exiting.")
2016-03-07 20:04:50 +00:00
}
2016-03-15 22:21:50 +00:00