25

Tumblr 上的图像文件的架构是什么?(我不是这个意思HTTP)我只知道存储图像的服务器的域是<n>.media.tumblr.com,其中n是 1 到 31 之间的数字,并且图像文件的名称以 " 为前缀tumblr_

我问是因为我想找到引用同一图像的 URL。

编辑:我也在处理来自其他来源的 URL,不仅仅是 Tumblr。

4

2 回答 2

54

概述

当您将图像上传到 Tumblr 时,会在其网络中生成并存储多种尺寸(同一图像的)。

上传后,您可以使用模板标签请求以下尺寸图像75、100、250、400、5001280

值得一提的是:

  1. 模板标签中的值是请求图像的最大尺寸。示例:图像的400版本可以是251像素到400 像素宽/高之间的任何位置。
  2. 可能没有可用的高分辨率1280版本的图像。如果原始图像小于或等于 500 像素,则不会生成1280版本。
  3. 照片集不会产生100版本。

图片网址

图片 URL 将是以下两个之一。第一个 URL 似乎与 6 个多月前上传的图片相关联(这是一个猜测),第二个 URL 似乎与较新的图片有关:

http://36.media.tumblr.com/tumblr_o4qxa0n2BP1r6ec7zo1_500.jpg

或者

http://36.media.tumblr.com/83099a60d4e0cbeeb30d90394e222878/tumblr_o4qxa0n2BP1r6ec7zo1_500.jpg

网址架构

这可以分为三个部分,两个变量,一个常数。

  1. http://36
  2. .media.tumblr.com/83099a60d4e0cbeeb30d90394e222878/tumblr_o4qxa0n2BP1r6ec7zo1
  3. _500.jpg

1这是一个服务器编号,可能因每个图像大小而异。AFAIK 不能保证所有服务器上都可以使用图像大小。@Ally 在评论中提到,您可以从 URL 中删除这部分,并且仍然可以找到图像。
2这是 Tumblr 子域、目录(如果适用)和部分文件名。这对于所有尺寸都是相同的。
3这是请求的大小(与模板标签匹配)和文件扩展名。

使用模板标签为所有可用尺寸生成 URL。

我发现的唯一万无一失的方法是使用相应的模板标签并将它们分配给一个data-属性。

示例模板代码:

<img src="{PhotoURL-100}" data-250u="{PhotoURL-250}" data-400u="{PhotoURL-400}" data-500u="{PhotoURL-500}" data-1280u="{block:HighRes}{PhotoURL-HighRes}{/block:HighRes}" />

示例渲染代码:

<img src="http://36.media.tumblr.com/83099a60d4e0cbeeb30d90394e222878/tumblr_o4qxa0n2BP1r6ec7zo1_100.jpg" data-250u="http://36.media.tumblr.com/83099a60d4e0cbeeb30d90394e222878/tumblr_o4qxa0n2BP1r6ec7zo1_250.jpg" data-400u="http://36.media.tumblr.com/83099a60d4e0cbeeb30d90394e222878/tumblr_o4qxa0n2BP1r6ec7zo1_400.jpg" data-500u="http://36.media.tumblr.com/83099a60d4e0cbeeb30d90394e222878/tumblr_o4qxa0n2BP1r6ec7zo1_500.jpg" data-1280u="http://36.media.tumblr.com/83099a60d4e0cbeeb30d90394e222878/tumblr_o4qxa0n2BP1r6ec7zo1_1280.jpg" >

使用这种方法,您可以确定您拥有正确的 URL,并且您知道可用的大小。

仅基于一个 URL 破解所有大小的 URL。

使用此信息,URL 将变为:

http://36.media.tumblr.com/83099a60d4e0cbeeb30d90394e222878/tumblr_o4qxa0n2BP1r6ec7zo1_500.jpg

以下是确认我们访问所有可用尺寸的测试:

您仍然不知道是否已生成 1280 尺寸,但它更接近了一步。使用此方法,您可以将值(第 3 部分)替换为新大小,并且您应该能够获取图像。

于 2013-05-30T12:29:44.937 回答
1

请记住,原始文件(全分辨率)以“_raw”后缀存储,而不是 _1280、_500、_250 等。

它们目前通常存储在 data.tumblr.com 上(他们的 CDN 域)。

URL 方案中的路径是从原始(原始)文件的 SHA1 校验和生成的。

于 2018-05-06T17:50:07.613 回答