base_wechat_lib.go 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. package llm
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/utils"
  5. "fmt"
  6. "io"
  7. "net/http"
  8. "strings"
  9. )
  10. type BaseResp struct {
  11. Code int `json:"code"`
  12. Msg string `json:"msg"`
  13. }
  14. type WechatPlatformListResp struct {
  15. BaseResp
  16. Data []WechatPlatformResp `json:"data"`
  17. }
  18. type WechatPlatformResp struct {
  19. Fakeid string `json:"fakeid"`
  20. Nickname string `json:"nickname"`
  21. Alias string `json:"alias"`
  22. RoundHeadImg string `json:"round_head_img"`
  23. ServiceType int `json:"service_type"`
  24. Signature string `json:"signature"`
  25. Verified bool `json:"verified"`
  26. }
  27. // SearchByWechat
  28. // @Description: 公众号列表
  29. // @author: Roc
  30. // @datetime 2025-03-04 18:09:01
  31. // @param name string
  32. // @return resp WechatPlatformResp
  33. // @return err error
  34. func SearchByWechat(name string) (items []WechatPlatformResp, err error) {
  35. if utils.ETA_WX_CRAWLER_URL == "" {
  36. err = fmt.Errorf("ETA微信爬虫服务地址为空")
  37. return
  38. }
  39. getUrl := utils.ETA_WX_CRAWLER_URL + `/api/wechat_platform/search_by_wechat?name=` + name
  40. result, err := HttpGet(getUrl)
  41. if err != nil {
  42. err = fmt.Errorf("调用ETA微信爬虫服务接口失败 error:%s", err.Error())
  43. return
  44. }
  45. var resp WechatPlatformListResp
  46. err = json.Unmarshal(result, &resp)
  47. if err != nil {
  48. return
  49. }
  50. items = resp.Data
  51. return
  52. }
  53. type WechatArticleResp struct {
  54. BaseResp
  55. Data WechatArticleDataResp `json:"data"`
  56. }
  57. type WechatArticleDataResp struct {
  58. HtmlContent string `json:"HtmlContent"`
  59. TextContent string `json:"TextContent"`
  60. RoundHeadImg string `json:"RoundHeadImg"`
  61. ProfileSignature string `json:"ProfileSignature"`
  62. Appuin string `json:"Appuin"`
  63. Nickname string `json:"Nickname"`
  64. UserName string `json:"UserName"`
  65. Title string `json:"Title"`
  66. Desc string `json:"Desc"`
  67. CoverUrl string `json:"CoverUrl"`
  68. CreateAt string `json:"CreateAt"`
  69. CountryName string `json:"CountryName"`
  70. ProvinceName string `json:"ProvinceName"`
  71. CityName string `json:"CityName"`
  72. }
  73. // SearchByWechatArticle
  74. // @Description: 获取报告详情
  75. // @author: Roc
  76. // @datetime 2025-03-04 18:08:45
  77. // @param link string
  78. // @return resp WechatArticleResp
  79. // @return err error
  80. func SearchByWechatArticle(link string) (wechatArticle WechatArticleDataResp, err error) {
  81. if utils.ETA_WX_CRAWLER_URL == "" {
  82. err = fmt.Errorf("ETA微信爬虫服务地址为空")
  83. return
  84. }
  85. getUrl := utils.ETA_WX_CRAWLER_URL + `/api/wechat_platform/article/info/search_by_wechat?link=` + link
  86. result, err := HttpGet(getUrl)
  87. if err != nil {
  88. err = fmt.Errorf("调用ETA微信爬虫服务接口失败 error:%s", err.Error())
  89. return
  90. }
  91. var resp WechatArticleResp
  92. err = json.Unmarshal(result, &resp)
  93. if err != nil {
  94. return
  95. }
  96. wechatArticle = resp.Data
  97. return
  98. }
  99. type WechatArticleListResp struct {
  100. BaseResp
  101. Data WechatArticleMenuPage `json:"data"`
  102. }
  103. type WechatArticleMenuPage struct {
  104. List []ArticleMenu `json:"List"`
  105. Total int `json:"Total"`
  106. }
  107. type ArticleMenu struct {
  108. Aid string `json:"Aid"`
  109. Title string `json:"Title"`
  110. Link string `json:"Link"`
  111. Cover string `json:"Cover"`
  112. Digest string `json:"Digest"`
  113. UpdateTime int `json:"UpdateTime"`
  114. CreateTime int `json:"CreateTime"`
  115. AppMsgId int64 `json:"AppMsgId"`
  116. AuthorName string `json:"AuthorName"`
  117. Content string `json:"Content"`
  118. }
  119. func SearchByWechatArticleList(fakeId string, num int) (items WechatArticleMenuPage, err error) {
  120. if utils.ETA_WX_CRAWLER_URL == "" {
  121. err = fmt.Errorf("ETA微信爬虫服务地址为空")
  122. return
  123. }
  124. getUrl := fmt.Sprintf(`%s/api/wechat_platform/article/list/search_by_wechat?fakeid=%s&num=%d`, utils.ETA_WX_CRAWLER_URL, fakeId, num)
  125. result, err := HttpGet(getUrl)
  126. if err != nil {
  127. err = fmt.Errorf("调用ETA微信爬虫服务接口失败 error:%s", err.Error())
  128. return
  129. }
  130. var resp WechatArticleListResp
  131. err = json.Unmarshal(result, &resp)
  132. if err != nil {
  133. return
  134. }
  135. items = resp.Data
  136. return
  137. }
  138. func HttpGet(url string) ([]byte, error) {
  139. client := &http.Client{}
  140. req, err := http.NewRequest("GET", url, nil)
  141. if err != nil {
  142. return nil, err
  143. }
  144. req.Header.Set("authorization", utils.MD5(utils.ETA_FORUM_HUB_NAME_EN+utils.ETA_FORUM_HUB_MD5_KEY))
  145. resp, err := client.Do(req)
  146. if err != nil {
  147. return nil, err
  148. }
  149. defer resp.Body.Close()
  150. result, err := io.ReadAll(resp.Body)
  151. if err != nil {
  152. return nil, err
  153. }
  154. utils.FileLog.Debug("HttpPost:" + string(result))
  155. var baseResp BaseResp
  156. err = json.Unmarshal(result, &baseResp)
  157. if err != nil {
  158. return nil, err
  159. }
  160. if baseResp.Code != 200 {
  161. return nil, fmt.Errorf("code:%d,msg:%s", baseResp.Code, baseResp.Msg)
  162. }
  163. return result, err
  164. }
  165. func HttpPost(url, postData, lang string, params ...string) ([]byte, error) {
  166. body := io.NopCloser(strings.NewReader(postData))
  167. client := &http.Client{}
  168. req, err := http.NewRequest("POST", url, body)
  169. if err != nil {
  170. return nil, err
  171. }
  172. contentType := "application/x-www-form-urlencoded;charset=utf-8"
  173. if len(params) > 0 && params[0] != "" {
  174. contentType = params[0]
  175. }
  176. req.Header.Set("Content-Type", contentType)
  177. req.Header.Set("Lang", lang)
  178. req.Header.Set("authorization", utils.MD5(utils.APP_EDB_LIB_NAME_EN+utils.EDB_LIB_Md5_KEY))
  179. resp, err := client.Do(req)
  180. if err != nil {
  181. return nil, err
  182. }
  183. defer resp.Body.Close()
  184. b, err := io.ReadAll(resp.Body)
  185. utils.FileLog.Debug("HttpPost:" + string(b))
  186. return b, err
  187. }