Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用tweepy回复带有图像的tweet_Python_Twitter_Tweepy - Fatal编程技术网

Python 使用tweepy回复带有图像的tweet

Python 使用tweepy回复带有图像的tweet,python,twitter,tweepy,Python,Twitter,Tweepy,我试着用tweepy来回复某些tweet,我的回复中包含了一张图片。 twt变量保存我试图回复的tweet。 以下是我目前正在做的事情: # -*- coding: utf-8 -*- import tweepy, time, random CONSUMER_KEY = 'XXXX' CONSUMER_SECRET = 'XXXX' ACCESS_KEY = 'XXXX' ACCESS_SECRET = 'XXXX' auth = tweepy.OAuthHandler(CONSUM

我试着用tweepy来回复某些tweet,我的回复中包含了一张图片。 twt变量保存我试图回复的tweet。 以下是我目前正在做的事情:

# -*- 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)
我的tweet被发布,但不是作为对原始tweet(twt)的回复。相反,它只是作为一条新的、独立的推文发布。
但是,当我没有像上面那样使用_介质更新_时,我使用更新_状态,例如:

api.update_status(status=stat,in_reply_to_status_id=sid)
我的新tweet确实是作为对原始tweet(twt)的回复发布的

我错过了什么?

谢谢

Twitter不推荐使用媒体端点的更新()您不应该使用它。相反,先用media_upload方法上传媒体,然后再将你得到的媒体ID添加到update_status方法。

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


如果您下载Tweepy 3.2.0,您应该能够切换到新的方案,这将有望解决您的问题。(我不能肯定新东西是否有效,我自己也在使用Tweepy的旧版本。)

我最终得到的解决方案是切换到
Tweython
模块,该模块的功能得到了很好的证明,并且工作得很好。
非常感谢您的帮助。

这是一些代码,可以用api回复推特。使用媒体更新并正确运行,也许可以查看一些代码帮助您:)@Mohammadalibaghershemirani我相信您使用的是其他模块,而不是像我这样的傻瓜,Juan。你知道有没有python库支持这些函数吗?tweepy似乎没有(或者至少他们在文档中没有提到这方面的任何内容)twython包装器似乎有这个新功能。谢谢@正如我在回答Tweepy时提到的那样,teknoboy拥有您可以使用的媒体上传方法。我是一名新手程序员,对Tweython(更好)的文档更放心。非常感谢,你让我走上了正确的道路。@JuanE。有没有关于如何使用Tweepy中的媒体上传方法的文档或示例?我什么也找不到。