twitter_to_csv 0.1.2 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ OThlMGM3MzUzM2U2YjZiMDFjNjJhNGQxNTJkZGIxYTc1ZjRlNWM4NA==
5
+ data.tar.gz: !binary |-
6
+ M2I0NmVmYTlmOGE3ZmZiYzUyNDdkYTUxYmU0ZDg1Y2NjOWU5MWI3Ng==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ MDJiMTkzMzIwY2MxZjE2ZGNmMzJhMmQxYmJhNGQzYTE4NDlkNzM4YmEzYWUz
10
+ MTkwNDJmZGE2YTU0MTYyODNkYzJmZDk5NmJhODExMjA5MjExY2Y3NmI4Njlm
11
+ OWQ5ZTg0YmVhYTUwNGU0OTkzYzMyOTc5NWY5NjI1MWQwMDFiYTE=
12
+ data.tar.gz: !binary |-
13
+ NTU1MjExM2ZiMGJhZGZlNWQzMjllYWM1NzNjNTVlNTNhZTk3Njc5MjBkNjgz
14
+ OWJlNzE3MDgxYWNhZTNiNzk5OWQ0M2E1YTYxOGM1MmU5MDZjZTQ0ZDdkZmQ1
15
+ N2NlYjJjOTFhNmE3MmMzMWZmYjVlNWYzYjI2ZDQ1MDhiMTdjMjM=
data/.gitignore CHANGED
@@ -4,3 +4,4 @@ Gemfile.lock
4
4
  pkg/*
5
5
  .idea
6
6
  data
7
+ scripts
@@ -0,0 +1 @@
1
+ twitter_to_csv
@@ -0,0 +1 @@
1
+ ruby-1.9.3-p392
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ script: "bundle exec rake"
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gemspec
3
+ gemspec
4
+
5
+ gem 'rake'
@@ -1,14 +1,19 @@
1
1
  # Twitter To CSV
2
2
 
3
+ [![Build Status](https://travis-ci.org/cantino/twitter_to_csv.png)](https://travis-ci.org/cantino/twitter_to_csv)
4
+
3
5
  A tool for exporting the Twitter stream into a CSV file.
4
6
 
5
7
  (sudo) gem install twitter_to_csv
6
8
 
7
9
  ## Usage
8
10
 
11
+ ### Quick Example
12
+
9
13
  You might start by first running the script for a while to dump the Twitter stream into a JSON file:
10
14
 
11
- twitter_to_csv --username <your twitter username> --password <your twitter password> \
15
+ twitter_to_csv --api-key <your twitter api key> --api-secret <your twitter api secret> \
16
+ --access-token <your twitter access token> --access-token-secret <your twitter access token secret> \
12
17
  --json out.json --filter your,keywords,of,interest
13
18
 
14
19
  Then, later, you could export to CSV:
@@ -18,32 +23,39 @@ Then, later, you could export to CSV:
18
23
 
19
24
  Alternatively, you can always stream directly to CSV:
20
25
 
21
- twitter_to_csv --username <your twitter username> --password <your twitter password> \
26
+ twitter_to_csv --api-key <your twitter api key> --api-secret <your twitter api secret> \
27
+ --access-token <your twitter access token> --access-token-secret <your twitter access token secret> \
22
28
  --filter your,keywords,of,interest --csv out.csv \
23
29
  --fields text,created_at,user.name,retweeted_status.id,retweeted_status.favorited,...
24
30
 
31
+ ### Getting your Twitter API Key and Token
32
+
33
+ Twitter requires all API access over oAuth. Follow these instructions to get register and authorize a free Twitter API Application:
34
+
35
+ * Visit https://apps.twitter.com/app/new
36
+ * Enter something like "my twitter\_to\_csv" as the name, "Using twitter_to_csv Ruby gem" as the description, and "https://github.com/cantino/twitter_to_csv" as the website.
37
+ * Click "manage API keys"
38
+ * Copy down the "API key" and "API secret"
39
+ * Click "Create my access token" at the bottom of the page, refreshing until your new access token shows up at the bottom of the page. Copy down your "Access token" and "Access token secret".
40
+ * You're all set!
41
+
25
42
  ## Requiring English
26
43
 
27
44
  You may want to limit to Tweets that appear to be written in English.
28
45
 
29
- twitter_to_csv --username <your twitter username> --password <your twitter password> \
46
+ twitter_to_csv --api-key <your twitter api key> --api-secret <your twitter api secret> \
47
+ --access-token <your twitter access token> --access-token-secret <your twitter access token secret> \
30
48
  --require-english --fields ...
31
49
 
32
50
  This filter isn't perfect and will have both false positives and false negatives, but it works fairly well.
33
51
 
34
52
  ## URLS, Hashtags, and User Mentions
35
53
 
36
- You can extract URLs, Hashtags, and User Mentions from the tweet into their own columns by using `--url-columns`, `--hashtag-columns`, and `--user-mention-columns`.
37
- For example, you could use `--url-columns 3` to get up to 3 extracted URLs in their own columns.
54
+ You can extract URLs, Hashtags, and User Mentions from the tweet into their own columns by using `--url-columns`, `--hashtag-columns`, and `--user-mention-columns`. For example, you could use `--url-columns 3` to get up to 3 extracted URLs in their own columns.
38
55
 
39
56
  ## Sentiment Tagging
40
57
 
41
- Twitter To CSV can compute an average sentiment score for each tweet. Provide `--compute-sentiment` to use this feature.
42
- The [AFINN-111](http://fnielsen.posterous.com/old-anew-a-sentiment-about-sentiment-analysis) valence database is used to look up the valence of
43
- each recognized word, then the average is computed, only considering words that have some known valence associated. That is, "I love cheese" only has
44
- one word with valence, "love" with a score of 3, so the average is 3. "I love cheese and like bread", on the other hand, has two words with
45
- valence, "love" (3) and "like" (2), and so has an average valence of (3 + 2) / 2, or 2.5. The library will break hyphenated words up and score them as
46
- separate words unless the whole thing has a single known valence.
58
+ Twitter To CSV can compute an average sentiment score for each tweet. Provide `--compute-sentiment` to use this feature. The [AFINN-111](http://fnielsen.posterous.com/old-anew-a-sentiment-about-sentiment-analysis) valence database is used to look up the valence of each recognized word, then the average is computed, only considering words that have some known valence associated. That is, "I love cheese" only has one word with valence, "love" with a score of 3, so the average is 3. "I love cheese and like bread", on the other hand, has two words with valence, "love" (3) and "like" (2), and so has an average valence of (3 + 2) / 2, or 2.5. The library will break hyphenated words up and score them as separate words unless the whole thing has a single known valence.
47
59
 
48
60
  ## Handling of Retweets
49
61
 
@@ -56,7 +68,7 @@ Once you have a recorded Twitter stream, you can rollup retweets in various ways
56
68
  --retweet-counts-at 0.5,2,48 \
57
69
  --fields retweet_count,text
58
70
 
59
- Note that all of the retweet features require you to `--replay-from-file` because they parse the stream backwards. They will not function correctly from the stream directly.
71
+ *Note* that all of the retweet features require you to `--replay-from-file` because they parse the stream backwards. They WILL NOT function correctly when you're reading directly from the stream .
60
72
 
61
73
  ## Selecting Windows
62
74
 
@@ -73,148 +85,299 @@ Sometimes the Twitter API goes down. You can analyze a json output file to see
73
85
 
74
86
  twitter_to_csv --replay-from-file out.json --analyze-gaps 10
75
87
 
88
+ ## Creating Dynamic Binary Fields
89
+
90
+ If you're doing research on Twitter, it may make sense to construct composite binary variables predicated on the existence of certain tokens in a tweet. For example, you may want
91
+ a variable called _sf_ that is true if the tweet contains _san francisco_ OR _sf_ OR _bay area_ (but not _area by the bay_). You could do that as follows:
92
+
93
+ twitter_to_csv --replay-from-file out.json \
94
+ --csv out.csv \
95
+ -w "sf: san francisco OR sf OR bay area" \
96
+
97
+ If you did want to allow _area by the bay_, you might need something like:
98
+
99
+ -w "sf: san francisco OR sf OR (bay AND area)"
100
+
101
+ ## Other Options
102
+
103
+ Use `twitter_to_csv --help` to see all available options:
104
+
105
+ Usage: twitter_to_csv [options]
106
+
107
+ These four fields are required. Please see the README to learn how to get them for your Twitter account.
108
+ --api-key KEY Twitter API key
109
+ --api-secret SECRET Twitter API secret
110
+ --access-token TOKEN Twitter access token
111
+ --access-token-secret SECRET Twitter access token secret
112
+
113
+ General settings:
114
+ -c, --csv FILE The CSV file to append to, or - for STDOUT
115
+ -j, --json FILE The JSON file to append to, or - for STDOUT
116
+ -f, --filter KEYWORDS Keywords to ask Twitter to filter on
117
+ -x, --fields FIELDS Fields to include in the CSV
118
+ --date-fields FIELD_NAMES Break these fields into separate numerical columns for weekday, day, month, your, hour, minute, and second.
119
+ -e, --require-english [STRATEGY] Attempt to filter out non-English tweets. This will have both false positives and false negatives.
120
+ The strategy can be either 'uld' to use the UnsupervisedLanguageDetection Ruby gem,
121
+ 'lang' to use Twitter's guessed 'lang' attribute, or 'both' to only remove tweets that
122
+ both Twitter and ULD think are non-English. This is most conservative and is the default.
123
+ -v, --[no-]verbose Run verbosely
124
+ -r, --replay-from-file FILENAME Replay tweets from a JSON dump file
125
+ --analyze-gaps MINUTES Look at the stream and display gap information for gaps longer than MINUTES
126
+ --sample-fields NUMBER_OF_SAMPLES
127
+ Record NUMBER_OF_SAMPLES tweets and then print out all
128
+ of the field names seen. Use to find out what can be passed to.
129
+ --url-columns NUM_COLUMNS Extract up to NUM_COLUMNS urls from the status and include them in the CSV
130
+ --hash-columns NUM_COLUMNS Extract up to NUM_COLUMNS hashtags (#foo) from the status and include them in the CSV
131
+ --user-columns NUM_COLUMNS Extract up to NUM_COLUMNS user mentions (@foo) from the status and include them in the CSV
132
+ -s, --compute-sentiment Compute an average sentiment score for each status using the AFINN-111 sentiment dictionary
133
+ --compute-word-count Include a word count for each status in the output CSV
134
+ --normalize-source Return just the domain name from the Tweet source (i.e., tweetdeck, facebook)
135
+ --remove-quotes This option strips all double quotes from the output to help some CSV parsers.
136
+ --prefix-ids Prefix any field ending in _id or _id_str with 'id' to force parsing as a string in some programs.
137
+ -w "NAME:WORD AND WORD AND WORD",
138
+ --bool-word-field Create a named CSV column that is true when the word expression matches, false otherwise.
139
+ Word expressions are boolean expressions where neighboring words must occur sequentially
140
+ and you can use parentheses, AND, and OR to test for occurrence relationships. Examples:
141
+ keyword_any:tanning booth OR tanning booths OR tanningbooth
142
+ keyword_both:tanning AND booth
143
+ keyword_complex:tanning AND (booth OR bed)
144
+ This option can be used multiple times.
145
+ --start TIME Ignore tweets with a created_at earlier than TIME
146
+ --end TIME Ignore tweets with a created_at later than TIME
147
+
148
+ If you would like to do special retweet handling, use the following options.
149
+ For these to function, you must be using --replay-from-file. The replay will be performed in reverse.
150
+ --retweet-mode MODE Determine how to handle retweets
151
+ Options are just 'ROLLUP'
152
+ --retweet-threshold COUNT Only consider statuses with at least COUNT retweets
153
+ --retweet-window WINDOW Ignore retweets that occur beyond WINDOW days
154
+ Additionally, statuses where WINDOW days have not yet passed will be ignored.
155
+ --retweet-counts-at HOURS Output the number of retweets seen at specific times after the original tweet
156
+ -h, --help Show this message
157
+ --version Show version
158
+
76
159
  ## Field names
77
160
 
78
161
  Use `--sample-fields 1000` to output the occurrence count of different Twitter fields, like so:
79
162
 
80
- twitter_to_csv --username <your twitter username> --password <your twitter password> --sample-fields 1000
81
-
82
- Here's a partial list:
83
-
84
- in_reply_to_screen_name
85
- favorited
86
- text
87
- entities.urls
88
- entities.user_mentions
89
- entities.hashtags
90
- in_reply_to_user_id
91
- contributors
92
- place
93
- coordinates
94
- source
95
- geo
96
- retweeted
97
- retweet_count
98
- in_reply_to_status_id
99
- in_reply_to_status_id_str
100
- id_str
101
- user.default_profile_image
102
- user.verified
103
- user.notifications
104
- user.profile_sidebar_border_color
105
- user.screen_name
106
- user.lang
107
- user.favourites_count
108
- user.contributors_enabled
109
- user.profile_use_background_image
110
- user.friends_count
111
- user.location
112
- user.profile_text_color
113
- user.followers_count
114
- user.profile_image_url
115
- user.description
116
- user.statuses_count
117
- user.following
118
- user.profile_background_image_url
119
- user.show_all_inline_media
120
- user.listed_count
121
- user.profile_link_color
122
- user.is_translator
123
- user.default_profile
124
- user.time_zone
125
- user.profile_background_color
126
- user.protected
127
- user.id_str
128
- user.geo_enabled
129
- user.profile_background_tile
130
- user.name
131
- user.profile_background_image_url_https
132
- user.created_at
133
- user.profile_sidebar_fill_color
134
- user.id
135
- user.follow_request_sent
136
- user.utc_offset
137
- user.url
138
- user.profile_image_url_https
139
- truncated
140
- id
141
- created_at
142
- in_reply_to_user_id_str
143
- retweeted_status.in_reply_to_screen_name
144
- retweeted_status.favorited
145
- retweeted_status.text
146
- retweeted_status.entities.urls
147
- retweeted_status.entities.user_mentions
148
- retweeted_status.entities.hashtags
149
- retweeted_status.in_reply_to_user_id
150
- retweeted_status.contributors
151
- retweeted_status.place
152
- retweeted_status.coordinates
153
- retweeted_status.source
154
- retweeted_status.geo
155
- retweeted_status.retweeted
156
- retweeted_status.retweet_count
157
- retweeted_status.in_reply_to_status_id
158
- retweeted_status.in_reply_to_status_id_str
159
- retweeted_status.id_str
160
- retweeted_status.user.default_profile_image
161
- retweeted_status.user.verified
162
- retweeted_status.user.notifications
163
- retweeted_status.user.profile_sidebar_border_color
164
- retweeted_status.user.screen_name
165
- retweeted_status.user.lang
166
- retweeted_status.user.favourites_count
167
- retweeted_status.user.contributors_enabled
168
- retweeted_status.user.profile_use_background_image
169
- retweeted_status.user.friends_count
170
- retweeted_status.user.location
171
- retweeted_status.user.profile_text_color
172
- retweeted_status.user.followers_count
173
- retweeted_status.user.profile_image_url
174
- retweeted_status.user.description
175
- retweeted_status.user.statuses_count
176
- retweeted_status.user.following
177
- retweeted_status.user.profile_background_image_url
178
- retweeted_status.user.show_all_inline_media
179
- retweeted_status.user.listed_count
180
- retweeted_status.user.profile_link_color
181
- retweeted_status.user.is_translator
182
- retweeted_status.user.default_profile
183
- retweeted_status.user.time_zone
184
- retweeted_status.user.profile_background_color
185
- retweeted_status.user.protected
186
- retweeted_status.user.id_str
187
- retweeted_status.user.geo_enabled
188
- retweeted_status.user.profile_background_tile
189
- retweeted_status.user.name
190
- retweeted_status.user.profile_background_image_url_https
191
- retweeted_status.user.created_at
192
- retweeted_status.user.profile_sidebar_fill_color
193
- retweeted_status.user.id
194
- retweeted_status.user.follow_request_sent
195
- retweeted_status.user.utc_offset
196
- retweeted_status.user.url
197
- retweeted_status.user.profile_image_url_https
198
- retweeted_status.truncated
199
- retweeted_status.id
200
- retweeted_status.created_at
201
- retweeted_status.in_reply_to_user_id_str
202
- possibly_sensitive
203
- possibly_sensitive_editable
204
- retweeted_status.possibly_sensitive
205
- retweeted_status.possibly_sensitive_editable
206
- place.country_code
207
- place.place_type
208
- place.country
209
- place.bounding_box.type
210
- place.bounding_box.coordinates
211
- place.full_name
212
- place.name
213
- place.id
214
- place.url
215
- coordinates.type
216
- coordinates.coordinates
217
- geo.type
218
- geo.coordinates
219
- retweeted_status.entities.media
220
- entities.media
163
+ twitter_to_csv --api-key <your twitter api key> --api-secret <your twitter api secret> \
164
+ --access-token <your twitter access token> --access-token-secret <your twitter access token secret> \
165
+ --sample-fields 1000
166
+
167
+ Here's a list of fields and their occurrences in a 50,000 tweet dataset:
168
+
169
+ id 50000
170
+ id_str 50000
171
+ created_at 50000
172
+ text 50000
173
+ source 50000
174
+ truncated 50000
175
+ in_reply_to_status_id 50000
176
+ in_reply_to_status_id_str 50000
177
+ in_reply_to_user_id 50000
178
+ in_reply_to_user_id_str 50000
179
+ in_reply_to_screen_name 50000
180
+ user.id 50000
181
+ user.id_str 50000
182
+ user.name 50000
183
+ user.screen_name 50000
184
+ user.location 50000
185
+ user.url 50000
186
+ user.description 50000
187
+ user.protected 50000
188
+ user.followers_count 50000
189
+ user.friends_count 50000
190
+ user.listed_count 50000
191
+ user.created_at 50000
192
+ user.favourites_count 50000
193
+ user.utc_offset 50000
194
+ user.time_zone 50000
195
+ user.geo_enabled 50000
196
+ user.verified 50000
197
+ user.statuses_count 50000
198
+ user.lang 50000
199
+ user.contributors_enabled 50000
200
+ user.is_translator 50000
201
+ user.profile_background_color 50000
202
+ user.profile_background_image_url 50000
203
+ user.profile_background_image_url_https 50000
204
+ user.profile_background_tile 50000
205
+ user.profile_image_url 50000
206
+ user.profile_image_url_https 50000
207
+ user.profile_banner_url 41614
208
+ user.profile_link_color 50000
209
+ user.profile_sidebar_border_color 50000
210
+ user.profile_sidebar_fill_color 50000
211
+ user.profile_text_color 50000
212
+ user.profile_use_background_image 50000
213
+ user.default_profile 50000
214
+ user.default_profile_image 50000
215
+ user.following 50000
216
+ user.follow_request_sent 50000
217
+ user.notifications 50000
218
+ geo 48656
219
+ coordinates 48656
220
+ place 48664
221
+ contributors 50000
222
+ retweet_count 50000
223
+ favorite_count 50000
224
+ favorited 50000
225
+ retweeted 50000
226
+ filter_level 50000
227
+ lang 36041
228
+ entities.hashtags[].text 11024
229
+ entities.hashtags[].indices[] 11024
230
+ entities.user_mentions[].screen_name 22368
231
+ entities.user_mentions[].name 22368
232
+ entities.user_mentions[].id 22368
233
+ entities.user_mentions[].id_str 22368
234
+ entities.user_mentions[].indices[] 22368
235
+ retweeted_status.created_at 13959
236
+ retweeted_status.id 13959
237
+ retweeted_status.id_str 13959
238
+ retweeted_status.text 13959
239
+ retweeted_status.source 13959
240
+ retweeted_status.truncated 13959
241
+ retweeted_status.in_reply_to_status_id 13959
242
+ retweeted_status.in_reply_to_status_id_str 13959
243
+ retweeted_status.in_reply_to_user_id 13959
244
+ retweeted_status.in_reply_to_user_id_str 13959
245
+ retweeted_status.in_reply_to_screen_name 13959
246
+ retweeted_status.user.id 13959
247
+ retweeted_status.user.id_str 13959
248
+ retweeted_status.user.name 13959
249
+ retweeted_status.user.screen_name 13959
250
+ retweeted_status.user.location 13959
251
+ retweeted_status.user.url 13959
252
+ retweeted_status.user.description 13959
253
+ retweeted_status.user.protected 13959
254
+ retweeted_status.user.followers_count 13959
255
+ retweeted_status.user.friends_count 13959
256
+ retweeted_status.user.listed_count 13959
257
+ retweeted_status.user.created_at 13959
258
+ retweeted_status.user.favourites_count 13959
259
+ retweeted_status.user.utc_offset 13959
260
+ retweeted_status.user.time_zone 13959
261
+ retweeted_status.user.geo_enabled 13959
262
+ retweeted_status.user.verified 13959
263
+ retweeted_status.user.statuses_count 13959
264
+ retweeted_status.user.lang 13959
265
+ retweeted_status.user.contributors_enabled 13959
266
+ retweeted_status.user.is_translator 13959
267
+ retweeted_status.user.profile_background_color 13959
268
+ retweeted_status.user.profile_background_image_url 13959
269
+ retweeted_status.user.profile_background_image_url_https 13959
270
+ retweeted_status.user.profile_background_tile 13959
271
+ retweeted_status.user.profile_image_url 13959
272
+ retweeted_status.user.profile_image_url_https 13959
273
+ retweeted_status.user.profile_banner_url 11028
274
+ retweeted_status.user.profile_link_color 13959
275
+ retweeted_status.user.profile_sidebar_border_color 13959
276
+ retweeted_status.user.profile_sidebar_fill_color 13959
277
+ retweeted_status.user.profile_text_color 13959
278
+ retweeted_status.user.profile_use_background_image 13959
279
+ retweeted_status.user.default_profile 13959
280
+ retweeted_status.user.default_profile_image 13959
281
+ retweeted_status.user.following 13959
282
+ retweeted_status.user.follow_request_sent 13959
283
+ retweeted_status.user.notifications 13959
284
+ retweeted_status.geo 13728
285
+ retweeted_status.coordinates 13728
286
+ retweeted_status.place 13724
287
+ retweeted_status.contributors 13959
288
+ retweeted_status.retweet_count 13959
289
+ retweeted_status.favorite_count 13959
290
+ retweeted_status.entities.hashtags[].text 2438
291
+ retweeted_status.entities.hashtags[].indices[] 2438
292
+ retweeted_status.entities.urls[].url 361
293
+ retweeted_status.entities.urls[].expanded_url 361
294
+ retweeted_status.entities.urls[].display_url 361
295
+ retweeted_status.entities.urls[].indices[] 361
296
+ retweeted_status.favorited 13959
297
+ retweeted_status.retweeted 13959
298
+ retweeted_status.possibly_sensitive 916
299
+ retweeted_status.lang 13959
300
+ entities.urls[].url 3662
301
+ entities.urls[].expanded_url 3662
302
+ entities.urls[].display_url 3662
303
+ entities.urls[].indices[] 3662
304
+ possibly_sensitive 5339
305
+ entities.media[].id 1736
306
+ entities.media[].id_str 1736
307
+ entities.media[].indices[] 1736
308
+ entities.media[].media_url 1736
309
+ entities.media[].media_url_https 1736
310
+ entities.media[].url 1736
311
+ entities.media[].display_url 1736
312
+ entities.media[].expanded_url 1736
313
+ entities.media[].type 1736
314
+ entities.media[].sizes.thumb.w 1736
315
+ entities.media[].sizes.thumb.h 1736
316
+ entities.media[].sizes.thumb.resize 1736
317
+ entities.media[].sizes.large.w 1736
318
+ entities.media[].sizes.large.h 1736
319
+ entities.media[].sizes.large.resize 1736
320
+ entities.media[].sizes.small.w 1736
321
+ entities.media[].sizes.small.h 1736
322
+ entities.media[].sizes.small.resize 1736
323
+ entities.media[].sizes.medium.w 1736
324
+ entities.media[].sizes.medium.h 1736
325
+ entities.media[].sizes.medium.resize 1736
326
+ geo.type 1344
327
+ geo.coordinates[] 1344
328
+ coordinates.type 1344
329
+ coordinates.coordinates[] 1344
330
+ place.id 1336
331
+ place.url 1336
332
+ place.place_type 1336
333
+ place.name 1336
334
+ place.full_name 1336
335
+ place.country_code 1336
336
+ place.country 1336
337
+ place.bounding_box.type 1336
338
+ place.bounding_box.coordinates[][][] 1336
339
+ entities.media[].source_status_id 621
340
+ entities.media[].source_status_id_str 621
341
+ retweeted_status.entities.user_mentions[].screen_name 1379
342
+ retweeted_status.entities.user_mentions[].name 1379
343
+ retweeted_status.entities.user_mentions[].id 1379
344
+ retweeted_status.entities.user_mentions[].id_str 1379
345
+ retweeted_status.entities.user_mentions[].indices[] 1379
346
+ retweeted_status.entities.media[].id 609
347
+ retweeted_status.entities.media[].id_str 609
348
+ retweeted_status.entities.media[].indices[] 609
349
+ retweeted_status.entities.media[].media_url 609
350
+ retweeted_status.entities.media[].media_url_https 609
351
+ retweeted_status.entities.media[].url 609
352
+ retweeted_status.entities.media[].display_url 609
353
+ retweeted_status.entities.media[].expanded_url 609
354
+ retweeted_status.entities.media[].type 609
355
+ retweeted_status.entities.media[].sizes.thumb.w 609
356
+ retweeted_status.entities.media[].sizes.thumb.h 609
357
+ retweeted_status.entities.media[].sizes.thumb.resize 609
358
+ retweeted_status.entities.media[].sizes.medium.w 609
359
+ retweeted_status.entities.media[].sizes.medium.h 609
360
+ retweeted_status.entities.media[].sizes.medium.resize 609
361
+ retweeted_status.entities.media[].sizes.large.w 609
362
+ retweeted_status.entities.media[].sizes.large.h 609
363
+ retweeted_status.entities.media[].sizes.large.resize 609
364
+ retweeted_status.entities.media[].sizes.small.w 609
365
+ retweeted_status.entities.media[].sizes.small.h 609
366
+ retweeted_status.entities.media[].sizes.small.resize 609
367
+ retweeted_status.place.id 235
368
+ retweeted_status.place.url 235
369
+ retweeted_status.place.place_type 235
370
+ retweeted_status.place.name 235
371
+ retweeted_status.place.full_name 235
372
+ retweeted_status.place.country_code 235
373
+ retweeted_status.place.country 235
374
+ retweeted_status.place.bounding_box.type 235
375
+ retweeted_status.place.bounding_box.coordinates[][][] 235
376
+ retweeted_status.geo.type 231
377
+ retweeted_status.geo.coordinates[] 231
378
+ retweeted_status.coordinates.type 231
379
+ retweeted_status.coordinates.coordinates[] 231
380
+ retweeted_status.entities.media[].source_status_id 42
381
+ retweeted_status.entities.media[].source_status_id_str 42
382
+ place.attributes.street_address 2
383
+