Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

90 lignes
1.7KB

  1. package main
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "fmt"
  6. "io/ioutil"
  7. "log"
  8. "net/http"
  9. )
  10. type materialQuery struct {
  11. Type string `json:"type"`
  12. Offiset int `json:"offset"`
  13. Count int `json:"count"`
  14. }
  15. type materialCount struct {
  16. VoiceCount int64 `json:"voice_count"`
  17. VideoCount int64 `json:"video_count"`
  18. ImageCount int64 `json:"image_count"`
  19. NewsCount int64 `json:"news_count"`
  20. }
  21. func getNewList() (jstr string) {
  22. jstr = getMediaList("news")
  23. return
  24. }
  25. func getVoiceList() (jstr string) {
  26. jstr = getMediaList("voice")
  27. return
  28. }
  29. func getVideoList() (jstr string) {
  30. jstr = getMediaList("video")
  31. return
  32. }
  33. func getImageList() (jstr string) {
  34. jstr = getMediaList("image")
  35. return
  36. }
  37. func getMediaList(mediaType string) (jstr string) {
  38. var q = materialQuery{mediaType, 0, 20}
  39. jsonStr, _ := json.Marshal(q)
  40. u := url4MaterialList()
  41. req, err := http.NewRequest("POST", u, bytes.NewBuffer(jsonStr))
  42. log.Println(u)
  43. if err != nil {
  44. return ""
  45. }
  46. client := &http.Client{}
  47. r, err := client.Do(req)
  48. if err != nil {
  49. return ""
  50. }
  51. defer r.Body.Close()
  52. b, _ := ioutil.ReadAll(r.Body)
  53. jstr = string(b)
  54. return
  55. }
  56. func url4MaterialList() string {
  57. atk, _ := GetAccessToken()
  58. u := fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=%s", atk)
  59. return u
  60. }
  61. func url4MaterialCount() string {
  62. atk, _ := GetAccessToken()
  63. u := fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/material/get_materialcount?access_token=%s", atk)
  64. return u
  65. }
  66. func getMaterialCount() (materialCount, error) {
  67. mc := materialCount{}
  68. url := url4MaterialCount()
  69. r, err := http.Get(url)
  70. if err != nil {
  71. return mc, err
  72. }
  73. defer r.Body.Close()
  74. b, _ := ioutil.ReadAll(r.Body)
  75. err = json.Unmarshal(b, &mc)
  76. return mc, nil
  77. }