【问题标题】:How do I check whether an imgur URL is a gif or an image?如何检查 imgur URL 是 gif 还是图像?
【发布时间】:2017-06-28 05:06:34
【问题描述】:

假设我有一个像这样的 imgur 网址:https://imgur.com/pCEoGjF

从网址我不知道这是图片还是 gif。我知道我可以在文件末尾添加“.jpg”以获得图像的直接链接,但如果链接恰好是 gif,这也会显示 gif。我将如何以编程方式(使用 imgur API 或其他方式)检查 url https://imgur.com/pCEoGjFhttps://imgur.com/pCEoGjF.jpg 处的项目是图像还是 gif?

编辑: 我试过这个

print(requests.head(submission.url + ".jpg").headers['Content-Type'])

但它抱怨以下错误:

KeyError: 'content-type'

暗示内容类型不是标题中的键。我打印了标题并确认了这一点,因为它们如下:

{'Content-Length': '0', 'X-Served-By': 'cache-sjc3138-SJC', 'X-Cache': 'HIT', 'Accept-Ranges': 'bytes', 'X-Timer': 'S1498627080.598287,VS0,VE0', 'Server': 'cat factory 1.0', 'Retry-After': '0', 'Connection': 'close', 'X-Cache-Hits': '0', 'Location': 'https://i.imgur.com/APMnK9t.jpg', 'Cache-Control': 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0', 'Date': 'Wed, 28 Jun 2017 05:17:59 GMT', 'X-Frame-Options': 'DENY'}

我想我可以检查 content-length 是否不为 0 以查看它是否为 gif?想法?

【问题讨论】:

  • 但 gif 图像...
  • submission.url 的值是多少?
  • imgur.com/vU95acN, imgur.com/APMnK9t 是 submit.url 字段中的 url 示例 - 有人建议在它们前面添加一个 i,所以我会尝试一下
  • “某人”是我吗? :-)
  • 是的,有人是@smarx,哈哈,谢谢你的帮助

标签: python gif imgur


【解决方案1】:

使用requests library

import requests

def get_content_type(url):
    return requests.head(url).headers['Content-Type']

print(get_content_type('https://i.imgur.com/pCEoGjF.jpg'))  # image/jpeg
print(get_content_type('https://i.imgur.com/kJNdeQv.jpg'))  # image/gif

【讨论】:

  • 谢谢,但这给出了 KeyError: 'content-type' 错误。想法?
  • 你能分享你的代码吗?这里的代码对我来说运行良好。
  • 当然,但问题似乎是标题没有内容类型键。我打印出标题,它们如下: {'Content-Length': '0', 'X-Served-By': 'cache-sjc3138-SJC', 'X-Cache': 'HIT', 'Accept -Ranges':'bytes','X-Timer':'S1498627080.598287,VS0,VE0','Server':'cat factory 1.0','Retry-After':'0','Connection':'close ', 'X-Cache-Hits': '0', 'Location': 'i.imgur.com/APMnK9t.jpg', 'Cache-Control': 'no-store, no-cache, must-revalidate, post-check=0, pre -check=0', 'Date': 'Wed, 28 Jun 2017 05:17:59 GMT', 'X-Frame-Options': 'DENY'}
  • Location 标头的存在让我认为这是一个重定向响应。没有看到您的代码,很难确定。
  • 我最好的猜测......你错过了 URL 开头的 i.。您可以添加它或在requests.head 调用中使用allow_redirects=True
猜你喜欢
  • 1970-01-01
  • 2013-05-10
  • 1970-01-01
  • 1970-01-01
  • 2019-12-15
  • 2011-09-30
  • 2014-10-10
  • 2019-02-09
  • 2020-10-26
相关资源
最近更新 更多