本文整理汇总了Golang中github.com/kimxilxyong/intogooglego/post.Post.CommentCount方法的典型用法代码示例。如果您正苦于以下问题:Golang Post.CommentCount方法的具体用法?Golang Post.CommentCount怎么用?Golang Post.CommentCount使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/kimxilxyong/intogooglego/post.Post
的用法示例。
在下文中一共展示了Post.CommentCount方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: HackerNewsPostScraper
func HackerNewsPostScraper(sub string) (err error) {
//drivername := "postgres"
//dsn := "user=golang password=golang dbname=golang sslmode=disable"
//dialect := gorp.PostgresDialect{}
drivername := "mysql"
dsn := "golang:[email protected]/golang?parseTime=true"
dialect := gorp.MySQLDialect{"InnoDB", "utf8mb4"}
// connect to db using standard Go database/sql API
db, err := sql.Open(drivername, dsn)
if err != nil {
return errors.New("sql.Open failed: " + err.Error())
}
// Open doesn't open a connection. Validate DSN data using ping
if err = db.Ping(); err != nil {
return errors.New("db.Ping failed: " + err.Error())
}
// Set the connection to use utf8bmb4
if dialect.Engine == "InnoDB" {
fmt.Println("Setting connection to utf8mb4")
_, err = db.Exec("SET NAMES utf8mb4 COLLATE utf8mb4_general_ci")
if err != nil {
return errors.New("SET NAMES utf8mb4 COLLATE utf8mb4_general_ci: " + err.Error())
}
}
// construct a gorp DbMap
dbmap := &gorp.DbMap{Db: db, Dialect: dialect}
defer dbmap.Db.Close()
dbmap.DebugLevel = DebugLevel
// Will log all SQL statements + args as they are run
// The first arg is a string prefix to prepend to all log messages
//dbmap.TraceOn("[gorp]", log.New(os.Stdout, "Trace:", log.Lmicroseconds))
// register the structs you wish to use with gorp
// you can also use the shorter dbmap.AddTable() if you
// don't want to override the table name
// SetKeys(true) means we have a auto increment primary key, which
// will get automatically bound to your struct post-insert
table := dbmap.AddTableWithName(post.Post{}, "posts_index_test")
table.SetKeys(true, "PID")
// Add the comments table
table = dbmap.AddTableWithName(post.Comment{}, "comments_index_test")
table.SetKeys(true, "Id")
// create the table. in a production system you'd generally
// use a migration tool, or create the tables via scripts
if err = dbmap.CreateTablesIfNotExists(); err != nil {
return errors.New("Create tables failed: " + err.Error())
}
// Force create all indexes for this database
if err = dbmap.CreateIndexes(); err != nil {
return errors.New("Create indexes failed: " + err.Error())
}
// Get data from hackernews
geturl := "http://news.ycombinator.com/" + sub
// DEBUG for a special thread
//geturl := "https://news.ycombinator.com/item?id=10056146"
body, err := GetHtmlBody(geturl)
if err != nil {
return errors.New("GetHtmlBody: " + err.Error())
}
// Create a new post slice and then parse the response body into ps
ps := make([]*post.Post, 0)
//cs := make([]*post.Comment, 0)
ps, err = ParseHtmlHackerNews(body, ps)
if err != nil {
return errors.New("ParseHtmlHackerNews: " + err.Error())
}
// Number of updated posts
var updatedPostsCount int64
// Number of new posts
var insertedPostsCount int64
var insertedPostsCommentCount int64
var updatedPostsCommentCount int64
// Number of post parsing errors
var htmlPostErrorCount uint32
// Number of comment parsing errors
var htmlCommentErrorCount uint32
// loop over all parsed posts
for _, htmlpost := range ps {
if htmlpost.WebPostId == "" {
if DebugLevel > 1 {
fmt.Printf("WebPostId not set in %s\n", htmlpost.Title)
}
// Fail early, continue with next post
continue
//.........这里部分代码省略.........