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.
- checksums.yaml +15 -0
- data/.gitignore +1 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +4 -0
- data/Gemfile +3 -1
- data/README.markdown +316 -153
- data/bin/twitter_to_csv +45 -10
- data/lib/twitter_to_csv.rb +1 -0
- data/lib/twitter_to_csv/bool_word_field_parser.rb +74 -0
- data/lib/twitter_to_csv/csv_builder.rb +50 -28
- data/lib/twitter_to_csv/twitter_watcher.rb +12 -5
- data/lib/twitter_to_csv/version.rb +1 -1
- data/spec/bool_word_field_parser_spec.rb +57 -0
- data/spec/csv_builder_spec.rb +104 -32
- data/twitter_to_csv.gemspec +1 -1
- metadata +14 -21
- data/.rvmrc +0 -1
checksums.yaml
ADDED
@@ -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
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
twitter_to_csv
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-1.9.3-p392
|
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/README.markdown
CHANGED
@@ -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 --
|
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 --
|
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 --
|
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
|
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 --
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
user.
|
102
|
-
user.
|
103
|
-
user.
|
104
|
-
user.
|
105
|
-
user.
|
106
|
-
user.
|
107
|
-
user.
|
108
|
-
user.
|
109
|
-
user.
|
110
|
-
user.
|
111
|
-
user.
|
112
|
-
user.
|
113
|
-
user.
|
114
|
-
user.
|
115
|
-
user.
|
116
|
-
user.
|
117
|
-
user.
|
118
|
-
user.
|
119
|
-
user.
|
120
|
-
user.
|
121
|
-
user.
|
122
|
-
user.
|
123
|
-
user.
|
124
|
-
user.
|
125
|
-
user.
|
126
|
-
user.
|
127
|
-
user.
|
128
|
-
user.
|
129
|
-
user.
|
130
|
-
user.
|
131
|
-
user.
|
132
|
-
user.
|
133
|
-
user.
|
134
|
-
user.
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
retweeted_status.
|
153
|
-
retweeted_status.
|
154
|
-
retweeted_status.
|
155
|
-
retweeted_status.
|
156
|
-
retweeted_status.
|
157
|
-
retweeted_status.
|
158
|
-
retweeted_status.
|
159
|
-
retweeted_status.
|
160
|
-
retweeted_status.
|
161
|
-
retweeted_status.
|
162
|
-
retweeted_status.
|
163
|
-
retweeted_status.user.
|
164
|
-
retweeted_status.user.
|
165
|
-
retweeted_status.user.
|
166
|
-
retweeted_status.user.
|
167
|
-
retweeted_status.user.
|
168
|
-
retweeted_status.user.
|
169
|
-
retweeted_status.user.
|
170
|
-
retweeted_status.user.
|
171
|
-
retweeted_status.user.
|
172
|
-
retweeted_status.user.
|
173
|
-
retweeted_status.user.
|
174
|
-
retweeted_status.user.
|
175
|
-
retweeted_status.user.
|
176
|
-
retweeted_status.user.
|
177
|
-
retweeted_status.user.
|
178
|
-
retweeted_status.user.
|
179
|
-
retweeted_status.user.
|
180
|
-
retweeted_status.user.
|
181
|
-
retweeted_status.user.
|
182
|
-
retweeted_status.user.
|
183
|
-
retweeted_status.user.
|
184
|
-
retweeted_status.user.profile_background_color
|
185
|
-
retweeted_status.user.
|
186
|
-
retweeted_status.user.
|
187
|
-
retweeted_status.user.
|
188
|
-
retweeted_status.user.
|
189
|
-
retweeted_status.user.
|
190
|
-
retweeted_status.user.
|
191
|
-
retweeted_status.user.
|
192
|
-
retweeted_status.user.
|
193
|
-
retweeted_status.user.
|
194
|
-
retweeted_status.user.
|
195
|
-
retweeted_status.user.
|
196
|
-
retweeted_status.user.
|
197
|
-
retweeted_status.user.
|
198
|
-
retweeted_status.
|
199
|
-
retweeted_status.
|
200
|
-
retweeted_status.
|
201
|
-
retweeted_status.
|
202
|
-
|
203
|
-
|
204
|
-
retweeted_status.
|
205
|
-
retweeted_status.
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
entities.
|
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
|
+
|