Отфильтровать @ответы в ленте Twitter?
Вопрос
У меня есть лента из моего профиля в Твиттере в верхней части сайта, но мне интересно, есть ли способ отфильтровать мои @ответы и показывать только обновления моего статуса?
Спасибо
Решение
Если вы используете стандартный веб-код ленты Twitter для Blogger и подобных сайтов, этот фрагмент Javascript поможет вам.Он находится между каналом Twitter и обратным вызовом и удаляет ответы из ответа сервера.
Для значка блога стандартный веб-код Twitter заканчивается двумя <script>
теги.Первый предоставляет функцию, которая отображает ваши твиты.Второй запрашивает твиты для отображения.
Добавьте этот скрипт в код своего бейджа перед запросом в Твиттере.Он предоставляет новую функцию filterCallback, которая удаляет @replies из ответа Twitter.
<script type="text/javascript">
function filterCallback( twitter_json ) {
var result = [];
for(var index in twitter_json) {
if(twitter_json[index].in_reply_to_user_id == null) {
result[result.length] = twitter_json[index];
}
if( result.length==5 ) break; // Edit this to change the maximum tweets shown
}
twitterCallback2(result); // Pass tweets onto the original callback. Don't change it!
}
</script>
Сам запрос Twitter имеет параметр, который определяет, какую функцию вызывать при получении ответа.В случае с блоггером эта функция называется «twitterCallback2» — вы можете найти ее в веб-коде (найдите callback=twitterCallback2
).Для использования нового фильтра необходимо заменить текст twittercallback2
с filterCallback
.Фильтр жестко запрограммирован для последующего вызова twitterCallback2
когда это будет сделано.
Обратите внимание: поскольку это уменьшит количество отображаемых твитов, если некоторые ответы от Twitter являются ответами, вам необходимо увеличить параметр count в вызове, чтобы учесть это.Новая функция ограничивает количество отображаемых ответов до пяти — отредактируйте код, чтобы изменить это.
Вот моя запись в блоге об этом: Фильтровать ответы из ленты Twitter
Другие советы
Может быть, с Yahoo трубы.
Томалак сделал небольшой пример для вас.
Если вы хотите использовать новые виджеты Twitter, просто добавьте этот фрагмент кода в features:
настройка исходного кода виджета:
filters: {
negatives: /\B@\w{1,20}(\s+|$)/
},
Я взял это с сайта Дастина Диаса по адресу http://www.dustindiaz.com.Дастин Диас — создатель виджета Twitter.
Измените вызов setUser на
setUser('name&exclude_replies=true');
Это своего рода хак, но он помогает
Зависит от того, что вы используете для отображения записей.Если вы используете виджет Twitter, то, скорее всего, нет.Если вы используете какой-либо другой программный способ отображения элементов, вам необходимо предоставить более подробную информацию о том, что вы делаете (язык, пример кода и т. д.), и мы, вероятно, сможем помочь с фильтрацией.
Вероятно, вы захотите использовать регулярное выражение.Что-то вроде:
[a-zA-Z0-9][a-zA-Z0-9]*: @[a-zA-Z0-9][a-zA-Z0-9]*.*
В зависимости от того, как вы форматируете ленту Twitter на своей странице.Это регулярное выражение предполагает, что вы отформатированы примерно так:
username: @username msg txt
Если оно совпадает, не отображайте его.Если оно не совпадает, то отобразите его.:) Если у вас есть теги вместе с текстом, настройте регулярное выражение соответствующим образом.