为了账号安全,请及时绑定邮箱和手机立即绑定

Go Anaconda 推特媒体上传推文

Go Anaconda 推特媒体上传推文

Go
繁华开满天机 2021-10-18 13:58:20
我可以发推文和上传媒体,但我不知道如何使用 anaconda("github.com/ChimeraCoder/anaconda") 与媒体一起发推文。示例中的 media_id 来自成功的媒体上传调用。mediaResponse, err := api.UploadMedia("R0lGODlhEAALALMMAOXp8a2503CHtOrt9L3G2+Dl7vL0+J6sy4yew1Jvp/T2+e/y9v///wAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCwAMACwAAAAAEAALAAAEK5DJSau91KxlpObepinKIi2kyaAlq7pnCq9p3NZ0aW/47H4dBjAEwhiPlAgAIfkECQsADAAsAAAAAAQACwAABA9QpCQRmhbflPnu4HdJVAQAIfkECQsADAAsAAAAABAACwAABDKQySlSEnOGc4JMCJJk0kEQxxeOpImqIsm4KQPG7VnfbEbDvcnPtpINebJNByiTVS6yCAAh+QQJCwAMACwAAAAAEAALAAAEPpDJSaVISVQWzglSgiAJUBSAdBDEEY5JMQyFyrqMSMq03b67WY2x+uVgvGERp4sJfUyYCQUFJjadj3WzuWQiACH5BAkLAAwALAAAAAAQAAsAAAQ9kMlJq73hnGDWMhJQFIB0EMSxKMoiFcNQmKjKugws0+navrEZ49S7AXfDmg+nExIPnU9oVEqmLpXMBouNAAAh+QQFCwAMACwAAAAAEAALAAAEM5DJSau91KxlpOYSUBTAoiiLZKJSMQzFmjJy+8bnXDMuvO89HIuWs8E+HQYyNAJgntBKBAAh+QQFFAAMACwMAAIABAAHAAAEDNCsJZWaFt+V+ZVUBAA7")if err != nil {    fmt.Println(err)}//v := url.Values{}//v.Set("media_ids", string(mediaResponse.MediaID))fmt.Println(mediaResponse)tweet := `"media_ids": 612877656984416256,"status": "hello"`result, err := api.PostTweet(tweet, nil)if err != nil {    fmt.Println(err)} else {    fmt.Println(result)}有人可以协助告诉我如何解析 json 或使用媒体 ID 调用 PostTweet 吗?我也尝试将媒体添加到 url.Values 没有成功。
查看完整描述

2 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

我看到 json 无效,但问题是传递 media_ids 参数时出错。响应是:"errors":[{"code":44,"message":"media_ids 参数无效。"}] 我虽然在格式上出错,但它与没有将 media_ids 类型 int64 转换为正确的字符串。这是固定代码:


data, err := ioutil.ReadFile(fileName)

if err != nil {

    fmt.Println(err)

}


mediaResponse, err := api.UploadMedia(base64.StdEncoding.EncodeToString(data))

if err != nil {

    fmt.Println(err)

}


v := url.Values{}

v.Set("media_ids", strconv.FormatInt(mediaResponse.MediaID, 10))


result, err := api.PostTweet(posttitle, v)

if err != nil {

    fmt.Println(err)

} else {

    fmt.Println(result)

}


查看完整回答
反对 回复 2021-10-18
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

这不是有效的 json:


tweet := `

"media_ids": 612877656984416256,

"status": "hello"

`

尝试使用它来生成您的 json:


type Tweet struct {

    MediaIds uint64 `json:"media_ids"`

    Status   string `json:"status"`

}

tweet := Tweet{612877656984416256, "hello"}

b, err := json.Marshal(tweet)

这导致:


{"media_ids":612877656984416256,"status":"hello"}

与使用原始字符串相比,这有一些好处。


它更以 Go 为中心。该结构可以通过设置的值传递,并通过在编译时捕获的正确类型检查来读取。

生成的 json 字符串在语义上更有可能是正确的。例如,Go 也会对某些字符进行转义,以帮助确保接收器正确解析它们。


查看完整回答
反对 回复 2021-10-18
  • 2 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信