Разбор текста Json в Twitter с использованием Javascript - PullRequest
1 голос
/ 28 июня 2011

Мне нужна помощь в разборе текста фида JSON, возвращенного из Twitter. Мне нужно получить доступ и применить теги стиля к ссылке, create_date и другой информации. Любые советы о том, как этого добиться? Заранее спасибо

Ответы [ 5 ]

3 голосов
/ 28 июня 2011

Первые результаты в Google:

Ральф Уитбек - Блог - Обновление твиттера с помощью JSON и jQuery . Код ниже:

var url = "http://twitter.com/status/user_timeline/RedWolves.json?count=3&callback=?";
$.getJSON(url, function(data){
    $.each(data, function(i, item) {
        $("img#profile").attr("src", item.user["profile_image_url"]); 
        $("#tweets ul").append("<li>" 
                                + item.text.linkify() 
                                + " <span class='created_at'>" 
                                + relative_time(item.created_at) 
                                + " via " 
                                + item.source
                                + "</span></li>");
    });
});

И HTML:

<div id="tweets">
    <img id="profile">
    <ul></ul>
</div>

Другой пример. Извлечение твитов с помощью jQuery и JSON API Twitter . Воспроизведение ниже:

$(document).ready(function() {
  // Declare variables to hold twitter API url and user name
  var twitter_api_url = 'http://search.twitter.com/search.json';
  var twitter_user    = 'lupomontero';

  // Enable caching
  $.ajaxSetup({ cache: true });

  // Send JSON request
  // The returned JSON object will have a property called "results" where we find
  // a list of the tweets matching our request query
  $.getJSON(
    twitter_api_url + '?callback=?&rpp=5&q=from:' + twitter_user,
    function(data) {
      $.each(data.results, function(i, tweet) {
        // Uncomment line below to show tweet data in Fire Bug console
        // Very helpful to find out what is available in the tweet objects
        //console.log(tweet);

        // Before we continue we check that we got data
        if(tweet.text !== undefined) {
          // Calculate how many hours ago was the tweet posted
          var date_tweet = new Date(tweet.created_at);
          var date_now   = new Date();
          var date_diff  = date_now - date_tweet;
          var hours      = Math.round(date_diff/(1000*60*60));

          // Build the html string for the current tweet
          var tweet_html = '<div class="tweet_text">';
          tweet_html    += '<a href="http://www.twitter.com/';
          tweet_html    += twitter_user + '/status/' + tweet.id + '">';
          tweet_html    += tweet.text + '<\/a><\/div>';
          tweet_html    += '<div class="tweet_hours">' + hours;
          tweet_html    += ' hours ago<\/div>';

          // Append html string to tweet_container div
          $('#tweet_container').append(tweet_html);
        }
      });
    }
  );
});
1 голос
/ 30 июня 2011

Было бы намного проще разобраться на стороне сервера, но я предполагаю, что вы делаете сайт полностью на стороне клиента?

образец Javascript:

    //store your JSON into a variable  
    var yourJSON = {"animals": 
                       [ {"type": "dog",  "name": "Paul"},
                         {"type": "cat",  "name": "Ralph"},
                         {"type": "bird", "name": "Jim"} ]
                   };

    //retrieve data and store into variables (do with them what you will)
    var PaulsType = yourJSON.animals[0].type; //returns 'dog'
    var BirdsName = yourJSON.animals[2].name; //returns 'Jim'


Так что с Twitter существует множество уровней инкапсуляции, поэтому вам необходимо соответственно отрегулировать. Например, для получения ваших подписчиков у вас будет что-то вроде этого:

[{"statuses_count": 527, "profile_use_background_image": true, ....
....
, "status": {"place": null, "retweeted_status": {"place": null, "координат": null, "retweet_count": "100 +", "усеченный": false, "текст": "BLAHBLAHBLAH" .....

Так что это просто показывает индекс 0. Если вы хотите вернуть текст самого последнего твита вашего первого подписчика (человека, который последним следил за вами), вам придется использовать javascript, как это. В этом примере твит представляет собой ретвит (чтобы показать использование инкапсуляции):

var yourJSON = {put Twitter output here};
var firstFollowersTweet_retweet = yourJSON[0].status.retweeted_status.text;

//to get raw text whether retweet or not
var firstFollowersTweet = yourJSON[0].status.text;


POW

0 голосов
/ 04 апреля 2013

Есть веская причина для доступа к API Twitter со стороны клиента, а не со стороны сервера.Если вы получаете доступ к их API на стороне сервера с помощью PHP, IP-адрес сервера может быть ограничен по скорости Twitter.Кроме того, кажется, что Twitter может не иметь опубликованных ограничений скорости.

Использование REST API не поможет, так как ограничение слишком мало для разработки сайта для неизвестного числа (потенциально большого числа) пользователей.Это не масштабируется.

Используя JavaScript, может быть проще, чтобы клиент запрашивал данные вместо этого.

Было бы возможно OAuth каждому клиенту и использовать его / ее собственный API-Limit,но какая головная боль только для получения некоторых твитов.Я думаю, что общее использование - более легкий обходной путь.

0 голосов
/ 28 июня 2011

Если вы хотите конвертировать JSON в HTML, есть хороший движок шаблонов: tempo js

0 голосов
/ 28 июня 2011

Посмотрите на $. Json , это сделано специально для этого.Это ajax-вызов, который автоматически анализирует json при возврате (в массив) для использования в обратном вызове.

...