Длинные URL-адреса из каналов Twitter без дополнительных вызовов API / HTTP-запросов

Есть ли какой-либо встроенный способ получить длинный расширенный URL-адрес из RSS-канала Twitter? Сейчас в ленте все URL-адреса указаны как http://t.co.... Я хотел бы делать то, что делает дисплей Twitter, и отображать длинные URL-адреса; Я также хотел бы избежать вызова API или HTTP-запроса для каждого URL-адреса в фиде. В идеале я бы также хотел избежать прямого использования Twitter API, но если это единственный способ, пусть будет так.

Разъяснение

Мне не интересно делать отдельный запрос для каждой ссылки t.co или вызывать API Twitter. Я надеялся, что есть единственный запрос, который я мог бы сделать, который включил бы длинные URL-адреса в метаданные (или даже предоставил бы твит в полностью развернутой форме, как он появляется в Твиттере) . Оказывается, способ сделать это - запросить версию JSON с search.twitter.com, а не RSS-канал, и добавить include_entities=True.

Перепишите, надеюсь, это прояснит

Я использую http://search.twitter.com/search.rss для получения канала твитов, соответствующих поисковому запросу. Фид содержит только сокращенные URL-адреса t.co. Есть ли способ изменить мой запрос так, чтобы твиты содержали вместо этого расширенные URL-адреса?

Цель состоит в том, чтобы выполнить всего один запрос вместо того, чтобы просматривать твиты и анализировать каждый URL-адрес t.co отдельно (тем более, что для канала с несколькими десятками t.co urls, то есть несколько десятков отдельных запросов). При необходимости я готов использовать Twitter API напрямую для поиска вместо использования RSS, но для моих целей использование канала является более идеальным.


person Jordan Reiter    schedule 24.10.2011    source источник
comment
Любой встроенный способ? В чем встроено?   -  person Jordan Running    schedule 25.10.2011
comment
Встроен в Twitter. То есть способ получить длинные URL-адреса без последующей обработки.   -  person Jordan Reiter    schedule 25.10.2011
comment
Да, ребята, это не точная копия. Прежде чем задать этот вопрос, я мог бы легко найти три простых способа расширения любого сокращенного URL-адреса, и это не то, что меня заботило. Я хотел знать, как это сделать, не делая дополнительных запросов. Точный дубликат не отвечает на этот вопрос.   -  person Jordan Reiter    schedule 27.10.2011
comment
что это значит тогда? В идеале я бы также хотел избежать прямого использования Twitter API, но если это единственный способ, пусть будет так. Итак, вы не хотели использовать внешний API или даже вызывать API Twitter. Честно говоря вопрос был расплывчатым. Повторяющаяся ссылка более прямая и помогает людям, наткнувшимся на этот пост.   -  person Chamilyan    schedule 27.10.2011
comment
@Chamilyan Другими словами, если бы мне пришлось вызвать прямой запрос для получения результатов (я не знаком с API, но скажем, что это было что-то вроде Twitter.get_tweets("apple")), это было бы круто, но я не хотел втяните фид и затем сократите каждый URL-адрес t.co. Другой вопрос явно спрашивает, как я могу сократить URL-адреса t.co. Вот хорошая аналогия: аналогичный вопрос был вроде как мне нарезать только что купленную буханку хлеба? Моя была: «Могу ли я купить 20 буханок хлеба, которые уже нарезаны?»   -  person Jordan Reiter    schedule 27.10.2011
comment
Если бы вы были знакомы с Twitter API, вы бы не задавали вопрос так, как вы это делали, поэтому он был расплывчатым, и я решил, что второй вопрос дает более четкое направление. Вы конкретно сказали, что не хотите вызывать API Twitter. Вы должны были сказать, что я предпочитаю делать один вызов API вместо множества.   -  person Chamilyan    schedule 27.10.2011
comment
@Chamilyan Это было то, что я имел в виду в заявлении, которое я также хотел бы избежать необходимости выполнять вызов API или HTTP-запрос для каждого URL-адреса в фиде. Часть путаницы, вероятно, также относилась к API Twitter, когда я действительно имел в виду отсутствие необходимости использовать модуль Twitter.   -  person Jordan Reiter    schedule 27.10.2011


Ответы (2)


Нет, Twitter не предлагает объект urls в своих ответах RSS, и опция include_entities не работает. Вам придется использовать другой формат ответа, например. JSON (с которым вы можете использовать параметр include_entities, который включает объект entities['urls'][n]['expanded_url']), или " сократите "URL-адреса самостоятельно после того, как это произошло.

person Jordan Running    schedule 25.10.2011

Есть способ сделать это без прямого использования Twitter API. Вы можете использовать один из нескольких ресурсов,

http://expandurl.appspot.com/

Прототип вызова API: http://expandurl.appspot.com/expand?url=

http://longurl.org

Прототип вызова API: http://api.longurl.org/v2/expand?url=

http://unshort.me/

Прототип вызова API: http://api.unshort.me/?r=http://

конечно, вы также можете использовать Twitter API напрямую для этого, как упоминал Джордан, включив &include_entities=1 или true в качестве параметра для некоторых вызовов.

также попробуйте выполнить CURL URL-адрес и посмотреть, какую информацию вы можете извлечь из этого. Я думаю, что это в значительной степени исчерпывает возможности.

person Chamilyan    schedule 26.10.2011
comment
Извините, я подумал, что также хотел бы избежать необходимости выполнять вызов API или HTTP-запрос для каждого URL-адреса в фиде, подразумевая, что я уже понял, как расширять URL-адреса. Возможно, мне следовало написать это, поскольку я понимаю, что я могу расширять URL-адреса t.co индивидуально, используя либо API, либо выполняя HTTP-запрос и анализируя ответ 302. Я не хочу делать это для каждого URL-адреса t.co в фиде. - person Jordan Reiter; 27.10.2011
comment
@ Джордан Рейтер. Я не понимаю, почему вы проголосовали против этого ответа. Вы сказали, что не хотите напрямую вызывать Twitter API, поэтому я дал вам способы сократить ссылку, не вызывая API напрямую, и я включил способ сделать один единственный вызов API И я включил способ вообще не выполнять никаких вызовов API . Я litterlaly дал вам все возможные способы сделать это. Это совершенно правильный ответ. Я не хочу начинать здесь войну, но очевидно, что вы недовольны тем, что ваш ответ был помечен как повторяющийся, поэтому вы решили проголосовать против моего. : / - person Chamilyan; 27.10.2011
comment
Вы правы, я был немного раздражен, это была чрезмерная реакция, и я уберу голос против, когда смогу. Бит о include_entities действительно отвечает на вопрос, но уже был опубликован в качестве ответа. Остальная часть вашего ответа не отвечает на вопрос, который я пытался задать, а именно, как получить длинные URL-адреса без дополнительных запросов. - person Jordan Reiter; 27.10.2011
comment
все хорошо, что хорошо кончается. Если вы отредактируете свой вопрос, я смогу проголосовать за него. - person Chamilyan; 28.10.2011