如何使用python构建twitter、instagram和reddit机器人程序

想建立自己的社交媒体机器人吗?下面介绍如何使用Python将更新自动发布到Twitter、Instagram和Reddit。...

现在是2019年。你听说过机器人。有聊天机器人、电子邮件机器人、网络抓取机器人和社交媒体机器人。你创建机器人了吗?这非常容易。可能是它们到处都是的原因。加入机器人霸主的行列,拥抱他们。

build-bots-python

在本文中,我将向您展示如何利用Python自动与Twitter、Reddit和Instagram帐户交互。

使用python

本演练使用Python作为其首选语言。与其他语言相比,Python的易用性优势超过了它的任何速度缺陷。几乎可以为任何操作系统下载Python。使用您选择的编辑器。

Python发行版与名为

pip

. 在撰写本文时,有超过168000个库可以使用

pip

. 对于您今天将创建的机器人程序,只需要三个。

从命令行,您可以使用这三行安装所需的库。

pip install --upgrade InstagramAPIpip install --upgrade tweepy pip install --upgrade praw

现在您可以在需要的地方导入这些库。

获取应用程序密钥和机密

一位聪明的哲学家曾经说过:“秘密,秘密是没有乐趣的。秘密,秘密会伤害别人。“尊重地说,机器人需要秘密。设置bot的下一步是允许它们访问每个站点的API。为此,您需要一个应用程序密钥或密码。

当你收集钥匙,秘密,代币,和更多(听起来像一个有趣的游戏!),将它们全部放入一个名为凭证.py“此文件看起来如下所示:

# keystwitter_c***umer_key = ''twitter_c***umer_secret = ''twitter_access_token = ''twitter_access_token_secret = ''reddit_client_id = ''reddit_client_secret = ''reddit_user_agent = ''instagram_client_id = ''instagram_client_secret = ''

非常重要的隐私建议:不要将此文件提交给任何源代码管理(例如Git)。你不想让别人拥有这些钥匙和秘密。他们被称为秘密是有原因的。

设置twitter访问

查看我们的指南,设置一个Twitter机器人节点.js将向您展示如何创建您的Twitter应用程序。请注意,Twitter将需要一些时间来验证您的帐户,并确保您没有创建垃圾邮件帐户。

完成这些步骤后,将使用者密钥、使用者机密、访问令牌和访问令牌机密复制到凭证.py文件。

设置reddit访问

获取Reddit客户端ID和secret与Twitter非常相似。您需要将应用程序注册为Reddit用户代理。做完这些之后,你绝对应该在简历上写上“Reddit用户代理”。

登录您选择的Reddit帐户。导航到“应用程序首选项”页,然后单击“创建其他应用程序”。给你的用户代理起个有用的名字。为应用程序选择脚本。关于URL可以留空。填写重定向框的任何地址。

Reddit App Bot Python

按“创建应用程序”后,以下屏幕将显示应用程序列表。应用程序名称下的数字表示客户机ID,客户机机密位于该ID下面。将这些值复制到凭证.py文件。

Reddit App API Secret Python

设置instagram访问

Instagram访问不同于Twitter和Reddit。你不用注册应用程序,而是使用用户名和密码。我建议创建一个单独的公共帐户,并将这些详细信息用于您的bot。

用praw访问reddit

使用praw需要两个步骤。首先,设置访问权限是对praw的Reddit方法的单个函数调用。然后,使用初始化对象,使用new()方法搜索子reddit。

import prawfrom credentials import *my_reddit = praw.Reddit(client_id=reddit_client_id, client_secret=reddit_client_secret, user_agent=reddit_user_agent)sub_name = 'technology'max_posts = 10for submission in my_reddit.subreddit(sub_name).new(limit=max_posts):print(submission.title)

更改

sub_name

变量从不同的子站点获取帖子。而不是

new()

,其他方法,如

hot()

可以获得职位。

通过instagramapi搜索instagram标签

使用Instagram API的第一步是使用客户机ID和密码设置对象。之后,直接调用login()方法完成设置。

from InstagramAPI import InstagramAPIfrom credentials import instagram_client_id, instagram_client_secretmy_insta_api = InstagramAPI(instagram_client_id,instagram_client_secret)my_insta_api.login()

使用API要比Reddit复杂一些。在本例中,脚本使用getHashtagFeed从Instagram获取非常大的JSON响应对象。

通过搜索响应,脚本寻找标题文本,然后打印到屏幕上查看。

get_hashtag = my_insta_api.getHashtagFeed(hashtag)if get_hashtag != False: for item in my_insta_api.LastJson['items']: if 'caption' in item.keys() and 'text' in item['caption'].keys(): caption = item['caption']['text'] print(caption)

向社交媒体添加图像

向前看,您可能希望您的脚本获得此标签提要中的图像。为此,通过JSON响应循环并找到与每个post相关联的媒体。下面是一个从JSON响应中提取信息的实现:

def get_images_from_hashtag(hashtag, num_images):images = []get_hashtag = my_insta_api.getHashtagFeed(hashtag)if get_hashtag == False:return imagesfor item in my_insta_api.LastJson['items']:if item['media_type'] == 1 and 'image_versi***2' in item.keys():candidate = get_largest_image(item['image_versi***2']['candidates'])# get image filename = self.save_image_from_candidate(candidate['url'])if filename != '':# get status, save as tuplecaption = get_caption(item)images.append((filename, caption))if len(images) >= num_images:break return images

此函数中使用了两个助手函数。Instagram在JSON响应中发送一个图像“候选者”列表。选择这些图像中最大的一个,以便以最高分辨率显示媒体。

def get_largest_image(candidates):candidate = {}pixels = 0for cand in candidates:# pick the highest resolution oneres = cand['height']*cand['width']if res > pixels:pixels = rescandidate = candreturn candidate

其次,一旦找到指向图像的链接,您就可以通过将内容写入文件来本地保存图像。使用

requests

图书馆使这变得简单明了。

def save_image_from_candidate(url): filename = '' resp***e = requests.get(url) # check the resp***e status code, 200 means good if resp***e.status_code == 200: filename = url.split("/")[-1].split('?')[0] with open(filename, 'wb') as f: f.write(resp***e.content) return filename

用tweepy发布媒体

首先,你需要使用你的秘密和密钥设置Twitter访问。

import tweepyfrom credentials import *tw_auth = tweepy.OAuthHandler(twitter_c***umer_key, twitter_c***umer_secret)tw_auth.set_access_token(twitter_access_token, twitter_access_token_secret)tw_api = tweepy.API(tw_auth)

创建一个通用的转发机器人只需要几行代码。

for tweet in tweepy.Cursor(tw_api.search,q='MakeUseOf').items(10):try:tweet.favorite()tweet.retweet()time.sleep(2)except tweepy.TweepError as e:print(e.reason)except StopIteration:break

这个图书馆还可以做很多其他的事情。要结束本演练,可以使用

get_images_from_hashtag

Instagram机器人早期的功能是在推特上发布图片和字幕。

另外,你的Twitter机器人可以在Reddit上搜索新的帖子,也可以在tweet上发布这些帖子。将这两种功能放在一起,如下所示:

# use r/<hashtag> for reddit search# and #<hashtag> for instagram searchhashtag = 'technology'num_posts = 5# tweet reddit inforeddit_posts = my_reddit.subreddit(hashtag).new(limit=num_posts)for submission in reddit_posts:title = submission.titleurl = 'www.reddit.com{}'.format(submission.permalink)tweet_str = f'Reddit r/{sub} update:{title} #{sub} {url}'tweet_str = trim_to_280(tweet_str)tw_api.update(tweet_str)# tweet instagram mediamedia_info = get_images_from_hashtag(hashtag, num_posts)for (filename, message) in media_info:try:tweet_str = trim_to_280(message)tw_api.update_with_media(filename, status=tweet_str)except tweepy.TweepError as e:print(e.reason)except StopIteration:break

你的python社交媒体机器人已经准备好了!

所以,现在你有一堆代码可以把媒体从一个站点拉到另一个站点。你也可以混搭。拉推特并发布到Reddit。收集Instagram图片发布到subreddits。做一个机器人,成为真正互联网的一部分。

最后,要完全自动化这个过程,您需要让bot在服务器上循环运行。这可能是在你自己的电脑与时间安排。或者,掸掉你衣柜里的树莓皮,看看这些可爱的Twitter机器人项目。

  • 发表于 2021-03-21 23:06
  • 阅读 ( 497 )
  • 分类:编程

你可能感兴趣的文章

红宝石(ruby)和python(python)的区别

...优点是这些语言支持面向对象编程(OOP)。OOP方法有助于使用对象对一个或一组程序进行建模。Ruby和Python的关键区别在于Ruby主要用于web开发,而Python主要用于各种应用程序,包括web开发。Python还常用于科学计算、数据科学应用...

  • 发布于 2020-10-19 17:41
  • 阅读 ( 335 )

要构建android应用程序,您需要学习以下7种编程语言

...ve。此库可以部署到Android、iOS和通用Windows平台。Facebook、Instagram和其他大公司都在维护和使用它,所以你知道它是经过尝试和测试的。学习曲线并不容易,但一旦你能克服最初的困难,你就会拥有你所需要的所有力量和灵活性。...

  • 发布于 2021-03-15 11:36
  • 阅读 ( 238 )

如何过滤社交媒体上的有毒评论

... 如何过滤instagram上的有毒评论 ...

  • 发布于 2021-03-20 19:51
  • 阅读 ( 220 )

为什么python不是适合您的编程语言

... Python完全可以进行大规模web开发。Instagram是运行Python网络框架Django的最大网站。这可不是什么了不起的壮举,Instagram工程师李泽坤解释道: ...

  • 发布于 2021-03-23 11:47
  • 阅读 ( 350 )

python成为未来编程语言的6个原因

... Uber、PayPal、Google、Facebook、Instagram、Netflix、Dropbox和Reddit都在开发和测试中使用Python。此外,Python还广泛应用于机器人和嵌入式系统(甚至可以用来控制arduino)。即使是用C和C++编写的遗留系统也很...

  • 发布于 2021-03-23 12:03
  • 阅读 ( 239 )

如何建立一个照片推特机器人与树莓皮和节点.js

...哪怕只对其他人有用?一种方法是创建一个自动的Twitter机器人,用有用的描述发布图片。你可以手动完成…也可以用节点.js把它放在树莓皮上。继续读下去,看看是怎么做的。 ...

  • 发布于 2021-03-23 18:07
  • 阅读 ( 353 )

6个有用的机器学习教程和课程,掌握要点

...尼尔·希夫曼本人。作为一名天生的教师,他给出了代码如何与机器学习算法交互的清晰示例。 ...

  • 发布于 2021-03-24 09:25
  • 阅读 ( 281 )

这些机器学习课程将为您准备一条职业道路

...意到谷歌搜索的变化了吗?或者说语音识别和语言翻译是如何变得更好的?我相信你没有错过亚马逊和Netflix等网站的个性化推荐。 ...

  • 发布于 2021-03-25 15:43
  • 阅读 ( 246 )

别上当了:如何在社交媒体上发现俄罗斯机器人

...家和所谓的“社会正义战士”,再到创建“唤醒黑人”等Instagram团体来影响少数民族的投票努力。还有很多其他的例子。 ...

  • 发布于 2021-03-25 18:42
  • 阅读 ( 241 )

如何在ubuntu中安装python

...、web抓取和渗透测试。您甚至可以使用Python构建一个电报机器人。 ...

  • 发布于 2021-03-27 00:46
  • 阅读 ( 249 )