Количество подписчиков в Твиттере - PullRequest
0 голосов
/ 15 декабря 2009

Twitter API имеет friends_count и followers_count, доступные как кэшированные значения для метода users/show или account/verify_credentials. Насколько я могу судить, единственный способ определить количество списков, членом которых является пользователь, - это позвонить GET список членства и разбить на страницы с помощью курсора для подсчета общего количества списков. человек является членом. Это неоптимально; в идеале lists_count будет доступно на users/show.

Существует ли более простой способ определения необработанного количества списков, членом которых является пользователь, с помощью API Twitter? Что я пропустил?

Ответы [ 2 ]

2 голосов
/ 15 декабря 2009

Забудьте 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;
1 голос
/ 17 декабря 2009

Обновление : Twitter добавил listed_count к полезной нагрузке пользователя.


Похоже, что добавление lists_count к полезной нагрузке пользователя равно в списке задач .

У нас есть это в нашем списке задач. Это требует довольно обширной асинхронной аннулирования фрагментов, поэтому это не так просто, как просто добавить счетчик в полезную нагрузку. У нас это есть в списке, хотя.

Между тем, предложение Даррела было единственным прямым подходом, но краткость языка и его библиотек имеет значение:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...