我正在尝试获取此代码以从任何提及我的 Twitter 句柄的推文中提取媒体,使用 ffmpeg 通过 subprocess 模块对其进行转换,然后将转换后的媒体作为回复发送回此人。
import tweepy
from tweepy import Stream
from tweepy.streaming import StreamListener
from datetime import datetime
import time
import subprocess
stdout = subprocess.PIPE
def runcmd(cmd):
x = subprocess.Popen(cmd, stdout=subprocess.PIPE)
return x.communicate(stdout)
import json
import random
class StdOutListener(StreamListener):
def on_data(self, data):
clean_data = json.loads(data)
tweetId = clean_data['id']
tweet_name = clean_data['user']['screen_name']
tweet_media = clean_data['entities']['media'][0]['media_url']
print(tweet_media)
tweet_photo = runcmd('ffmpeg -i', tweet_media, 'output.jpg')
tweet = 'Here ya go'
now = datetime.now()
dt_string = now.strftime("%d/%m/%Y %H:%M:%S")
print(' Reply sent to @'+tweet_name, 'on', dt_string, '\n' ' Message:', tweet, '\n')
respondToTweet(tweet_media, tweet, tweetId)
但我总是最终得到这个错误:
Exception has occurred: TypeError
runcmd() takes 1 positional argument but 3 were given
tweet_photo = runcmd('ffmpeg -i', tweet_media, 'output.jpg')
很明显,我不能tweet_media
介于两者之间ffmpeg -i
,output.jpg
那么我将如何在tweet_media
没有错误的情况下进行转换?