从推文中过滤图像 [英] Filter images from tweets

查看:22
本文介绍了从推文中过滤图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对 tweepy 很陌生,我想知道如何追踪和存储用户在他/她的推文中发布的图像.我在教程中找到了几种获取用户推文的方法,但找不到仅过滤图像的方法.

I am fresh to tweepy, and I wandering how is it possible to track down and store the image that a user posts in his/her tweets. I found several ways in tutorials to get user tweets, but I couldnt find a way to filter only the images.

我使用以下代码来获取用户推文.怎么可能只获取用户图片?

I am using the following code in order to get user tweets. How is it possible to get only user images??

我像上面一样编辑我的代码:

I edit my code like above:

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(OAUTH_TOKEN, OAUTH_SECRET)
api = tweepy.API(auth)
timeline = api.user_timeline(count=10, screen_name = "zenitiss") 
for tweet in timeline: 
   for media in tweet.entities.get("media",[{}]):
      print media
      #checks if there is any media-entity
      if media.get("type",None) == "photo":
          # checks if the entity is of the type "photo"
          image_content=requests.get(media["media_url"])
          print image_content

但是似乎 for 循环不起作用.打印介质行打印空对象.基本上,当我尝试打印用户的网址时,例如 karyperry 我得到:

However it seems that the for loop it doesnt works. The print media line prints a null object. Basically when I am trying to print urls of a user for example karyperry I am getting:

{u'url': u'http://t.co/TaP2JZrpxu', u'indices': [42, 64], u'expanded_url':  
u'http://youtu.be/7bDLIV96LD4', u'display_url': u'youtu.be/7bDLIV96LD4'}
{u'url': u'https://t.co/t3hv7VQiPG', u'indices': [42, 65], u'expanded_url': 
u'https://vine.co/v/MgvxZA2qKbV', u'display_url': u'vine.co/v/MgvxZA2qKbV'}
{u'url': u'http://t.co/vnJAAU7KN6', u'indices': [50, 72], u'expanded_url':
u'http://instagram.com/p/n01XZjv-fp/', u'display_url': u'instagram.com/p/n01XZjv-fp/'}
{u'url': u'http://t.co/NycqAwtcgo', u'indices': [78, 100], u'expanded_url':
u'http://bit.ly/1o7xQRj', u'display_url': u'bit.ly/1o7xQRj'}
{u'url': u'http://t.co/BG6ozuRD6D', u'indices': [111, 133], u'expanded_url':
u'http://www.johnnywujek.com/sos', u'display_url': u'johnnywujek.com/sos'}
{u'url': u'http://t.co/nWIQ9ruJ3f', u'indices': [88, 110], u'expanded_url':
u'http://uncf.us/1kSXIwF', u'display_url': u'uncf.us/1kSXIwF'}
{u'url': u'http://t.co/yTbOgqt9fw', u'indices': [101, 123], u'expanded_url':
u'http://instagram.com/p/nvxD8eP-SZ/', u'display_url': u'instagram.com/p/nvxD8eP-SZ/'}

大多数 url 都是图像,但是当我在 tweet.entities.get("url",[{}]) 中将 'url' 而不是 'media' 放入循环中时.其中大部分是图片网址.

The most of urls are images, however when I put 'url' instead of 'media' in loop for media in tweet.entities.get("url",[{}]). Most of them are image urls.

推荐答案

Tweets(他们的 JSON 表示)包含一个媒体"实体,正如前面提到的 此处.假设推文中包含图像,Tweepy 应公开该类型的实体,如下所示:

Tweets (their JSON-representation) contain a "media"-entity, as mentioned here. Tweepy should expose that type of entity as following, assuming there is an image included in the tweet:

tweet.entities["media"]["media_url"]

因此,如果你想存储图像,你只需要下载它,f.e.通过python的请求库.尝试在您的代码中添加类似以下语句的内容(或根据您的需要进行修改):

Therefore, if you want to store the image, you just need to download it, f.e. via python's request library. Try adding something like the following statement to your code (or modify according to your needs):

for media in tweet.entities.get("media",[{}]):
    #checks if there is any media-entity
    if media.get("type",None) == "photo":
        # checks if the entity is of the type "photo"
        image_content=requests.get(media["media_url"])
        # save to file etc.

这篇关于从推文中过滤图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆