我從來沒有使用過Tumblr API,但它看起來像你應該能夠建立一個標籤列表 - 但沒有內置的方法。首先,您必須通過查詢/info
方法來查找博客中的帖子總數。造成這種情況的網址是:
api.tumblr.com/v2/blog/{base-hostname}/info?api_key={key}
以從該響應,並將其解碼爲對象(jQuery的,ExtJS的,W/E將工作),你可以找到posts
領域職位的總#。使用該方法,您可以使用/posts
方法一次開始拉回帖子20,最大值取決於API。造成這種情況的網址是:
api.tumblr.com/v2/blog/{base-hostname}/posts[/type]?api_key={key}&[optional-params=]
你可能想省略/type
,但您將需要在選購-PARAMS指定offset
。有了抵消,你可以通過所有的職位,20時間,直到你已經下載他們全部(你從/info
查詢得到的數字)。當你下載帖子時,只需跟蹤你得到的標籤。
這是一種不幸,你必須下載帖子的主體才能得到標籤列表,但我沒有看到任何其他方法給你的標籤,或一個選項來壓縮身體,只是看到職位的元數據。
**編輯**
:帖子/info
回報被稱爲是稍微偏離有時每Felix的註釋#。在預期數量很高的情況下,您需要確保您只循環實際收到的結果,而不是預期的結果。要處理預期數量較少的情況,可以通過一個查詢來查看最終結果,並查看是否得到任何結果。在這一點上,儘管你可能會考慮全部刪除/info
查詢,只是查詢/posts
,直到你沒有得到任何結果。
:每Felix的第二個意見,即使API列出值的多少職位,你可以與20
默認一次爲1-20
拉下範圍,據稱它會接受多達50
。一次提取50個結果可以加速/降低帶寬,但這會讓你的代碼更加複雜。由於它是一個未公開的功能(閱讀:可能只是一個錯誤),不保證它會繼續工作。因此,您可以嘗試一次查詢50,但需要準備好處理400
錯誤代碼或類似的情況,以防他們的服務與API匹配,然後默認回到20.
這就是我不想跳到的明顯的最後一招。我不想強調查詢,並通過循環等方式強調我的JavaScript。感謝您的回覆。這似乎是目前唯一的方式 –
@OmShankar,這真的是唯一的方法來做到這一點。然而,**一個註釋**:通過在查詢字符串中指定'&limit = 50',並且每次將您的'offset'增加50次,您實際上可以一次獲取** 50 **帖子:)這是一個無證件API功能。 – Felix
另外需要注意的是:這是一個[**已知的bug **](https://groups.google.com/d/topic/tumblr-api/ZOkrxlUKIc8/discussion)_total post_ count_(在字段'posts '通過調用'api.tumblr.com/v2/blog/{base-hostname}/info?...'返回的結果往往是不正確的。此外,調用'api.tumblr.com/v2/blog/.../posts'也會返回一個名爲'total_posts'的字段,這個number_也常常是_incorrect_。它會讓你的某處達到_close_,但不要指望它被認爲是合適的 – Felix