Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "sort"
- "sync"
- "time"
- "github.com/geeksbaek/goinside"
- )
- type Pair struct {
- Key string
- Value int
- }
- type PairList []Pair
- func (p PairList) Len() int { return len(p) }
- func (p PairList) Less(i, j int) bool { return p[i].Value < p[j].Value }
- func (p PairList) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
- func sortByValue(m map[string]int) PairList {
- pl := make(PairList, len(m))
- i := 0
- for k, v := range m {
- pl[i] = Pair{k, v}
- i++
- }
- sort.Sort(sort.Reverse(pl))
- return pl
- }
- func main() {
- m := map[string]goinside.Articles{}
- Loop:
- for i := 1; ; i += 100 {
- articlesSlice := make([]goinside.Articles, 100)
- URL := "http://gall.dcinside.com/board/lists/?id=programming"
- wg := new(sync.WaitGroup)
- wg.Add(100)
- for j := i; j < i+100; j++ {
- go func(URL string, page int) {
- defer wg.Done()
- if list, err := goinside.GetList(URL, page); err == nil {
- articlesSlice[page-i] = list.Articles
- }
- }(URL, j)
- }
- wg.Wait()
- for _, articles := range articlesSlice {
- for _, article := range articles {
- if !isThisWeek(article) {
- break Loop
- }
- m[article.AuthorInfo.Name] = append(
- m[article.AuthorInfo.Name],
- article,
- )
- }
- }
- }
- dummy := map[string]int{}
- for _, v := range m {
- for _, vv := range v {
- dummy[vv.Name]++
- }
- }
- for _, v := range sortByValue(dummy) {
- fmt.Printf("이름: {%s}, 글 개수: {%d}\n", v.Key, v.Value)
- }
- }
- func isThisWeek(article *goinside.Article) bool {
- if article.Date.Weekday() != time.Now().Weekday() {
- return false
- }
- return true
- }
Add Comment
Please, Sign In to add comment