Как я могу получить определенные параметры твитов, чтобы сохранить их в файл с помощью json.stringify?(Метод, который я использую, работает для Stream, но не для GET) - PullRequest
0 голосов
/ 23 сентября 2018

Я пытаюсь сохранить в файл только имя пользователя @screen_name и текст твита, который я получаю с помощью API Twitter, и не могу найти какую-либо документацию по этому вопросу на веб-сайте API API Twitter или в документах json.strinigify.Я использую код, который по какой-то причине не работает с GET: (1001 *

var params = {q: '@Avengers, count: 1, include_rts: 1};
client.get('search/tweets', params, function(error, tweets, response) {
if (!error) {
    console.log(tweets);
    fs.appendFile("tweet.txt", JSON.stringify(tweets.text), function (err) {
    //user.name or .text doesn't work in GET and I am trying to find the methods
    //that work for GET 
        if (err) throw err;
            console.log('Saved!');
        }); 
    }
});

я не могу найти ничего, связанного с решением моей проблемы в Google):, он работает и сохраняет как имя пользователя, который опубликовал твит, так и текст твита (что мне и нужно).Моя проблема здесь в том, что поток не имеет никакого метода для получения твитов с именем пользователя @screen_name, поэтому я приступил к использованию метода GET.Мой код потока для этого приведен ниже:

var stream = client.stream('statuses/filter', {track: 'Avengers'});
    stream.on('data', function(event) {
        console.log("Tweeted by ::::>>>" + event.user.name + " ::::>>> " +  "Tweet is :::>>>> " + event.text + " ::::>>>");
        fs.appendFile("tweet.txt", JSON.stringify(event.user.name+' ////////'+event.text)+"\n", function (err) {
        if (err) throw err;
        console.log('Saved!');
    });
});

Мой результат с методом GET - большой беспорядок параметров, которые мне не нужны, когда он сохраняется в файле:

 "statuses": [
  {
   "created_at": "Sun Sep 23 05:03:17 +0000 2018",
   "id": 1043727480572522500,
   "id_str": "1043727480572522496",
   "text": "@Avengers Gamora, Dr Strange and Vision all made comment about dying before given up Stones in 1st 45 minutes. Gett… --------OtAEPXbih4",
   "truncated": true,
   "entities": {
    "hashtags": [],
    "symbols": [],
    "user_mentions": [
     {
      "screen_name": "Avengers",
      "name": "The Avengers",
      "id": 393852070,
      "id_str": "393852070",
      "indices": [
       0,
       9
      ]
     }
    ],
    "urls": [
     {
      "url": "--------OtAEPXbih4",
      "expanded_url": "--------i/web/status/1043727480572522496",
      "display_url": "twitter.com/i/web/status/1…",
      "indices": [
       117,
       140
      ]
     }
    ]
   },
   "metadata": {
    "iso_language_code": "en",
    "result_type": "recent"
   },
   "source": "<a href=\"--------#!/download/ipad\" rel=\"nofollow\">Twitter for iPad</a>",
   "in_reply_to_status_id": null,
   "in_reply_to_status_id_str": null,
   "in_reply_to_user_id": 393852070,
   "in_reply_to_user_id_str": "393852070",
   "in_reply_to_screen_name": "Avengers",
   "user": {
    "id": 1558865406,
    "id_str": "1558865406",
    "name": "john sabo",
    "screen_name": "saybow1969",
    "location": "",
    "description": "",
    "url": null,
    "entities": {
     "description": {
      "urls": []
     }
    },
    "protected": false,
    "followers_count": 52,
    "friends_count": 397,
    "listed_count": 5,
    "created_at": "Sun Jun 30 20:40:04 +0000 2013",
    "favourites_count": 680,
    "utc_offset": null,
    "time_zone": null,
    "geo_enabled": true,
    "verified": false,
    "statuses_count": 24062,
    "lang": "en",
    "contributors_enabled": false,
    "is_translator": false,
    "is_translation_enabled": false,
    "profile_background_color": "C0DEED",
    "profile_background_image_url": "----://abs.twimg.com/images/themes/theme1/bg.png",
    "profile_background_image_url_----": "----://abs.twimg.com/images/themes/theme1/bg.png",
    "profile_background_tile": false,
    "profile_image_url": "----://pbs.twimg.com/profile_images/825511373396439040/zZf_Z9Hu_normal.jpg",
    "profile_image_url_----": "----://pbs.twimg.com/profile_images/825511373396439040/zZf_Z9Hu_normal.jpg",
    "profile_banner_url": "----://pbs.twimg.com/profile_banners/1558865406/1486454716",
    "profile_link_color": "1DA1F2",
    "profile_sidebar_border_color": "C0DEED",
    "profile_sidebar_fill_color": "DDEEF6",
    "profile_text_color": "333333",
    "profile_use_background_image": true,
    "has_extended_profile": false,
    "default_profile": true,
    "default_profile_image": false,
    "following": false,
    "follow_request_sent": false,
    "notifications": false,
    "translator_type": "none"
   },
   "geo": null,
   "coordinates": null,
   "place": null,
   "contributors": null,
   "is_quote_status": false,
   "retweet_count": 0,
   "favorite_count": 0,
   "favorited": false,
   "retweeted": false,
   "lang": "en"
  }
 ],
 "search_metadata": {
  "completed_in": 0.015,
  "max_id": 1043727480572522500,
  "max_id_str": "1043727480572522496",
  "next_results": "?max_id=1043727480572522495&q=%40Avengers&count=1&include_entities=1",
  "query": "%40Avengers",
  "refresh_url": "?since_id=1043727480572522496&q=%40Avengers&include_entities=1",
  "count": 1,
  "since_id": 0,
  "since_id_str": "0"
 }
}

Мой метод Stream делает это правильно, но мой GET - нет, и вот что дает мне мой поток:

"Trash Flaten ////////@lliejuve @lliejuve on current tv it has to be the voice actor for Thor in Disney's Avengers Assemble. So o respect…

Как вы можете видеть, Stream дает мне имя пользователя @screen_name и текст твитаэто то, что мне нужно, но в методе GET user.name и .text просто не делают этого.

1 Ответ

0 голосов
/ 23 сентября 2018
var params = {q: '@Avengers, count: 1, include_rts: 1};
client.get('search/tweets', params, function(error, tweets, response) {
if (!error) {
    console.log(tweets);
    fs.appendFile("tweet.txt", JSON.stringify(tweets.statuses[0].text), function (err) {
        if (err) throw err;
            console.log('Saved!');
        }); 
    }
});

Попробуйте это изменение выше.Это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...