2009-12-15 143 views
0

Twitter APIfriends_countfollowers_count可用作users/showaccount/verify_credentials方法的緩存值。據我所知,確定用戶所屬列表的數量的唯一方法是致電GET list memberships並通過使用光標來計算一個人所屬列表的總數。這是次優的;理想情況下,lists_count將在users/show上提供。Twitter列表成員計數每個用戶

是否有更簡單的方法來確定用戶是使用Twitter API成員的列表的原始數量?我錯過了什麼?

+0

值得一提的是,無論你在哪裏獲得,它們被緩存這些值,幾乎從不會是正確的。 – Sneakyness 2009-12-18 02:43:33

+0

偷偷摸摸,一致認爲,值得一提的是,這個特定任務的「足夠接近」值是可以的。 – 2009-12-18 02:51:52

回答

1

更新:微博加入listed_count向用戶的有效載荷。


它看起來像添加lists_count向用戶的有效載荷是on the todo list

我們已將此列入待辦事項列表。它需要相當廣泛的異步片段失效,所以它不像將計數添加到有效負載那樣簡單。儘管我們已經將它列入清單。

同時,Darrel's suggestion是唯一直接的方法,但語言的簡潔和圖書館事做:

require 'rubygems' 
require 'nokogiri' 
require 'open-uri' 

username = "twitterapi" 
page = Nokogiri::HTML(open("http://twitter.com/#{username}")) 
page.at_css("#lists_count").text.gsub(/\D/, "").to_i   # => 1299 
2

忘記API :),它幾乎和直接訪問HTML網站一樣容易。只需抓住xhtml,將其加載到您最喜愛的Xml解析器中,並使用xpath查詢來提取所需的數據。

var client = new HttpClient(); 
client.DefaultHeaders.Authorization = Credential.CreateBasic("username", "password"); 

var response = client.Get("http://www.twitter.com/{username}/lists/memberships"); 
var doc = new XmlDocument(); 
doc.Load(response.Content.ReadAsXmlReader(new XmlReaderSettings() {ProhibitDtd = false})); 

var nsmgr = new XmlNamespaceManager(doc.NameTable); 
nsmgr.AddNamespace("xh", "http://www.w3.org/1999/xhtml"); 
var xpathToCount = "//xh:li[@id='on_lists_tab']/xh:a[1]/xh:span"; 
var count = doc.SelectSingleNode(xpathToCount,nsmgr).InnerText; 
+0

脆。依靠用戶名是脆弱的。處理了其他幾個Twitter應用程序後,人們確實改變了他們的用戶名。通過user_ids訪問數據效果更好。依賴於twitter的頁面佈局很脆弱; xpath查詢很脆弱。使用'// * [@ id =「lists_count」]'會更安全。最後,認證對此沒有必要,但我們仍然使用OAuth(不是用戶/密碼)。 – 2009-12-17 03:23:22

+0

...但不幸的是,這可能是現在唯一的直接方式。仍然值得讚揚。 – 2009-12-17 04:50:17

+0

根據我的理解,依賴twitter API響應的格式首先是脆弱的:-)。我沒有看到帶有「lists_count」id的元素。肯定聽起來像是一個更好的選擇。 – 2009-12-17 12:02:52

相關問題