point-tools-crawler/point_post_crawler.go

116 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"
2016-03-07 20:04:50 +00:00
//"gopkg.in/yaml.v2"
//"net/http"
"bitbucket.org/skobkin/point-tools-crawler/point"
2016-03-07 20:04:50 +00:00
"time"
"log"
2016-03-15 22:56:51 +00:00
"encoding/json"
"net/url"
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
}
2016-03-15 22:21:50 +00:00
client := point.Client{}
2016-03-07 20:04:50 +00:00
2016-03-15 22:21:50 +00:00
_, login_err := client.Login(login, password)
2016-03-07 20:04:50 +00:00
2016-03-15 22:21:50 +00:00
if login_err != nil {
fmt.Printf("Login error %s", login_err)
return
} else {
fmt.Printf("Successfully authenticated!\n")
}
2016-03-07 20:04:50 +00:00
2016-03-15 22:21:50 +00:00
page, req_err := client.GetRecentAllPostsPage()
2016-03-07 20:04:50 +00:00
2016-03-15 22:21:50 +00:00
if req_err != nil {
log.Fatal(req_err)
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-15 22:56:51 +00:00
printPageJSON(page)
sendPage(page)
2016-03-07 20:04:50 +00:00
2016-03-15 22:21:50 +00:00
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
2016-03-15 22:56:51 +00:00
page, req_err = client.GetNextAllPostsPage(page)
2016-03-07 20:04:50 +00:00
2016-03-15 22:21:50 +00:00
if req_err != nil {
log.Fatal(req_err)
return
2016-03-07 20:04:50 +00:00
}
2016-03-15 22:56:51 +00:00
printPageJSON(page)
sendPage(page)
2016-03-15 22:56:51 +00:00
2016-03-15 22:21:50 +00:00
fmt.Printf("%d page requested\n", pageNumber)
fmt.Printf("%d posts\n", len(page.Posts))
2016-03-07 20:04:50 +00:00
2016-03-15 22:56:51 +00:00
time.Sleep(time.Second)
}
}
func getPageJSON(page point.Page) (string, error) {
2016-03-15 22:56:51 +00:00
b, err := json.Marshal(page)
if err != nil {
fmt.Println("error:", err)
return "", err
}
return string(b[:]), nil
}
func printPageJSON(page point.Page) {
json, err := getPageJSON(page)
if err != nil {
fmt.Println("JSON print error")
2016-03-07 20:04:50 +00:00
}
2016-03-15 22:56:51 +00:00
fmt.Println(json)
2016-03-07 20:04:50 +00:00
}
2016-03-15 22:21:50 +00:00
func sendPage(page point.Page) error {
json, err := getPageJSON(page)
if err != nil {
return err
}
client := point.Client{}
data := url.Values{}
data.Set("token", "test_token")
data.Add("json", json)
body, req_err := client.MakePostRequest("http://point-tools.local:8000/api/crawler/all/page", data)
if req_err != nil {
return req_err
}
fmt.Println("Response:", string(body[:]))
return nil
}