使用推文上传Anaconda twitter媒体上传

时间:2015-06-23 01:40:51

标签: twitter go

我可以推特,上传媒体,但我无法弄清楚如何使用anaconda与媒体发推文(" github.com/ChimeraCoder/anaconda")。示例中的media_id来自成功​​的媒体上传调用。

if input_A == True:
    print('A was pushed')
    break

有人可以协助告诉我如何解析json或使用媒体ID调用PostTweet吗?我也尝试过将媒体添加到url.Values而没有成功。

2 个答案:

答案 0 :(得分:3)

谢谢大家。我看到json无效,但问题是传递media_ids参数时出错。答案是:"错误":[{"代码":44,"消息":" 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)
}

答案 1 :(得分:1)

这是无效的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"}

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

  1. 更加以中心为中心。结构可以通过设置值传递,并在编译时捕获正确的类型检查。
  2. 生成的json字符串更可能在语义上正确。例如Go也将逃避某些字符,以帮助确保接收方正确解析它们。