使用tweepy用图像回复推文

时间:2015-03-13 21:24:34

标签: python twitter tweepy

我试图回复某些推文,我的回复包括一张图片。 twt 变量保存了我试图回复的推文。 这就是我现在正在做的事情:

# -*- coding: utf-8 -*-
import tweepy, time, random  

CONSUMER_KEY = 'XXXX'
CONSUMER_SECRET = 'XXXX'
ACCESS_KEY = 'XXXX'
ACCESS_SECRET = 'XXXX'  

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth)  

query = ['aaa', 'bbb', 'ccc']
t0 = time.time()
count = 0
last_count = 0

f = open('last_replied.txt')
last_replied = int(f.readline().strip())
f.close()
print('starting time:', time.strftime('%X'))

while True:
    if count > last_count:
        print(time.strftime('%X'), ':', count, 'replies')
        last_count = count
    for i in range(3):
        twts = api.search(query[i], since_id=last_replied)
        if len(twts)>0:
            for twt in twts:
                sid = twt.id
                sn = twt.user.screen_name
                stat = "lalala" + "@" + sn
                api.update_with_media('oscar1.gif',status=stat,in_reply_to_status_id=sid)
                count += 1
                last_replied = twt.id
                f = open('last_replied.txt','w')
                f.write(str(last_replied))
                f.close()
        pause = random.randint(50,90)
        time.sleep(pause)

我的推文已发布,但不是对原始推文( twt )的回复。相反,它只是作为一个新的,独立的推文发布 但是,如果不是如上所述的update_with_media,我使用update_status,例如:

api.update_status(status=stat,in_reply_to_status_id=sid)

我的新推文会作为对原始推文( twt )的回复发布。

我错过了什么? 感谢

3 个答案:

答案 0 :(得分:1)

我最终解决的问题是切换到twython模块,该模块具有良好的文档记录并且工作正常。 非常感谢你的帮助。

答案 1 :(得分:0)

Twitter(https://dev.twitter.com/rest/reference/post/statuses/update_with_media)不推荐使用update_with_media端点,您不应该使用它。而是首先使用media_upload方法上传媒体,然后将您返回的media_ids添加回update_status方法。

答案 2 :(得分:0)

我看了一眼update_with_media的代码并没有看到任何明显的错误,但是1月份在Tweepy API中添加了使用媒体处理推文的新方法 - 请注意这里的最后两个项目符号:

https://github.com/tweepy/tweepy/releases/tag/v3.2.0

如果您下载Tweepy 3.2.0,您应该可以切换到新的方案,这有望修复您的reply_to问题。 (我不能确定新的东西是否有效,我自己使用的是Tweepy的旧版本。)