使用 tweepy 回复带图片的推文
replying to tweet with image using tweepy
我正在尝试 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_status 而不是上面的 update_with_media 时,例如:
api.update_status(status=stat,in_reply_to_status_id=sid)
我的新推文确实作为对原始推文的回复发布 (twt)。
我错过了什么?
谢谢
update_with_media 端点已被 Twitter (https://dev.twitter.com/rest/reference/post/statuses/update_with_media) 弃用,您不应使用它。而是先使用 media_upload 方法上传媒体,然后添加 media_ids 返回到 update_status 方法。
我看了一眼 update_with_media 的代码,没有发现任何明显的错误,但是在一月份的 Tweepy API 中添加了使用媒体处理推文的新方法 - 请注意最后一个这里有两颗子弹:
https://github.com/tweepy/tweepy/releases/tag/v3.2.0
如果您下载 Tweepy 3.2.0,您应该能够切换到新方案,这有望解决您的 reply_to 问题。 (我不能确定新东西是否有效,我自己使用的是旧版本的 Tweepy。)
我最终得到的解决方案是切换到 twython
模块,该模块的功能有据可查且运行良好。
非常感谢您的帮助。
我正在尝试 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_status 而不是上面的 update_with_media 时,例如:
api.update_status(status=stat,in_reply_to_status_id=sid)
我的新推文确实作为对原始推文的回复发布 (twt)。
我错过了什么?
谢谢
update_with_media 端点已被 Twitter (https://dev.twitter.com/rest/reference/post/statuses/update_with_media) 弃用,您不应使用它。而是先使用 media_upload 方法上传媒体,然后添加 media_ids 返回到 update_status 方法。
我看了一眼 update_with_media 的代码,没有发现任何明显的错误,但是在一月份的 Tweepy API 中添加了使用媒体处理推文的新方法 - 请注意最后一个这里有两颗子弹:
https://github.com/tweepy/tweepy/releases/tag/v3.2.0
如果您下载 Tweepy 3.2.0,您应该能够切换到新方案,这有望解决您的 reply_to 问题。 (我不能确定新东西是否有效,我自己使用的是旧版本的 Tweepy。)
我最终得到的解决方案是切换到 twython
模块,该模块的功能有据可查且运行良好。
非常感谢您的帮助。