From f2dd2d35a18428407017c6bbc1fe986c94e86fd0 Mon Sep 17 00:00:00 2001 From: Jonathan Schultz Date: Mon, 12 Dec 2016 12:24:10 +1100 Subject: [PATCH 001/177] Reworked @bryanlandia extension to allow application-only authentication. --- twitter/api.py | 62 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 46 insertions(+), 16 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index fbf4c781..3db255bc 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -27,7 +27,7 @@ import base64 import re import requests -from requests_oauthlib import OAuth1 +from requests_oauthlib import OAuth1, OAuth2 import io import warnings from uuid import uuid4 @@ -146,6 +146,7 @@ def __init__(self, consumer_secret=None, access_token_key=None, access_token_secret=None, + application_only_auth=False, input_encoding=None, request_headers=None, cache=DEFAULT_CACHE, @@ -171,6 +172,9 @@ def __init__(self, access_token_secret (str): The oAuth access token's secret, also retrieved from the get_access_token.py run. + application_only_auth: + Use Application-Only Auth instead of User Auth. + Defaults to False [Optional] input_encoding (str, optional): The encoding used to encode input strings. request_header (dict, optional): @@ -256,16 +260,13 @@ def __init__(self, "strongly advised to increase it above 16384" )) - if consumer_key is not None and (access_token_key is None or - access_token_secret is None): - print('Twitter now requires an oAuth Access Token for API calls. ' - 'If you\'re using this library from a command line utility, ' - 'please run the included get_access_token.py tool to ' - 'generate one.', file=sys.stderr) + if consumer_key is None or consumer_secret is None or ( + not application_only_auth + and (access_token_key is None or access_token_secret is None)): + raise TwitterError({'message': "Missing oAuth Consumer Key or Access Token"}) - raise TwitterError({'message': "Twitter requires oAuth Access Token for all API access"}) - - self.SetCredentials(consumer_key, consumer_secret, access_token_key, access_token_secret) + self.SetCredentials(consumer_key, consumer_secret, access_token_key, access_token_secret, + application_only_auth) if debugHTTP: import logging @@ -279,11 +280,33 @@ def __init__(self, requests_log.setLevel(logging.DEBUG) requests_log.propagate = True + def GetAppOnlyAuthToken(self, consumer_key, consumer_secret): + """ + Generate a Bearer Token from consumer_key and consumer_secret + """ + from urllib import quote_plus + import base64 + + key = quote_plus(consumer_key) + secret = quote_plus(consumer_secret) + bearer_token = base64.b64encode('{}:{}'.format(key, secret) ) + + post_headers = { + 'Authorization': 'Basic '+bearer_token, + 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' + } + res = requests.post(url='https://api.twitter.com/oauth2/token', + data={'grant_type':'client_credentials'}, + headers=post_headers) + bearer_creds = res.json() + return bearer_creds + def SetCredentials(self, consumer_key, consumer_secret, access_token_key=None, - access_token_secret=None): + access_token_secret=None, + application_only_auth=False): """Set the consumer_key and consumer_secret for this instance Args: @@ -297,17 +320,23 @@ def SetCredentials(self, access_token_secret: The oAuth access token's secret, also retrieved from the get_access_token.py run. + application_only_auth: + Whether to generate a bearer token and use Application-Only Auth """ self._consumer_key = consumer_key self._consumer_secret = consumer_secret self._access_token_key = access_token_key self._access_token_secret = access_token_secret - auth_list = [consumer_key, consumer_secret, - access_token_key, access_token_secret] - if all(auth_list): - self.__auth = OAuth1(consumer_key, consumer_secret, - access_token_key, access_token_secret) + if application_only_auth: + self._bearer_token = self.GetAppOnlyAuthToken(consumer_key, consumer_secret) + self.__auth = OAuth2(token=self._bearer_token) + else: + auth_list = [consumer_key, consumer_secret, + access_token_key, access_token_secret] + if all(auth_list): + self.__auth = OAuth1(consumer_key, consumer_secret, + access_token_key, access_token_secret) self._config = None @@ -350,6 +379,7 @@ def ClearCredentials(self): self._consumer_secret = None self._access_token_key = None self._access_token_secret = None + self._bearer_token = None self.__auth = None # for request upgrade def GetSearch(self, From f80543bd4bd1d534fe4859c5ea8f1f8f29d62016 Mon Sep 17 00:00:00 2001 From: Misha Denil Date: Sat, 21 Jan 2017 21:48:05 +0000 Subject: [PATCH 002/177] Change URL parameter in GetRetweeters to match twitter api. --- twitter/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/api.py b/twitter/api.py index fbf4c781..94ec3545 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -1702,7 +1702,7 @@ def GetRetweeters(self, """ url = '%s/statuses/retweeters/ids.json' % (self.base_url) parameters = { - 'status_id': enf_type('status_id', int, status_id), + 'id': enf_type('id', int, status_id), 'stringify_ids': enf_type('stringify_ids', bool, stringify_ids) } From 6fcc44059aaf56278deaf6f6176bc9339780661f Mon Sep 17 00:00:00 2001 From: Reed Kavner Date: Sat, 11 Feb 2017 12:39:02 -0500 Subject: [PATCH 003/177] Update GAE environ test --- twitter/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/api.py b/twitter/api.py index 94ec3545..1befdc0f 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -210,7 +210,7 @@ def __init__(self, # check to see if the library is running on a Google App Engine instance # see GAE.rst for more information if os.environ: - if 'Google App Engine' in os.environ.get('SERVER_SOFTWARE', ''): + if 'APPENGINE_RUNTIME' in os.environ.keys(): import requests_toolbelt.adapters.appengine # Adapter ensures requests use app engine's urlfetch requests_toolbelt.adapters.appengine.monkeypatch() cache = None # App Engine does not like this caching strategy, disable caching From 5640c422e0ed01ea682fc2c0926eabbb895d7323 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Mon, 13 Feb 2017 19:37:06 -0500 Subject: [PATCH 004/177] fix to upload video/gifs to correct endpoint if filesize < self.chunk_size previously, if a gif or a video (mp4/quicktime) was less than self.chunk_size, it would be uploaded via UploadMediaSimple, but this was a bug because that endpoint cannot handle videos or gifs. closes #433 --- tests/test_api_30.py | 19 +++++++++++++++++++ twitter/api.py | 18 ++++++++---------- twitter/twitter_utils.py | 6 +++--- 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/tests/test_api_30.py b/tests/test_api_30.py index b966c70d..67d7b337 100644 --- a/tests/test_api_30.py +++ b/tests/test_api_30.py @@ -2,9 +2,15 @@ from __future__ import unicode_literals, print_function import json +import os import re import sys +from tempfile import NamedTemporaryFile import unittest +try: + from unittest.mock import patch +except ImportError: + from mock import patch import warnings import twitter @@ -1713,3 +1719,16 @@ def test_UpdateBackgroundImage_deprecation(self): with warnings.catch_warnings(record=True) as w: resp = self.api.UpdateBackgroundImage(image='testdata/168NQ.jpg') self.assertTrue(issubclass(w[0].category, DeprecationWarning)) + + @responses.activate + @patch('twitter.api.Api.UploadMediaChunked') + def test_UploadSmallVideoUsesChunkedData(self, mocker): + responses.add(POST, DEFAULT_URL, body='{}') + video = NamedTemporaryFile(suffix='.mp4') + video.write(b'10' * 1024) + video.seek(0, 0) + + resp = self.api.PostUpdate('test', media=video) + assert os.path.getsize(video.name) <= 1024 * 1024 + assert isinstance(resp, twitter.Status) + assert twitter.api.Api.UploadMediaChunked.called diff --git a/twitter/api.py b/twitter/api.py index 94ec3545..d41a6487 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -1026,6 +1026,7 @@ def PostUpdate(self, parameters['attachment_url'] = attachment_url if media: + chunked_types = ['video/mp4', 'video/quicktime', 'image/gif'] media_ids = [] if isinstance(media, int): media_ids.append(media) @@ -1041,9 +1042,8 @@ def PostUpdate(self, _, _, file_size, media_type = parse_media_file(media_file) if media_type == 'image/gif' or media_type == 'video/mp4': raise TwitterError( - 'You cannot post more than 1 GIF or 1 video in a ' - 'single status.') - if file_size > self.chunk_size: + 'You cannot post more than 1 GIF or 1 video in a single status.') + if file_size > self.chunk_size or media_type in chunked_types: media_id = self.UploadMediaChunked( media=media_file, additional_owners=media_additional_owners, @@ -1055,13 +1055,11 @@ def PostUpdate(self, media_category=media_category) media_ids.append(media_id) else: - _, _, file_size, _ = parse_media_file(media) - if file_size > self.chunk_size: - media_ids.append( - self.UploadMediaChunked(media, media_additional_owners)) + _, _, file_size, media_type = parse_media_file(media) + if file_size > self.chunk_size or media_type in chunked_types: + media_ids.append(self.UploadMediaChunked(media, media_additional_owners)) else: - media_ids.append( - self.UploadMediaSimple(media, media_additional_owners)) + media_ids.append(self.UploadMediaSimple(media, media_additional_owners)) parameters['media_ids'] = ','.join([str(mid) for mid in media_ids]) if latitude is not None and longitude is not None: @@ -1263,7 +1261,7 @@ def _UploadMediaChunkedAppend(self, try: media_fp.close() - except: + except Exception as e: pass return True diff --git a/twitter/twitter_utils.py b/twitter/twitter_utils.py index 0b2af5bb..66ce8b24 100644 --- a/twitter/twitter_utils.py +++ b/twitter/twitter_utils.py @@ -223,8 +223,8 @@ def parse_media_file(passed_media): # Otherwise, if a file object was passed in the first place, # create the standard reference to media_file (i.e., rename it to fp). else: - if passed_media.mode != 'rb': - raise TwitterError({'message': 'File mode must be "rb".'}) + if passed_media.mode not in ['rb', 'rb+', 'w+b']: + raise TwitterError('File mode must be "rb" or "rb+"') filename = os.path.basename(passed_media.name) data_file = passed_media @@ -233,7 +233,7 @@ def parse_media_file(passed_media): try: data_file.seek(0) - except: + except Exception as e: pass media_type = mimetypes.guess_type(os.path.basename(filename))[0] From a7798273272f3825a894caff92e93fee45ef2d1a Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Wed, 15 Feb 2017 19:01:48 -0500 Subject: [PATCH 005/177] fix lint for pycodestyle --- twitter/api.py | 2 +- twitter/twitter_utils.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 1befdc0f..91b84d6c 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -1263,7 +1263,7 @@ def _UploadMediaChunkedAppend(self, try: media_fp.close() - except: + except Exception as e: pass return True diff --git a/twitter/twitter_utils.py b/twitter/twitter_utils.py index 0b2af5bb..3067807f 100644 --- a/twitter/twitter_utils.py +++ b/twitter/twitter_utils.py @@ -233,7 +233,7 @@ def parse_media_file(passed_media): try: data_file.seek(0) - except: + except Exception as e: pass media_type = mimetypes.guess_type(os.path.basename(filename))[0] From 5e735cfa33303e6a555a139abfbc07e12921369a Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Wed, 15 Feb 2017 21:00:59 -0500 Subject: [PATCH 006/177] fix warnings always being displayed at library level --- twitter/api.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 91b84d6c..0b17648f 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -70,8 +70,6 @@ ) -warnings.simplefilter('always', DeprecationWarning) - CHARACTER_LIMIT = 140 # A singleton representing a lazily instantiated FileCache. From 77398cb92ef62f095a64afa4193304998641e27e Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Thu, 16 Feb 2017 06:39:57 -0500 Subject: [PATCH 007/177] fix instances where kwargs should default to None This fixes issue 426, where List functions defaulted to False for owner_screenname etc. than None, which caused those functions to fail and pass the wrong IDing info to twitter. --- twitter/api.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 91b84d6c..75026228 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -3592,8 +3592,8 @@ def CreateList(self, name, mode=None, description=None): return List.NewFromJsonDict(data) def DestroyList(self, - owner_screen_name=False, - owner_id=False, + owner_screen_name=None, + owner_id=None, list_id=None, slug=None): """Destroys the list identified by list_id or slug and one of @@ -3631,8 +3631,8 @@ def DestroyList(self, return List.NewFromJsonDict(data) def CreateSubscription(self, - owner_screen_name=False, - owner_id=False, + owner_screen_name=None, + owner_id=None, list_id=None, slug=None): """Creates a subscription to a list by the authenticated user. @@ -3668,8 +3668,8 @@ def CreateSubscription(self, return User.NewFromJsonDict(data) def DestroySubscription(self, - owner_screen_name=False, - owner_id=False, + owner_screen_name=None, + owner_id=None, list_id=None, slug=None): """Destroys the subscription to a list for the authenticated user. @@ -3706,8 +3706,8 @@ def DestroySubscription(self, return List.NewFromJsonDict(data) def ShowSubscription(self, - owner_screen_name=False, - owner_id=False, + owner_screen_name=None, + owner_id=None, list_id=None, slug=None, user_id=None, @@ -4171,8 +4171,8 @@ def CreateListsMember(self, def DestroyListsMember(self, list_id=None, slug=None, - owner_screen_name=False, - owner_id=False, + owner_screen_name=None, + owner_id=None, user_id=None, screen_name=None): """Destroys the subscription to a list for the authenticated user. From 94d39fe5a561de9b64960bd0bc6f56794a56b937 Mon Sep 17 00:00:00 2001 From: Markus Amalthea Magnuson Date: Wed, 22 Feb 2017 23:46:47 +0100 Subject: [PATCH 008/177] Fix documentation of DestroyListsMember method. These say "add" instead of "remove". --- twitter/api.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index bcc9f535..b8edded1 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -4186,10 +4186,10 @@ def DestroyListsMember(self, owner_id (int, optional): The user ID of the user who owns the list being requested by a slug. user_id (int, optional): - The user_id or a list of user_id's to add to the list. + The user_id or a list of user_id's to remove from the list. If not given, then screen_name is required. screen_name (str, optional): - The screen_name or a list of Screen_name's to add to the list. + The screen_name or a list of Screen_name's to remove from the list. If not given, then user_id is required. Returns: From cd50226bea21406890899913e056337a2a1e3078 Mon Sep 17 00:00:00 2001 From: Maria Mercedes Martinez Date: Sat, 25 Feb 2017 17:09:41 -0500 Subject: [PATCH 009/177] import configparser In Python 3, ConfigParser has been renamed to configparser for PEP 8 compliance. --- examples/tweet.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/tweet.py b/examples/tweet.py index 746d35d0..b2000436 100755 --- a/examples/tweet.py +++ b/examples/tweet.py @@ -4,7 +4,7 @@ __author__ = 'dewitt@google.com' -import ConfigParser +import configparser import getopt import os import sys From 6c6f0192cd7d4c08015525d00ac95872b4d402a8 Mon Sep 17 00:00:00 2001 From: Maria Mercedes Martinez Date: Mon, 27 Feb 2017 13:04:48 -0500 Subject: [PATCH 010/177] Update tweet.py added the updated way of printing if the user is coding in python3 (commented out) --- examples/tweet.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/tweet.py b/examples/tweet.py index b2000436..a322b92e 100755 --- a/examples/tweet.py +++ b/examples/tweet.py @@ -143,6 +143,8 @@ def main(): print "Try explicitly specifying the encoding with the --encoding flag" sys.exit(2) print "%s just posted: %s" % (status.user.name, status.text) + # updated way to print if you are using python 3: + # print ("{} just posted: {}".format(status.user.name, status.text)) if __name__ == "__main__": From eb99235c29ac91d0144e3160f52fe317eea67f41 Mon Sep 17 00:00:00 2001 From: Maria Mercedes Martinez Date: Mon, 27 Feb 2017 18:19:05 -0500 Subject: [PATCH 011/177] Update tweet.py For py2/py3 compatibility. --- examples/tweet.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/examples/tweet.py b/examples/tweet.py index a322b92e..9e99b916 100755 --- a/examples/tweet.py +++ b/examples/tweet.py @@ -9,6 +9,7 @@ import os import sys import twitter +from __future__ import print_function USAGE = '''Usage: tweet [options] message @@ -142,10 +143,8 @@ def main(): print "Your message could not be encoded. Perhaps it contains non-ASCII characters? " print "Try explicitly specifying the encoding with the --encoding flag" sys.exit(2) - print "%s just posted: %s" % (status.user.name, status.text) - # updated way to print if you are using python 3: - # print ("{} just posted: {}".format(status.user.name, status.text)) - + + print("{0} just posted: {1}".format(status.user.name, status.text)) if __name__ == "__main__": main() From 39090a7050fd1a749449c9ab77fc5a679e86679b Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Tue, 28 Feb 2017 06:12:13 -0500 Subject: [PATCH 012/177] fix issue with set indexing in UsersLookup Generally modernizes UsersLookup and GetUser to current style and practices for error checking and updates docstrings. --- twitter/api.py | 55 ++++++++++++++++++++------------------------------ 1 file changed, 22 insertions(+), 33 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index b8edded1..4a45061c 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -2825,47 +2825,38 @@ def UsersLookup(self, are queried is the union of all specified parameters. Args: - user_id: - A list of user_ids to retrieve extended information. [Optional] - screen_name: - A list of screen_names to retrieve extended information. [Optional] - users: + user_id (int, list, optional): + A list of user_ids to retrieve extended information. + screen_name (str, optional): + A list of screen_names to retrieve extended information. + users (list, optional): A list of twitter.User objects to retrieve extended information. - [Optional] - include_entities: + include_entities (bool, optional): The entities node that may appear within embedded statuses will be - disincluded when set to False. [Optional] + excluded when set to False. Returns: A list of twitter.User objects for the requested users """ - if not user_id and not screen_name and not users: - raise TwitterError({'message': "Specify at least one of user_id, screen_name, or users."}) + if not any([user_id, screen_name, users]): + raise TwitterError("Specify at least one of user_id, screen_name, or users.") url = '%s/users/lookup.json' % self.base_url - parameters = {} + parameters = { + 'include_entities': include_entities + } uids = list() if user_id: uids.extend(user_id) if users: uids.extend([u.id for u in users]) if len(uids): - parameters['user_id'] = ','.join(["%s" % u for u in uids]) + parameters['user_id'] = ','.join([str(u) for u in uids]) if screen_name: parameters['screen_name'] = ','.join(screen_name) - if not include_entities: - parameters['include_entities'] = 'false' resp = self._RequestUrl(url, 'GET', data=parameters) - try: - data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - except TwitterError as e: - _, e, _ = sys.exc_info() - t = e.args[0] - if len(t) == 1 and ('code' in t[0]) and (t[0]['code'] == 34): - data = [] - else: - raise + data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) return [User.NewFromJsonDict(u) for u in data] def GetUser(self, @@ -2875,29 +2866,27 @@ def GetUser(self, """Returns a single user. Args: - user_id: - The id of the user to retrieve. [Optional] - screen_name: + user_id (int, optional): + The id of the user to retrieve. + screen_name (str, optional): The screen name of the user for whom to return results for. Either a user_id or screen_name is required for this method. - [Optional] - include_entities: + include_entities (bool, optional): The entities node will be omitted when set to False. - [Optional] Returns: A twitter.User instance representing that user """ url = '%s/users/show.json' % (self.base_url) - parameters = {} + parameters = { + 'include_entities': include_entities + } if user_id: parameters['user_id'] = user_id elif screen_name: parameters['screen_name'] = screen_name else: - raise TwitterError({'message': "Specify at least one of user_id or screen_name."}) - if not include_entities: - parameters['include_entities'] = 'false' + raise TwitterError("Specify at least one of user_id or screen_name.") resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) From 6a8d3ecc0df2fb50c4a0267401b816703b1fdf49 Mon Sep 17 00:00:00 2001 From: Jonathan Schultz Date: Wed, 1 Mar 2017 11:39:15 +1100 Subject: [PATCH 013/177] Responded to @jeremylow review --- twitter/api.py | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 3db255bc..0af1540e 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -260,9 +260,8 @@ def __init__(self, "strongly advised to increase it above 16384" )) - if consumer_key is None or consumer_secret is None or ( - not application_only_auth - and (access_token_key is None or access_token_secret is None)): + if not (all([consumer_key, consumer_secret]) + and (application_only_auth or all([access_token_key, access_token_secret]))): raise TwitterError({'message': "Missing oAuth Consumer Key or Access Token"}) self.SetCredentials(consumer_key, consumer_secret, access_token_key, access_token_secret, @@ -281,25 +280,25 @@ def __init__(self, requests_log.propagate = True def GetAppOnlyAuthToken(self, consumer_key, consumer_secret): - """ - Generate a Bearer Token from consumer_key and consumer_secret - """ - from urllib import quote_plus - import base64 - - key = quote_plus(consumer_key) - secret = quote_plus(consumer_secret) - bearer_token = base64.b64encode('{}:{}'.format(key, secret) ) - - post_headers = { - 'Authorization': 'Basic '+bearer_token, - 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' - } - res = requests.post(url='https://api.twitter.com/oauth2/token', - data={'grant_type':'client_credentials'}, - headers=post_headers) - bearer_creds = res.json() - return bearer_creds + """ + Generate a Bearer Token from consumer_key and consumer_secret + """ + from urllib import quote_plus + import base64 + + key = quote_plus(consumer_key) + secret = quote_plus(consumer_secret) + bearer_token = base64.b64encode('{}:{}'.format(key, secret) ) + + post_headers = { + 'Authorization': 'Basic '+bearer_token, + 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' + } + res = requests.post(url='https://api.twitter.com/oauth2/token', + data={'grant_type':'client_credentials'}, + headers=post_headers) + bearer_creds = res.json() + return bearer_creds def SetCredentials(self, consumer_key, From e8313a9e23f102b1e973b9332c25d86b0eea84d8 Mon Sep 17 00:00:00 2001 From: Jonathan Schultz Date: Wed, 8 Mar 2017 12:22:20 +1100 Subject: [PATCH 014/177] Changed to keep validation logic as in master --- twitter/api.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 0af1540e..a01d471f 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -260,8 +260,8 @@ def __init__(self, "strongly advised to increase it above 16384" )) - if not (all([consumer_key, consumer_secret]) - and (application_only_auth or all([access_token_key, access_token_secret]))): + if (consumer_key and not + (application_only_auth or all([access_token_key, access_token_secret]))): raise TwitterError({'message': "Missing oAuth Consumer Key or Access Token"}) self.SetCredentials(consumer_key, consumer_secret, access_token_key, access_token_secret, From 4566600f430558ae7d36f413d7ed99d55ffbd45b Mon Sep 17 00:00:00 2001 From: Madhu Kumar Dadi Date: Wed, 8 Mar 2017 16:33:41 +0530 Subject: [PATCH 015/177] Proxy feature added --- twitter/api.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 4a45061c..0b8df294 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -155,7 +155,8 @@ def __init__(self, debugHTTP=False, timeout=None, sleep_on_rate_limit=False, - tweet_mode='compat'): + tweet_mode='compat', + proxies=None): """Instantiate a new twitter.Api object. Args: @@ -229,6 +230,7 @@ def __init__(self, self.rate_limit = RateLimit() self.sleep_on_rate_limit = sleep_on_rate_limit self.tweet_mode = tweet_mode + self.proxies = proxies if base_url is None: self.base_url = 'https://api.twitter.com/1.1' @@ -4872,7 +4874,8 @@ def _RequestChunkedUpload(self, url, headers, data): headers=headers, data=data, auth=self.__auth, - timeout=self._timeout + timeout=self._timeout, + proxies=self.proxies ) except requests.RequestException as e: raise TwitterError(str(e)) @@ -4909,20 +4912,20 @@ def _RequestUrl(self, url, verb, data=None, json=None): if data: if 'media_ids' in data: url = self._BuildUrl(url, extra_params={'media_ids': data['media_ids']}) - resp = requests.post(url, data=data, auth=self.__auth, timeout=self._timeout) + resp = requests.post(url, data=data, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) elif 'media' in data: - resp = requests.post(url, files=data, auth=self.__auth, timeout=self._timeout) + resp = requests.post(url, files=data, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) else: - resp = requests.post(url, data=data, auth=self.__auth, timeout=self._timeout) + resp = requests.post(url, data=data, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) elif json: - resp = requests.post(url, json=json, auth=self.__auth, timeout=self._timeout) + resp = requests.post(url, json=json, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) else: resp = 0 # POST request, but without data or json elif verb == 'GET': data['tweet_mode'] = self.tweet_mode url = self._BuildUrl(url, extra_params=data) - resp = requests.get(url, auth=self.__auth, timeout=self._timeout) + resp = requests.get(url, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) else: resp = 0 # if not a POST or GET request @@ -4954,14 +4957,15 @@ def _RequestStream(self, url, verb, data=None): try: return requests.post(url, data=data, stream=True, auth=self.__auth, - timeout=self._timeout) + timeout=self._timeout, + proxies=self.proxies) except requests.RequestException as e: raise TwitterError(str(e)) if verb == 'GET': url = self._BuildUrl(url, extra_params=data) try: return requests.get(url, stream=True, auth=self.__auth, - timeout=self._timeout) + timeout=self._timeout, proxies=self.proxies) except requests.RequestException as e: raise TwitterError(str(e)) return 0 # if not a POST or GET request From e9121fb8d5cace60b483a19a2ece28dbb4c5d5eb Mon Sep 17 00:00:00 2001 From: Bumerang Date: Thu, 9 Mar 2017 17:06:45 +0100 Subject: [PATCH 016/177] Change retweeters parameter to 'cursor' According to the documentation (https://dev.twitter.com/rest/reference/get/statuses/retweeters/ids) the cursoring parameter is called 'cursor' and not 'count'. --- twitter/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/api.py b/twitter/api.py index 4a45061c..45049059 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -1708,7 +1708,7 @@ def GetRetweeters(self, while True: if cursor: try: - parameters['count'] = int(cursor) + parameters['cursor'] = int(cursor) except ValueError: raise TwitterError({'message': "cursor must be an integer"}) resp = self._RequestUrl(url, 'GET', data=parameters) From 4679199e7c8f50ce5e8f90d189af2b75e69a3bd4 Mon Sep 17 00:00:00 2001 From: Madhu Kumar Dadi Date: Sun, 12 Mar 2017 22:39:58 +0530 Subject: [PATCH 017/177] Updated Inline documentation for Api.__init__() method --- twitter/api.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/twitter/api.py b/twitter/api.py index 0b8df294..4abe5b3a 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -204,6 +204,9 @@ def __init__(self, tweet_mode (str, optional): Whether to use the new (as of Sept. 2016) extended tweet mode. See docs for details. Choices are ['compatibility', 'extended']. + proxies (dict, optional): + A dictionary of proxies for the request to pass through, if not specified + allows requests lib to use environmental variables for proxy if any. """ # check to see if the library is running on a Google App Engine instance From f6a1a8ca5bbbc38092c13c8947c6f72adfd1d55b Mon Sep 17 00:00:00 2001 From: Madhu Kumar Dadi Date: Mon, 13 Mar 2017 12:49:03 +0530 Subject: [PATCH 018/177] document formatting done --- twitter/api.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 4abe5b3a..88b2a66c 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -204,9 +204,9 @@ def __init__(self, tweet_mode (str, optional): Whether to use the new (as of Sept. 2016) extended tweet mode. See docs for details. Choices are ['compatibility', 'extended']. - proxies (dict, optional): - A dictionary of proxies for the request to pass through, if not specified - allows requests lib to use environmental variables for proxy if any. + proxies (dict, optional): + A dictionary of proxies for the request to pass through, if not specified + allows requests lib to use environmental variables for proxy if any. """ # check to see if the library is running on a Google App Engine instance From 76dff91581aec40da2ef2239243250e6bda60cf3 Mon Sep 17 00:00:00 2001 From: Jonathan Schultz Date: Wed, 29 Mar 2017 08:56:38 +1100 Subject: [PATCH 019/177] Added GetStatuses method --- twitter/api.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/twitter/api.py b/twitter/api.py index fc6d9b6d..29b9844d 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -122,6 +122,7 @@ class Api(object): >>> api.GetUserTimeline(user) >>> api.GetHomeTimeline() >>> api.GetStatus(status_id) + >>> def GetStatuses(ids) >>> api.DestroyStatus(status_id) >>> api.GetFriends(user) >>> api.GetFollowers() @@ -812,6 +813,39 @@ def GetStatus(self, return Status.NewFromJsonDict(data) + def GetStatuses(self, + ids, + trim_user=False, + include_entities=True): + """Returns a list of status messages, specified by the ids parameter. + + Args: + ids: + A list of the numeric ID of the statuses you are trying to retrieve. + trim_user: + When set to True, each tweet returned in a timeline will include + a user object including only the status authors numerical ID. + Omit this parameter to receive the complete user object. [Optional] + include_entities: + If False, the entities node will be disincluded. + This node offers a variety of metadata about the tweet in a + discreet structure, including: user_mentions, urls, and + hashtags. [Optional] + Returns: + A list of twitter.Status instances representing that status messages. + The returned list may not be in the same order as the argument ids. + """ + url = '%s/statuses/lookup.json' % (self.base_url) + + parameters = { + 'id': ','.join([str(enf_type('id', int, id)) for id in ids]), + 'trim_user': enf_type('trim_user', bool, trim_user), + 'include_entities': enf_type('include_entities', bool, include_entities) + } + resp = self._RequestUrl(url, 'GET', data=parameters) + data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) + return([Status.NewFromJsonDict(dataitem) for dataitem in data]) + def GetStatusOembed(self, status_id=None, url=None, From 50d0574fd93715de069ab9432d08dd5417604d4f Mon Sep 17 00:00:00 2001 From: Jonathan Schultz Date: Wed, 29 Mar 2017 09:09:56 +1100 Subject: [PATCH 020/177] Handle more than 100 statuses --- twitter/api.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 29b9844d..d4402093 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -837,14 +837,21 @@ def GetStatuses(self, """ url = '%s/statuses/lookup.json' % (self.base_url) + result = [] + offset = 0 parameters = { - 'id': ','.join([str(enf_type('id', int, id)) for id in ids]), 'trim_user': enf_type('trim_user', bool, trim_user), 'include_entities': enf_type('include_entities', bool, include_entities) } - resp = self._RequestUrl(url, 'GET', data=parameters) - data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - return([Status.NewFromJsonDict(dataitem) for dataitem in data]) + while offset < len(ids): + parameters['id'] = ','.join([str(enf_type('id', int, id)) for id in ids[offset:offset+100]]) + offset += 100 + + resp = self._RequestUrl(url, 'GET', data=parameters) + data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) + result += [Status.NewFromJsonDict(dataitem) for dataitem in data] + + return result def GetStatusOembed(self, status_id=None, From 991f79da8001133186564bc2782f2d1b3fb3f901 Mon Sep 17 00:00:00 2001 From: Jonathan Schultz Date: Wed, 29 Mar 2017 09:30:28 +1100 Subject: [PATCH 021/177] Added option to respect order of retrieved statuses --- twitter/api.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index d4402093..7a241826 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -816,7 +816,8 @@ def GetStatus(self, def GetStatuses(self, ids, trim_user=False, - include_entities=True): + include_entities=True, + respect_order=False): """Returns a list of status messages, specified by the ids parameter. Args: @@ -831,6 +832,10 @@ def GetStatuses(self, This node offers a variety of metadata about the tweet in a discreet structure, including: user_mentions, urls, and hashtags. [Optional] + respect_order: + If True, the returned list of results will be in the same order as + the list of ids, with None in the place of ids that could not be + retrieved. [Optional] Returns: A list of twitter.Status instances representing that status messages. The returned list may not be in the same order as the argument ids. @@ -845,11 +850,19 @@ def GetStatuses(self, } while offset < len(ids): parameters['id'] = ','.join([str(enf_type('id', int, id)) for id in ids[offset:offset+100]]) - offset += 100 resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - result += [Status.NewFromJsonDict(dataitem) for dataitem in data] + batch = [Status.NewFromJsonDict(dataitem) for dataitem in data] + if respect_order: + batchdict = {status.id:status for status in batch} + + batch = [] + for id in ids[offset:offset+100]: + batch.append(batchdict.get(id, None)) + + result += batch + offset += 100 return result From 96990ea0bc18795e0fd1b87a54f08c2a5f7b5cac Mon Sep 17 00:00:00 2001 From: Andrew VanVlack Date: Wed, 5 Apr 2017 02:03:38 -0700 Subject: [PATCH 022/177] Added filter_level option to streams --- twitter/api.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index cd2b0a5c..2a4ef8c6 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -4544,7 +4544,8 @@ def GetStreamFilter(self, locations=None, languages=None, delimited=None, - stall_warnings=None): + stall_warnings=None, + filter_level=None): """Returns a filtered view of public statuses. Args: @@ -4563,6 +4564,9 @@ def GetStreamFilter(self, A list of Languages. Will only return Tweets that have been detected as being written in the specified languages. [Optional] + filter_level: + Specifies level of filtering applied to stream. + Set to None, 'low' or 'medium'. [Optional] Returns: A twitter stream @@ -4583,6 +4587,8 @@ def GetStreamFilter(self, data['stall_warnings'] = str(stall_warnings) if languages is not None: data['language'] = ','.join(languages) + if filter_level is not None: + data['filter_level'] = filter_level resp = self._RequestStream(url, 'POST', data=data) for line in resp.iter_lines(): @@ -4597,7 +4603,8 @@ def GetUserStream(self, locations=None, delimited=None, stall_warnings=None, - stringify_friend_ids=False): + stringify_friend_ids=False, + filter_level=None): """Returns the data from the user stream. Args: @@ -4619,6 +4626,9 @@ def GetUserStream(self, stringify_friend_ids: Specifies whether to send the friends list preamble as an array of integers or an array of strings. [Optional] + filter_level: + Specifies level of filtering applied to stream. + Set to None, low or medium. [Optional] Returns: A twitter stream @@ -4639,6 +4649,8 @@ def GetUserStream(self, data['delimited'] = str(delimited) if stall_warnings is not None: data['stall_warnings'] = str(stall_warnings) + if filter_level is not None: + data['filter_level'] = filter_level resp = self._RequestStream(url, 'POST', data=data) for line in resp.iter_lines(): From 019e75d175b2b882ad444a3ca0bf46ec056ca54d Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Thu, 6 Apr 2017 06:43:09 -0400 Subject: [PATCH 023/177] fix lint --- twitter/api.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 2a4ef8c6..a9db52d7 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -291,14 +291,14 @@ def GetAppOnlyAuthToken(self, consumer_key, consumer_secret): key = quote_plus(consumer_key) secret = quote_plus(consumer_secret) - bearer_token = base64.b64encode('{}:{}'.format(key, secret) ) + bearer_token = base64.b64encode('{}:{}'.format(key, secret)) post_headers = { - 'Authorization': 'Basic '+bearer_token, + 'Authorization': 'Basic ' + bearer_token, 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' } res = requests.post(url='https://api.twitter.com/oauth2/token', - data={'grant_type':'client_credentials'}, + data={'grant_type': 'client_credentials'}, headers=post_headers) bearer_creds = res.json() return bearer_creds From 3ef00058e825b8a31dfbf178a8935b619cabb3e3 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Thu, 6 Apr 2017 17:10:10 -0400 Subject: [PATCH 024/177] fix for case where media_id was long in PostUpdate isinstance check closes issue #438 --- twitter/api.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index a9db52d7..86298278 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -69,6 +69,8 @@ PythonTwitterDeprecationWarning330, ) +if sys.version_info > (3,): + long = int CHARACTER_LIMIT = 140 @@ -1060,14 +1062,14 @@ def PostUpdate(self, if media: chunked_types = ['video/mp4', 'video/quicktime', 'image/gif'] media_ids = [] - if isinstance(media, int): + if isinstance(media, (int, long)): media_ids.append(media) elif isinstance(media, list): for media_file in media: # If you want to pass just a media ID, it should be an int - if isinstance(media_file, int): + if isinstance(media_file, (int, long)): media_ids.append(media_file) continue From c9e282778a6c92c4b678e932a408b3bb46ec92de Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Tue, 11 Apr 2017 17:47:12 -0400 Subject: [PATCH 025/177] add support for quoted statuses also adds corresponding class attributes for `quoted_status_id` and `quoted_status_id_str`. Fixes an overlooked issue with Status.__repr__() since the changes to character counting where self.text was None if the tweet was in extended mode, which meant the repr would show Text=None for all tweets. --- testdata/models/status_quoted_tweet.json | 1 + .../models/status_quoted_tweet_with_media.json | 1 + tests/test_models.py | 18 ++++++++++++++++++ twitter/models.py | 15 +++++++++++++-- 4 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 testdata/models/status_quoted_tweet.json create mode 100644 testdata/models/status_quoted_tweet_with_media.json diff --git a/testdata/models/status_quoted_tweet.json b/testdata/models/status_quoted_tweet.json new file mode 100644 index 00000000..2164591c --- /dev/null +++ b/testdata/models/status_quoted_tweet.json @@ -0,0 +1 @@ +{"in_reply_to_user_id": null, "favorite_count": 1477, "text": "1) Make album https://t.co/VS5PhdwUjd\n2) Release album\n3) Tour\n4) Make open source alternative to twitter\n\nPretty b\u2026 https://t.co/t2rFVWy6Fm", "in_reply_to_status_id_str": null, "id_str": "849424628401541121", "coordinates": null, "in_reply_to_screen_name": null, "entities": {"symbols": [], "user_mentions": [], "urls": [{"expanded_url": "http://wbr.ec/emperorofsand", "display_url": "wbr.ec/emperorofsand", "indices": [14, 37], "url": "https://t.co/VS5PhdwUjd"}, {"expanded_url": "https://twitter.com/i/web/status/849424628401541121", "display_url": "twitter.com/i/web/status/8\u2026", "indices": [117, 140], "url": "https://t.co/t2rFVWy6Fm"}], "hashtags": []}, "retweeted": true, "possibly_sensitive": false, "created_at": "Wed Apr 05 00:53:07 +0000 2017", "source": "Twitter Web Client", "quoted_status": {"in_reply_to_user_id": null, "favorite_count": 46, "text": "hard to believe @mastodonmusic created its own open source alternative to twitter to promote its new album", "in_reply_to_status_id_str": null, "id_str": "849412806835351552", "coordinates": null, "in_reply_to_screen_name": null, "entities": {"symbols": [], "user_mentions": [{"name": "Mastodon", "id": 18065572, "screen_name": "mastodonmusic", "indices": [16, 30], "id_str": "18065572"}], "urls": [], "hashtags": []}, "retweeted": false, "created_at": "Wed Apr 05 00:06:09 +0000 2017", "source": "Twitter Web Client", "id": 849412806835351552, "truncated": false, "in_reply_to_user_id_str": null, "in_reply_to_status_id": null, "is_quote_status": false, "user": {"name": "Kyle Seth Gray", "default_profile_image": false, "follow_request_sent": false, "notifications": false, "screen_name": "kylesethgray", "id_str": "29040347", "geo_enabled": false, "is_translation_enabled": false, "profile_image_url_https": "https://pbs.twimg.com/profile_images/851226055125880833/gJ9hGmvT_normal.jpg", "time_zone": "Mountain Time (US & Canada)", "has_extended_profile": true, "lang": "en", "profile_text_color": "666666", "profile_image_url": "http://pbs.twimg.com/profile_images/851226055125880833/gJ9hGmvT_normal.jpg", "url": "https://t.co/MEYeHWlrVg", "id": 29040347, "followers_count": 1304, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme9/bg.gif", "verified": false, "friends_count": 764, "translator_type": "regular", "contributors_enabled": false, "entities": {"url": {"urls": [{"expanded_url": "http://kylesethgray.com", "display_url": "kylesethgray.com", "indices": [0, 23], "url": "https://t.co/MEYeHWlrVg"}]}, "description": {"urls": [{"expanded_url": "http://body.gray.sexy", "display_url": "body.gray.sexy", "indices": [63, 86], "url": "https://t.co/sZYwVfrKEU"}]}}, "favourites_count": 65806, "profile_background_color": "1A1B1F", "protected": false, "following": false, "is_translator": false, "default_profile": false, "location": "Utah, USA", "profile_sidebar_border_color": "FFFFFF", "utc_offset": -21600, "profile_background_tile": false, "created_at": "Sun Apr 05 19:06:40 +0000 2009", "profile_use_background_image": false, "description": "digital marketer. Cyclist\ud83d\udeb4\ud83c\udffc Website wizard \ud83d\udc68\ud83c\udffc\u200d\ud83d\udcbb \u231a\ufe0f #kylehealth https://t.co/sZYwVfrKEU Opinions are my own. You can't have them.", "statuses_count": 101830, "profile_background_image_url": "http://abs.twimg.com/images/themes/theme9/bg.gif", "profile_banner_url": "https://pbs.twimg.com/profile_banners/29040347/1491445985", "profile_link_color": "1B95E0", "profile_sidebar_fill_color": "252429", "listed_count": 100}, "place": null, "contributors": null, "lang": "en", "retweet_count": 10, "favorited": false, "geo": null}, "id": 849424628401541121, "quoted_status_id": 849412806835351552, "truncated": true, "current_user_retweet": {"id": 849736251708243969, "id_str": "849736251708243969"}, "in_reply_to_user_id_str": null, "in_reply_to_status_id": null, "is_quote_status": true, "user": {"name": "Mastodon", "default_profile_image": false, "follow_request_sent": false, "notifications": false, "screen_name": "mastodonmusic", "id_str": "18065572", "geo_enabled": false, "is_translation_enabled": false, "profile_image_url_https": "https://pbs.twimg.com/profile_images/824852402217955328/QrFAKTJY_normal.jpg", "time_zone": "Pacific Time (US & Canada)", "has_extended_profile": false, "lang": "en", "profile_text_color": "333333", "profile_image_url": "http://pbs.twimg.com/profile_images/824852402217955328/QrFAKTJY_normal.jpg", "url": "http://t.co/nlnr4wS9tt", "id": 18065572, "followers_count": 368872, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme14/bg.gif", "verified": true, "friends_count": 7123, "translator_type": "none", "contributors_enabled": false, "entities": {"url": {"urls": [{"expanded_url": "http://mastodonrocks.com", "display_url": "mastodonrocks.com", "indices": [0, 22], "url": "http://t.co/nlnr4wS9tt"}]}, "description": {"urls": [{"expanded_url": "https://wbr.ec/emperorofsand", "display_url": "wbr.ec/emperorofsand", "indices": [37, 60], "url": "https://t.co/A9W7Z32dwO"}, {"expanded_url": "http://mastodonrocks.com/tour", "display_url": "mastodonrocks.com/tour", "indices": [84, 107], "url": "https://t.co/EkXk0Mn6qK"}]}}, "favourites_count": 1846, "profile_background_color": "131516", "protected": false, "following": true, "is_translator": false, "default_profile": false, "location": "Atlanta, GA", "profile_sidebar_border_color": "EEEEEE", "utc_offset": -25200, "profile_background_tile": true, "created_at": "Fri Dec 12 00:51:35 +0000 2008", "profile_use_background_image": true, "description": "New album 'Emperor of Sand' out now! https://t.co/A9W7Z32dwO | On tour this spring! https://t.co/EkXk0Mn6qK", "statuses_count": 1380, "profile_background_image_url": "http://abs.twimg.com/images/themes/theme14/bg.gif", "profile_banner_url": "https://pbs.twimg.com/profile_banners/18065572/1490932593", "profile_link_color": "009999", "profile_sidebar_fill_color": "EFEFEF", "listed_count": 2194}, "place": null, "quoted_status_id_str": "849412806835351552", "contributors": null, "lang": "en", "retweet_count": 877, "favorited": false, "geo": null, "possibly_sensitive_appealable": false} \ No newline at end of file diff --git a/testdata/models/status_quoted_tweet_with_media.json b/testdata/models/status_quoted_tweet_with_media.json new file mode 100644 index 00000000..0f0dd300 --- /dev/null +++ b/testdata/models/status_quoted_tweet_with_media.json @@ -0,0 +1 @@ +{"favorited": false, "lang": "en", "in_reply_to_user_id": null, "place": null, "in_reply_to_user_id_str": null, "user": {"follow_request_sent": false, "protected": false, "profile_image_url": "http://pbs.twimg.com/profile_images/851269441652260865/jAloD4WT_normal.jpg", "entities": {"description": {"urls": []}, "url": {"urls": [{"indices": [0, 23], "url": "https://t.co/AF1gbNeaRA", "expanded_url": "http://www.aclu.org", "display_url": "aclu.org"}]}}, "geo_enabled": true, "notifications": false, "profile_image_url_https": "https://pbs.twimg.com/profile_images/851269441652260865/jAloD4WT_normal.jpg", "has_extended_profile": true, "lang": "en", "url": "https://t.co/AF1gbNeaRA", "profile_text_color": "333333", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "utc_offset": -10800, "profile_banner_url": "https://pbs.twimg.com/profile_banners/20944497/1491830455", "is_translator": false, "created_at": "Sun Feb 15 22:49:11 +0000 2009", "id_str": "20944497", "default_profile": true, "description": "Civil rights attorney @ACLU (views expressed here are my own)", "contributors_enabled": false, "statuses_count": 967, "listed_count": 103, "followers_count": 6248, "favourites_count": 431, "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "friends_count": 308, "following": false, "screen_name": "andresegura", "profile_sidebar_border_color": "C0DEED", "name": "Andre Segura", "location": "New York", "default_profile_image": false, "translator_type": "none", "profile_background_color": "C0DEED", "id": 20944497, "time_zone": "Atlantic Time (Canada)", "profile_use_background_image": true, "is_translation_enabled": false, "profile_sidebar_fill_color": "DDEEF6", "profile_link_color": "1DA1F2", "profile_background_tile": false}, "full_text": "Wrong. You use it initially and throughout to gain access to people's homes through deception. You're immigration agents. Not police. https://t.co/VMgFjuVbHC", "retweeted": true, "created_at": "Fri Apr 07 18:21:16 +0000 2017", "id_str": "850413178534211584", "display_text_range": [0, 134], "in_reply_to_status_id_str": null, "quoted_status": {"lang": "en", "display_text_range": [0, 142], "place": null, "extended_entities": {"media": [{"type": "photo", "expanded_url": "https://twitter.com/ICEgov/status/850408344175222784/photo/1", "id": 850399217826897920, "id_str": "850399217826897920", "sizes": {"small": {"h": 453, "resize": "fit", "w": 680}, "medium": {"h": 800, "resize": "fit", "w": 1200}, "thumb": {"h": 150, "resize": "crop", "w": 150}, "large": {"h": 1365, "resize": "fit", "w": 2048}}, "indices": [143, 166], "ext_alt_text": null, "media_url_https": "https://pbs.twimg.com/media/C805lT_XoAAHDZT.jpg", "url": "https://t.co/Z5dzK2wsMJ", "media_url": "http://pbs.twimg.com/media/C805lT_XoAAHDZT.jpg", "display_url": "pic.twitter.com/Z5dzK2wsMJ"}]}, "in_reply_to_user_id_str": "39384517", "user": {"follow_request_sent": false, "protected": false, "profile_image_url": "http://pbs.twimg.com/profile_images/500012751796707328/dNaKkGLY_normal.jpeg", "entities": {"description": {"urls": [{"indices": [85, 107], "url": "http://t.co/DMYVYOOBVn", "expanded_url": "http://www.ice.gov/tips", "display_url": "ice.gov/tips"}, {"indices": [137, 159], "url": "http://t.co/tdQSb7xnVs", "expanded_url": "http://go.usa.gov/Equ", "display_url": "go.usa.gov/Equ"}]}, "url": {"urls": [{"indices": [0, 22], "url": "http://t.co/adS5dzLUKP", "expanded_url": "http://www.ice.gov", "display_url": "ice.gov"}]}}, "geo_enabled": false, "notifications": false, "profile_image_url_https": "https://pbs.twimg.com/profile_images/500012751796707328/dNaKkGLY_normal.jpeg", "has_extended_profile": false, "lang": "en", "url": "http://t.co/adS5dzLUKP", "profile_text_color": "333333", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme15/bg.png", "utc_offset": -18000, "profile_banner_url": "https://pbs.twimg.com/profile_banners/39384517/1488988182", "is_translator": false, "created_at": "Tue May 12 00:20:23 +0000 2009", "id_str": "39384517", "default_profile": false, "description": "ICE is the largest investigative agency in DHS. Report suspicious criminal activity: http://t.co/DMYVYOOBVn \r\nView our privacy policies: http://t.co/tdQSb7xnVs", "contributors_enabled": false, "statuses_count": 6359, "listed_count": 1926, "followers_count": 194270, "favourites_count": 290, "profile_background_image_url": "http://abs.twimg.com/images/themes/theme15/bg.png", "verified": true, "friends_count": 63, "following": false, "screen_name": "ICEgov", "profile_sidebar_border_color": "A8C7F7", "name": "ICE", "location": "Washington, DC", "default_profile_image": false, "translator_type": "none", "profile_background_color": "022330", "id": 39384517, "time_zone": "Quito", "profile_use_background_image": true, "is_translation_enabled": false, "profile_sidebar_fill_color": "C0DFEC", "profile_link_color": "0084B4", "profile_background_tile": false}, "full_text": "ICE agents & officers may initially ID themselves as \u201cpolice\u201d in an encounter because it is the universally known term for law enforcement https://t.co/Z5dzK2wsMJ", "retweeted": false, "created_at": "Fri Apr 07 18:02:03 +0000 2017", "id_str": "850408344175222784", "in_reply_to_user_id": 39384517, "in_reply_to_status_id_str": "850397557939372032", "favorite_count": 381, "in_reply_to_status_id": 850397557939372032, "source": "Twitter Web Client", "is_quote_status": false, "contributors": null, "in_reply_to_screen_name": "ICEgov", "retweet_count": 178, "favorited": false, "geo": null, "id": 850408344175222784, "possibly_sensitive_appealable": false, "coordinates": null, "entities": {"urls": [], "user_mentions": [], "media": [{"type": "photo", "expanded_url": "https://twitter.com/ICEgov/status/850408344175222784/photo/1", "id": 850399217826897920, "id_str": "850399217826897920", "sizes": {"small": {"h": 453, "resize": "fit", "w": 680}, "medium": {"h": 800, "resize": "fit", "w": 1200}, "thumb": {"h": 150, "resize": "crop", "w": 150}, "large": {"h": 1365, "resize": "fit", "w": 2048}}, "indices": [143, 166], "media_url_https": "https://pbs.twimg.com/media/C805lT_XoAAHDZT.jpg", "url": "https://t.co/Z5dzK2wsMJ", "media_url": "http://pbs.twimg.com/media/C805lT_XoAAHDZT.jpg", "display_url": "pic.twitter.com/Z5dzK2wsMJ"}], "hashtags": [], "symbols": []}, "possibly_sensitive": false, "truncated": false}, "current_user_retweet": {"id": 850419611669495812, "id_str": "850419611669495812"}, "favorite_count": 4378, "in_reply_to_status_id": null, "source": "Twitter for iPhone", "is_quote_status": true, "contributors": null, "in_reply_to_screen_name": null, "retweet_count": 2643, "quoted_status_id_str": "850408344175222784", "quoted_status_id": 850408344175222784, "geo": null, "id": 850413178534211584, "possibly_sensitive_appealable": false, "coordinates": null, "entities": {"urls": [{"indices": [135, 158], "url": "https://t.co/VMgFjuVbHC", "expanded_url": "https://twitter.com/icegov/status/850408344175222784", "display_url": "twitter.com/icegov/status/\u2026"}], "user_mentions": [], "hashtags": [], "symbols": []}, "possibly_sensitive": false, "truncated": false} \ No newline at end of file diff --git a/tests/test_models.py b/tests/test_models.py index 58191e4c..5a892287 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -17,8 +17,14 @@ class ModelsTest(unittest.TestCase): LIST_SAMPLE_JSON = json.loads(f.read().decode('utf8')) with open('testdata/models/models_media.json', 'rb') as f: MEDIA_SAMPLE_JSON = json.loads(f.read().decode('utf8')) + with open('testdata/models/models_status.json', 'rb') as f: STATUS_SAMPLE_JSON = json.loads(f.read().decode('utf8')) + with open('testdata/models/status_quoted_tweet.json', 'rb') as f: + STATUS_QUOTED_TWEET_SAMPLE_JSON = json.loads(f.read().decode('utf8')) + with open('testdata/models/status_quoted_tweet_with_media.json', 'rb') as f: + STATUS_QUOTED_TWEET_WITH_MEDIA = json.loads(f.read().decode('utf8')) + with open('testdata/models/models_status_no_user.json', 'rb') as f: STATUS_NO_USER_SAMPLE_JSON = json.loads(f.read().decode('utf8')) with open('testdata/models/models_trend.json', 'rb') as f: @@ -119,6 +125,18 @@ def test_status(self): self.assertEqual(status.id_str, "698657677329752065") self.assertTrue(isinstance(status.user, twitter.User)) + def test_status_quoted_tweet(self): + """Test that quoted tweets are properly handled.""" + status = twitter.Status.NewFromJsonDict(self.STATUS_QUOTED_TWEET_SAMPLE_JSON) + assert status.quoted_status_id == 849412806835351552 + assert status.quoted_status.id == 849412806835351552 + assert status.quoted_status.text == "hard to believe @mastodonmusic created its own open source alternative to twitter to promote its new album" + + def test_status_quoted_tweet_with_media(self): + """Test that quoted tweet properly handles attached media.""" + status = twitter.Status.NewFromJsonDict(self.STATUS_QUOTED_TWEET_WITH_MEDIA) + assert status.quoted_status.media is not None + def test_status_no_user(self): """ Test twitter.Status object which does not contain a 'user' entity. """ status = twitter.Status.NewFromJsonDict(self.STATUS_NO_USER_SAMPLE_JSON) diff --git a/twitter/models.py b/twitter/models.py index 61fb1935..93d7263c 100644 --- a/twitter/models.py +++ b/twitter/models.py @@ -396,6 +396,9 @@ def __init__(self, **kwargs): 'media': None, 'place': None, 'possibly_sensitive': None, + 'quoted_status': None, + 'quoted_status_id': None, + 'quoted_status_id_str': None, 'retweet_count': None, 'retweeted': None, 'retweeted_status': None, @@ -438,17 +441,21 @@ def __repr__(self): string: A string representation of this twitter.Status instance with the ID of status, username and datetime. """ + if self.tweet_mode == 'extended': + text = self.full_text + else: + text = self.text if self.user: return "Status(ID={0}, ScreenName={1}, Created={2}, Text={3!r})".format( self.id, self.user.screen_name, self.created_at, - self.text) + text) else: return u"Status(ID={0}, Created={1}, Text={2!r})".format( self.id, self.created_at, - self.text) + text) @classmethod def NewFromJsonDict(cls, data, **kwargs): @@ -463,6 +470,7 @@ def NewFromJsonDict(cls, data, **kwargs): current_user_retweet = None hashtags = None media = None + quoted_status = None retweeted_status = None urls = None user = None @@ -474,6 +482,8 @@ def NewFromJsonDict(cls, data, **kwargs): retweeted_status = Status.NewFromJsonDict(data['retweeted_status']) if 'current_user_retweet' in data: current_user_retweet = data['current_user_retweet']['id'] + if 'quoted_status' in data: + quoted_status = Status.NewFromJsonDict(data.get('quoted_status')) if 'entities' in data: if 'urls' in data['entities']: @@ -494,6 +504,7 @@ def NewFromJsonDict(cls, data, **kwargs): current_user_retweet=current_user_retweet, hashtags=hashtags, media=media, + quoted_status=quoted_status, retweeted_status=retweeted_status, urls=urls, user=user, From 13642569c3fb201e564599be183a1578869b676c Mon Sep 17 00:00:00 2001 From: Elizabeth Lagesse Date: Fri, 14 Apr 2017 23:19:38 -0400 Subject: [PATCH 026/177] syntax clarification, twitter.Api() object creation --- doc/getting_started.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/getting_started.rst b/doc/getting_started.rst index eb4db635..40716d4f 100644 --- a/doc/getting_started.rst +++ b/doc/getting_started.rst @@ -44,6 +44,8 @@ At this point, you can test out your application using the keys under "Your Appl access_token_key=[access token], access_token_secret=[access token secret]) +Note: Make sure to enclose your keys in quotes (ie, api = twitter.Api(consumer_key='1234567', ...) and so on) or you will receive a NameError. + If you are creating an application for end users/consumers, then you will want them to authorize you application, but that is outside the scope of this document. And that should be it! If you need a little more help, check out the `examples on Github `_. If you have an open source application using python-twitter, send us a link and we'll add a link to it here. From 6b2fb334178afbf792f3a58be1ece52dc4ae8d5b Mon Sep 17 00:00:00 2001 From: Maria Mercedes Martinez Date: Mon, 17 Apr 2017 09:55:37 -0400 Subject: [PATCH 027/177] Update Tweet.py move _from future_ to top of import list --- examples/tweet.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/tweet.py b/examples/tweet.py index 9e99b916..b00b5f66 100755 --- a/examples/tweet.py +++ b/examples/tweet.py @@ -4,12 +4,13 @@ __author__ = 'dewitt@google.com' +from __future__ import print_function import configparser import getopt import os import sys import twitter -from __future__ import print_function + USAGE = '''Usage: tweet [options] message From ff8d11cf0cb59e26efc5fbc6da555a61216f2852 Mon Sep 17 00:00:00 2001 From: Jonathan Schultz Date: Thu, 20 Apr 2017 08:56:59 +1000 Subject: [PATCH 028/177] Replace variable names 'id/s' by 'status_id/s' --- twitter/api.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 7af31dff..52e3d23f 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -122,7 +122,7 @@ class Api(object): >>> api.GetUserTimeline(user) >>> api.GetHomeTimeline() >>> api.GetStatus(status_id) - >>> def GetStatuses(ids) + >>> def GetStatuses(status_ids) >>> api.DestroyStatus(status_id) >>> api.GetFriends(user) >>> api.GetFollowers() @@ -843,14 +843,14 @@ def GetStatus(self, return Status.NewFromJsonDict(data) def GetStatuses(self, - ids, + status_ids, trim_user=False, include_entities=True, respect_order=False): - """Returns a list of status messages, specified by the ids parameter. + """Returns a list of status messages, specified by the status_ids parameter. Args: - ids: + status_ids: A list of the numeric ID of the statuses you are trying to retrieve. trim_user: When set to True, each tweet returned in a timeline will include @@ -863,11 +863,11 @@ def GetStatuses(self, hashtags. [Optional] respect_order: If True, the returned list of results will be in the same order as - the list of ids, with None in the place of ids that could not be + the list of status_ids, with None in the place of status_ids that could not be retrieved. [Optional] Returns: A list of twitter.Status instances representing that status messages. - The returned list may not be in the same order as the argument ids. + The returned list may not be in the same order as the argument status_ids. """ url = '%s/statuses/lookup.json' % (self.base_url) @@ -877,8 +877,8 @@ def GetStatuses(self, 'trim_user': enf_type('trim_user', bool, trim_user), 'include_entities': enf_type('include_entities', bool, include_entities) } - while offset < len(ids): - parameters['id'] = ','.join([str(enf_type('id', int, id)) for id in ids[offset:offset+100]]) + while offset < len(status_ids): + parameters['id'] = ','.join([str(enf_type('status_id', int, status_id)) for status_id in status_ids[offset:offset+100]]) resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) @@ -887,8 +887,8 @@ def GetStatuses(self, batchdict = {status.id:status for status in batch} batch = [] - for id in ids[offset:offset+100]: - batch.append(batchdict.get(id, None)) + for status_id in status_ids[offset:offset+100]: + batch.append(batchdict.get(status_id, None)) result += batch offset += 100 From 1e84460eab385142a1e57e96b3d301c033543814 Mon Sep 17 00:00:00 2001 From: Jonathan Schultz Date: Thu, 20 Apr 2017 10:02:25 +1000 Subject: [PATCH 029/177] Use Twitter API's 'map' parameter --- twitter/api.py | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 52e3d23f..4399d7fa 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -846,7 +846,7 @@ def GetStatuses(self, status_ids, trim_user=False, include_entities=True, - respect_order=False): + map=False): """Returns a list of status messages, specified by the status_ids parameter. Args: @@ -861,36 +861,39 @@ def GetStatuses(self, This node offers a variety of metadata about the tweet in a discreet structure, including: user_mentions, urls, and hashtags. [Optional] - respect_order: - If True, the returned list of results will be in the same order as - the list of status_ids, with None in the place of status_ids that could not be - retrieved. [Optional] + map: + If True, returns a dictionary with status id as key and returned + status data (or None if tweet does not exist or is inaccessible) + as value. Otherwise returns an unordered list of successfully + retrieved Tweets. [Optional] Returns: - A list of twitter.Status instances representing that status messages. - The returned list may not be in the same order as the argument status_ids. + A dictionary or unordered list (depending on the parameter 'map') of + twitter Status instances representing the status messages. """ url = '%s/statuses/lookup.json' % (self.base_url) - result = [] + map = enf_type('map', bool, map) + + if map: + result = {} + else: + result = [] offset = 0 parameters = { 'trim_user': enf_type('trim_user', bool, trim_user), - 'include_entities': enf_type('include_entities', bool, include_entities) + 'include_entities': enf_type('include_entities', bool, include_entities), + 'map': map } while offset < len(status_ids): parameters['id'] = ','.join([str(enf_type('status_id', int, status_id)) for status_id in status_ids[offset:offset+100]]) resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - batch = [Status.NewFromJsonDict(dataitem) for dataitem in data] - if respect_order: - batchdict = {status.id:status for status in batch} - - batch = [] - for status_id in status_ids[offset:offset+100]: - batch.append(batchdict.get(status_id, None)) + if map: + result.update({int(key):(Status.NewFromJsonDict(value) if value else None) for key,value in data['id'].items()}) + else: + result += [Status.NewFromJsonDict(dataitem) for dataitem in data] - result += batch offset += 100 return result From 71e14eb93228718bb47c82406a111111c7b83133 Mon Sep 17 00:00:00 2001 From: penn5 Date: Thu, 20 Apr 2017 07:53:11 +0100 Subject: [PATCH 030/177] Update api.py Allow a list with one item to pass as a single item in the PostUpdate Image API --- twitter/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/api.py b/twitter/api.py index 86298278..306e4b41 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -1074,7 +1074,7 @@ def PostUpdate(self, continue _, _, file_size, media_type = parse_media_file(media_file) - if media_type == 'image/gif' or media_type == 'video/mp4': + if (media_type == 'image/gif' or media_type == 'video/mp4') and len(media)>1: raise TwitterError( 'You cannot post more than 1 GIF or 1 video in a single status.') if file_size > self.chunk_size or media_type in chunked_types: From c5fd9b9465cd5725639fb9b0681f17d561a1ccb4 Mon Sep 17 00:00:00 2001 From: jakeshi Date: Sun, 23 Apr 2017 23:12:46 -0400 Subject: [PATCH 031/177] testing --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 2b616f6a..c7a83768 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ Author: The Python-Twitter Developers ## Introduction +May be modified for testing + This library provides a pure Python interface for the [Twitter API](https://dev.twitter.com/). It works with Python versions from 2.5 to 2.7. Python 3 support is under development. [Twitter](http://twitter.com) provides a service that allows people to connect via the web, IM, and SMS. Twitter exposes a [web services API](http://dev.twitter.com/doc) and this library is intended to make it even easier for Python programmers to use. From a2cd8b96de5d6605ca657cba320ee5ad4054cf0b Mon Sep 17 00:00:00 2001 From: Jake Date: Tue, 25 Apr 2017 01:07:31 -0400 Subject: [PATCH 032/177] Update tweet.py configparser should not be capitalized. --- examples/tweet.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/tweet.py b/examples/tweet.py index b2000436..36a4c000 100755 --- a/examples/tweet.py +++ b/examples/tweet.py @@ -92,7 +92,7 @@ def _GetOption(self, option): def _GetConfig(self): if not self._config: - self._config = ConfigParser.ConfigParser() + self._config = configparser.ConfigParser() self._config.read(os.path.expanduser('~/.tweetrc')) return self._config From 6ef28e4a1d85295ca7009fb99aeceb74723d65a3 Mon Sep 17 00:00:00 2001 From: "bear (Mike Taylor)" Date: Tue, 25 Apr 2017 02:10:50 -0400 Subject: [PATCH 033/177] Fix lint error: twitter/api.py:1077:95: E225 missing whitespace around operator --- twitter/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/api.py b/twitter/api.py index 306e4b41..36002e2b 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -1074,7 +1074,7 @@ def PostUpdate(self, continue _, _, file_size, media_type = parse_media_file(media_file) - if (media_type == 'image/gif' or media_type == 'video/mp4') and len(media)>1: + if (media_type == 'image/gif' or media_type == 'video/mp4') and len(media) > 1: raise TwitterError( 'You cannot post more than 1 GIF or 1 video in a single status.') if file_size > self.chunk_size or media_type in chunked_types: From 826a6186b0cb04e0031aa7682d6324cddd2314a1 Mon Sep 17 00:00:00 2001 From: Jonathan Schultz Date: Tue, 2 May 2017 13:07:38 +1000 Subject: [PATCH 034/177] Added tests for GetStatuses --- testdata/get_statuses.1.json | 1 + testdata/get_statuses.2.json | 1 + testdata/get_statuses.ids.txt | 101 +++++++++++++++++++++++++++++++ testdata/get_statuses.map.1.json | 1 + testdata/get_statuses.map.2.json | 1 + tests/test_api_30.py | 47 ++++++++++++++ 6 files changed, 152 insertions(+) create mode 100644 testdata/get_statuses.1.json create mode 100644 testdata/get_statuses.2.json create mode 100644 testdata/get_statuses.ids.txt create mode 100644 testdata/get_statuses.map.1.json create mode 100644 testdata/get_statuses.map.2.json diff --git a/testdata/get_statuses.1.json b/testdata/get_statuses.1.json new file mode 100644 index 00000000..45e4bfcc --- /dev/null +++ b/testdata/get_statuses.1.json @@ -0,0 +1 @@ +[{"contributors": null, "truncated": false, "text": "sleep", "is_quote_status": false, "in_reply_to_status_id": null, "id": 101, "favorite_count": 902, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 3134, "id_str": "101", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 22 06:41:18 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "testing new ajax main page", "is_quote_status": false, "in_reply_to_status_id": null, "id": 555, "favorite_count": 634, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1315, "id_str": "555", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 23:01:03 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "the ants make me think of Florian. i'm not sure why. everything: florian.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 170, "favorite_count": 466, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1076, "id_str": "170", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 17:38:08 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "reading The Elements of Style Illustrated in bed", "is_quote_status": false, "in_reply_to_status_id": null, "id": 247, "favorite_count": 243, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 323, "id_str": "247", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Fri Mar 24 05:52:25 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "noting that the commands \"get\" (some friends) and \"followers\" commands work", "is_quote_status": false, "in_reply_to_status_id": null, "id": 614, "favorite_count": 16, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 110, "id_str": "614", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 29 19:59:25 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "sleeping", "is_quote_status": false, "in_reply_to_status_id": null, "id": 538, "favorite_count": 28, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 152, "id_str": "538", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 20:21:49 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "looking at my drawing teacher's friend's art at Sweet Inspiration", "is_quote_status": false, "in_reply_to_status_id": null, "id": 153, "favorite_count": 445, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 904, "id_str": "153", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 04:14:18 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "changing my status again for florian", "is_quote_status": false, "in_reply_to_status_id": null, "id": 174, "favorite_count": 370, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1053, "id_str": "174", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 17:44:51 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "jasmine green bubble tea. Too bad we can't name twttr: Quickly", "is_quote_status": false, "in_reply_to_status_id": null, "id": 651, "favorite_count": 59, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 165, "id_str": "651", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 03:58:50 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "at work", "is_quote_status": false, "in_reply_to_status_id": null, "id": 724, "favorite_count": 6, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 97, "id_str": "724", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Fri Mar 31 15:29:11 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "after yoga bubble tea. Quickly!", "is_quote_status": false, "in_reply_to_status_id": null, "id": 152, "favorite_count": 491, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 387, "id_str": "152", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 03:57:32 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "I have no idea where I am, but the wine is excellent", "is_quote_status": false, "in_reply_to_status_id": null, "id": 289, "favorite_count": 222, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 81, "id_str": "289", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sat Mar 25 02:29:25 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "inviting coworkers", "is_quote_status": false, "in_reply_to_status_id": null, "id": 29, "favorite_count": 3638, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 5035, "id_str": "29", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 21 21:02:56 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "off to yoga", "is_quote_status": false, "in_reply_to_status_id": null, "id": 475, "favorite_count": 152, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 255, "id_str": "475", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 00:59:02 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "walking home. beautiful weather out.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 443, "favorite_count": 75, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 159, "id_str": "443", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Mon Mar 27 06:08:00 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "thinking ev needs to get to ab fits and wilkes bashford, 4th floor. Ask for Kathy.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 376, "favorite_count": 19, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 189, "id_str": "376", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sun Mar 26 03:29:27 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "watching the rain; thinking.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 623, "favorite_count": 33, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 96, "id_str": "623", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 29 21:27:56 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "that works. have fun following and leaving people through the comfort of sms", "is_quote_status": false, "in_reply_to_status_id": null, "id": 348, "favorite_count": 185, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 57, "id_str": "348", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sun Mar 26 00:35:59 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "getting waxed!", "is_quote_status": false, "in_reply_to_status_id": null, "id": 397, "favorite_count": 168, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 150, "id_str": "397", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sun Mar 26 19:17:08 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "eating at Caf", "is_quote_status": false, "in_reply_to_status_id": null, "id": 687, "favorite_count": 46, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 43, "id_str": "687", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 18:16:18 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "home", "is_quote_status": false, "in_reply_to_status_id": null, "id": 634, "favorite_count": 24, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 7, "id_str": "634", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 00:45:15 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "f train", "is_quote_status": false, "in_reply_to_status_id": null, "id": 453, "favorite_count": 92, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 199, "id_str": "453", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Mon Mar 27 16:03:17 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "wondering when Mer is going to show up", "is_quote_status": false, "in_reply_to_status_id": null, "id": 132, "favorite_count": 752, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 820, "id_str": "132", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 00:38:04 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "on my way to drawing class", "is_quote_status": false, "in_reply_to_status_id": null, "id": 89, "favorite_count": 1081, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1465, "id_str": "89", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 22 01:07:11 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "jealous of ev. I love scrabble. And beds.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 660, "favorite_count": 14, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1002, "id_str": "660", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 05:09:43 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "on the f train home. Florence orange. Empty.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 243, "favorite_count": 252, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 439, "id_str": "243", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Fri Mar 24 04:54:47 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "late start. \"Blame it on the rain.\"", "is_quote_status": false, "in_reply_to_status_id": null, "id": 507, "favorite_count": 453, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 280, "id_str": "507", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 15:04:39 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "working on pin resend", "is_quote_status": false, "in_reply_to_status_id": null, "id": 117, "favorite_count": 948, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1270, "id_str": "117", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 22 20:46:45 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "going to dead prez show with Adam", "is_quote_status": false, "in_reply_to_status_id": null, "id": 302, "favorite_count": 371, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 460, "id_str": "302", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sat Mar 25 05:24:14 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "off to yoga. no love from simplewire", "is_quote_status": false, "in_reply_to_status_id": null, "id": 137, "favorite_count": 469, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 598, "id_str": "137", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 01:22:42 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "drawing naked people", "is_quote_status": false, "in_reply_to_status_id": null, "id": 92, "favorite_count": 1368, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1289, "id_str": "92", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 22 02:16:23 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "j train", "is_quote_status": false, "in_reply_to_status_id": null, "id": 566, "favorite_count": 68, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 8, "id_str": "566", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "fr", "created_at": "Wed Mar 29 01:31:43 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "phone charged again. cabbing to bridge theater to see Don't Tell (love Italian film). water and chocolate in field bag.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 435, "favorite_count": 173, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 10, "id_str": "435", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Mon Mar 27 02:38:05 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "home and hot shower. then tomato soup.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 493, "favorite_count": 71, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 103, "id_str": "493", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 04:34:50 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "rumbling green f train", "is_quote_status": false, "in_reply_to_status_id": null, "id": 317, "favorite_count": 17, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 190, "id_str": "317", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sat Mar 25 17:12:44 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "practiced next to the epitome of grace tonight--must count for something", "is_quote_status": false, "in_reply_to_status_id": null, "id": 650, "favorite_count": 176, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 309, "id_str": "650", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 03:53:18 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "shopping downtown", "is_quote_status": false, "in_reply_to_status_id": null, "id": 356, "favorite_count": 261, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 282, "id_str": "356", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sun Mar 26 00:44:16 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "awake", "is_quote_status": false, "in_reply_to_status_id": null, "id": 593, "favorite_count": 74, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 55, "id_str": "593", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 29 15:52:44 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "eating at Caf", "is_quote_status": false, "in_reply_to_status_id": null, "id": 686, "favorite_count": 24, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 13, "id_str": "686", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 18:15:28 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "feels like a summer walk at dusk now", "is_quote_status": false, "in_reply_to_status_id": null, "id": 637, "favorite_count": 45, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 58, "id_str": "637", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 01:26:03 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "not following people to test get alone", "is_quote_status": false, "in_reply_to_status_id": null, "id": 701, "favorite_count": 15, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 73, "id_str": "701", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 22:53:51 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "thinking we would get sued by Quickly! International Bubble Tea superstars. Quickly!", "is_quote_status": false, "in_reply_to_status_id": null, "id": 654, "favorite_count": 31, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 69, "id_str": "654", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 04:17:53 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "wondering where johnny is right now", "is_quote_status": false, "in_reply_to_status_id": null, "id": 129, "favorite_count": 798, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 661, "id_str": "129", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 00:16:34 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "noting that you can sleep and wake through SMS \"t sleeping\"", "is_quote_status": false, "in_reply_to_status_id": null, "id": 541, "favorite_count": 65, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 283, "id_str": "541", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 20:29:08 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "at work, chatting with florian", "is_quote_status": false, "in_reply_to_status_id": null, "id": 674, "favorite_count": 5, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 101, "id_str": "674", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 14:34:32 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "reading the new yorker on the couch. Noisy valencia street below.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 662, "favorite_count": 8, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 33, "id_str": "662", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 05:48:35 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "at work. with the ants.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 166, "favorite_count": 289, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 324, "id_str": "166", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 16:58:02 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "eating at Caf", "is_quote_status": false, "in_reply_to_status_id": null, "id": 689, "favorite_count": 43, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 36, "id_str": "689", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 18:21:14 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "overheard in South Park: \"Dogs don't belong in cages. Maybe kids do.\"", "is_quote_status": false, "in_reply_to_status_id": null, "id": 176, "favorite_count": 140, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 457, "id_str": "176", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 18:48:54 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "walk home. Cold", "is_quote_status": false, "in_reply_to_status_id": null, "id": 579, "favorite_count": 88, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 71, "id_str": "579", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 29 05:50:27 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "amazed at how quickly dinner goes by when there is no conversation", "is_quote_status": false, "in_reply_to_status_id": null, "id": 291, "favorite_count": 379, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 329, "id_str": "291", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sat Mar 25 03:14:42 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "not really. I'm awake.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 540, "favorite_count": 16, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 80, "id_str": "540", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 20:25:45 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "working on setting focus() onload", "is_quote_status": false, "in_reply_to_status_id": null, "id": 113, "favorite_count": 310, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1762, "id_str": "113", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 22 18:41:55 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "changing status through my blackberry browser", "is_quote_status": false, "in_reply_to_status_id": null, "id": 81, "favorite_count": 839, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1329, "id_str": "81", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 22 00:32:59 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "drawing naked people for 3 hours. And cake. Which will hopefully be dressed with much icing.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 567, "favorite_count": 123, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 304, "id_str": "567", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 29 02:15:15 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "at home having salsa and tortilla chip...reduction.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 245, "favorite_count": 236, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 249, "id_str": "245", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Fri Mar 24 05:14:52 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "sweaty yoga for the next hour and a half.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 477, "favorite_count": 130, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 9, "id_str": "477", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 01:52:44 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "wondering if noah was actually peeing his pants while holding me holding my kite. Adds a whole new dimension of \"dangerous\" to that fate ...", "is_quote_status": false, "in_reply_to_status_id": null, "id": 387, "favorite_count": 247, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 121, "id_str": "387", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sun Mar 26 05:33:22 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "Breakfast in Berkeley with Biz and Noah", "is_quote_status": false, "in_reply_to_status_id": null, "id": 323, "favorite_count": 435, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 378, "id_str": "323", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sat Mar 25 18:52:39 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "on f train. 15 min away from locked office door", "is_quote_status": false, "in_reply_to_status_id": null, "id": 594, "favorite_count": 14, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 16, "id_str": "594", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 29 15:52:54 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "Walking around moma deciding what to do", "is_quote_status": false, "in_reply_to_status_id": null, "id": 240, "favorite_count": 432, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 479, "id_str": "240", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Fri Mar 24 03:54:38 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "walking to F train. Beautiful morning!", "is_quote_status": false, "in_reply_to_status_id": null, "id": 251, "favorite_count": 121, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 294, "id_str": "251", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Fri Mar 24 16:04:47 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "sleep", "is_quote_status": false, "in_reply_to_status_id": null, "id": 668, "favorite_count": 17, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 25, "id_str": "668", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 06:50:15 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "n bd readn, wrtng txt spk", "is_quote_status": false, "in_reply_to_status_id": null, "id": 155, "favorite_count": 779, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1190, "id_str": "155", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "in", "created_at": "Thu Mar 23 05:00:23 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "wondering why noah didn't bring his stomach to lunch", "is_quote_status": false, "in_reply_to_status_id": null, "id": 198, "favorite_count": 420, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 262, "id_str": "198", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 23:08:50 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "eating at Caf", "is_quote_status": false, "in_reply_to_status_id": null, "id": 685, "favorite_count": 17, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 14, "id_str": "685", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 18:15:09 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "ghosttown in the mission weekdays before 5", "is_quote_status": false, "in_reply_to_status_id": null, "id": 636, "favorite_count": 11, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 400, "id_str": "636", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 01:02:20 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "noting that tony is obviously crazy delicious", "is_quote_status": false, "in_reply_to_status_id": null, "id": 267, "favorite_count": 119, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 240, "id_str": "267", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Fri Mar 24 19:45:34 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "Prince playing in the cab! could it get any better?", "is_quote_status": false, "in_reply_to_status_id": null, "id": 438, "favorite_count": 644, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 304, "id_str": "438", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Mon Mar 27 02:45:47 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "waiting for dom to update more", "is_quote_status": false, "in_reply_to_status_id": null, "id": 35, "favorite_count": 2005, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 3385, "id_str": "35", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 21 21:08:31 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "walk home hoping to avoid rain. But first: after yoga bubble tea. Quickly!", "is_quote_status": false, "in_reply_to_status_id": null, "id": 487, "favorite_count": 60, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 116, "id_str": "487", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 03:56:47 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "testing status update with t", "is_quote_status": false, "in_reply_to_status_id": null, "id": 342, "favorite_count": 157, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 177, "id_str": "342", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sun Mar 26 00:26:41 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "eating at Caf", "is_quote_status": false, "in_reply_to_status_id": null, "id": 690, "favorite_count": 488, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 185, "id_str": "690", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 18:24:08 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "awake and on bart", "is_quote_status": false, "in_reply_to_status_id": null, "id": 673, "favorite_count": 161, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 117, "id_str": "673", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 13:50:17 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "at work", "is_quote_status": false, "in_reply_to_status_id": null, "id": 463, "favorite_count": 103, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 265, "id_str": "463", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Mon Mar 27 18:44:01 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "practicing amongst the sf yoga elite. I'm the constantly-falling-out-of-headstand thud in the back corner.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 643, "favorite_count": 65, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 88, "id_str": "643", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 01:44:13 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "not really. I'm awake.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 544, "favorite_count": 15, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1277, "id_str": "544", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 20:31:02 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "my followers: the heartless bastards are an amazing band. also tend to draw a crowd of one supermodel. that is all.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 314, "favorite_count": 192, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 470, "id_str": "314", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sat Mar 25 09:47:09 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "discussing!", "is_quote_status": false, "in_reply_to_status_id": null, "id": 465, "favorite_count": 136, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 157, "id_str": "465", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Mon Mar 27 18:48:42 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "eating at Caf", "is_quote_status": false, "in_reply_to_status_id": null, "id": 688, "favorite_count": 6, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 63, "id_str": "688", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 18:18:34 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "sleep", "is_quote_status": false, "in_reply_to_status_id": null, "id": 581, "favorite_count": 17, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 47, "id_str": "581", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 29 06:33:00 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "reading Proulx (Bad Dirt) and writing in the journal. White couch. Water. Candle light.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 495, "favorite_count": 103, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 106, "id_str": "495", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 05:01:59 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "working on bugs. hungry.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 517, "favorite_count": 59, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 65, "id_str": "517", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 16:45:21 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "making it so people can sms \"follow all\" or \"leave all\" or even just \"follow dom\"", "is_quote_status": false, "in_reply_to_status_id": null, "id": 346, "favorite_count": 1076, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 224, "id_str": "346", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sun Mar 26 00:34:40 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "twttr web now has sleep and wake states (sun and moon)", "is_quote_status": false, "in_reply_to_status_id": null, "id": 536, "favorite_count": 98, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 38, "id_str": "536", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 19:50:54 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "headed to the marina district to look for slightly crooked eyeglasses to better see the world", "is_quote_status": false, "in_reply_to_status_id": null, "id": 287, "favorite_count": 11, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 273, "id_str": "287", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sat Mar 25 01:15:45 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "sleep", "is_quote_status": false, "in_reply_to_status_id": null, "id": 447, "favorite_count": 282, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 86, "id_str": "447", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Mon Mar 27 06:40:14 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "thinking of biz. Be well today. (Not really getting waxed)", "is_quote_status": false, "in_reply_to_status_id": null, "id": 432, "favorite_count": 145, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 200, "id_str": "432", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Mon Mar 27 02:03:38 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "lunch", "is_quote_status": false, "in_reply_to_status_id": null, "id": 51, "favorite_count": 2248, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 2142, "id_str": "51", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 21 21:43:45 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "sunny again! Off to look for glasses", "is_quote_status": false, "in_reply_to_status_id": null, "id": 564, "favorite_count": 101, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 100, "id_str": "564", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 29 00:51:30 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "at bottom of the hill instead. Only thing going off so far is adam", "is_quote_status": false, "in_reply_to_status_id": null, "id": 305, "favorite_count": 244, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 444, "id_str": "305", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sat Mar 25 06:46:42 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "reading biz's statuses from sms", "is_quote_status": false, "in_reply_to_status_id": null, "id": 239, "favorite_count": 254, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 217, "id_str": "239", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Fri Mar 24 03:53:28 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "at work. fixing sleep bug. realizing i forgot my yoga stuff. damn!", "is_quote_status": false, "in_reply_to_status_id": null, "id": 596, "favorite_count": 99, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 58, "id_str": "596", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 29 16:14:29 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "f train (boston train) to work", "is_quote_status": false, "in_reply_to_status_id": null, "id": 163, "favorite_count": 276, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 622, "id_str": "163", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 16:01:36 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "working on SMS in", "is_quote_status": false, "in_reply_to_status_id": null, "id": 62, "favorite_count": 1198, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 2088, "id_str": "62", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 21 23:26:07 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "stop the madness", "is_quote_status": false, "in_reply_to_status_id": null, "id": 691, "favorite_count": 19, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 367, "id_str": "691", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 18:35:33 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "sleep (not much rockin' -- unless there's an earthquake)", "is_quote_status": false, "in_reply_to_status_id": null, "id": 501, "favorite_count": 160, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 265, "id_str": "501", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 06:40:02 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "setting my status via sms", "is_quote_status": false, "in_reply_to_status_id": null, "id": 222, "favorite_count": 1142, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 770, "id_str": "222", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Fri Mar 24 03:06:27 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "on f train. 15 min away from locked office door", "is_quote_status": false, "in_reply_to_status_id": null, "id": 592, "favorite_count": 108, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 58, "id_str": "592", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 29 15:50:44 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, {"contributors": null, "truncated": false, "text": "excited that wilkes bashford (best store) now carries earnest sewn (best jeans)", "is_quote_status": false, "in_reply_to_status_id": null, "id": 364, "favorite_count": 22, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 96, "id_str": "364", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sun Mar 26 01:49:46 +0000 2006", "in_reply_to_status_id_str": null, "place": null}] diff --git a/testdata/get_statuses.2.json b/testdata/get_statuses.2.json new file mode 100644 index 00000000..4fdd6f19 --- /dev/null +++ b/testdata/get_statuses.2.json @@ -0,0 +1 @@ +[{"contributors": null, "truncated": false, "text": "just setting up my twttr", "is_quote_status": false, "in_reply_to_status_id": null, "id": 20, "favorite_count": 76282, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 103721, "id_str": "20", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039047, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27178, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 21 20:50:14 +0000 2006", "in_reply_to_status_id_str": null, "place": null}] diff --git a/testdata/get_statuses.ids.txt b/testdata/get_statuses.ids.txt new file mode 100644 index 00000000..c980f93c --- /dev/null +++ b/testdata/get_statuses.ids.txt @@ -0,0 +1,101 @@ +724 +701 +691 +690 +689 +688 +687 +686 +685 +674 +673 +668 +662 +660 +654 +651 +650 +643 +637 +636 +634 +623 +614 +596 +594 +593 +592 +581 +579 +567 +566 +564 +555 +544 +541 +540 +538 +536 +517 +507 +501 +495 +493 +487 +477 +475 +465 +463 +453 +447 +443 +438 +435 +432 +397 +387 +376 +364 +356 +348 +346 +342 +323 +317 +314 +305 +302 +291 +289 +287 +267 +251 +247 +245 +243 +240 +239 +222 +198 +176 +174 +170 +166 +163 +155 +153 +152 +137 +132 +129 +117 +113 +101 +92 +89 +81 +62 +51 +35 +29 +20 diff --git a/testdata/get_statuses.map.1.json b/testdata/get_statuses.map.1.json new file mode 100644 index 00000000..33b4e9eb --- /dev/null +++ b/testdata/get_statuses.map.1.json @@ -0,0 +1 @@ +{"id": {"668": {"contributors": null, "truncated": false, "text": "sleep", "is_quote_status": false, "in_reply_to_status_id": null, "id": 668, "favorite_count": 17, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 25, "id_str": "668", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 06:50:15 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "662": {"contributors": null, "truncated": false, "text": "reading the new yorker on the couch. Noisy valencia street below.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 662, "favorite_count": 8, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 33, "id_str": "662", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 05:48:35 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "660": {"contributors": null, "truncated": false, "text": "jealous of ev. I love scrabble. And beds.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 660, "favorite_count": 14, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1002, "id_str": "660", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 05:09:43 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "132": {"contributors": null, "truncated": false, "text": "wondering when Mer is going to show up", "is_quote_status": false, "in_reply_to_status_id": null, "id": 132, "favorite_count": 752, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 820, "id_str": "132", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 00:38:04 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "137": {"contributors": null, "truncated": false, "text": "off to yoga. no love from simplewire", "is_quote_status": false, "in_reply_to_status_id": null, "id": 137, "favorite_count": 469, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 598, "id_str": "137", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 01:22:42 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "495": {"contributors": null, "truncated": false, "text": "reading Proulx (Bad Dirt) and writing in the journal. White couch. Water. Candle light.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 495, "favorite_count": 103, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 106, "id_str": "495", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 05:01:59 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "538": {"contributors": null, "truncated": false, "text": "sleeping", "is_quote_status": false, "in_reply_to_status_id": null, "id": 538, "favorite_count": 28, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 152, "id_str": "538", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 20:21:49 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "493": {"contributors": null, "truncated": false, "text": "home and hot shower. then tomato soup.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 493, "favorite_count": 71, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 103, "id_str": "493", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 04:34:50 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "198": {"contributors": null, "truncated": false, "text": "wondering why noah didn't bring his stomach to lunch", "is_quote_status": false, "in_reply_to_status_id": null, "id": 198, "favorite_count": 420, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 262, "id_str": "198", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 23:08:50 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "690": {"contributors": null, "truncated": false, "text": "eating at Caf", "is_quote_status": false, "in_reply_to_status_id": null, "id": 690, "favorite_count": 488, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 185, "id_str": "690", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 18:24:08 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "691": {"contributors": null, "truncated": false, "text": "stop the madness", "is_quote_status": false, "in_reply_to_status_id": null, "id": 691, "favorite_count": 19, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 367, "id_str": "691", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 18:35:33 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "29": {"contributors": null, "truncated": false, "text": "inviting coworkers", "is_quote_status": false, "in_reply_to_status_id": null, "id": 29, "favorite_count": 3638, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 5035, "id_str": "29", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 21 21:02:56 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "289": {"contributors": null, "truncated": false, "text": "I have no idea where I am, but the wine is excellent", "is_quote_status": false, "in_reply_to_status_id": null, "id": 289, "favorite_count": 222, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 81, "id_str": "289", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sat Mar 25 02:29:25 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "540": {"contributors": null, "truncated": false, "text": "not really. I'm awake.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 540, "favorite_count": 16, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 80, "id_str": "540", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 20:25:45 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "541": {"contributors": null, "truncated": false, "text": "noting that you can sleep and wake through SMS \"t sleeping\"", "is_quote_status": false, "in_reply_to_status_id": null, "id": 541, "favorite_count": 65, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 283, "id_str": "541", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 20:29:08 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "544": {"contributors": null, "truncated": false, "text": "not really. I'm awake.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 544, "favorite_count": 15, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1277, "id_str": "544", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 20:31:02 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "348": {"contributors": null, "truncated": false, "text": "that works. have fun following and leaving people through the comfort of sms", "is_quote_status": false, "in_reply_to_status_id": null, "id": 348, "favorite_count": 185, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 57, "id_str": "348", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sun Mar 26 00:35:59 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "287": {"contributors": null, "truncated": false, "text": "headed to the marina district to look for slightly crooked eyeglasses to better see the world", "is_quote_status": false, "in_reply_to_status_id": null, "id": 287, "favorite_count": 11, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 273, "id_str": "287", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sat Mar 25 01:15:45 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "674": {"contributors": null, "truncated": false, "text": "at work, chatting with florian", "is_quote_status": false, "in_reply_to_status_id": null, "id": 674, "favorite_count": 5, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 101, "id_str": "674", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 14:34:32 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "673": {"contributors": null, "truncated": false, "text": "awake and on bart", "is_quote_status": false, "in_reply_to_status_id": null, "id": 673, "favorite_count": 161, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 117, "id_str": "673", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 13:50:17 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "267": {"contributors": null, "truncated": false, "text": "noting that tony is obviously crazy delicious", "is_quote_status": false, "in_reply_to_status_id": null, "id": 267, "favorite_count": 119, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 240, "id_str": "267", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Fri Mar 24 19:45:34 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "129": {"contributors": null, "truncated": false, "text": "wondering where johnny is right now", "is_quote_status": false, "in_reply_to_status_id": null, "id": 129, "favorite_count": 798, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 661, "id_str": "129", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 00:16:34 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "51": {"contributors": null, "truncated": false, "text": "lunch", "is_quote_status": false, "in_reply_to_status_id": null, "id": 51, "favorite_count": 2248, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 2142, "id_str": "51", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 21 21:43:45 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "536": {"contributors": null, "truncated": false, "text": "twttr web now has sleep and wake states (sun and moon)", "is_quote_status": false, "in_reply_to_status_id": null, "id": 536, "favorite_count": 98, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 38, "id_str": "536", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 19:50:54 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "291": {"contributors": null, "truncated": false, "text": "amazed at how quickly dinner goes by when there is no conversation", "is_quote_status": false, "in_reply_to_status_id": null, "id": 291, "favorite_count": 379, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 329, "id_str": "291", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sat Mar 25 03:14:42 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "593": {"contributors": null, "truncated": false, "text": "awake", "is_quote_status": false, "in_reply_to_status_id": null, "id": 593, "favorite_count": 74, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 55, "id_str": "593", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 29 15:52:44 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "592": {"contributors": null, "truncated": false, "text": "on f train. 15 min away from locked office door", "is_quote_status": false, "in_reply_to_status_id": null, "id": 592, "favorite_count": 108, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 58, "id_str": "592", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 29 15:50:44 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "594": {"contributors": null, "truncated": false, "text": "on f train. 15 min away from locked office door", "is_quote_status": false, "in_reply_to_status_id": null, "id": 594, "favorite_count": 14, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 16, "id_str": "594", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 29 15:52:54 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "596": {"contributors": null, "truncated": false, "text": "at work. fixing sleep bug. realizing i forgot my yoga stuff. damn!", "is_quote_status": false, "in_reply_to_status_id": null, "id": 596, "favorite_count": 99, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 58, "id_str": "596", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 29 16:14:29 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "317": {"contributors": null, "truncated": false, "text": "rumbling green f train", "is_quote_status": false, "in_reply_to_status_id": null, "id": 317, "favorite_count": 17, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 190, "id_str": "317", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sat Mar 25 17:12:44 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "701": {"contributors": null, "truncated": false, "text": "not following people to test get alone", "is_quote_status": false, "in_reply_to_status_id": null, "id": 701, "favorite_count": 15, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 73, "id_str": "701", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 22:53:51 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "314": {"contributors": null, "truncated": false, "text": "my followers: the heartless bastards are an amazing band. also tend to draw a crowd of one supermodel. that is all.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 314, "favorite_count": 192, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 470, "id_str": "314", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sat Mar 25 09:47:09 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "117": {"contributors": null, "truncated": false, "text": "working on pin resend", "is_quote_status": false, "in_reply_to_status_id": null, "id": 117, "favorite_count": 948, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1270, "id_str": "117", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 22 20:46:45 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "89": {"contributors": null, "truncated": false, "text": "on my way to drawing class", "is_quote_status": false, "in_reply_to_status_id": null, "id": 89, "favorite_count": 1081, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1465, "id_str": "89", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 22 01:07:11 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "397": {"contributors": null, "truncated": false, "text": "getting waxed!", "is_quote_status": false, "in_reply_to_status_id": null, "id": 397, "favorite_count": 168, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 150, "id_str": "397", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sun Mar 26 19:17:08 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "113": {"contributors": null, "truncated": false, "text": "working on setting focus() onload", "is_quote_status": false, "in_reply_to_status_id": null, "id": 113, "favorite_count": 310, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1762, "id_str": "113", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 22 18:41:55 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "81": {"contributors": null, "truncated": false, "text": "changing status through my blackberry browser", "is_quote_status": false, "in_reply_to_status_id": null, "id": 81, "favorite_count": 839, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1329, "id_str": "81", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 22 00:32:59 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "251": {"contributors": null, "truncated": false, "text": "walking to F train. Beautiful morning!", "is_quote_status": false, "in_reply_to_status_id": null, "id": 251, "favorite_count": 121, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 294, "id_str": "251", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Fri Mar 24 16:04:47 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "364": {"contributors": null, "truncated": false, "text": "excited that wilkes bashford (best store) now carries earnest sewn (best jeans)", "is_quote_status": false, "in_reply_to_status_id": null, "id": 364, "favorite_count": 22, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 96, "id_str": "364", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sun Mar 26 01:49:46 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "581": {"contributors": null, "truncated": false, "text": "sleep", "is_quote_status": false, "in_reply_to_status_id": null, "id": 581, "favorite_count": 17, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 47, "id_str": "581", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 29 06:33:00 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "443": {"contributors": null, "truncated": false, "text": "walking home. beautiful weather out.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 443, "favorite_count": 75, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 159, "id_str": "443", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Mon Mar 27 06:08:00 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "302": {"contributors": null, "truncated": false, "text": "going to dead prez show with Adam", "is_quote_status": false, "in_reply_to_status_id": null, "id": 302, "favorite_count": 371, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 460, "id_str": "302", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sat Mar 25 05:24:14 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "447": {"contributors": null, "truncated": false, "text": "sleep", "is_quote_status": false, "in_reply_to_status_id": null, "id": 447, "favorite_count": 282, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 86, "id_str": "447", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Mon Mar 27 06:40:14 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "305": {"contributors": null, "truncated": false, "text": "at bottom of the hill instead. Only thing going off so far is adam", "is_quote_status": false, "in_reply_to_status_id": null, "id": 305, "favorite_count": 244, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 444, "id_str": "305", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sat Mar 25 06:46:42 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "245": {"contributors": null, "truncated": false, "text": "at home having salsa and tortilla chip...reduction.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 245, "favorite_count": 236, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 249, "id_str": "245", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Fri Mar 24 05:14:52 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "247": {"contributors": null, "truncated": false, "text": "reading The Elements of Style Illustrated in bed", "is_quote_status": false, "in_reply_to_status_id": null, "id": 247, "favorite_count": 243, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 323, "id_str": "247", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Fri Mar 24 05:52:25 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "240": {"contributors": null, "truncated": false, "text": "Walking around moma deciding what to do", "is_quote_status": false, "in_reply_to_status_id": null, "id": 240, "favorite_count": 432, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 479, "id_str": "240", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Fri Mar 24 03:54:38 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "243": {"contributors": null, "truncated": false, "text": "on the f train home. Florence orange. Empty.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 243, "favorite_count": 252, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 439, "id_str": "243", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Fri Mar 24 04:54:47 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "387": {"contributors": null, "truncated": false, "text": "wondering if noah was actually peeing his pants while holding me holding my kite. Adds a whole new dimension of \"dangerous\" to that fate ...", "is_quote_status": false, "in_reply_to_status_id": null, "id": 387, "favorite_count": 247, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 121, "id_str": "387", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sun Mar 26 05:33:22 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "101": {"contributors": null, "truncated": false, "text": "sleep", "is_quote_status": false, "in_reply_to_status_id": null, "id": 101, "favorite_count": 902, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 3134, "id_str": "101", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 22 06:41:18 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "35": {"contributors": null, "truncated": false, "text": "waiting for dom to update more", "is_quote_status": false, "in_reply_to_status_id": null, "id": 35, "favorite_count": 2005, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 3385, "id_str": "35", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 21 21:08:31 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "643": {"contributors": null, "truncated": false, "text": "practicing amongst the sf yoga elite. I'm the constantly-falling-out-of-headstand thud in the back corner.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 643, "favorite_count": 65, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 88, "id_str": "643", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 01:44:13 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "438": {"contributors": null, "truncated": false, "text": "Prince playing in the cab! could it get any better?", "is_quote_status": false, "in_reply_to_status_id": null, "id": 438, "favorite_count": 644, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 304, "id_str": "438", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Mon Mar 27 02:45:47 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "435": {"contributors": null, "truncated": false, "text": "phone charged again. cabbing to bridge theater to see Don't Tell (love Italian film). water and chocolate in field bag.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 435, "favorite_count": 173, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 10, "id_str": "435", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Mon Mar 27 02:38:05 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "432": {"contributors": null, "truncated": false, "text": "thinking of biz. Be well today. (Not really getting waxed)", "is_quote_status": false, "in_reply_to_status_id": null, "id": 432, "favorite_count": 145, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 200, "id_str": "432", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Mon Mar 27 02:03:38 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "517": {"contributors": null, "truncated": false, "text": "working on bugs. hungry.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 517, "favorite_count": 59, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 65, "id_str": "517", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 16:45:21 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "623": {"contributors": null, "truncated": false, "text": "watching the rain; thinking.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 623, "favorite_count": 33, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 96, "id_str": "623", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 29 21:27:56 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "579": {"contributors": null, "truncated": false, "text": "walk home. Cold", "is_quote_status": false, "in_reply_to_status_id": null, "id": 579, "favorite_count": 88, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 71, "id_str": "579", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 29 05:50:27 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "453": {"contributors": null, "truncated": false, "text": "f train", "is_quote_status": false, "in_reply_to_status_id": null, "id": 453, "favorite_count": 92, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 199, "id_str": "453", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Mon Mar 27 16:03:17 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "62": {"contributors": null, "truncated": false, "text": "working on SMS in", "is_quote_status": false, "in_reply_to_status_id": null, "id": 62, "favorite_count": 1198, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 2088, "id_str": "62", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 21 23:26:07 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "176": {"contributors": null, "truncated": false, "text": "overheard in South Park: \"Dogs don't belong in cages. Maybe kids do.\"", "is_quote_status": false, "in_reply_to_status_id": null, "id": 176, "favorite_count": 140, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 457, "id_str": "176", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 18:48:54 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "174": {"contributors": null, "truncated": false, "text": "changing my status again for florian", "is_quote_status": false, "in_reply_to_status_id": null, "id": 174, "favorite_count": 370, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1053, "id_str": "174", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 17:44:51 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "170": {"contributors": null, "truncated": false, "text": "the ants make me think of Florian. i'm not sure why. everything: florian.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 170, "favorite_count": 466, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1076, "id_str": "170", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 17:38:08 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "346": {"contributors": null, "truncated": false, "text": "making it so people can sms \"follow all\" or \"leave all\" or even just \"follow dom\"", "is_quote_status": false, "in_reply_to_status_id": null, "id": 346, "favorite_count": 1076, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 224, "id_str": "346", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sun Mar 26 00:34:40 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "654": {"contributors": null, "truncated": false, "text": "thinking we would get sued by Quickly! International Bubble Tea superstars. Quickly!", "is_quote_status": false, "in_reply_to_status_id": null, "id": 654, "favorite_count": 31, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 69, "id_str": "654", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 04:17:53 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "650": {"contributors": null, "truncated": false, "text": "practiced next to the epitome of grace tonight--must count for something", "is_quote_status": false, "in_reply_to_status_id": null, "id": 650, "favorite_count": 176, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 309, "id_str": "650", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 03:53:18 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "651": {"contributors": null, "truncated": false, "text": "jasmine green bubble tea. Too bad we can't name twttr: Quickly", "is_quote_status": false, "in_reply_to_status_id": null, "id": 651, "favorite_count": 59, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 165, "id_str": "651", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 03:58:50 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "507": {"contributors": null, "truncated": false, "text": "late start. \"Blame it on the rain.\"", "is_quote_status": false, "in_reply_to_status_id": null, "id": 507, "favorite_count": 453, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 280, "id_str": "507", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 15:04:39 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "501": {"contributors": null, "truncated": false, "text": "sleep (not much rockin' -- unless there's an earthquake)", "is_quote_status": false, "in_reply_to_status_id": null, "id": 501, "favorite_count": 160, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 265, "id_str": "501", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 06:40:02 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "634": {"contributors": null, "truncated": false, "text": "home", "is_quote_status": false, "in_reply_to_status_id": null, "id": 634, "favorite_count": 24, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 7, "id_str": "634", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 00:45:15 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "342": {"contributors": null, "truncated": false, "text": "testing status update with t", "is_quote_status": false, "in_reply_to_status_id": null, "id": 342, "favorite_count": 157, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 177, "id_str": "342", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sun Mar 26 00:26:41 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "636": {"contributors": null, "truncated": false, "text": "ghosttown in the mission weekdays before 5", "is_quote_status": false, "in_reply_to_status_id": null, "id": 636, "favorite_count": 11, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 400, "id_str": "636", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 01:02:20 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "637": {"contributors": null, "truncated": false, "text": "feels like a summer walk at dusk now", "is_quote_status": false, "in_reply_to_status_id": null, "id": 637, "favorite_count": 45, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 58, "id_str": "637", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 01:26:03 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "465": {"contributors": null, "truncated": false, "text": "discussing!", "is_quote_status": false, "in_reply_to_status_id": null, "id": 465, "favorite_count": 136, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 157, "id_str": "465", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Mon Mar 27 18:48:42 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "564": {"contributors": null, "truncated": false, "text": "sunny again! Off to look for glasses", "is_quote_status": false, "in_reply_to_status_id": null, "id": 564, "favorite_count": 101, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 100, "id_str": "564", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 29 00:51:30 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "566": {"contributors": null, "truncated": false, "text": "j train", "is_quote_status": false, "in_reply_to_status_id": null, "id": 566, "favorite_count": 68, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 8, "id_str": "566", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "fr", "created_at": "Wed Mar 29 01:31:43 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "567": {"contributors": null, "truncated": false, "text": "drawing naked people for 3 hours. And cake. Which will hopefully be dressed with much icing.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 567, "favorite_count": 123, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 304, "id_str": "567", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 29 02:15:15 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "166": {"contributors": null, "truncated": false, "text": "at work. with the ants.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 166, "favorite_count": 289, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 324, "id_str": "166", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 16:58:02 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "92": {"contributors": null, "truncated": false, "text": "drawing naked people", "is_quote_status": false, "in_reply_to_status_id": null, "id": 92, "favorite_count": 1368, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1289, "id_str": "92", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 22 02:16:23 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "222": {"contributors": null, "truncated": false, "text": "setting my status via sms", "is_quote_status": false, "in_reply_to_status_id": null, "id": 222, "favorite_count": 1142, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 770, "id_str": "222", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Fri Mar 24 03:06:27 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "163": {"contributors": null, "truncated": false, "text": "f train (boston train) to work", "is_quote_status": false, "in_reply_to_status_id": null, "id": 163, "favorite_count": 276, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 622, "id_str": "163", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 16:01:36 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "724": {"contributors": null, "truncated": false, "text": "at work", "is_quote_status": false, "in_reply_to_status_id": null, "id": 724, "favorite_count": 6, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 97, "id_str": "724", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Fri Mar 31 15:29:11 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "153": {"contributors": null, "truncated": false, "text": "looking at my drawing teacher's friend's art at Sweet Inspiration", "is_quote_status": false, "in_reply_to_status_id": null, "id": 153, "favorite_count": 445, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 904, "id_str": "153", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 04:14:18 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "152": {"contributors": null, "truncated": false, "text": "after yoga bubble tea. Quickly!", "is_quote_status": false, "in_reply_to_status_id": null, "id": 152, "favorite_count": 491, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 387, "id_str": "152", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 23 03:57:32 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "155": {"contributors": null, "truncated": false, "text": "n bd readn, wrtng txt spk", "is_quote_status": false, "in_reply_to_status_id": null, "id": 155, "favorite_count": 779, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1190, "id_str": "155", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "in", "created_at": "Thu Mar 23 05:00:23 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "555": {"contributors": null, "truncated": false, "text": "testing new ajax main page", "is_quote_status": false, "in_reply_to_status_id": null, "id": 555, "favorite_count": 634, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 1315, "id_str": "555", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 23:01:03 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "239": {"contributors": null, "truncated": false, "text": "reading biz's statuses from sms", "is_quote_status": false, "in_reply_to_status_id": null, "id": 239, "favorite_count": 254, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 217, "id_str": "239", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Fri Mar 24 03:53:28 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "323": {"contributors": null, "truncated": false, "text": "Breakfast in Berkeley with Biz and Noah", "is_quote_status": false, "in_reply_to_status_id": null, "id": 323, "favorite_count": 435, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 378, "id_str": "323", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sat Mar 25 18:52:39 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "477": {"contributors": null, "truncated": false, "text": "sweaty yoga for the next hour and a half.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 477, "favorite_count": 130, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 9, "id_str": "477", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 01:52:44 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "614": {"contributors": null, "truncated": false, "text": "noting that the commands \"get\" (some friends) and \"followers\" commands work", "is_quote_status": false, "in_reply_to_status_id": null, "id": 614, "favorite_count": 16, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 110, "id_str": "614", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Mar 29 19:59:25 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "376": {"contributors": null, "truncated": false, "text": "thinking ev needs to get to ab fits and wilkes bashford, 4th floor. Ask for Kathy.", "is_quote_status": false, "in_reply_to_status_id": null, "id": 376, "favorite_count": 19, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 189, "id_str": "376", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sun Mar 26 03:29:27 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "463": {"contributors": null, "truncated": false, "text": "at work", "is_quote_status": false, "in_reply_to_status_id": null, "id": 463, "favorite_count": 103, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 265, "id_str": "463", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Mon Mar 27 18:44:01 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "487": {"contributors": null, "truncated": false, "text": "walk home hoping to avoid rain. But first: after yoga bubble tea. Quickly!", "is_quote_status": false, "in_reply_to_status_id": null, "id": 487, "favorite_count": 60, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 116, "id_str": "487", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 03:56:47 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "356": {"contributors": null, "truncated": false, "text": "shopping downtown", "is_quote_status": false, "in_reply_to_status_id": null, "id": 356, "favorite_count": 261, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 282, "id_str": "356", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Sun Mar 26 00:44:16 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "689": {"contributors": null, "truncated": false, "text": "eating at Caf", "is_quote_status": false, "in_reply_to_status_id": null, "id": 689, "favorite_count": 43, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 36, "id_str": "689", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 18:21:14 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "688": {"contributors": null, "truncated": false, "text": "eating at Caf", "is_quote_status": false, "in_reply_to_status_id": null, "id": 688, "favorite_count": 6, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 63, "id_str": "688", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 18:18:34 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "475": {"contributors": null, "truncated": false, "text": "off to yoga", "is_quote_status": false, "in_reply_to_status_id": null, "id": 475, "favorite_count": 152, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 255, "id_str": "475", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 28 00:59:02 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "685": {"contributors": null, "truncated": false, "text": "eating at Caf", "is_quote_status": false, "in_reply_to_status_id": null, "id": 685, "favorite_count": 17, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 14, "id_str": "685", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 18:15:09 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "687": {"contributors": null, "truncated": false, "text": "eating at Caf", "is_quote_status": false, "in_reply_to_status_id": null, "id": 687, "favorite_count": 46, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 43, "id_str": "687", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 18:16:18 +0000 2006", "in_reply_to_status_id_str": null, "place": null}, "686": {"contributors": null, "truncated": false, "text": "eating at Caf", "is_quote_status": false, "in_reply_to_status_id": null, "id": 686, "favorite_count": 24, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 13, "id_str": "686", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Thu Mar 30 18:15:28 +0000 2006", "in_reply_to_status_id_str": null, "place": null}}} diff --git a/testdata/get_statuses.map.2.json b/testdata/get_statuses.map.2.json new file mode 100644 index 00000000..cf6699db --- /dev/null +++ b/testdata/get_statuses.map.2.json @@ -0,0 +1 @@ +{"id": {"20": {"contributors": null, "truncated": false, "text": "just setting up my twttr", "is_quote_status": false, "in_reply_to_status_id": null, "id": 20, "favorite_count": 76284, "source": "Twitter Web Client", "retweeted": false, "coordinates": null, "entities": {"symbols": [], "user_mentions": [], "hashtags": [], "urls": []}, "in_reply_to_screen_name": null, "in_reply_to_user_id": null, "retweet_count": 103722, "id_str": "20", "favorited": false, "user": {"follow_request_sent": false, "has_extended_profile": true, "profile_use_background_image": true, "default_profile_image": false, "id": 12, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "verified": true, "translator_type": "regular", "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "profile_sidebar_fill_color": "F3F3F3", "entities": {"description": {"urls": []}}, "followers_count": 4039068, "profile_sidebar_border_color": "DFDFDF", "id_str": "12", "profile_background_color": "EBEBEB", "listed_count": 27172, "is_translation_enabled": false, "utc_offset": -25200, "statuses_count": 21829, "description": "", "friends_count": 2696, "location": "California, USA", "profile_link_color": "990000", "profile_image_url": "http://pbs.twimg.com/profile_images/839863609345794048/mkpdB9Tf_normal.jpg", "following": false, "geo_enabled": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/12/1483046077", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "screen_name": "jack", "lang": "en", "profile_background_tile": false, "favourites_count": 16961, "name": "jack", "notifications": false, "url": null, "created_at": "Tue Mar 21 20:50:14 +0000 2006", "contributors_enabled": false, "time_zone": "Pacific Time (US & Canada)", "protected": false, "default_profile": false, "is_translator": false}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Tue Mar 21 20:50:14 +0000 2006", "in_reply_to_status_id_str": null, "place": null}}} diff --git a/tests/test_api_30.py b/tests/test_api_30.py index 67d7b337..797fe3bc 100644 --- a/tests/test_api_30.py +++ b/tests/test_api_30.py @@ -1358,6 +1358,53 @@ def testGetStatusExtraParams(self): resp = self.api.GetStatus(status_id=397, trim_user=True, include_entities=False) self.assertFalse(resp.user.screen_name) + @responses.activate + def testGetStatuses(self): + with responses.RequestsMock(assert_all_requests_are_fired=True) as rsps: + with open('testdata/get_statuses.1.json') as f: + resp_data = f.read() + rsps.add(GET, DEFAULT_URL, body=resp_data) + with open('testdata/get_statuses.2.json') as f: + resp_data = f.read() + rsps.add(GET, DEFAULT_URL, body=resp_data) + + with open('testdata/get_statuses.ids.txt') as f: + status_ids = [int(l) for l in f] + + resp = self.api.GetStatuses(status_ids) + + self.assertTrue(type(resp) is list) + print(resp) + self.assertEqual(set(respitem.id for respitem in resp), set(status_ids)) + self.assertFalse(resp != resp) + + self.assertRaises( + twitter.TwitterError, + lambda: self.api.GetStatuses(['test'])) + + @responses.activate + def testGetStatusesMap(self): + with responses.RequestsMock(assert_all_requests_are_fired=True) as rsps: + with open('testdata/get_statuses.map.1.json') as f: + resp_data = f.read() + rsps.add(GET, DEFAULT_URL, body=resp_data) + with open('testdata/get_statuses.map.2.json') as f: + resp_data = f.read() + rsps.add(GET, DEFAULT_URL, body=resp_data) + + with open('testdata/get_statuses.ids.txt') as f: + status_ids = [int(l) for l in f] + + resp = self.api.GetStatuses(status_ids, map=True) + + self.assertTrue(type(resp) is dict) + self.assertTrue(all([resp.get(status_id) for status_id in status_ids])) + self.assertFalse(resp != resp) + + self.assertRaises( + twitter.TwitterError, + lambda: self.api.GetStatuses(['test'], map=True)) + @responses.activate def testGetStatusOembed(self): with open('testdata/get_status_oembed.json') as f: From db1070eb35df6e333f6fd3f9052ed32c83656cae Mon Sep 17 00:00:00 2001 From: Jonathan Schultz Date: Wed, 17 May 2017 20:55:49 +1000 Subject: [PATCH 035/177] Added enforce_auth argument --- twitter/api.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 36002e2b..1385fce2 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -920,7 +920,7 @@ def GetStatusOembed(self, raise TwitterError({'message': "'lang' should be string instance"}) parameters['lang'] = lang - resp = self._RequestUrl(request_url, 'GET', data=parameters) + resp = self._RequestUrl(request_url, 'GET', data=parameters, enforce_auth=False) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) return data @@ -4926,7 +4926,7 @@ def _RequestChunkedUpload(self, url, headers, data): except requests.RequestException as e: raise TwitterError(str(e)) - def _RequestUrl(self, url, verb, data=None, json=None): + def _RequestUrl(self, url, verb, data=None, json=None, enforce_auth=True): """Request a url. Args: @@ -4940,17 +4940,19 @@ def _RequestUrl(self, url, verb, data=None, json=None): Returns: A JSON object. """ - if not self.__auth: - raise TwitterError("The twitter.Api instance must be authenticated.") + if enforce_auth: + if not self.__auth: + raise TwitterError("The twitter.Api instance must be authenticated.") - if url and self.sleep_on_rate_limit: - limit = self.CheckRateLimit(url) + if url and self.sleep_on_rate_limit: + limit = self.CheckRateLimit(url) + + if limit.remaining == 0: + try: + time.sleep(max(int(limit.reset - time.time()) + 2, 0)) + except ValueError: + pass - if limit.remaining == 0: - try: - time.sleep(max(int(limit.reset - time.time()) + 2, 0)) - except ValueError: - pass if not data: data = {} From 1a8069123fc8454736698e93a9ee247cc62d4c2e Mon Sep 17 00:00:00 2001 From: "bear (Mike Taylor)" Date: Sat, 20 May 2017 21:34:54 -0400 Subject: [PATCH 036/177] use Python v3.6.1 --- Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 3d6b772f..b91bb2c0 100644 --- a/Makefile +++ b/Makefile @@ -13,10 +13,10 @@ env: pyenv: pyenv install -s 2.7.11 - pyenv install -s 3.5.2 + pyenv install -s 3.6.1 pyenv install -s pypy-5.3.1 # pyenv install -s pypy3-2.4.0 - pyenv local 2.7.11 3.5.2 pypy-5.3.1 # pypy3-2.4.0 + pyenv local 2.7.11 3.6.1 pypy-5.3.1 # pypy3-2.4.0 dev: env pyenv pip install -Ur requirements.testing.txt @@ -63,6 +63,6 @@ upload: clean pyenv 2.7.11 python setup.py sdist upload python setup.py bdist_wheel upload - pyenv 3.5.1 + pyenv 3.6.1 python setup.py bdist_wheel upload - pyenv local 2.7.11 3.5.2 pypy-5.3.1 + pyenv local 2.7.11 3.6.1 pypy-5.3.1 From c0e9875c599d6f876b444de44d1ba35d6d486b9a Mon Sep 17 00:00:00 2001 From: "bear (Mike Taylor)" Date: Sat, 20 May 2017 21:35:56 -0400 Subject: [PATCH 037/177] add VSCode to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index be37255a..cba5cd9e 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ develop-eggs .installed.cfg .eggs .cache +.vscode # Installer logs pip-log.txt From 51a6be7e0a90c71fc8ad5b3ca7f184589b5afd98 Mon Sep 17 00:00:00 2001 From: "bear (Mike Taylor)" Date: Sat, 20 May 2017 21:36:35 -0400 Subject: [PATCH 038/177] bump version to v3.3 --- twitter/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/__init__.py b/twitter/__init__.py index 0534776a..71213147 100644 --- a/twitter/__init__.py +++ b/twitter/__init__.py @@ -23,7 +23,7 @@ __email__ = 'python-twitter@googlegroups.com' __copyright__ = 'Copyright (c) 2007-2016 The Python-Twitter Developers' __license__ = 'Apache License 2.0' -__version__ = '3.2.1' +__version__ = '3.3' __url__ = 'https://github.com/bear/python-twitter' __download_url__ = 'https://pypi.python.org/pypi/python-twitter' __description__ = 'A Python wrapper around the Twitter API' From 0b1e207b5a68510dd5a060bb27d3988b7df65e50 Mon Sep 17 00:00:00 2001 From: "bear (Mike Taylor)" Date: Sat, 20 May 2017 22:08:58 -0400 Subject: [PATCH 039/177] change metadata to 3.6; change tox to use 3.6 and tweak makefile --- Makefile | 3 +-- setup.py | 2 +- tox.ini | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index b91bb2c0..d9a47f53 100644 --- a/Makefile +++ b/Makefile @@ -50,8 +50,7 @@ coverage: clean coverage html coverage report -ci: pyenv - tox +ci: pyenv tox CODECOV_TOKEN=`cat .codecov-token` codecov build: clean diff --git a/setup.py b/setup.py index 36ce1782..99635fee 100755 --- a/setup.py +++ b/setup.py @@ -72,6 +72,6 @@ def extract_metaitem(meta): 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', ], ) diff --git a/tox.ini b/tox.ini index a56de655..c072ade8 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = clean,py27,py35,pypy,pypy3,codestyle,coverage +envlist = clean,py27,py36,pypy,pypy3,codestyle,coverage skip_missing_interpreters = True [testenv] From 769fab3b88f15ac63dba46c485c31b8393aa1cec Mon Sep 17 00:00:00 2001 From: Joe MacMahon Date: Thu, 25 May 2017 00:40:43 +0100 Subject: [PATCH 040/177] Implement __hash__ on models with ID attributes - Allows for creating Python set() objects containing Users, Statuses, etc. --- tests/test_media.py | 5 +++++ tests/test_status.py | 5 +++++ tests/test_trend.py | 8 ++++++++ tests/test_user.py | 5 +++++ twitter/models.py | 7 +++++++ 5 files changed, 30 insertions(+) diff --git a/tests/test_media.py b/tests/test_media.py index e158bce4..2cacb7a4 100644 --- a/tests/test_media.py +++ b/tests/test_media.py @@ -101,6 +101,11 @@ def testEq(self): self.assertEqual(media, self._GetSampleMedia()) + def testHash(self): + '''Test the twitter.Media __hash__ method''' + media = self._GetSampleMedia() + self.assertEqual(hash(media), hash(media.id)) + def testNewFromJsonDict(self): '''Test the twitter.Media NewFromJsonDict method''' data = json.loads(MediaTest.RAW_JSON) diff --git a/tests/test_status.py b/tests/test_status.py index ac2d4ba4..475ac154 100644 --- a/tests/test_status.py +++ b/tests/test_status.py @@ -69,6 +69,11 @@ def testEq(self): status.user = self._GetSampleUser() self.assertEqual(status, self._GetSampleStatus()) + def testHash(self): + '''Test the twitter.Status __hash__ method''' + status = self._GetSampleStatus() + self.assertEqual(hash(status), hash(status.id)) + def testNewFromJsonDict(self): '''Test the twitter.Status NewFromJsonDict method''' data = json.loads(StatusTest.SAMPLE_JSON) diff --git a/tests/test_trend.py b/tests/test_trend.py index 6046d30a..ac00e325 100644 --- a/tests/test_trend.py +++ b/tests/test_trend.py @@ -40,3 +40,11 @@ def testEq(self): trend.query = 'Kesuke Miyagi' trend.timestamp = 'Fri Jan 26 23:17:14 +0000 2007' self.assertEqual(trend, self._GetSampleTrend()) + + def testHash(self): + '''Test the twitter.Trent __hash__ method''' + trend = self._GetSampleTrend() + with self.assertRaises(TypeError) as context: + hash(trend) + self.assertIn('unhashable type: {} (no id attribute)' + .format(type(trend)), str(context.exception)) diff --git a/tests/test_user.py b/tests/test_user.py index 342248fd..83f9d35c 100644 --- a/tests/test_user.py +++ b/tests/test_user.py @@ -84,6 +84,11 @@ def testEq(self): user.status = self._GetSampleStatus() self.assertEqual(user, self._GetSampleUser()) + def testHash(self): + '''Test the twitter.User __hash__ method''' + user = self._GetSampleUser() + self.assertEqual(hash(user), hash(user.id)) + def testNewFromJsonDict(self): '''Test the twitter.User NewFromJsonDict method''' data = json.loads(UserTest.SAMPLE_JSON) diff --git a/twitter/models.py b/twitter/models.py index 93d7263c..985a69ca 100644 --- a/twitter/models.py +++ b/twitter/models.py @@ -28,6 +28,13 @@ def __eq__(self, other): def __ne__(self, other): return not self.__eq__(other) + def __hash__(self): + if hasattr(self, 'id'): + return hash(self.id) + else: + raise TypeError('unhashable type: {} (no id attribute)' + .format(type(self))) + def AsJsonString(self): """ Returns the TwitterModel as a JSON string based on key/value pairs returned from the AsDict() method. """ From 2b437dbf358dcb57428927e07e8d527dc6d8a17b Mon Sep 17 00:00:00 2001 From: hepeng Date: Wed, 12 Jul 2017 08:38:59 +0800 Subject: [PATCH 041/177] add api.Replyto for convenience --- twitter/api.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/twitter/api.py b/twitter/api.py index 1385fce2..c67d40e0 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -4693,6 +4693,30 @@ def VerifyCredentials(self, include_entities=None, skip_status=None, include_ema return User.NewFromJsonDict(data) + def RelayTo(self, status, in_reply_to_status_id, **kwargs): + """Relay to a status. Automatically add @username before the status for convenience. + + Args: + status (str): + The message text to be replyed.Must be less than or equal to 140 characters. + in_reply_to_status_id (int): + The ID of an existing status that the status to be posted is in reply to. + **kwargs: + The other args api.PostUpadtes need. + + Returns: + (twitter.Status) A twitter.Status instance representing the message replied. + """ + reply_status = self.GetStatus(in_reply_to_status_id) + u_status = "@%s " % reply_status.user.screen_name + if isinstance(status, str) or self._input_encoding is None: + u_status = u_status + status + else: + u_status = u_status + str(u_status, self._input_encoding) + + return self.PostUpdate(u_status, in_reply_to_status_id=in_reply_to_status_id, **kwargs) + + def SetCache(self, cache): """Override the default cache. Set to None to prevent caching. From 02049603275c57bd32066dc9508ad333bc27fab2 Mon Sep 17 00:00:00 2001 From: hepeng Date: Wed, 12 Jul 2017 20:04:54 +0800 Subject: [PATCH 042/177] Fix spell error and update the docstring of api.ReplyTo --- twitter/api.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index c67d40e0..29bce607 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -4693,8 +4693,10 @@ def VerifyCredentials(self, include_entities=None, skip_status=None, include_ema return User.NewFromJsonDict(data) - def RelayTo(self, status, in_reply_to_status_id, **kwargs): - """Relay to a status. Automatically add @username before the status for convenience. + def ReplyTo(self, status, in_reply_to_status_id, **kwargs): + """Relay to a status. Automatically add @username before the status for + convenience.This method calls api.GetStatus to get username. + Args: status (str): From e29ac13b575325a07f60846b27b1016dbda8c3d3 Mon Sep 17 00:00:00 2001 From: Hirofumi Miura Date: Thu, 27 Jul 2017 09:29:16 +0900 Subject: [PATCH 043/177] Fix `include_email` parameter of VerifyCredentials --- twitter/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/api.py b/twitter/api.py index 1385fce2..45c9b5a9 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -4685,7 +4685,7 @@ def VerifyCredentials(self, include_entities=None, skip_status=None, include_ema data = { 'include_entities': enf_type('include_entities', bool, include_entities), 'skip_status': enf_type('skip_status', bool, skip_status), - 'include_email': enf_type('include_email', bool, include_email) + 'include_email': 'true' if enf_type('include_email', bool, include_email) else 'false', } resp = self._RequestUrl(url, 'GET', data) From 22a186c93ef42df9e86a13b5bd22ef3287a663b9 Mon Sep 17 00:00:00 2001 From: Ganti Date: Sat, 2 Sep 2017 12:41:17 +0200 Subject: [PATCH 044/177] added param return_json (bool, optional): If True JSON data will be returned, instead of twitter.User --- twitter/api.py | 172 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 130 insertions(+), 42 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 1385fce2..8f2878a6 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -398,7 +398,8 @@ def GetSearch(self, lang=None, locale=None, result_type="mixed", - include_entities=None): + include_entities=None, + return_json=False): """Return twitter search results for a given term. You must specify one of term, geocode, or raw_query. @@ -458,7 +459,8 @@ def GetSearch(self, This node offers a variety of metadata about the tweet in a discrete structure, including: user_mentions, urls, and hashtags. - + return_json (bool, optional): + If True JSON data will be returned, instead of twitter.Userret Returns: list: A sequence of twitter.Status instances, one for each message containing the term, within the bounds of the geocoded area, or @@ -517,8 +519,10 @@ def GetSearch(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - - return [Status.NewFromJsonDict(x) for x in data.get('statuses', '')] + if return_json: + return data + else: + return [Status.NewFromJsonDict(x) for x in data.get('statuses', '')] def GetUsersSearch(self, term=None, @@ -2853,7 +2857,8 @@ def UsersLookup(self, user_id=None, screen_name=None, users=None, - include_entities=True): + include_entities=True, + return_json=False): """Fetch extended information for the specified users. Users may be specified either as lists of either user_ids, @@ -2870,6 +2875,8 @@ def UsersLookup(self, include_entities (bool, optional): The entities node that may appear within embedded statuses will be excluded when set to False. + return_json (bool, optional): + If True JSON data will be returned, instead of twitter.User Returns: A list of twitter.User objects for the requested users @@ -2893,12 +2900,17 @@ def UsersLookup(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - return [User.NewFromJsonDict(u) for u in data] + + if return_json: + return data + else: + return [User.NewFromJsonDict(u) for u in data] def GetUser(self, user_id=None, screen_name=None, - include_entities=True): + include_entities=True, + return_json=False): """Returns a single user. Args: @@ -2909,6 +2921,8 @@ def GetUser(self, Either a user_id or screen_name is required for this method. include_entities (bool, optional): The entities node will be omitted when set to False. + return_json (bool, optional): + If True JSON data will be returned, instead of twitter.User Returns: A twitter.User instance representing that user @@ -2926,8 +2940,11 @@ def GetUser(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - - return User.NewFromJsonDict(data) + + if return_json: + return data + else: + return User.NewFromJsonDict(data) def GetDirectMessages(self, since_id=None, @@ -2936,7 +2953,8 @@ def GetDirectMessages(self, include_entities=True, skip_status=False, full_text=False, - page=None): + page=None, + return_json=False): """Returns a list of the direct messages sent to the authenticating user. Args: @@ -2968,6 +2986,8 @@ def GetDirectMessages(self, each time. You must recall it and increment the page value until it return nothing. You can't use count option with it. First value is 1 and not 0. + return_json (bool, optional): + If True JSON data will be returned, instead of twitter.User Returns: A sequence of twitter.DirectMessage instances @@ -2994,15 +3014,19 @@ def GetDirectMessages(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - - return [DirectMessage.NewFromJsonDict(x) for x in data] + + if return_json: + return data + else: + return [DirectMessage.NewFromJsonDict(x) for x in data] def GetSentDirectMessages(self, since_id=None, max_id=None, count=None, page=None, - include_entities=True): + include_entities=True, + return_json=False): """Returns a list of the direct messages sent by the authenticating user. Args: @@ -3026,6 +3050,8 @@ def GetSentDirectMessages(self, include_entities: The entities node will be omitted when set to False. [Optional] + return_json (bool, optional): + If True JSON data will be returned, instead of twitter.User Returns: A sequence of twitter.DirectMessage instances @@ -3048,13 +3074,17 @@ def GetSentDirectMessages(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - - return [DirectMessage.NewFromJsonDict(x) for x in data] + + if return_json: + return data + else: + return [DirectMessage.NewFromJsonDict(x) for x in data] def PostDirectMessage(self, text, user_id=None, - screen_name=None): + screen_name=None, + return_json=False): """Post a twitter direct message from the authenticated user. Args: @@ -3063,7 +3093,8 @@ def PostDirectMessage(self, The ID of the user who should receive the direct message. [Optional] screen_name: The screen name of the user who should receive the direct message. [Optional] - + return_json (bool, optional): + If True JSON data will be returned, instead of twitter.User Returns: A twitter.DirectMessage instance representing the message posted """ @@ -3078,10 +3109,13 @@ def PostDirectMessage(self, resp = self._RequestUrl(url, 'POST', data=data) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) + + if return_json: + return data + else: + return DirectMessage.NewFromJsonDict(data) - return DirectMessage.NewFromJsonDict(data) - - def DestroyDirectMessage(self, message_id, include_entities=True): + def DestroyDirectMessage(self, message_id, include_entities=True, return_json=False): """Destroys the direct message specified in the required ID parameter. The twitter.Api instance must be authenticated, and the @@ -3089,7 +3123,10 @@ def DestroyDirectMessage(self, message_id, include_entities=True): message. Args: - message_id: The id of the direct message to be destroyed + message_id: + The id of the direct message to be destroyed + return_json (bool, optional): + If True JSON data will be returned, instead of twitter.User Returns: A twitter.DirectMessage instance representing the message destroyed @@ -3103,7 +3140,10 @@ def DestroyDirectMessage(self, message_id, include_entities=True): resp = self._RequestUrl(url, 'POST', data=data) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - return DirectMessage.NewFromJsonDict(data) + if return_json: + return data + else: + return DirectMessage.NewFromJsonDict(data) def CreateFriendship(self, user_id=None, screen_name=None, follow=True): """Befriends the user specified by the user_id or screen_name. @@ -3230,7 +3270,8 @@ def ShowFriendship(self, def LookupFriendship(self, user_id=None, - screen_name=None): + screen_name=None, + return_json=False): """Lookup friendship status for user to authed user. Users may be specified either as lists of either user_ids, @@ -3244,6 +3285,8 @@ def LookupFriendship(self, A list of user_ids to retrieve extended information. screen_name (string, User, or list of strings or Users, optional): A list of screen_names to retrieve extended information. + return_json (bool, optional): + If True JSON data will be returned, instead of twitter.User Returns: list: A list of twitter.UserStatus instance representing the @@ -3287,8 +3330,11 @@ def LookupFriendship(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - - return [UserStatus.NewFromJsonDict(x) for x in data] + + if return_json: + return data + else: + return [UserStatus.NewFromJsonDict(x) for x in data] def IncomingFriendship(self, cursor=None, @@ -3453,7 +3499,8 @@ def GetFavorites(self, count=None, since_id=None, max_id=None, - include_entities=True): + include_entities=True, + return_json=False): """Return a list of Status objects representing favorited tweets. Returns up to 200 most recent tweets for the authenticated user. @@ -3481,6 +3528,8 @@ def GetFavorites(self, greater than 200. include_entities (bool, optional): The entities node will be omitted when set to False. + return_json (bool, optional): + If True JSON data will be returned, instead of twitter.User Returns: A sequence of Status instances, one for each favorited tweet up to count @@ -3501,8 +3550,11 @@ def GetFavorites(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - - return [Status.NewFromJsonDict(x) for x in data] + + if return_json: + return data + else: + return [Status.NewFromJsonDict(x) for x in data] def GetMentions(self, count=None, @@ -3510,7 +3562,8 @@ def GetMentions(self, max_id=None, trim_user=False, contributor_details=False, - include_entities=True): + include_entities=True, + return_json=False): """Returns the 20 most recent mentions (status containing @screen_name) for the authenticating user. @@ -3539,6 +3592,8 @@ def GetMentions(self, default only the user_id of the contributor is included. [Optional] include_entities: The entities node will be disincluded when set to False. [Optional] + return_json (bool, optional): + If True JSON data will be returned, instead of twitter.User Returns: A sequence of twitter.Status instances, one for each mention of the user. @@ -3561,8 +3616,11 @@ def GetMentions(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - - return [Status.NewFromJsonDict(x) for x in data] + + if return_json: + return data + else: + return [Status.NewFromJsonDict(x) for x in data] @staticmethod def _IDList(list_id, slug, owner_id, owner_screen_name): @@ -3734,7 +3792,8 @@ def ShowSubscription(self, user_id=None, screen_name=None, include_entities=False, - skip_status=False): + skip_status=False, + return_json=False): """Check if the specified user is a subscriber of the specified list. Returns the user if they are subscriber. @@ -3763,6 +3822,8 @@ def ShowSubscription(self, Defaults to True. skip_status (bool, optional): If True the statuses will not be returned in the user items. + return_json (bool, optional): + If True JSON data will be returned, instead of twitter.User Returns: twitter.user.User: A twitter.User instance representing the user @@ -3787,14 +3848,18 @@ def ShowSubscription(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - - return User.NewFromJsonDict(data) + + if return_json: + return data + else: + return User.NewFromJsonDict(data) def GetSubscriptions(self, user_id=None, screen_name=None, count=20, - cursor=-1): + cursor=-1, + return_json=False): """Obtain a collection of the lists the specified user is subscribed to. If neither user_id or screen_name is specified, the data returned will be for the authenticated user. @@ -3817,6 +3882,8 @@ def GetSubscriptions(self, list sequence from. Use the value of -1 to start at the beginning. Twitter will return in the result the values for next_cursor and previous_cursor. + return_json (bool, optional): + If True JSON data will be returned, instead of twitter.User Returns: twitter.list.List: A sequence of twitter.List instances, @@ -3834,14 +3901,18 @@ def GetSubscriptions(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - return [List.NewFromJsonDict(x) for x in data['lists']] + if return_json: + return data + else: + return [List.NewFromJsonDict(x) for x in data['lists']] def GetMemberships(self, user_id=None, screen_name=None, count=20, cursor=-1, - filter_to_owned_lists=False): + filter_to_owned_lists=False, + return_json=False): """Obtain the lists the specified user is a member of. If no user_id or screen_name is specified, the data returned will be for the authenticated user. @@ -3867,6 +3938,8 @@ def GetMemberships(self, Set to True to return only the lists the authenticating user owns, and the user specified by user_id or screen_name is a member of. Default value is False. + return_json (bool, optional): + If True JSON data will be returned, instead of twitter.User Returns: list: A list of twitter.List instances, one for each list in which @@ -3890,12 +3963,16 @@ def GetMemberships(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - return [List.NewFromJsonDict(x) for x in data['lists']] + if return_json: + return data + else: + return [List.NewFromJsonDict(x) for x in data['lists']] def GetListsList(self, screen_name=None, user_id=None, - reverse=False): + reverse=False, + return_json=False): """Returns all lists the user subscribes to, including their own. If no user_id or screen_name is specified, the data returned will be for the authenticated user. @@ -3913,6 +3990,8 @@ def GetListsList(self, If False, the owned lists will be returned first, othewise subscribed lists will be at the top. Returns a maximum of 100 entries regardless. Defaults to False. + return_json (bool, optional): + If True JSON data will be returned, instead of twitter.User Returns: list: A sequence of twitter.List instances. @@ -3929,7 +4008,10 @@ def GetListsList(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - return [List.NewFromJsonDict(x) for x in data] + if return_json: + return data + else: + return [List.NewFromJsonDict(x) for x in data] def GetListTimeline(self, list_id=None, @@ -3940,7 +4022,8 @@ def GetListTimeline(self, max_id=None, count=None, include_rts=True, - include_entities=True): + include_entities=True, + return_json=False): """Fetch the sequence of Status messages for a given List ID. Args: @@ -3976,6 +4059,8 @@ def GetListTimeline(self, include_entities (bool, optional): If False, the timeline will not contain additional metadata. Defaults to True. + return_json (bool, optional): + If True JSON data will be returned, instead of twitter.User Returns: list: A list of twitter.status.Status instances, one for each @@ -4003,7 +4088,10 @@ def GetListTimeline(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - return [Status.NewFromJsonDict(x) for x in data] + if return_json: + return data + else: + return [Status.NewFromJsonDict(x) for x in data] def GetListMembersPaged(self, list_id=None, From dc62607f467f08578e5e4617015d61c070ac6808 Mon Sep 17 00:00:00 2001 From: Muthiah Annamalai Date: Fri, 8 Sep 2017 22:45:29 -0700 Subject: [PATCH 045/177] old Python 2.7+ versions on Windows dont have the configparser class as such; updating the excception handling to setup things okay --- examples/tweet.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/examples/tweet.py b/examples/tweet.py index 36a4c000..3504fb18 100755 --- a/examples/tweet.py +++ b/examples/tweet.py @@ -4,7 +4,11 @@ __author__ = 'dewitt@google.com' -import configparser +try: + import configparser +except ImportError as _: + import ConfigParser as configparser + import getopt import os import sys From 0531495b7ca150e1172f170e4b21d4025ca450da Mon Sep 17 00:00:00 2001 From: Nay Linn Date: Thu, 14 Sep 2017 12:52:30 -0700 Subject: [PATCH 046/177] Removed 140 character limit from Api.PostDirectMessage method's documentation. --- twitter/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/api.py b/twitter/api.py index 7d0475ad..7a03856b 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -3088,7 +3088,7 @@ def PostDirectMessage(self, """Post a twitter direct message from the authenticated user. Args: - text: The message text to be posted. Must be less than 140 characters. + text: The message text to be posted. user_id: The ID of the user who should receive the direct message. [Optional] screen_name: From fd468925fe26ce083b7d26d365053f5acda9cc65 Mon Sep 17 00:00:00 2001 From: Reid 'arrdem' McKenzie Date: Sun, 17 Sep 2017 18:05:06 -0700 Subject: [PATCH 047/177] Support request Sessions for streaming, warn about the timeout floor --- twitter/api.py | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 7a03856b..11a3ee66 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -229,6 +229,8 @@ def __init__(self, self._use_gzip = use_gzip_compression self._debugHTTP = debugHTTP self._shortlink_size = 19 + if timeout and timeout < 30: + print("Warning: The Twitter streaming API sends 30s keepalives, the given timeout is shorter!") self._timeout = timeout self.__auth = None @@ -4694,7 +4696,9 @@ def GetUserStream(self, delimited=None, stall_warnings=None, stringify_friend_ids=False, - filter_level=None): + filter_level=None, + session=None, + include_keepalive=False): """Returns the data from the user stream. Args: @@ -4742,11 +4746,20 @@ def GetUserStream(self, if filter_level is not None: data['filter_level'] = filter_level - resp = self._RequestStream(url, 'POST', data=data) + resp = self._RequestStream(url, 'POST', data=data, session=session) + # The Twitter streaming API sends keep-alive newlines every 30s if there has not been other + # traffic, and specifies that streams should only be reset after three keep-alive ticks. + # + # The original implementation of this API didn't expose keep-alive signals to the user, + # making it difficult to determine whether the connection should be hung up or not. + # + # https://dev.twitter.com/streaming/overview/connecting for line in resp.iter_lines(): if line: data = self._ParseAndCheckTwitter(line.decode('utf-8')) yield data + elif include_keepalive: + yield None def VerifyCredentials(self, include_entities=None, skip_status=None, include_email=None): """Returns a twitter.User instance if the authenticating user is valid. @@ -5075,7 +5088,7 @@ def _RequestUrl(self, url, verb, data=None, json=None, enforce_auth=True): return resp - def _RequestStream(self, url, verb, data=None): + def _RequestStream(self, url, verb, data=None, session=None): """Request a stream of data. Args: @@ -5089,19 +5102,21 @@ def _RequestStream(self, url, verb, data=None): Returns: A twitter stream. """ + session = session or requests.Session() + if verb == 'POST': try: - return requests.post(url, data=data, stream=True, - auth=self.__auth, - timeout=self._timeout, - proxies=self.proxies) + return session.post(url, data=data, stream=True, + auth=self.__auth, + timeout=self._timeout, + proxies=self.proxies) except requests.RequestException as e: raise TwitterError(str(e)) if verb == 'GET': url = self._BuildUrl(url, extra_params=data) try: - return requests.get(url, stream=True, auth=self.__auth, - timeout=self._timeout, proxies=self.proxies) + return session.get(url, stream=True, auth=self.__auth, + timeout=self._timeout, proxies=self.proxies) except requests.RequestException as e: raise TwitterError(str(e)) return 0 # if not a POST or GET request From 0afd84db870d0d415d66b13421a3ee1e4613984a Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sat, 23 Sep 2017 09:37:54 -0400 Subject: [PATCH 048/177] fix pycodestyle errors --- twitter/api.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 7a03856b..b902fc6f 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -2900,7 +2900,7 @@ def UsersLookup(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - + if return_json: return data else: @@ -2940,7 +2940,7 @@ def GetUser(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - + if return_json: return data else: @@ -3014,7 +3014,7 @@ def GetDirectMessages(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - + if return_json: return data else: @@ -3074,7 +3074,7 @@ def GetSentDirectMessages(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - + if return_json: return data else: @@ -3109,7 +3109,7 @@ def PostDirectMessage(self, resp = self._RequestUrl(url, 'POST', data=data) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - + if return_json: return data else: @@ -3123,7 +3123,7 @@ def DestroyDirectMessage(self, message_id, include_entities=True, return_json=Fa message. Args: - message_id: + message_id: The id of the direct message to be destroyed return_json (bool, optional): If True JSON data will be returned, instead of twitter.User @@ -3330,7 +3330,7 @@ def LookupFriendship(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - + if return_json: return data else: @@ -3550,7 +3550,7 @@ def GetFavorites(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - + if return_json: return data else: @@ -3616,7 +3616,7 @@ def GetMentions(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - + if return_json: return data else: @@ -3848,7 +3848,7 @@ def ShowSubscription(self, resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - + if return_json: return data else: From 6303fb0d0a7b934a4bc6441aa062de9aee236aa5 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sat, 23 Sep 2017 15:24:53 -0400 Subject: [PATCH 049/177] refactor tests for DMs out into separate file --- testdata/get_direct_messages.json | 1 - testdata/get_sent_direct_messages.json | 1 - tests/test_api_30.py | 25 ------------------------- 3 files changed, 27 deletions(-) delete mode 100644 testdata/get_direct_messages.json delete mode 100644 testdata/get_sent_direct_messages.json diff --git a/testdata/get_direct_messages.json b/testdata/get_direct_messages.json deleted file mode 100644 index 2ebcc004..00000000 --- a/testdata/get_direct_messages.json +++ /dev/null @@ -1 +0,0 @@ -[{"id":678629245946433539,"id_str":"678629245946433539","text":"https:\/\/t.co\/PnDU7HQGwq","sender":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"sender_id":372018022,"sender_id_str":"372018022","sender_screen_name":"__jcbl__","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 17:33:15 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/PnDU7HQGwq","expanded_url":"http:\/\/twitter.com\/pattymo\/status\/674659346127679488","display_url":"twitter.com\/pattymo\/status\u2026","indices":[0,23]}]}},{"id":678604651239895043,"id_str":"678604651239895043","text":"https:\/\/t.co\/sQlHgqXOxW","sender":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"sender_id":372018022,"sender_id_str":"372018022","sender_screen_name":"__jcbl__","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 15:55:31 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/sQlHgqXOxW","expanded_url":"https:\/\/twitter.com\/henrytcasey\/status\/667870485842149378","display_url":"twitter.com\/henrytcasey\/st\u2026","indices":[0,23]}]}},{"id":678604278852804611,"id_str":"678604278852804611","text":"cool? https:\/\/t.co\/csy2NSbU86","sender":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"sender_id":372018022,"sender_id_str":"372018022","sender_screen_name":"__jcbl__","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 15:54:02 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/csy2NSbU86","expanded_url":"https:\/\/twitter.com\/__jcbl__\/status\/667865252764246016","display_url":"twitter.com\/__jcbl__\/statu\u2026","indices":[6,29]}]}},{"id":678603770633125891,"id_str":"678603770633125891","text":"https:\/\/t.co\/csy2NSbU86","sender":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"sender_id":372018022,"sender_id_str":"372018022","sender_screen_name":"__jcbl__","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 15:52:01 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/csy2NSbU86","expanded_url":"https:\/\/twitter.com\/__jcbl__\/status\/667865252764246016","display_url":"twitter.com\/__jcbl__\/statu\u2026","indices":[0,23]}]}},{"id":678603352637227011,"id_str":"678603352637227011","text":"https:\/\/t.co\/A0NJfpDbAF","sender":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"sender_id":372018022,"sender_id_str":"372018022","sender_screen_name":"__jcbl__","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 15:50:21 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/A0NJfpDbAF","expanded_url":"https:\/\/twitter.com\/henrytcasey\/status\/667865779015196672","display_url":"twitter.com\/henrytcasey\/st\u2026","indices":[0,23]}]}},{"id":678601197788401668,"id_str":"678601197788401668","text":"https:\/\/t.co\/rY4FkCqIz9","sender":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"sender_id":372018022,"sender_id_str":"372018022","sender_screen_name":"__jcbl__","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 15:41:48 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/rY4FkCqIz9","expanded_url":"https:\/\/twitter.com\/henrytcasey\/status\/667866455959056384","display_url":"twitter.com\/henrytcasey\/st\u2026","indices":[0,23]}]}},{"id":678601038023147523,"id_str":"678601038023147523","text":"That's cool friend","sender":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"sender_id":372018022,"sender_id_str":"372018022","sender_screen_name":"__jcbl__","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 15:41:09 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678600722565345283,"id_str":"678600722565345283","text":"hey?","sender":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"sender_id":372018022,"sender_id_str":"372018022","sender_screen_name":"__jcbl__","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 15:39:54 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678592039651438596,"id_str":"678592039651438596","text":"https:\/\/t.co\/Z4RgDEuw7V","sender":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"sender_id":372018022,"sender_id_str":"372018022","sender_screen_name":"__jcbl__","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 15:05:24 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/Z4RgDEuw7V","expanded_url":"https:\/\/twitter.com\/henrytcasey\/status\/667912731081768960","display_url":"twitter.com\/henrytcasey\/st\u2026","indices":[0,23]}]}},{"id":678582529125838851,"id_str":"678582529125838851","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:37 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582526349283331,"id_str":"678582526349283331","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:36 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582524163940355,"id_str":"678582524163940355","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:35 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582521446166531,"id_str":"678582521446166531","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:35 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582519223025667,"id_str":"678582519223025667","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:34 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582516106706947,"id_str":"678582516106706947","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:33 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582513426558979,"id_str":"678582513426558979","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:33 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582510511525896,"id_str":"678582510511525896","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:32 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582507726635011,"id_str":"678582507726635011","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:31 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582505231007750,"id_str":"678582505231007750","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:31 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582502756376579,"id_str":"678582502756376579","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:30 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}}] \ No newline at end of file diff --git a/testdata/get_sent_direct_messages.json b/testdata/get_sent_direct_messages.json deleted file mode 100644 index 73609f85..00000000 --- a/testdata/get_sent_direct_messages.json +++ /dev/null @@ -1 +0,0 @@ -[{"id":678629283007303683,"id_str":"678629283007303683","text":"I am good bot!! I made you a GIF: https:\/\/t.co\/UEF8Q0prT1 !","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"recipient_id":372018022,"recipient_id_str":"372018022","recipient_screen_name":"__jcbl__","created_at":"Sun Dec 20 17:33:24 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/UEF8Q0prT1","expanded_url":"https:\/\/mlkshk.com\/p\/16YZH","display_url":"mlkshk.com\/p\/16YZH","indices":[34,57]}]}},{"id":678604717082189827,"id_str":"678604717082189827","text":"I am good bot!! I made you a GIF: https:\/\/t.co\/xqI9lUXBGf !","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"recipient_id":372018022,"recipient_id_str":"372018022","recipient_screen_name":"__jcbl__","created_at":"Sun Dec 20 15:55:47 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/xqI9lUXBGf","expanded_url":"https:\/\/mlkshk.com\/p\/16YYD","display_url":"mlkshk.com\/p\/16YYD","indices":[34,57]}]}},{"id":678604324533084163,"id_str":"678604324533084163","text":"I am good bot!! I made you a GIF: https:\/\/t.co\/RECY9xZDBA\u007b'name': '5e89f157c772459.gif', 'share_key': '16YYC'\u007d !","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"recipient_id":372018022,"recipient_id_str":"372018022","recipient_screen_name":"__jcbl__","created_at":"Sun Dec 20 15:54:13 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/RECY9xZDBA","expanded_url":"https:\/\/mlkshk.com\/p\/","display_url":"mlkshk.com\/p\/","indices":[34,57]}]}},{"id":678601041219354627,"id_str":"678601041219354627","text":"I don't see a shared tweet there!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"recipient_id":372018022,"recipient_id_str":"372018022","recipient_screen_name":"__jcbl__","created_at":"Sun Dec 20 15:41:10 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678600965042397187,"id_str":"678600965042397187","text":"it's cool","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"recipient_id":372018022,"recipient_id_str":"372018022","recipient_screen_name":"__jcbl__","created_at":"Sun Dec 20 15:40:52 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582529125838851,"id_str":"678582529125838851","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:37 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582526349283331,"id_str":"678582526349283331","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:36 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582524163940355,"id_str":"678582524163940355","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:35 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582521446166531,"id_str":"678582521446166531","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:35 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582519223025667,"id_str":"678582519223025667","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:34 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582516106706947,"id_str":"678582516106706947","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:33 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582513426558979,"id_str":"678582513426558979","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:33 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582510511525896,"id_str":"678582510511525896","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:32 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582507726635011,"id_str":"678582507726635011","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:31 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582505231007750,"id_str":"678582505231007750","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:31 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582502756376579,"id_str":"678582502756376579","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:30 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582500457861123,"id_str":"678582500457861123","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:30 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582498310377475,"id_str":"678582498310377475","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:29 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582496188104707,"id_str":"678582496188104707","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:29 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582494032240644,"id_str":"678582494032240644","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:28 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}}] \ No newline at end of file diff --git a/tests/test_api_30.py b/tests/test_api_30.py index 67d7b337..d3c2fdf1 100644 --- a/tests/test_api_30.py +++ b/tests/test_api_30.py @@ -629,31 +629,6 @@ def testGetUser(self): self.assertEqual(resp.screen_name, 'kesuke') self.assertEqual(resp.id, 718443) - @responses.activate - def testGetDirectMessages(self): - with open('testdata/get_direct_messages.json') as f: - resp_data = f.read() - responses.add(GET, DEFAULT_URL, body=resp_data) - - resp = self.api.GetDirectMessages() - self.assertTrue(type(resp) is list) - direct_message = resp[0] - self.assertTrue(type(direct_message) is twitter.DirectMessage) - self.assertEqual(direct_message.id, 678629245946433539) - - @responses.activate - def testGetSentDirectMessages(self): - with open('testdata/get_sent_direct_messages.json') as f: - resp_data = f.read() - responses.add(GET, DEFAULT_URL, body=resp_data) - - resp = self.api.GetSentDirectMessages() - self.assertTrue(type(resp) is list) - direct_message = resp[0] - self.assertTrue(type(direct_message) is twitter.DirectMessage) - self.assertEqual(direct_message.id, 678629283007303683) - self.assertTrue([dm.sender_screen_name == 'notinourselves' for dm in resp]) - @responses.activate def testGetFavorites(self): with open('testdata/get_favorites.json') as f: From 3ee3c5a55b903e0bb62d3388c0ed594f45de5b35 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sat, 23 Sep 2017 16:02:53 -0400 Subject: [PATCH 050/177] fix issue #494 for py3 compat w/ app only auth --- tests/test_api_30.py | 11 +++++++++++ twitter/api.py | 12 +++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/tests/test_api_30.py b/tests/test_api_30.py index d3c2fdf1..8aab2315 100644 --- a/tests/test_api_30.py +++ b/tests/test_api_30.py @@ -88,6 +88,17 @@ def testApiRaisesAuthErrors(self): api._Api__auth = None self.assertRaises(twitter.TwitterError, lambda: api.GetFollowers()) + @responses.activate + def testAppOnlyAuth(self): + responses.add(method=POST, + url='https://api.twitter.com/oauth2/token', + body='{"token_type":"bearer","access_token":"testing"}') + api = twitter.Api( + consumer_key='test', + consumer_secret='test', + application_only_auth=True) + self.assertEqual(api._bearer_token['access_token'], "testing") + @responses.activate def testGetHelpConfiguration(self): with open('testdata/get_help_configuration.json') as f: diff --git a/twitter/api.py b/twitter/api.py index b902fc6f..58917c5c 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -35,13 +35,13 @@ try: # python 3 - from urllib.parse import urlparse, urlunparse, urlencode + from urllib.parse import urlparse, urlunparse, urlencode, quote_plus from urllib.request import urlopen from urllib.request import __version__ as urllib_version except ImportError: from urlparse import urlparse, urlunparse from urllib2 import urlopen - from urllib import urlencode + from urllib import urlencode, quote_plus from urllib import __version__ as urllib_version from twitter import ( @@ -288,17 +288,15 @@ def GetAppOnlyAuthToken(self, consumer_key, consumer_secret): """ Generate a Bearer Token from consumer_key and consumer_secret """ - from urllib import quote_plus - import base64 - key = quote_plus(consumer_key) secret = quote_plus(consumer_secret) - bearer_token = base64.b64encode('{}:{}'.format(key, secret)) + bearer_token = base64.b64encode('{}:{}'.format(key, secret).encode('utf8')) post_headers = { - 'Authorization': 'Basic ' + bearer_token, + 'Authorization': 'Basic {0}'.format(bearer_token.decode('utf8')), 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' } + res = requests.post(url='https://api.twitter.com/oauth2/token', data={'grant_type': 'client_credentials'}, headers=post_headers) From e43600a7c92e89487fbd0fe009047ef0eb3af570 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sun, 24 Sep 2017 11:22:54 -0400 Subject: [PATCH 051/177] update changelog for v3.3 --- doc/changelog.rst | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/doc/changelog.rst b/doc/changelog.rst index 8580caac..554ca779 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -1,6 +1,20 @@ Changelog --------- +Version 3.3 +============= + +* Adds application only authentication. See `Twitter's documentation for details `_. To use application only authentication, pass `application_only_auth` when creating the Api; the bearer token will be automatically retrieved. + +* Adds function :py:func:`twitter.api.GetAppOnlyAuthToken` + +* Adds `filter_level` keyword argument for :py:func:`twitter.api.GetStreamFilter`, :py:func:`twitter.api.GetUserStream` + +* Adds `proxies` keyword argument for creating an Api instance. Pass a dictionary of proxies for the request to pass through, if not specified allows requests lib to use environmental variables for proxy if any. + +* Adds support for `quoted_status` to the :py:class:`twitter.models.Status` model. + + Version 3.2.1 ============= From ab26ac0b903888e009d1f4e95566efb0a56709be Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sun, 24 Sep 2017 09:36:32 -0400 Subject: [PATCH 052/177] move UserStatus.connections to private class attr bc US.connections is a public variable, there is some confusion regarding its use. the original idea was that US.connections would only hold the default connection types available, much like the param_defaults attribute for other models; however, bc of the name, it was implied that this attribute contained the connections for the specific instance, resulting in confusion between it and the intended attributes (i.e., us.followed_by etc). this commit moves the attribute to a private attribute (._connections) so that it is clearer to end-users that it should not be used for a specific instance. additionally, this creates a @property with the class-specific attributes for US.following, etc. --- twitter/models.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/twitter/models.py b/twitter/models.py index 985a69ca..dc71ad46 100644 --- a/twitter/models.py +++ b/twitter/models.py @@ -282,12 +282,12 @@ class UserStatus(TwitterModel): """ A class representing the UserStatus structure. This is an abbreviated form of the twitter.User object. """ - connections = {'following': False, - 'followed_by': False, - 'following_received': False, - 'following_requested': False, - 'blocking': False, - 'muting': False} + _connections = {'following': False, + 'followed_by': False, + 'following_received': False, + 'following_requested': False, + 'blocking': False, + 'muting': False} def __init__(self, **kwargs): self.param_defaults = { @@ -307,12 +307,21 @@ def __init__(self, **kwargs): setattr(self, param, kwargs.get(param, default)) if 'connections' in kwargs: - for param in self.connections: + for param in self._connections: if param in kwargs['connections']: setattr(self, param, True) + @property + def connections(self): + return {'following': self.following, + 'followed_by': self.followed_by, + 'following_received': self.following_received, + 'following_requested': self.following_requested, + 'blocking': self.blocking, + 'muting': self.muting} + def __repr__(self): - connections = [param for param in self.connections if getattr(self, param)] + connections = [param for param in self._connections if getattr(self, param)] return "UserStatus(ID={uid}, ScreenName={sn}, Connections=[{conn}])".format( uid=self.id, sn=self.screen_name, From ca387fe0af4010a70a60a5e176391b5b91d32ba8 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Mon, 2 Oct 2017 21:03:23 -0400 Subject: [PATCH 053/177] add tests for UserStatus.connections --- tests/test_models.py | 4 ++++ twitter/models.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/test_models.py b/tests/test_models.py index 5a892287..fe7b6716 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -190,3 +190,7 @@ def test_user_status(self): self.fail(e) self.assertTrue(user_status.AsJsonString()) self.assertTrue(user_status.AsDict()) + + self.assertTrue(user_status.connections['blocking']) + self.assertTrue(user_status.connections['muting']) + self.assertFalse(user_status.connections['followed_by']) diff --git a/twitter/models.py b/twitter/models.py index dc71ad46..37e05e28 100644 --- a/twitter/models.py +++ b/twitter/models.py @@ -321,7 +321,7 @@ def connections(self): 'muting': self.muting} def __repr__(self): - connections = [param for param in self._connections if getattr(self, param)] + connections = [param for param in self.connections if getattr(self, param)] return "UserStatus(ID={uid}, ScreenName={sn}, Connections=[{conn}])".format( uid=self.id, sn=self.screen_name, From c1fdec198001a806c6dff3101d9014feef282e15 Mon Sep 17 00:00:00 2001 From: Amnisia Date: Tue, 10 Oct 2017 15:42:42 +0500 Subject: [PATCH 054/177] merge in master for uses in my projects --- twitter/api.py | 2 +- twitter/twitter_utils.py | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 58917c5c..f0082d34 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -1197,7 +1197,7 @@ def _UploadMediaChunkedInit(self, """ url = '%s/media/upload.json' % self.upload_url - media_fp, filename, file_size, media_type = parse_media_file(media) + media_fp, filename, file_size, media_type = parse_media_file(media, async_upload=True) if not all([media_fp, filename, file_size, media_type]): raise TwitterError({'message': 'Could not process media file'}) diff --git a/twitter/twitter_utils.py b/twitter/twitter_utils.py index 66ce8b24..743cf65e 100644 --- a/twitter/twitter_utils.py +++ b/twitter/twitter_utils.py @@ -190,12 +190,13 @@ def http_to_file(http): return data_file -def parse_media_file(passed_media): +def parse_media_file(passed_media, async_upload=False): """ Parses a media file and attempts to return a file-like object and information about the media file. Args: passed_media: media file which to parse. + async_upload: flag, for validation media file attributes. Returns: file-like object, the filename of the media file, the file size, and @@ -240,8 +241,10 @@ def parse_media_file(passed_media): if media_type is not None: if media_type in img_formats and file_size > 5 * 1048576: raise TwitterError({'message': 'Images must be less than 5MB.'}) - elif media_type in video_formats and file_size > 15 * 1048576: + elif media_type in video_formats and not async_upload and file_size > 15 * 1048576: raise TwitterError({'message': 'Videos must be less than 15MB.'}) + elif media_type in video_formats and async_upload and file_size > 512 * 1048576: + raise TwitterError({'message': 'Videos must be less than 512MB.'}) elif media_type not in img_formats and media_type not in video_formats: raise TwitterError({'message': 'Media type could not be determined.'}) From d4f3dcd08c555e8ae67b87034ac4820aa188d33b Mon Sep 17 00:00:00 2001 From: Trevor Prater Date: Sat, 11 Nov 2017 02:18:18 -0500 Subject: [PATCH 055/177] Adds support for 280 character limit --- tests/test_tweet_length.py | 11 ++++------- twitter/api.py | 26 +++++++++++++------------- 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/tests/test_tweet_length.py b/tests/test_tweet_length.py index 2853244d..288dc32e 100644 --- a/tests/test_tweet_length.py +++ b/tests/test_tweet_length.py @@ -63,15 +63,12 @@ def test_split_tweets(self): tweets = self.api._TweetTextWrap(test_tweet) self.assertEqual( tweets[0], - "Anatole went out of the room and returned a few minutes later wearing a fur coat girt with a silver belt, and a sable cap jauntily set on") + "Anatole went out of the room and returned a few minutes later wearing a fur coat girt with a silver belt, and a sable cap jauntily set on one side and very becoming to his handsome face. Having looked in a mirror, and standing before Dolokhov in the same pose he had assumed") self.assertEqual( tweets[1], - "one side and very becoming to his handsome face. Having looked in a mirror, and standing before Dolokhov in the same pose he had assumed") - self.assertEqual( - tweets[2], "before it, he lifted a glass of wine.") - test_tweet = "t.co went t.co of t.co room t.co returned t.co few minutes later" + test_tweet = "t.co went t.co of t.co room t.co returned t.co few minutes later and then t.co went to t.co restroom and t.co was sad because t.co did not have any t.co toilet paper" tweets = self.api._TweetTextWrap(test_tweet) - self.assertEqual(tweets[0], 't.co went t.co of t.co room t.co returned') - self.assertEqual(tweets[1], 't.co few minutes later') + self.assertEqual(tweets[0], 't.co went t.co of t.co room t.co returned t.co few minutes later and then t.co went to t.co restroom and t.co was sad because') + self.assertEqual(tweets[1], 't.co did not have any t.co toilet paper') diff --git a/twitter/api.py b/twitter/api.py index 58917c5c..c305e684 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -72,7 +72,7 @@ if sys.version_info > (3,): long = int -CHARACTER_LIMIT = 140 +CHARACTER_LIMIT = 280 # A singleton representing a lazily instantiated FileCache. DEFAULT_CACHE = object() @@ -976,8 +976,8 @@ def PostUpdate(self, Args: status (str): - The message text to be posted. Must be less than or equal to 140 - characters. + The message text to be posted. Must be less than or equal to + CHARACTER_LIMIT characters. media (int, str, fp, optional): A URL, a local file, or a file-like object (something with a read() method), or a list of any combination of the above. @@ -1029,8 +1029,8 @@ def PostUpdate(self, otherwise the payload will contain the full user data item. verify_status_length (bool, optional): If True, api throws a hard error that the status is over - 140 characters. If False, Api will attempt to post the - status. + CHARACTER_LIMIT characters. If False, Api will attempt to post + the status. Returns: (twitter.Status) A twitter.Status instance representing the message posted. @@ -1042,8 +1042,8 @@ def PostUpdate(self, else: u_status = str(status, self._input_encoding) - if verify_status_length and calc_expected_status_length(u_status) > 140: - raise TwitterError("Text must be less than or equal to 140 characters.") + if verify_status_length and calc_expected_status_length(u_status) > CHARACTER_LIMIT: + raise TwitterError("Text must be less than or equal to CHARACTER_LIMIT characters.") if auto_populate_reply_metadata and not in_reply_to_status_id: raise TwitterError("If auto_populate_reply_metadata is True, you must set in_reply_to_status_id") @@ -1514,7 +1514,7 @@ def PostMultipleMedia(self, status, media, possibly_sensitive=None, def _TweetTextWrap(self, status, - char_lim=140): + char_lim=CHARACTER_LIMIT): if not self._config: self.GetHelpConfiguration() @@ -1525,7 +1525,7 @@ def _TweetTextWrap(self, words = re.split(r'\s', status) if len(words) == 1 and not is_url(words[0]): - if len(words[0]) > 140: + if len(words[0]) > CHARACTER_LIMIT: raise TwitterError({"message": "Unable to split status into tweetable parts. Word was: {0}/{1}".format(len(words[0]), char_lim)}) else: tweets.append(words[0]) @@ -1541,7 +1541,7 @@ def _TweetTextWrap(self, else: new_len += len(word) + 1 - if new_len > 140: + if new_len > CHARACTER_LIMIT: tweets.append(' '.join(line)) line = [word] line_length = new_len - line_length @@ -1559,12 +1559,12 @@ def PostUpdates(self, """Post one or more twitter status messages from the authenticated user. Unlike api.PostUpdate, this method will post multiple status updates - if the message is longer than 140 characters. + if the message is longer than CHARACTER_LIMIT characters. Args: status: The message text to be posted. - May be longer than 140 characters. + May be longer than CHARACTER_LIMIT characters. continuation: The character string, if any, to be appended to all but the last message. Note that Twitter strips trailing '...' strings @@ -2978,7 +2978,7 @@ def GetDirectMessages(self, objects. [Optional] full_text: When set to True full message will be included in the returned message - object if message length is bigger than 140 characters. [Optional] + object if message length is bigger than CHARACTER_LIMIT characters. [Optional] page: If you want more than 200 messages, you can use this and get 20 messages each time. You must recall it and increment the page value until it From 07b17ed1a89c167d09b02d1839bc8702f7dd9a38 Mon Sep 17 00:00:00 2001 From: Trevor Prater Date: Sat, 11 Nov 2017 02:19:28 -0500 Subject: [PATCH 056/177] Updates contributors --- AUTHORS.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS.rst b/AUTHORS.rst index 1a059240..adb00cfa 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -21,6 +21,7 @@ Now it's a full-on open source project with many contributors over time: * Pradeep Nayak, * Ian Ozsvald, * Nicolas Perriault, +* Trevor Prater, * Glen Tregoning, * Lars Weiler, * Sebastian Wiesinger, From 2c548b83e73af344f586998fe48152e41af2a716 Mon Sep 17 00:00:00 2001 From: Trevor Prater Date: Sat, 11 Nov 2017 02:24:00 -0500 Subject: [PATCH 057/177] Adds changes to changelog --- doc/changelog.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/changelog.rst b/doc/changelog.rst index 554ca779..f8acf665 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -1,5 +1,10 @@ Changelog --------- +Version 3.3.1 +============= + +* Adds support for 280 character limit. + Version 3.3 ============= From 7e2cd0f804dcb64384bc66208781905da75f57f1 Mon Sep 17 00:00:00 2001 From: Trevor Prater Date: Sat, 11 Nov 2017 02:24:07 -0500 Subject: [PATCH 058/177] Bumps version --- doc/conf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/conf.py b/doc/conf.py index 04a34d6a..1afa0818 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -57,9 +57,9 @@ # built documents. # # The short X.Y version. -version = '3.2' +version = '3.3' # The full version, including alpha/beta/rc tags. -release = '3.2.1' +release = '3.3.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From a7e26940cbd0f15c96ecb38e507bfee62caa17e6 Mon Sep 17 00:00:00 2001 From: Trevor Prater Date: Sat, 11 Nov 2017 02:29:34 -0500 Subject: [PATCH 059/177] Updates CHANGES --- CHANGES | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGES b/CHANGES index e6e05f82..3af38784 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,7 @@ See the messy details at https://github.com/bear/python-twitter/pull/251 Pull Requests + #525 Adds support for 280 character limit for tweets by trevorprater #267 initialize Api.__auth fixes #119 by rbpasker #266 Add full_text and page options in GetDirectMessages function by mistersalmon #264 Updates Media object with new methods, adds id param, adds tests by jeremylow @@ -24,6 +25,9 @@ Probably a whole lot that I missed - ugh! +2017-11-11 + Added support for 280 character limit + 2015-10-05 Added who to api.GetSearch From 75d7d21e7add1a94f37a081869b5b2279a238c1c Mon Sep 17 00:00:00 2001 From: Trevor Prater Date: Sun, 26 Nov 2017 15:59:27 -0500 Subject: [PATCH 060/177] Bumps version --- twitter/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/__init__.py b/twitter/__init__.py index 71213147..0c4d75c4 100644 --- a/twitter/__init__.py +++ b/twitter/__init__.py @@ -23,7 +23,7 @@ __email__ = 'python-twitter@googlegroups.com' __copyright__ = 'Copyright (c) 2007-2016 The Python-Twitter Developers' __license__ = 'Apache License 2.0' -__version__ = '3.3' +__version__ = '3.3.1' __url__ = 'https://github.com/bear/python-twitter' __download_url__ = 'https://pypi.python.org/pypi/python-twitter' __description__ = 'A Python wrapper around the Twitter API' From 3da83b43116d679c6ddf9146106a06562ee40764 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sun, 26 Nov 2017 14:35:54 -0500 Subject: [PATCH 061/177] add try/except for debugHTTP to remove future dep --- twitter/api.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index c305e684..e93f8e6c 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -274,9 +274,12 @@ def __init__(self, if debugHTTP: import logging - import http.client + try: + import http.client as http_client # python3 + except ImportError: + import httplib as http_client # python2 - http.client.HTTPConnection.debuglevel = 1 + http_client.HTTPConnection.debuglevel = 1 logging.basicConfig() # you need to initialize logging, otherwise you will not see anything from requests logging.getLogger().setLevel(logging.DEBUG) From 4366661a2dae6a2163faec1e10a4e0aca524048e Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Fri, 1 Dec 2017 07:27:43 -0500 Subject: [PATCH 062/177] deprecate PostMedia, PostMultipleMedia, UpdateBackgroundImage --- doc/changelog.rst | 14 ++ tests/test_api.py | 327 ------------------------------------------- tests/test_api_30.py | 8 -- twitter/api.py | 180 ------------------------ 4 files changed, 14 insertions(+), 515 deletions(-) delete mode 100644 tests/test_api.py diff --git a/doc/changelog.rst b/doc/changelog.rst index f8acf665..05b79fdb 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -1,5 +1,19 @@ Changelog --------- + +Version 3.4 +=========== + +Deprecations +------------ + +* :py:func:`twitter.api.Api.UpdateBackgroundImage`. Please make sure that your code does not call this function as it will now return a hard error. There is no replacement function. This was deprecated by Twitter around July 2015. + +* :py:func:`twitter.api.Api.PostMedia` has been removed. Please use :py:func:`twitter.api.Api.PostUpdate` instead. + +* :py:func:`twitter.api.Api.PostMultipleMedia`. Please use :py:func:`twitter.api.Api.PostUpdate` instead. + + Version 3.3.1 ============= diff --git a/tests/test_api.py b/tests/test_api.py deleted file mode 100644 index 86ab2268..00000000 --- a/tests/test_api.py +++ /dev/null @@ -1,327 +0,0 @@ -# encoding: utf-8 - -import os -import time -import urllib -import unittest -import twitter - - -CONSUMER_KEY = os.getenv('CONSUMER_KEY', None) -CONSUMER_SECRET = os.getenv('CONSUMER_SECRET', None) -ACCESS_TOKEN_KEY = os.getenv('ACCESS_TOKEN_KEY', None) -ACCESS_TOKEN_SECRET = os.getenv('ACCESS_TOKEN_SECRET', None) - - -@unittest.skipIf(not CONSUMER_KEY and not CONSUMER_SECRET, "No tokens provided") -class ApiTest(unittest.TestCase): - def setUp(self): - self._urllib = MockUrllib() - time.sleep(15) - api = twitter.Api(consumer_key=CONSUMER_SECRET, - consumer_secret=CONSUMER_SECRET, - access_token_key=ACCESS_TOKEN_KEY, - access_token_secret=ACCESS_TOKEN_SECRET, - cache=None) - api.SetUrllib(self._urllib) - self._api = api - print("Testing the API class. This test is time controlled") - - def testTwitterError(self): - '''Test that twitter responses containing an error message are wrapped.''' - self._AddHandler('https://api.twitter.com/1.1/statuses/user_timeline.json', - curry(self._OpenTestData, 'public_timeline_error.json')) - # Manually try/catch so we can check the exception's value - try: - self._api.GetUserTimeline() - except twitter.TwitterError as error: - # If the error message matches, the test passes - self.assertEqual('test error', error.message) - else: - self.fail('TwitterError expected') - - def testGetUserTimeline(self): - '''Test the twitter.Api GetUserTimeline method''' - time.sleep(8) - print('Testing GetUserTimeline') - self._AddHandler('https://api.twitter.com/1.1/statuses/user_timeline.json?count=1&screen_name=kesuke', - curry(self._OpenTestData, 'user_timeline-kesuke.json')) - statuses = self._api.GetUserTimeline(screen_name='kesuke', count=1) - # This is rather arbitrary, but spot checking is better than nothing - self.assertEqual(89512102, statuses[0].id) - self.assertEqual(718443, statuses[0].user.id) - - # def testGetFriendsTimeline(self): - # '''Test the twitter.Api GetFriendsTimeline method''' - # self._AddHandler('https://api.twitter.com/1.1/statuses/friends_timeline/kesuke.json', - # curry(self._OpenTestData, 'friends_timeline-kesuke.json')) - # statuses = self._api.GetFriendsTimeline('kesuke') - # # This is rather arbitrary, but spot checking is better than nothing - # self.assertEqual(20, len(statuses)) - # self.assertEqual(718443, statuses[0].user.id) - - def testGetStatus(self): - '''Test the twitter.Api GetStatus method''' - time.sleep(8) - print('Testing GetStatus') - self._AddHandler('https://api.twitter.com/1.1/statuses/show.json?include_my_retweet=1&id=89512102', - curry(self._OpenTestData, 'show-89512102.json')) - status = self._api.GetStatus(89512102) - self.assertEqual(89512102, status.id) - self.assertEqual(718443, status.user.id) - - def testDestroyStatus(self): - '''Test the twitter.Api DestroyStatus method''' - time.sleep(8) - print('Testing DestroyStatus') - self._AddHandler('https://api.twitter.com/1.1/statuses/destroy/103208352.json', - curry(self._OpenTestData, 'status-destroy.json')) - status = self._api.DestroyStatus(103208352) - self.assertEqual(103208352, status.id) - - def testPostUpdate(self): - '''Test the twitter.Api PostUpdate method''' - time.sleep(8) - print('Testing PostUpdate') - self._AddHandler('https://api.twitter.com/1.1/statuses/update.json', - curry(self._OpenTestData, 'update.json')) - status = self._api.PostUpdate(u'Моё судно на воздушной подушке полно угрей'.encode('utf8')) - # This is rather arbitrary, but spot checking is better than nothing - self.assertEqual(u'Моё судно на воздушной подушке полно угрей', status.text) - - def testPostRetweet(self): - '''Test the twitter.Api PostRetweet method''' - time.sleep(8) - print('Testing PostRetweet') - self._AddHandler('https://api.twitter.com/1.1/statuses/retweet/89512102.json', - curry(self._OpenTestData, 'retweet.json')) - status = self._api.PostRetweet(89512102) - self.assertEqual(89512102, status.id) - - def testPostUpdateLatLon(self): - '''Test the twitter.Api PostUpdate method, when used in conjunction with latitude and longitude''' - time.sleep(8) - print('Testing PostUpdateLatLon') - self._AddHandler('https://api.twitter.com/1.1/statuses/update.json', - curry(self._OpenTestData, 'update_latlong.json')) - # test another update with geo parameters, again test somewhat arbitrary - status = self._api.PostUpdate(u'Моё судно на воздушной подушке полно угрей'.encode('utf8'), latitude=54.2, - longitude=-2) - self.assertEqual(u'Моё судно на воздушной подушке полно угрей', status.text) - self.assertEqual(u'Point', status.GetGeo()['type']) - self.assertEqual(26.2, status.GetGeo()['coordinates'][0]) - self.assertEqual(127.5, status.GetGeo()['coordinates'][1]) - - def testGetReplies(self): - '''Test the twitter.Api GetReplies method''' - time.sleep(8) - print('Testing GetReplies') - self._AddHandler('https://api.twitter.com/1.1/statuses/user_timeline.json', - curry(self._OpenTestData, 'replies.json')) - statuses = self._api.GetReplies() - self.assertEqual(36657062, statuses[0].id) - - def testGetRetweetsOfMe(self): - '''Test the twitter.API GetRetweetsOfMe method''' - time.sleep(8) - print('Testing GetRetweetsOfMe') - self._AddHandler('https://api.twitter.com/1.1/statuses/retweets_of_me.json', - curry(self._OpenTestData, 'retweets_of_me.json')) - retweets = self._api.GetRetweetsOfMe() - self.assertEqual(253650670274637824, retweets[0].id) - - def testGetFriends(self): - '''Test the twitter.Api GetFriends method''' - time.sleep(8) - print('Testing GetFriends') - self._AddHandler('https://api.twitter.com/1.1/friends/list.json?cursor=123', - curry(self._OpenTestData, 'friends.json')) - users = self._api.GetFriends(cursor=123) - buzz = [u.status for u in users if u.screen_name == 'buzz'] - self.assertEqual(89543882, buzz[0].id) - - def testGetFollowers(self): - '''Test the twitter.Api GetFollowers method''' - time.sleep(8) - print('Testing GetFollowers') - self._AddHandler('https://api.twitter.com/1.1/followers/list.json?cursor=-1', - curry(self._OpenTestData, 'followers.json')) - users = self._api.GetFollowers() - # This is rather arbitrary, but spot checking is better than nothing - alexkingorg = [u.status for u in users if u.screen_name == 'alexkingorg'] - self.assertEqual(89554432, alexkingorg[0].id) - - # def testGetFeatured(self): - # '''Test the twitter.Api GetFeatured method''' - # self._AddHandler('https://api.twitter.com/1.1/statuses/featured.json', - # curry(self._OpenTestData, 'featured.json')) - # users = self._api.GetFeatured() - # # This is rather arbitrary, but spot checking is better than nothing - # stevenwright = [u.status for u in users if u.screen_name == 'stevenwright'] - # self.assertEqual(86991742, stevenwright[0].id) - - def testGetDirectMessages(self): - '''Test the twitter.Api GetDirectMessages method''' - time.sleep(8) - print('Testing GetDirectMessages') - self._AddHandler('https://api.twitter.com/1.1/direct_messages.json', - curry(self._OpenTestData, 'direct_messages.json')) - statuses = self._api.GetDirectMessages() - self.assertEqual(u'A légpárnás hajóm tele van angolnákkal.', statuses[0].text) - - def testPostDirectMessage(self): - '''Test the twitter.Api PostDirectMessage method''' - time.sleep(8) - print('Testing PostDirectMessage') - self._AddHandler('https://api.twitter.com/1.1/direct_messages/new.json', - curry(self._OpenTestData, 'direct_messages-new.json')) - status = self._api.PostDirectMessage('test', u'Моё судно на воздушной подушке полно угрей'.encode('utf8')) - # This is rather arbitrary, but spot checking is better than nothing - self.assertEqual(u'Моё судно на воздушной подушке полно угрей', status.text) - - def testDestroyDirectMessage(self): - '''Test the twitter.Api DestroyDirectMessage method''' - time.sleep(8) - print('Testing DestroyDirectMessage') - self._AddHandler('https://api.twitter.com/1.1/direct_messages/destroy.json', - curry(self._OpenTestData, 'direct_message-destroy.json')) - status = self._api.DestroyDirectMessage(3496342) - # This is rather arbitrary, but spot checking is better than nothing - self.assertEqual(673483, status.sender_id) - - def testCreateFriendship(self): - '''Test the twitter.Api CreateFriendship method''' - time.sleep(8) - print('Testing CreateFriendship') - self._AddHandler('https://api.twitter.com/1.1/friendships/create.json', - curry(self._OpenTestData, 'friendship-create.json')) - user = self._api.CreateFriendship('dewitt') - # This is rather arbitrary, but spot checking is better than nothing - self.assertEqual(673483, user.id) - - def testDestroyFriendship(self): - '''Test the twitter.Api DestroyFriendship method''' - time.sleep(8) - print('Testing Destroy Friendship') - self._AddHandler('https://api.twitter.com/1.1/friendships/destroy.json', - curry(self._OpenTestData, 'friendship-destroy.json')) - user = self._api.DestroyFriendship('dewitt') - # This is rather arbitrary, but spot checking is better than nothing - self.assertEqual(673483, user.id) - - def testGetUser(self): - '''Test the twitter.Api GetUser method''' - time.sleep(8) - print('Testing GetUser') - self._AddHandler('https://api.twitter.com/1.1/users/show.json?user_id=dewitt', - curry(self._OpenTestData, 'show-dewitt.json')) - user = self._api.GetUser('dewitt') - self.assertEqual('dewitt', user.screen_name) - self.assertEqual(89586072, user.status.id) - - def _AddHandler(self, url, callback): - self._urllib.AddHandler(url, callback) - - def _GetTestDataPath(self, filename): - directory = os.path.dirname(os.path.abspath(__file__)) - test_data_dir = os.path.join(directory, 'testdata') - return os.path.join(test_data_dir, filename) - - def _OpenTestData(self, filename): - f = open(self._GetTestDataPath(filename)) - # make sure that the returned object contains an .info() method: - # headers are set to {} - return urllib.addinfo(f, {}) - - -class MockUrllib(object): - '''A mock replacement for urllib that hardcodes specific responses.''' - - def __init__(self): - self._handlers = {} - self.HTTPBasicAuthHandler = MockHTTPBasicAuthHandler - - def AddHandler(self, url, callback): - self._handlers[url] = callback - - def build_opener(self, *handlers): - return MockOpener(self._handlers) - - def HTTPHandler(self, *args, **kwargs): - return None - - def HTTPSHandler(self, *args, **kwargs): - return None - - def OpenerDirector(self): - return self.build_opener() - - def ProxyHandler(self, *args, **kwargs): - return None - - -class MockOpener(object): - '''A mock opener for urllib''' - - def __init__(self, handlers): - self._handlers = handlers - self._opened = False - - def open(self, url, data=None): - if self._opened: - raise Exception('MockOpener already opened.') - - # Remove parameters from URL - they're only added by oauth and we - # don't want to test oauth - if '?' in url: - # We split using & and filter on the beginning of each key - # This is crude but we have to keep the ordering for now - (url, qs) = url.split('?') - - tokens = [token for token in qs.split('&') - if not token.startswith('oauth')] - - if len(tokens) > 0: - url = "%s?%s" % (url, '&'.join(tokens)) - - if url in self._handlers: - self._opened = True - return self._handlers[url]() - else: - print(url) - print(self._handlers) - - raise Exception('Unexpected URL %s (Checked: %s)' % (url, self._handlers)) - - def add_handler(self, *args, **kwargs): - pass - - def close(self): - if not self._opened: - raise Exception('MockOpener closed before it was opened.') - self._opened = False - - -class curry(object): - # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52549 - - def __init__(self, fun, *args, **kwargs): - self.fun = fun - self.pending = args[:] - self.kwargs = kwargs.copy() - - def __call__(self, *args, **kwargs): - if kwargs and self.kwargs: - kw = self.kwargs.copy() - kw.update(kwargs) - else: - kw = kwargs or self.kwargs - return self.fun(*(self.pending + args), **kw) - - -class MockHTTPBasicAuthHandler(object): - '''A mock replacement for HTTPBasicAuthHandler''' - - def add_password(self, realm, uri, user, passwd): - # TODO(dewitt): Add verification that the proper args are passed - pass diff --git a/tests/test_api_30.py b/tests/test_api_30.py index 8aab2315..7a80ec0d 100644 --- a/tests/test_api_30.py +++ b/tests/test_api_30.py @@ -1698,14 +1698,6 @@ def testShowFriendship(self): lambda: self.api.ShowFriendship(target_screen_name='__jcbl__') ) - @responses.activate - def test_UpdateBackgroundImage_deprecation(self): - responses.add(POST, DEFAULT_URL, body='{}', status=200) - warnings.simplefilter("always") - with warnings.catch_warnings(record=True) as w: - resp = self.api.UpdateBackgroundImage(image='testdata/168NQ.jpg') - self.assertTrue(issubclass(w[0].category, DeprecationWarning)) - @responses.activate @patch('twitter.api.Api.UploadMediaChunked') def test_UploadSmallVideoUsesChunkedData(self, mocker): diff --git a/twitter/api.py b/twitter/api.py index e93f8e6c..9d375d88 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -1367,154 +1367,6 @@ def UploadMediaChunked(self, except KeyError: raise TwitterError('Media could not be uploaded.') - def PostMedia(self, - status, - media, - possibly_sensitive=None, - in_reply_to_status_id=None, - latitude=None, - longitude=None, - place_id=None, - display_coordinates=False): - """Post a twitter status message from the user with a picture attached. - - Args: - status: - the text of your update - media: - This can be the location of media(PNG, JPG, GIF) on the local file - system or at an HTTP URL, it can also be a file-like object - possibly_sensitive: - set true if content is "advanced." [Optional] - in_reply_to_status_id: - ID of a status that this is in reply to. [Optional] - lat: - latitude of location. [Optional] - long: - longitude of location. [Optional] - place_id: - A place in the world identified by a Twitter place ID. [Optional] - display_coordinates: - Set true if you want to display coordinates. [Optional] - - Returns: - A twitter.Status instance representing the message posted. - """ - - warnings.warn(( - "This endpoint has been deprecated by Twitter. Please use " - "PostUpdate() instead. Details of Twitter's deprecation can be " - "found at: " - "dev.twitter.com/rest/reference/post/statuses/update_with_media"), - PythonTwitterDeprecationWarning330) - - url = '%s/statuses/update_with_media.json' % self.base_url - - if isinstance(status, str) or self._input_encoding is None: - u_status = status - else: - u_status = str(status, self._input_encoding) - - data = {'status': u_status} - if not hasattr(media, 'read'): - if media.startswith('http'): - data['media'] = urlopen(media).read() - else: - with open(str(media), 'rb') as f: - data['media'] = f.read() - else: - data['media'] = media.read() - if possibly_sensitive: - data['possibly_sensitive'] = 'true' - if in_reply_to_status_id: - data['in_reply_to_status_id'] = str(in_reply_to_status_id) - if latitude is not None and longitude is not None: - data['lat'] = str(latitude) - data['long'] = str(longitude) - if place_id is not None: - data['place_id'] = str(place_id) - if display_coordinates: - data['display_coordinates'] = 'true' - - resp = self._RequestUrl(url, 'POST', data=data) - data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - - return Status.NewFromJsonDict(data) - - def PostMultipleMedia(self, status, media, possibly_sensitive=None, - in_reply_to_status_id=None, latitude=None, - longitude=None, place_id=None, - display_coordinates=False): - """ - Post a twitter status message from the authenticated user with - multiple pictures attached. - - Args: - status: - the text of your update - media: - location of multiple media elements(PNG, JPG, GIF) - possibly_sensitive: - set true is content is "advanced" - in_reply_to_status_id: - ID of a status that this is in reply to - lat: - location in latitude - long: - location in longitude - place_id: - A place in the world identified by a Twitter place ID - display_coordinates: - - Returns: - A twitter.Status instance representing the message posted. - """ - - warnings.warn(( - "This method is deprecated. Please use PostUpdate instead, " - "passing a list of media that you would like to associate " - "with the update."), PythonTwitterDeprecationWarning330) - if type(media) is not list: - raise TwitterError("Must by multiple media elements") - - if media.__len__() > 4: - raise TwitterError("Maximum of 4 media elements can be allocated to a tweet") - - url = '%s/media/upload.json' % self.upload_url - - if isinstance(status, str) or self._input_encoding is None: - u_status = status - else: - u_status = str(status, self._input_encoding) - - media_ids = '' - for m in range(0, len(media)): - - data = {} - if not hasattr(media[m], 'read'): - if media[m].startswith('http'): - data['media'] = urlopen(media[m]).read() - else: - data['media'] = open(str(media[m]), 'rb').read() - else: - data['media'] = media[m].read() - - resp = self._RequestUrl(url, 'POST', data=data) - data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - - media_ids += str(data['media_id_string']) - if m is not len(media) - 1: - media_ids += "," - - data = {'status': u_status, 'media_ids': media_ids} - - url = '%s/statuses/update.json' % self.base_url - - resp = self._RequestUrl(url, 'POST', data=data) - data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) - - return Status.NewFromJsonDict(data) - def _TweetTextWrap(self, status, char_lim=CHARACTER_LIMIT): @@ -4492,38 +4344,6 @@ def UpdateProfile(self, return User.NewFromJsonDict(data) - def UpdateBackgroundImage(self, - image, - tile=False, - include_entities=False, - skip_status=False): - """Deprecated function. Used to update the background of a User's - Twitter profile. Removed in approx. July, 2015""" - warnings.warn(( - "This method has been deprecated by Twitter as of July 2015 and " - "will be removed in future versions of python-twitter."), - PythonTwitterDeprecationWarning330) - url = '%s/account/update_profile_background_image.json' % (self.base_url) - with open(image, 'rb') as image_file: - encoded_image = base64.b64encode(image_file.read()) - data = { - 'image': encoded_image - } - if tile: - data['tile'] = 1 - if include_entities: - data['include_entities'] = 1 - if skip_status: - data['skip_status'] = 1 - - resp = self._RequestUrl(url, 'POST', data=data) - if resp.status_code in [200, 201, 202]: - return True - if resp.status_code == 400: - raise TwitterError({'message': "Image data could not be processed"}) - if resp.status_code == 422: - raise TwitterError({'message': "The image could not be resized or is too large."}) - def UpdateImage(self, image, include_entities=False, From 65f8411972b148b496a37089566a7896eea21b0f Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Fri, 1 Dec 2017 07:44:37 -0500 Subject: [PATCH 063/177] fix issue #489 corrects mishandling of certain URLs where the TLD was not in the list due to an errant pipe character --- tests/test_url_regex.py | 22 ++++++++++++---------- twitter/twitter_utils.py | 2 +- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/tests/test_url_regex.py b/tests/test_url_regex.py index 4bf8e02b..9b86b9ce 100644 --- a/tests/test_url_regex.py +++ b/tests/test_url_regex.py @@ -52,10 +52,10 @@ "http://userid@example.com:8080/", "http://userid:password@example.com", "http://userid:password@example.com/", - # "http://142.42.1.1/", + "http://142.42.1.1/", "2.3", ".hello.com", - # "http://142.42.1.1:8080/", + "http://142.42.1.1:8080/", "ftp://foo.bar/baz", "http://مثال.إختبار", "http://例子.测试", @@ -83,17 +83,19 @@ # "http://a.b--c.de/", # "http://-a.b.co", # "http://a.b-.co", - # "http://223.255.255.254", - # "http://0.0.0.0", - # "http://10.1.1.0", - # "http://10.1.1.255", - # "http://224.1.1.1", - # "http://1.1.1.1.1", - # "http://123.123.123", + "http://223.255.255.254", + "http://0.0.0.0", + "http://10.1.1.0", + "http://10.1.1.255", + "http://224.1.1.1", + "http://1.1.1.1.1", + "http://123.123.123", "http://3628126748", "http://.www.foo.bar/", "http://.www.foo.bar./", - # "http://10.1.1.1" + "http://10.1.1.1" + "S.84", + "http://s.84", ] } diff --git a/twitter/twitter_utils.py b/twitter/twitter_utils.py index 66ce8b24..50f46c23 100644 --- a/twitter/twitter_utils.py +++ b/twitter/twitter_utils.py @@ -143,7 +143,7 @@ r'(' r'^(?!(https?://|www\.)?\.|ftps?://|([0-9]+\.){{1,3}}\d+)' # exclude urls that start with "." r'(?:https?://|www\.)*^(?!.*@)(?:[\w+-_]+[.])' # beginning of url - r'(?:{0}\b|' # all tlds + r'(?:{0}\b' # all tlds r'(?:[:0-9]))' # port numbers & close off TLDs r'(?:[\w+\/]?[a-z0-9!\*\'\(\);:&=\+\$/%#\[\]\-_\.,~?])*' # path/query params r')').format(r'\b|'.join(TLDS)), re.U | re.I | re.X) From 9a0796072d629c2f96d5e8dd69b837bcd1614a82 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sat, 2 Dec 2017 08:43:43 -0500 Subject: [PATCH 064/177] fix issue #520 (query strings in http path for media files) --- tests/test_twitter_utils.py | 9 ++++++++- twitter/twitter_utils.py | 7 ++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/tests/test_twitter_utils.py b/tests/test_twitter_utils.py index b021e347..9e872756 100644 --- a/tests/test_twitter_utils.py +++ b/tests/test_twitter_utils.py @@ -3,7 +3,6 @@ import unittest import twitter - from twitter.twitter_utils import ( calc_expected_status_length, parse_media_file @@ -29,6 +28,14 @@ def test_parse_media_file_http(self): self.assertEqual(file_size, 44772) self.assertEqual(media_type, 'image/jpeg') + def test_parse_media_file_http_with_query_strings(self): + data_file, filename, file_size, media_type = parse_media_file( + 'https://raw.githubusercontent.com/bear/python-twitter/master/testdata/168NQ.jpg?query=true') + self.assertTrue(hasattr(data_file, 'read')) + self.assertEqual(filename, '168NQ.jpg') + self.assertEqual(file_size, 44772) + self.assertEqual(media_type, 'image/jpeg') + def test_parse_media_file_local_file(self): data_file, filename, file_size, media_type = parse_media_file( 'testdata/168NQ.jpg') diff --git a/twitter/twitter_utils.py b/twitter/twitter_utils.py index 50f46c23..8f9ca983 100644 --- a/twitter/twitter_utils.py +++ b/twitter/twitter_utils.py @@ -6,6 +6,11 @@ import re from tempfile import NamedTemporaryFile +try: + from urllib.parse import urlparse +except ImportError: + from urlparse import urlparse + import requests from twitter import TwitterError @@ -215,7 +220,7 @@ def parse_media_file(passed_media): if not hasattr(passed_media, 'read'): if passed_media.startswith('http'): data_file = http_to_file(passed_media) - filename = os.path.basename(passed_media) + filename = os.path.basename(urlparse(passed_media).path) else: data_file = open(os.path.realpath(passed_media), 'rb') filename = os.path.basename(passed_media) From d28e21ca8b47098395f476bd41366f42d00dd131 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sat, 2 Dec 2017 08:52:46 -0500 Subject: [PATCH 065/177] use warn() instead of print() for timeout floor in stream --- twitter/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/api.py b/twitter/api.py index a225f8a5..e8f98641 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -230,7 +230,7 @@ def __init__(self, self._debugHTTP = debugHTTP self._shortlink_size = 19 if timeout and timeout < 30: - print("Warning: The Twitter streaming API sends 30s keepalives, the given timeout is shorter!") + warn("Warning: The Twitter streaming API sends 30s keepalives, the given timeout is shorter!") self._timeout = timeout self.__auth = None From 913b1b25de0032f65c8067451e44f93e650911dc Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sun, 17 Dec 2017 11:14:48 -0500 Subject: [PATCH 066/177] add retweet kwarg to update and create friendship close issue #522 adds tests for endpoints --- testdata/create_friendship.json | 1 + testdata/destroy_friendship.json | 1 + testdata/update_friendship.json | 1 + tests/test_friendship.py | 90 ++++++++++++++++++++++++++++++++ twitter/api.py | 68 ++++++++++++++++-------- 5 files changed, 138 insertions(+), 23 deletions(-) create mode 100644 testdata/create_friendship.json create mode 100644 testdata/destroy_friendship.json create mode 100644 testdata/update_friendship.json create mode 100644 tests/test_friendship.py diff --git a/testdata/create_friendship.json b/testdata/create_friendship.json new file mode 100644 index 00000000..734e22c3 --- /dev/null +++ b/testdata/create_friendship.json @@ -0,0 +1 @@ +{"id":2425151,"id_str":"2425151","name":"Facebook","screen_name":"facebook","location":"Menlo Park, California","description":"Give people the power to build community and bring the world closer together.","url":"http:\/\/t.co\/7bZ2KCQJ2k","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/7bZ2KCQJ2k","expanded_url":"http:\/\/facebook.com","display_url":"facebook.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":14034525,"friends_count":92,"listed_count":43686,"created_at":"Tue Mar 27 07:29:25 +0000 2007","favourites_count":430,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":false,"verified":true,"statuses_count":8481,"lang":"en","status":{"created_at":"Fri Dec 15 22:36:04 +0000 2017","id":941799043407269888,"id_str":"941799043407269888","text":"@adambungle Hi Adam. If there's already a Facebook account associated with your email address, please fill out this\u2026 https:\/\/t.co\/KJEGff3Sp8","truncated":true,"entities":{"hashtags":[],"symbols":[],"user_mentions":[{"screen_name":"adambungle","name":"Adam Forster","id":212532742,"id_str":"212532742","indices":[0,11]}],"urls":[{"url":"https:\/\/t.co\/KJEGff3Sp8","expanded_url":"https:\/\/twitter.com\/i\/web\/status\/941799043407269888","display_url":"twitter.com\/i\/web\/status\/9\u2026","indices":[117,140]}]},"source":"\u003ca href=\"http:\/\/www.spredfast.com\" rel=\"nofollow\"\u003eSpredfast app\u003c\/a\u003e","in_reply_to_status_id":941231370600435712,"in_reply_to_status_id_str":"941231370600435712","in_reply_to_user_id":212532742,"in_reply_to_user_id_str":"212532742","in_reply_to_screen_name":"adambungle","geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":1,"favorite_count":4,"favorited":false,"retweeted":false,"possibly_sensitive":false,"lang":"en"},"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"3C5A99","profile_background_image_url":"http:\/\/pbs.twimg.com\/profile_background_images\/4699594\/quail_air_background.png","profile_background_image_url_https":"https:\/\/pbs.twimg.com\/profile_background_images\/4699594\/quail_air_background.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/3513354941\/24aaffa670e634a7da9a087bfa83abe6_normal.png","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/3513354941\/24aaffa670e634a7da9a087bfa83abe6_normal.png","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/2425151\/1506715336","profile_link_color":"3C5A99","profile_sidebar_border_color":"DEDEDE","profile_sidebar_fill_color":"FFFFFF","profile_text_color":"000000","profile_use_background_image":true,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"muting":false,"translator_type":"regular"} \ No newline at end of file diff --git a/testdata/destroy_friendship.json b/testdata/destroy_friendship.json new file mode 100644 index 00000000..3afe267e --- /dev/null +++ b/testdata/destroy_friendship.json @@ -0,0 +1 @@ +{"id":2425151,"id_str":"2425151","name":"Facebook","screen_name":"facebook","location":"Menlo Park, California","description":"Give people the power to build community and bring the world closer together.","url":"http:\/\/t.co\/7bZ2KCQJ2k","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/7bZ2KCQJ2k","expanded_url":"http:\/\/facebook.com","display_url":"facebook.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":14034332,"friends_count":92,"listed_count":43686,"created_at":"Tue Mar 27 07:29:25 +0000 2007","favourites_count":430,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":false,"verified":true,"statuses_count":8481,"lang":"en","status":{"created_at":"Fri Dec 15 22:36:04 +0000 2017","id":941799043407269888,"id_str":"941799043407269888","text":"@adambungle Hi Adam. If there's already a Facebook account associated with your email address, please fill out this\u2026 https:\/\/t.co\/KJEGff3Sp8","truncated":true,"entities":{"hashtags":[],"symbols":[],"user_mentions":[{"screen_name":"adambungle","name":"Adam Forster","id":212532742,"id_str":"212532742","indices":[0,11]}],"urls":[{"url":"https:\/\/t.co\/KJEGff3Sp8","expanded_url":"https:\/\/twitter.com\/i\/web\/status\/941799043407269888","display_url":"twitter.com\/i\/web\/status\/9\u2026","indices":[117,140]}]},"source":"\u003ca href=\"http:\/\/www.spredfast.com\" rel=\"nofollow\"\u003eSpredfast app\u003c\/a\u003e","in_reply_to_status_id":941231370600435712,"in_reply_to_status_id_str":"941231370600435712","in_reply_to_user_id":212532742,"in_reply_to_user_id_str":"212532742","in_reply_to_screen_name":"adambungle","geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":1,"favorite_count":4,"favorited":false,"retweeted":false,"possibly_sensitive":false,"lang":"en"},"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"3C5A99","profile_background_image_url":"http:\/\/pbs.twimg.com\/profile_background_images\/4699594\/quail_air_background.png","profile_background_image_url_https":"https:\/\/pbs.twimg.com\/profile_background_images\/4699594\/quail_air_background.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/3513354941\/24aaffa670e634a7da9a087bfa83abe6_normal.png","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/3513354941\/24aaffa670e634a7da9a087bfa83abe6_normal.png","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/2425151\/1506715336","profile_link_color":"3C5A99","profile_sidebar_border_color":"DEDEDE","profile_sidebar_fill_color":"FFFFFF","profile_text_color":"000000","profile_use_background_image":true,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false,"muting":false,"translator_type":"regular"} \ No newline at end of file diff --git a/testdata/update_friendship.json b/testdata/update_friendship.json new file mode 100644 index 00000000..1e997ece --- /dev/null +++ b/testdata/update_friendship.json @@ -0,0 +1 @@ +{"relationship":{"source":{"id":372018022,"id_str":"372018022","screen_name":"__jcbl__","following":true,"followed_by":false,"live_following":false,"following_received":null,"following_requested":false,"notifications_enabled":false,"can_dm":false,"blocking":false,"blocked_by":false,"muting":false,"want_retweets":true,"all_replies":false,"marked_spam":false},"target":{"id":2425151,"id_str":"2425151","screen_name":"facebook","following":false,"followed_by":true,"following_received":false,"following_requested":null}}} \ No newline at end of file diff --git a/tests/test_friendship.py b/tests/test_friendship.py new file mode 100644 index 00000000..1b644bd3 --- /dev/null +++ b/tests/test_friendship.py @@ -0,0 +1,90 @@ +# encoding: utf-8 +from __future__ import unicode_literals, print_function + +import json +import os +import re +import sys +from tempfile import NamedTemporaryFile +import unittest +try: + from unittest.mock import patch +except ImportError: + from mock import patch +import warnings + +import twitter + +import responses +from responses import GET, POST + +warnings.filterwarnings('ignore', category=DeprecationWarning) + + +DEFAULT_URL = re.compile(r'https?://.*\.twitter.com/1\.1/.*') + + +class ErrNull(object): + """ Suppress output of tests while writing to stdout or stderr. This just + takes in data and does nothing with it. + """ + + def write(self, data): + pass + + +class ApiTest(unittest.TestCase): + + def setUp(self): + self.api = twitter.Api( + consumer_key='test', + consumer_secret='test', + access_token_key='test', + access_token_secret='test', + sleep_on_rate_limit=False, + chunk_size=500 * 1024) + self.base_url = 'https://api.twitter.com/1.1' + self._stderr = sys.stderr + sys.stderr = ErrNull() + + def tearDown(self): + sys.stderr = self._stderr + pass + + @responses.activate + def testCreateFriendship(self): + with open('testdata/create_friendship.json') as f: + resp_data = f.read() + responses.add(POST, DEFAULT_URL, body=resp_data) + + resp = self.api.CreateFriendship(screen_name='facebook') + self.assertTrue(type(resp), twitter.User) + + self.assertRaises( + twitter.TwitterError, + lambda: self.api.CreateFriendship(user_id=None, screen_name=None)) + + @responses.activate + def testUpdateFriendship(self): + with open('testdata/update_friendship.json') as f: + resp_data = f.read() + responses.add(POST, DEFAULT_URL, body=resp_data) + + resp = self.api.UpdateFriendship(user_id=2425151, retweets=False) + self.assertTrue(type(resp), twitter.User) + + @responses.activate + def testDestroyFriendship(self): + with open('testdata/destroy_friendship.json') as f: + resp_data = f.read() + responses.add(POST, DEFAULT_URL, body=resp_data) + + resp = self.api.DestroyFriendship(user_id=2425151) + self.assertTrue(type(resp), twitter.User) + + resp = self.api.DestroyFriendship(screen_name='facebook') + self.assertTrue(type(resp), twitter.User) + + self.assertRaises( + twitter.TwitterError, + lambda: self.api.DestroyFriendship(user_id=None, screen_name=None)) diff --git a/twitter/api.py b/twitter/api.py index 9d375d88..b4a4ebb1 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -2998,27 +2998,36 @@ def DestroyDirectMessage(self, message_id, include_entities=True, return_json=Fa else: return DirectMessage.NewFromJsonDict(data) - def CreateFriendship(self, user_id=None, screen_name=None, follow=True): + def CreateFriendship(self, user_id=None, screen_name=None, follow=True, retweets=True, **kwargs): """Befriends the user specified by the user_id or screen_name. Args: - user_id: - A user_id to follow [Optional] - screen_name: - A screen_name to follow [Optional] - follow: + user_id (int, optional): + A user_id to follow + screen_name (str, optional) + A screen_name to follow + follow (bool, optional): Set to False to disable notifications for the target user + retweets (bool, optional): + Enable or disable retweets from the target user. Returns: A twitter.User instance representing the befriended user. """ - return self._AddOrEditFriendship(user_id=user_id, screen_name=screen_name, follow=follow) - - def _AddOrEditFriendship(self, user_id=None, screen_name=None, uri_end='create', follow_key='follow', follow=True): - """ - Shared method for Create/Update Friendship. + return self._AddOrEditFriendship(user_id=user_id, + screen_name=screen_name, + follow=follow, + retweets=retweets, + **kwargs) - """ + def _AddOrEditFriendship(self, + user_id=None, + screen_name=None, + uri_end='create', + follow_key='follow', + follow=True, + **kwargs): + """Shared method for Create/Update Friendship.""" url = '%s/friendships/%s.json' % (self.base_url, uri_end) data = {} if user_id: @@ -3026,34 +3035,47 @@ def _AddOrEditFriendship(self, user_id=None, screen_name=None, uri_end='create', elif screen_name: data['screen_name'] = screen_name else: - raise TwitterError({'message': "Specify at least one of user_id or screen_name."}) + raise TwitterError("Specify at least one of user_id or screen_name.") + follow_json = json.dumps(follow) data['{}'.format(follow_key)] = follow_json + data.update(**kwargs) resp = self._RequestUrl(url, 'POST', data=data) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) return User.NewFromJsonDict(data) - def UpdateFriendship(self, user_id=None, screen_name=None, follow=True, **kwargs): # api compat with Create + def UpdateFriendship(self, + user_id=None, + screen_name=None, + follow=True, + retweets=True, + **kwargs): """Updates a friendship with the user specified by the user_id or screen_name. Args: - user_id: - A user_id to update [Optional] - screen_name: - A screen_name to update [Optional] - follow: + user_id (int, optional): + A user_id to update + screen_name (str, optional): + A screen_name to update + follow (bool, optional): Set to False to disable notifications for the target user + retweets (bool, optional): + Enable or disable retweets from the target user. device: Set to False to disable notifications for the target user Returns: A twitter.User instance representing the befriended user. """ - follow = kwargs.get('device', follow) - return self._AddOrEditFriendship(user_id=user_id, screen_name=screen_name, follow=follow, follow_key='device', - uri_end='update') + return self._AddOrEditFriendship(user_id=user_id, + screen_name=screen_name, + follow=follow, + follow_key='device', + retweets=retweets, + uri_end='update', + **kwargs) def DestroyFriendship(self, user_id=None, screen_name=None): """Discontinues friendship with a user_id or screen_name. @@ -3074,7 +3096,7 @@ def DestroyFriendship(self, user_id=None, screen_name=None): elif screen_name: data['screen_name'] = screen_name else: - raise TwitterError({'message': "Specify at least one of user_id or screen_name."}) + raise TwitterError("Specify at least one of user_id or screen_name.") resp = self._RequestUrl(url, 'POST', data=data) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) From 27a1484e2e82b8eeb12e1c974934bac33b292482 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sun, 17 Dec 2017 11:19:42 -0500 Subject: [PATCH 067/177] move searching tests out into separate file --- tests/test_api_30.py | 73 +++---------------------- tests/test_searching.py | 118 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 125 insertions(+), 66 deletions(-) create mode 100644 tests/test_searching.py diff --git a/tests/test_api_30.py b/tests/test_api_30.py index 7a80ec0d..b84052db 100644 --- a/tests/test_api_30.py +++ b/tests/test_api_30.py @@ -119,72 +119,6 @@ def testGetShortUrlLength(self): resp = self.api.GetShortUrlLength(https=True) self.assertEqual(resp, 23) - @responses.activate - def testGetSearch(self): - with open('testdata/get_search.json') as f: - resp_data = f.read() - responses.add(GET, DEFAULT_URL, body=resp_data) - - resp = self.api.GetSearch(term='python') - self.assertEqual(len(resp), 1) - self.assertTrue(type(resp[0]), twitter.Status) - self.assertEqual(resp[0].id, 674342688083283970) - - self.assertRaises( - twitter.TwitterError, - lambda: self.api.GetSearch(since_id='test')) - self.assertRaises( - twitter.TwitterError, - lambda: self.api.GetSearch(max_id='test')) - self.assertRaises( - twitter.TwitterError, - lambda: self.api.GetSearch(term='test', count='test')) - self.assertFalse(self.api.GetSearch()) - - @responses.activate - def testGetSeachRawQuery(self): - with open('testdata/get_search_raw.json') as f: - resp_data = f.read() - responses.add(GET, DEFAULT_URL, body=resp_data) - - resp = self.api.GetSearch(raw_query="q=twitter%20&result_type=recent&since=2014-07-19&count=100") - self.assertTrue([type(status) is twitter.Status for status in resp]) - self.assertTrue(['twitter' in status.text for status in resp]) - - @responses.activate - def testGetSearchGeocode(self): - with open('testdata/get_search_geocode.json') as f: - resp_data = f.read() - responses.add(GET, DEFAULT_URL, body=resp_data) - - resp = self.api.GetSearch( - term="python", - geocode=('37.781157', '-122.398720', '100mi')) - status = resp[0] - self.assertTrue(status, twitter.Status) - self.assertTrue(status.geo) - self.assertEqual(status.geo['type'], 'Point') - resp = self.api.GetSearch( - term="python", - geocode=('37.781157,-122.398720,100mi')) - status = resp[0] - self.assertTrue(status, twitter.Status) - self.assertTrue(status.geo) - - @responses.activate - def testGetUsersSearch(self): - with open('testdata/get_users_search.json') as f: - resp_data = f.read() - responses.add(GET, DEFAULT_URL, body=resp_data) - - resp = self.api.GetUsersSearch(term='python') - self.assertEqual(type(resp[0]), twitter.User) - self.assertEqual(len(resp), 20) - self.assertEqual(resp[0].id, 63873759) - self.assertRaises(twitter.TwitterError, - lambda: self.api.GetUsersSearch(term='python', - count='test')) - @responses.activate def testGetTrendsCurrent(self): with open('testdata/get_trends_current.json') as f: @@ -1631,6 +1565,10 @@ def testCreateFavorite(self): resp = self.api.CreateFavorite(status) self.assertEqual(resp.id, 757283981683412992) + self.assertRaises( + twitter.TwitterError, + lambda: self.api.CreateFavorite(status=None, status_id=None)) + @responses.activate def testDestroyFavorite(self): with open('testdata/post_destroy_favorite.json') as f: @@ -1643,6 +1581,9 @@ def testDestroyFavorite(self): resp = self.api.DestroyFavorite(status) self.assertEqual(resp.id, 757283981683412992) + self.assertRaises( + twitter.TwitterError, + lambda: self.api.DestroyFavorite(status=None, status_id=None)) @responses.activate def testPostDirectMessage(self): with open('testdata/post_post_direct_message.json') as f: diff --git a/tests/test_searching.py b/tests/test_searching.py new file mode 100644 index 00000000..92f3ff88 --- /dev/null +++ b/tests/test_searching.py @@ -0,0 +1,118 @@ +# encoding: utf-8 +from __future__ import unicode_literals, print_function + +import json +import os +import re +import sys +from tempfile import NamedTemporaryFile +import unittest +try: + from unittest.mock import patch +except ImportError: + from mock import patch +import warnings + +import twitter + +import responses +from responses import GET, POST + +warnings.filterwarnings('ignore', category=DeprecationWarning) + + +DEFAULT_URL = re.compile(r'https?://.*\.twitter.com/1\.1/.*') + + +class ErrNull(object): + """ Suppress output of tests while writing to stdout or stderr. This just + takes in data and does nothing with it. + """ + + def write(self, data): + pass + + +class ApiTest(unittest.TestCase): + + def setUp(self): + self.api = twitter.Api( + consumer_key='test', + consumer_secret='test', + access_token_key='test', + access_token_secret='test', + sleep_on_rate_limit=False, + chunk_size=500 * 1024) + self.base_url = 'https://api.twitter.com/1.1' + self._stderr = sys.stderr + sys.stderr = ErrNull() + + def tearDown(self): + sys.stderr = self._stderr + pass + + @responses.activate + def testGetSearch(self): + with open('testdata/get_search.json') as f: + resp_data = f.read() + responses.add(GET, DEFAULT_URL, body=resp_data) + + resp = self.api.GetSearch(term='python') + self.assertEqual(len(resp), 1) + self.assertTrue(type(resp[0]), twitter.Status) + self.assertEqual(resp[0].id, 674342688083283970) + + self.assertRaises( + twitter.TwitterError, + lambda: self.api.GetSearch(since_id='test')) + self.assertRaises( + twitter.TwitterError, + lambda: self.api.GetSearch(max_id='test')) + self.assertRaises( + twitter.TwitterError, + lambda: self.api.GetSearch(term='test', count='test')) + self.assertFalse(self.api.GetSearch()) + + @responses.activate + def testGetSeachRawQuery(self): + with open('testdata/get_search_raw.json') as f: + resp_data = f.read() + responses.add(GET, DEFAULT_URL, body=resp_data) + + resp = self.api.GetSearch(raw_query="q=twitter%20&result_type=recent&since=2014-07-19&count=100") + self.assertTrue([type(status) is twitter.Status for status in resp]) + self.assertTrue(['twitter' in status.text for status in resp]) + + @responses.activate + def testGetSearchGeocode(self): + with open('testdata/get_search_geocode.json') as f: + resp_data = f.read() + responses.add(GET, DEFAULT_URL, body=resp_data) + + resp = self.api.GetSearch( + term="python", + geocode=('37.781157', '-122.398720', '100mi')) + status = resp[0] + self.assertTrue(status, twitter.Status) + self.assertTrue(status.geo) + self.assertEqual(status.geo['type'], 'Point') + resp = self.api.GetSearch( + term="python", + geocode=('37.781157,-122.398720,100mi')) + status = resp[0] + self.assertTrue(status, twitter.Status) + self.assertTrue(status.geo) + + @responses.activate + def testGetUsersSearch(self): + with open('testdata/get_users_search.json') as f: + resp_data = f.read() + responses.add(GET, DEFAULT_URL, body=resp_data) + + resp = self.api.GetUsersSearch(term='python') + self.assertEqual(type(resp[0]), twitter.User) + self.assertEqual(len(resp), 20) + self.assertEqual(resp[0].id, 63873759) + self.assertRaises(twitter.TwitterError, + lambda: self.api.GetUsersSearch(term='python', + count='test')) From 30b21d7bc1d73a32dd9a26146364bcec4077262e Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sun, 17 Dec 2017 11:21:12 -0500 Subject: [PATCH 068/177] move direct message tests to separate file --- .../direct_messages/get_direct_messages.json | 1 + .../get_direct_messages_show.json | 1 + .../get_sent_direct_messages.json | 1 + .../post_destroy_direct_message.json | 1 + .../post_post_direct_message.json | 1 + tests/test_direct_messages.py | 73 +++++++++++++++++++ 6 files changed, 78 insertions(+) create mode 100644 testdata/direct_messages/get_direct_messages.json create mode 100644 testdata/direct_messages/get_direct_messages_show.json create mode 100644 testdata/direct_messages/get_sent_direct_messages.json create mode 100644 testdata/direct_messages/post_destroy_direct_message.json create mode 100644 testdata/direct_messages/post_post_direct_message.json create mode 100644 tests/test_direct_messages.py diff --git a/testdata/direct_messages/get_direct_messages.json b/testdata/direct_messages/get_direct_messages.json new file mode 100644 index 00000000..2ebcc004 --- /dev/null +++ b/testdata/direct_messages/get_direct_messages.json @@ -0,0 +1 @@ +[{"id":678629245946433539,"id_str":"678629245946433539","text":"https:\/\/t.co\/PnDU7HQGwq","sender":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"sender_id":372018022,"sender_id_str":"372018022","sender_screen_name":"__jcbl__","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 17:33:15 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/PnDU7HQGwq","expanded_url":"http:\/\/twitter.com\/pattymo\/status\/674659346127679488","display_url":"twitter.com\/pattymo\/status\u2026","indices":[0,23]}]}},{"id":678604651239895043,"id_str":"678604651239895043","text":"https:\/\/t.co\/sQlHgqXOxW","sender":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"sender_id":372018022,"sender_id_str":"372018022","sender_screen_name":"__jcbl__","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 15:55:31 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/sQlHgqXOxW","expanded_url":"https:\/\/twitter.com\/henrytcasey\/status\/667870485842149378","display_url":"twitter.com\/henrytcasey\/st\u2026","indices":[0,23]}]}},{"id":678604278852804611,"id_str":"678604278852804611","text":"cool? https:\/\/t.co\/csy2NSbU86","sender":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"sender_id":372018022,"sender_id_str":"372018022","sender_screen_name":"__jcbl__","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 15:54:02 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/csy2NSbU86","expanded_url":"https:\/\/twitter.com\/__jcbl__\/status\/667865252764246016","display_url":"twitter.com\/__jcbl__\/statu\u2026","indices":[6,29]}]}},{"id":678603770633125891,"id_str":"678603770633125891","text":"https:\/\/t.co\/csy2NSbU86","sender":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"sender_id":372018022,"sender_id_str":"372018022","sender_screen_name":"__jcbl__","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 15:52:01 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/csy2NSbU86","expanded_url":"https:\/\/twitter.com\/__jcbl__\/status\/667865252764246016","display_url":"twitter.com\/__jcbl__\/statu\u2026","indices":[0,23]}]}},{"id":678603352637227011,"id_str":"678603352637227011","text":"https:\/\/t.co\/A0NJfpDbAF","sender":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"sender_id":372018022,"sender_id_str":"372018022","sender_screen_name":"__jcbl__","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 15:50:21 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/A0NJfpDbAF","expanded_url":"https:\/\/twitter.com\/henrytcasey\/status\/667865779015196672","display_url":"twitter.com\/henrytcasey\/st\u2026","indices":[0,23]}]}},{"id":678601197788401668,"id_str":"678601197788401668","text":"https:\/\/t.co\/rY4FkCqIz9","sender":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"sender_id":372018022,"sender_id_str":"372018022","sender_screen_name":"__jcbl__","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 15:41:48 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/rY4FkCqIz9","expanded_url":"https:\/\/twitter.com\/henrytcasey\/status\/667866455959056384","display_url":"twitter.com\/henrytcasey\/st\u2026","indices":[0,23]}]}},{"id":678601038023147523,"id_str":"678601038023147523","text":"That's cool friend","sender":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"sender_id":372018022,"sender_id_str":"372018022","sender_screen_name":"__jcbl__","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 15:41:09 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678600722565345283,"id_str":"678600722565345283","text":"hey?","sender":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"sender_id":372018022,"sender_id_str":"372018022","sender_screen_name":"__jcbl__","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 15:39:54 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678592039651438596,"id_str":"678592039651438596","text":"https:\/\/t.co\/Z4RgDEuw7V","sender":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"sender_id":372018022,"sender_id_str":"372018022","sender_screen_name":"__jcbl__","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 15:05:24 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/Z4RgDEuw7V","expanded_url":"https:\/\/twitter.com\/henrytcasey\/status\/667912731081768960","display_url":"twitter.com\/henrytcasey\/st\u2026","indices":[0,23]}]}},{"id":678582529125838851,"id_str":"678582529125838851","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:37 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582526349283331,"id_str":"678582526349283331","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:36 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582524163940355,"id_str":"678582524163940355","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:35 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582521446166531,"id_str":"678582521446166531","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:35 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582519223025667,"id_str":"678582519223025667","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:34 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582516106706947,"id_str":"678582516106706947","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:33 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582513426558979,"id_str":"678582513426558979","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:33 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582510511525896,"id_str":"678582510511525896","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:32 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582507726635011,"id_str":"678582507726635011","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:31 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582505231007750,"id_str":"678582505231007750","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:31 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582502756376579,"id_str":"678582502756376579","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:30 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}}] \ No newline at end of file diff --git a/testdata/direct_messages/get_direct_messages_show.json b/testdata/direct_messages/get_direct_messages_show.json new file mode 100644 index 00000000..a6fc1fdf --- /dev/null +++ b/testdata/direct_messages/get_direct_messages_show.json @@ -0,0 +1 @@ +{"sender_screen_name": "__jcbl__", "created_at": "Sun Dec 20 15:41:09 +0000 2015", "entities": {"symbols": [], "hashtags": [], "user_mentions": [], "urls": []}, "id": 678601038023147523, "text": "That's cool friend", "sender_id": 372018022, "id_str": "678601038023147523", "recipient_id_str": "4012966701", "recipient_screen_name": "notinourselves", "sender_id_str": "372018022", "recipient": {"protected": true, "geo_enabled": true, "listed_count": 1, "created_at": "Wed Oct 21 23:53:04 +0000 2015", "entities": {"description": {"urls": []}}, "url": null, "profile_image_url_https": "https://abs.twimg.com/sticky/default_profile_images/default_profile_2_normal.png", "profile_background_tile": false, "follow_request_sent": false, "notifications": false, "statuses_count": 76, "profile_sidebar_fill_color": "000000", "has_extended_profile": false, "friends_count": 1, "following": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/4012966701/1453123196", "screen_name": "notinourselves", "lang": "en", "favourites_count": 1, "verified": false, "time_zone": null, "default_profile_image": true, "name": "notinourselves", "profile_sidebar_border_color": "000000", "id": 4012966701, "is_translation_enabled": false, "followers_count": 1, "profile_link_color": "000000", "profile_text_color": "000000", "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/736320724164448256/LgaAQoav.jpg", "utc_offset": null, "id_str": "4012966701", "default_profile": false, "contributors_enabled": false, "profile_use_background_image": true, "description": "", "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/736320724164448256/LgaAQoav.jpg", "profile_background_color": "000000", "location": "", "profile_image_url": "http://abs.twimg.com/sticky/default_profile_images/default_profile_2_normal.png", "is_translator": false}, "recipient_id": 4012966701, "sender": {"protected": false, "geo_enabled": false, "listed_count": 6, "created_at": "Sun Sep 11 23:49:28 +0000 2011", "entities": {"description": {"urls": []}, "url": {"urls": [{"indices": [0, 22], "expanded_url": "http://iseverythingstilltheworst.com", "display_url": "iseverythingstilltheworst.com", "url": "http://t.co/wtg3XzqQTX"}]}}, "url": "http://t.co/wtg3XzqQTX", "profile_image_url_https": "https://pbs.twimg.com/profile_images/719724025384083456/N98iQXqX_normal.jpg", "profile_background_tile": false, "follow_request_sent": false, "notifications": false, "statuses_count": 441, "profile_sidebar_fill_color": "000000", "has_extended_profile": false, "friends_count": 363, "following": true, "default_profile": false, "screen_name": "__jcbl__", "lang": "en", "favourites_count": 2212, "verified": false, "time_zone": "Eastern Time (US & Canada)", "default_profile_image": false, "name": "jeremy", "profile_sidebar_border_color": "000000", "id": 372018022, "is_translation_enabled": false, "followers_count": 67, "profile_link_color": "EE3355", "profile_text_color": "000000", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "utc_offset": -14400, "id_str": "372018022", "contributors_enabled": false, "profile_use_background_image": false, "description": "my kingdom for a microwave that doesn't beep", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "profile_background_color": "FFFFFF", "location": "not a very good kingdom tbh", "profile_image_url": "http://pbs.twimg.com/profile_images/719724025384083456/N98iQXqX_normal.jpg", "is_translator": false}} \ No newline at end of file diff --git a/testdata/direct_messages/get_sent_direct_messages.json b/testdata/direct_messages/get_sent_direct_messages.json new file mode 100644 index 00000000..73609f85 --- /dev/null +++ b/testdata/direct_messages/get_sent_direct_messages.json @@ -0,0 +1 @@ +[{"id":678629283007303683,"id_str":"678629283007303683","text":"I am good bot!! I made you a GIF: https:\/\/t.co\/UEF8Q0prT1 !","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"recipient_id":372018022,"recipient_id_str":"372018022","recipient_screen_name":"__jcbl__","created_at":"Sun Dec 20 17:33:24 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/UEF8Q0prT1","expanded_url":"https:\/\/mlkshk.com\/p\/16YZH","display_url":"mlkshk.com\/p\/16YZH","indices":[34,57]}]}},{"id":678604717082189827,"id_str":"678604717082189827","text":"I am good bot!! I made you a GIF: https:\/\/t.co\/xqI9lUXBGf !","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"recipient_id":372018022,"recipient_id_str":"372018022","recipient_screen_name":"__jcbl__","created_at":"Sun Dec 20 15:55:47 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/xqI9lUXBGf","expanded_url":"https:\/\/mlkshk.com\/p\/16YYD","display_url":"mlkshk.com\/p\/16YYD","indices":[34,57]}]}},{"id":678604324533084163,"id_str":"678604324533084163","text":"I am good bot!! I made you a GIF: https:\/\/t.co\/RECY9xZDBA\u007b'name': '5e89f157c772459.gif', 'share_key': '16YYC'\u007d !","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"recipient_id":372018022,"recipient_id_str":"372018022","recipient_screen_name":"__jcbl__","created_at":"Sun Dec 20 15:54:13 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/RECY9xZDBA","expanded_url":"https:\/\/mlkshk.com\/p\/","display_url":"mlkshk.com\/p\/","indices":[34,57]}]}},{"id":678601041219354627,"id_str":"678601041219354627","text":"I don't see a shared tweet there!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"recipient_id":372018022,"recipient_id_str":"372018022","recipient_screen_name":"__jcbl__","created_at":"Sun Dec 20 15:41:10 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678600965042397187,"id_str":"678600965042397187","text":"it's cool","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":51,"friends_count":289,"listed_count":5,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":1245,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":312,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/659691753826615298\/yN1SoWrU_normal.jpg","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"recipient_id":372018022,"recipient_id_str":"372018022","recipient_screen_name":"__jcbl__","created_at":"Sun Dec 20 15:40:52 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582529125838851,"id_str":"678582529125838851","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:37 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582526349283331,"id_str":"678582526349283331","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:36 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582524163940355,"id_str":"678582524163940355","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:35 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582521446166531,"id_str":"678582521446166531","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:35 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582519223025667,"id_str":"678582519223025667","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:34 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582516106706947,"id_str":"678582516106706947","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:33 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582513426558979,"id_str":"678582513426558979","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:33 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582510511525896,"id_str":"678582510511525896","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:32 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582507726635011,"id_str":"678582507726635011","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:31 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582505231007750,"id_str":"678582505231007750","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:31 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582502756376579,"id_str":"678582502756376579","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:30 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582500457861123,"id_str":"678582500457861123","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:30 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582498310377475,"id_str":"678582498310377475","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:29 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582496188104707,"id_str":"678582496188104707","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:29 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}},{"id":678582494032240644,"id_str":"678582494032240644","text":"Something went wrong! I'm a bad bot! Sad face!!!!","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":1,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_link_color":"0084B4","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":true,"following":false,"follow_request_sent":false,"notifications":false},"recipient_id":4012966701,"recipient_id_str":"4012966701","recipient_screen_name":"notinourselves","created_at":"Sun Dec 20 14:27:28 +0000 2015","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}}] \ No newline at end of file diff --git a/testdata/direct_messages/post_destroy_direct_message.json b/testdata/direct_messages/post_destroy_direct_message.json new file mode 100644 index 00000000..c4c2d59f --- /dev/null +++ b/testdata/direct_messages/post_destroy_direct_message.json @@ -0,0 +1 @@ +{"sender_id_str": "372018022", "entities": {"urls": [{"expanded_url": "https://twitter.com/CamilleStein/status/854322543364382720", "indices": [0, 23], "url": "https://t.co/L4MIplKUwR", "display_url": "twitter.com/CamilleStein/s\u2026"}], "symbols": [], "hashtags": [], "user_mentions": []}, "recipient_id": 3206731269, "text": "https://t.co/L4MIplKUwR", "id_str": "855194351294656515", "sender_id": 372018022, "id": 855194351294656515, "created_at": "Thu Apr 20 22:59:56 +0000 2017", "recipient_id_str": "3206731269", "recipient": {"is_translation_enabled": false, "following": true, "name": "The GIFing Bot", "profile_image_url": "http://pbs.twimg.com/profile_images/592359786659880960/IwQsKZ7b_normal.png", "profile_sidebar_border_color": "000000", "followers_count": 84, "created_at": "Sat Apr 25 16:31:07 +0000 2015", "profile_link_color": "02B400", "is_translator": false, "id": 3206731269, "profile_sidebar_fill_color": "000000", "has_extended_profile": false, "profile_background_tile": false, "profile_use_background_image": false, "default_profile_image": false, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "lang": "en", "verified": false, "favourites_count": 0, "protected": false, "notifications": false, "friends_count": 100, "listed_count": 7, "location": "", "statuses_count": 19, "entities": {"url": {"urls": [{"expanded_url": "http://iseverythingstilltheworst.com/projects/the-gifing-bot/", "indices": [0, 23], "url": "https://t.co/BTsv2OJnqv", "display_url": "iseverythingstilltheworst.com/projects/the-g\u2026"}]}, "description": {"urls": []}}, "url": "https://t.co/BTsv2OJnqv", "utc_offset": null, "time_zone": null, "profile_background_color": "000000", "id_str": "3206731269", "description": "DM me a tweet with a GIF in it and I'll make it into an actual GIF!!", "follow_request_sent": false, "screen_name": "TheGIFingBot", "profile_text_color": "000000", "translator_type": "none", "profile_image_url_https": "https://pbs.twimg.com/profile_images/592359786659880960/IwQsKZ7b_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "contributors_enabled": false, "default_profile": false, "geo_enabled": false}, "sender": {"is_translation_enabled": false, "following": false, "name": "Jeremy", "profile_image_url": "http://pbs.twimg.com/profile_images/800076020741246976/fMpwMcBJ_normal.jpg", "profile_sidebar_border_color": "000000", "followers_count": 142, "created_at": "Sun Sep 11 23:49:28 +0000 2011", "profile_link_color": "EE3355", "is_translator": false, "id": 372018022, "profile_sidebar_fill_color": "000000", "has_extended_profile": false, "profile_background_tile": false, "profile_use_background_image": false, "default_profile_image": false, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "lang": "en", "verified": false, "favourites_count": 7546, "protected": false, "notifications": false, "friends_count": 593, "listed_count": 11, "location": "philly", "statuses_count": 1785, "entities": {"url": {"urls": [{"expanded_url": "http://iseverythingstilltheworst.com", "indices": [0, 23], "url": "https://t.co/wtg3XyREnj", "display_url": "iseverythingstilltheworst.com"}]}, "description": {"urls": []}}, "url": "https://t.co/wtg3XyREnj", "utc_offset": -14400, "time_zone": "Eastern Time (US & Canada)", "profile_background_color": "FFFFFF", "id_str": "372018022", "description": "these people have addresses | #botally", "follow_request_sent": false, "screen_name": "__jcbl__", "profile_text_color": "000000", "translator_type": "none", "profile_image_url_https": "https://pbs.twimg.com/profile_images/800076020741246976/fMpwMcBJ_normal.jpg", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "profile_banner_url": "https://pbs.twimg.com/profile_banners/372018022/1475799101", "contributors_enabled": false, "default_profile": false, "geo_enabled": false}, "sender_screen_name": "__jcbl__", "recipient_screen_name": "TheGIFingBot"} \ No newline at end of file diff --git a/testdata/direct_messages/post_post_direct_message.json b/testdata/direct_messages/post_post_direct_message.json new file mode 100644 index 00000000..c4c2d59f --- /dev/null +++ b/testdata/direct_messages/post_post_direct_message.json @@ -0,0 +1 @@ +{"sender_id_str": "372018022", "entities": {"urls": [{"expanded_url": "https://twitter.com/CamilleStein/status/854322543364382720", "indices": [0, 23], "url": "https://t.co/L4MIplKUwR", "display_url": "twitter.com/CamilleStein/s\u2026"}], "symbols": [], "hashtags": [], "user_mentions": []}, "recipient_id": 3206731269, "text": "https://t.co/L4MIplKUwR", "id_str": "855194351294656515", "sender_id": 372018022, "id": 855194351294656515, "created_at": "Thu Apr 20 22:59:56 +0000 2017", "recipient_id_str": "3206731269", "recipient": {"is_translation_enabled": false, "following": true, "name": "The GIFing Bot", "profile_image_url": "http://pbs.twimg.com/profile_images/592359786659880960/IwQsKZ7b_normal.png", "profile_sidebar_border_color": "000000", "followers_count": 84, "created_at": "Sat Apr 25 16:31:07 +0000 2015", "profile_link_color": "02B400", "is_translator": false, "id": 3206731269, "profile_sidebar_fill_color": "000000", "has_extended_profile": false, "profile_background_tile": false, "profile_use_background_image": false, "default_profile_image": false, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "lang": "en", "verified": false, "favourites_count": 0, "protected": false, "notifications": false, "friends_count": 100, "listed_count": 7, "location": "", "statuses_count": 19, "entities": {"url": {"urls": [{"expanded_url": "http://iseverythingstilltheworst.com/projects/the-gifing-bot/", "indices": [0, 23], "url": "https://t.co/BTsv2OJnqv", "display_url": "iseverythingstilltheworst.com/projects/the-g\u2026"}]}, "description": {"urls": []}}, "url": "https://t.co/BTsv2OJnqv", "utc_offset": null, "time_zone": null, "profile_background_color": "000000", "id_str": "3206731269", "description": "DM me a tweet with a GIF in it and I'll make it into an actual GIF!!", "follow_request_sent": false, "screen_name": "TheGIFingBot", "profile_text_color": "000000", "translator_type": "none", "profile_image_url_https": "https://pbs.twimg.com/profile_images/592359786659880960/IwQsKZ7b_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "contributors_enabled": false, "default_profile": false, "geo_enabled": false}, "sender": {"is_translation_enabled": false, "following": false, "name": "Jeremy", "profile_image_url": "http://pbs.twimg.com/profile_images/800076020741246976/fMpwMcBJ_normal.jpg", "profile_sidebar_border_color": "000000", "followers_count": 142, "created_at": "Sun Sep 11 23:49:28 +0000 2011", "profile_link_color": "EE3355", "is_translator": false, "id": 372018022, "profile_sidebar_fill_color": "000000", "has_extended_profile": false, "profile_background_tile": false, "profile_use_background_image": false, "default_profile_image": false, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "lang": "en", "verified": false, "favourites_count": 7546, "protected": false, "notifications": false, "friends_count": 593, "listed_count": 11, "location": "philly", "statuses_count": 1785, "entities": {"url": {"urls": [{"expanded_url": "http://iseverythingstilltheworst.com", "indices": [0, 23], "url": "https://t.co/wtg3XyREnj", "display_url": "iseverythingstilltheworst.com"}]}, "description": {"urls": []}}, "url": "https://t.co/wtg3XyREnj", "utc_offset": -14400, "time_zone": "Eastern Time (US & Canada)", "profile_background_color": "FFFFFF", "id_str": "372018022", "description": "these people have addresses | #botally", "follow_request_sent": false, "screen_name": "__jcbl__", "profile_text_color": "000000", "translator_type": "none", "profile_image_url_https": "https://pbs.twimg.com/profile_images/800076020741246976/fMpwMcBJ_normal.jpg", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "profile_banner_url": "https://pbs.twimg.com/profile_banners/372018022/1475799101", "contributors_enabled": false, "default_profile": false, "geo_enabled": false}, "sender_screen_name": "__jcbl__", "recipient_screen_name": "TheGIFingBot"} \ No newline at end of file diff --git a/tests/test_direct_messages.py b/tests/test_direct_messages.py new file mode 100644 index 00000000..b8a6484b --- /dev/null +++ b/tests/test_direct_messages.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals, print_function + +import json +import os +import re +import sys +from tempfile import NamedTemporaryFile +import unittest +try: + from unittest.mock import patch +except ImportError: + from mock import patch +import warnings + +import twitter + +import responses +from responses import GET, POST + +DEFAULT_URL = re.compile(r'https?://.*\.twitter.com/1\.1/.*') + +global api +api = twitter.Api('test', 'test', 'test', 'test', tweet_mode='extended') + + +@responses.activate +def test_get_direct_messages(): + with open('testdata/direct_messages/get_direct_messages.json') as f: + resp_data = f.read() + responses.add(GET, DEFAULT_URL, body=resp_data) + + resp = api.GetDirectMessages() + direct_message = resp[0] + assert isinstance(resp, list) + assert isinstance(direct_message, twitter.DirectMessage) + assert direct_message.id == 678629245946433539 + + +@responses.activate +def test_get_sent_direct_messages(): + with open('testdata/direct_messages/get_sent_direct_messages.json') as f: + resp_data = f.read() + responses.add(GET, DEFAULT_URL, body=resp_data) + + resp = api.GetSentDirectMessages() + direct_message = resp[0] + assert isinstance(resp, list) + assert isinstance(direct_message, twitter.DirectMessage) + assert direct_message.id == 678629283007303683 + assert [dm.sender_screen_name == 'notinourselves' for dm in resp] + + +@responses.activate +def test_post_direct_message(): + with open('testdata/direct_messages/post_post_direct_message.json', 'r') as f: + responses.add(POST, DEFAULT_URL, body=f.read()) + resp = api.PostDirectMessage(screen_name='TheGIFingBot', + text='https://t.co/L4MIplKUwR') + assert isinstance(resp, twitter.DirectMessage) + assert resp.text == 'https://t.co/L4MIplKUwR' + + +@responses.activate +def test_destroy_direct_message(): + with open('testdata/direct_messages/post_destroy_direct_message.json', 'r') as f: + responses.add(POST, DEFAULT_URL, body=f.read()) + resp = api.DestroyDirectMessage(message_id=855194351294656515) + + assert isinstance(resp, twitter.DirectMessage) + assert resp.id == 855194351294656515 From e31de5ce66a9eca15a6c8046932d4a791ac94c87 Mon Sep 17 00:00:00 2001 From: Timofey Date: Tue, 26 Dec 2017 18:28:50 +0500 Subject: [PATCH 069/177] CHANGE 140 to 280 --- twitter/api.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index f0082d34..7ba58833 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -72,7 +72,7 @@ if sys.version_info > (3,): long = int -CHARACTER_LIMIT = 140 +CHARACTER_LIMIT = 280 # A singleton representing a lazily instantiated FileCache. DEFAULT_CACHE = object() @@ -976,7 +976,7 @@ def PostUpdate(self, Args: status (str): - The message text to be posted. Must be less than or equal to 140 + The message text to be posted. Must be less than or equal to 280 characters. media (int, str, fp, optional): A URL, a local file, or a file-like object (something with a @@ -1029,7 +1029,7 @@ def PostUpdate(self, otherwise the payload will contain the full user data item. verify_status_length (bool, optional): If True, api throws a hard error that the status is over - 140 characters. If False, Api will attempt to post the + 280 characters. If False, Api will attempt to post the status. Returns: (twitter.Status) A twitter.Status instance representing the @@ -1042,8 +1042,8 @@ def PostUpdate(self, else: u_status = str(status, self._input_encoding) - if verify_status_length and calc_expected_status_length(u_status) > 140: - raise TwitterError("Text must be less than or equal to 140 characters.") + if verify_status_length and calc_expected_status_length(u_status) > 280: + raise TwitterError("Text must be less than or equal to 280 characters.") if auto_populate_reply_metadata and not in_reply_to_status_id: raise TwitterError("If auto_populate_reply_metadata is True, you must set in_reply_to_status_id") @@ -1514,7 +1514,7 @@ def PostMultipleMedia(self, status, media, possibly_sensitive=None, def _TweetTextWrap(self, status, - char_lim=140): + char_lim=280): if not self._config: self.GetHelpConfiguration() @@ -1525,7 +1525,7 @@ def _TweetTextWrap(self, words = re.split(r'\s', status) if len(words) == 1 and not is_url(words[0]): - if len(words[0]) > 140: + if len(words[0]) > 280: raise TwitterError({"message": "Unable to split status into tweetable parts. Word was: {0}/{1}".format(len(words[0]), char_lim)}) else: tweets.append(words[0]) @@ -1541,7 +1541,7 @@ def _TweetTextWrap(self, else: new_len += len(word) + 1 - if new_len > 140: + if new_len > 280: tweets.append(' '.join(line)) line = [word] line_length = new_len - line_length @@ -1559,12 +1559,12 @@ def PostUpdates(self, """Post one or more twitter status messages from the authenticated user. Unlike api.PostUpdate, this method will post multiple status updates - if the message is longer than 140 characters. + if the message is longer than 280 characters. Args: status: The message text to be posted. - May be longer than 140 characters. + May be longer than 280 characters. continuation: The character string, if any, to be appended to all but the last message. Note that Twitter strips trailing '...' strings @@ -2978,7 +2978,7 @@ def GetDirectMessages(self, objects. [Optional] full_text: When set to True full message will be included in the returned message - object if message length is bigger than 140 characters. [Optional] + object if message length is bigger than 280 characters. [Optional] page: If you want more than 200 messages, you can use this and get 20 messages each time. You must recall it and increment the page value until it From af6a3e93b85a510fc7bfe95599e33ad2e64cba3e Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Wed, 27 Dec 2017 17:42:54 -0500 Subject: [PATCH 070/177] fix lint --- tests/test_api_30.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_api_30.py b/tests/test_api_30.py index b84052db..28d4d954 100644 --- a/tests/test_api_30.py +++ b/tests/test_api_30.py @@ -1584,6 +1584,7 @@ def testDestroyFavorite(self): self.assertRaises( twitter.TwitterError, lambda: self.api.DestroyFavorite(status=None, status_id=None)) + @responses.activate def testPostDirectMessage(self): with open('testdata/post_post_direct_message.json') as f: From bff110904da86db1b06d9a3738bbd9c2e2f219be Mon Sep 17 00:00:00 2001 From: Alex Mullen Date: Sat, 6 Jan 2018 18:01:51 +0000 Subject: [PATCH 071/177] Update User model to include missing attributes --- twitter/models.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/twitter/models.py b/twitter/models.py index 37e05e28..d722a0bb 100644 --- a/twitter/models.py +++ b/twitter/models.py @@ -346,6 +346,7 @@ def __init__(self, **kwargs): 'friends_count': None, 'geo_enabled': None, 'id': None, + 'id_str': None, 'lang': None, 'listed_count': None, 'location': None, @@ -353,12 +354,16 @@ def __init__(self, **kwargs): 'notifications': None, 'profile_background_color': None, 'profile_background_image_url': None, + 'profile_background_image_url_https': None, 'profile_background_tile': None, 'profile_banner_url': None, 'profile_image_url': None, + 'profile_image_url_https': None, 'profile_link_color': None, + 'profile_sidebar_border_color': None, 'profile_sidebar_fill_color': None, 'profile_text_color': None, + 'profile_use_background_image': None, 'protected': None, 'screen_name': None, 'status': None, @@ -367,6 +372,8 @@ def __init__(self, **kwargs): 'url': None, 'utc_offset': None, 'verified': None, + 'withheld_in_countries': None, + 'withheld_scope': None, } for (param, default) in self.param_defaults.items(): From b5fd51db80f11e984c1b12811a7c762aff9dae64 Mon Sep 17 00:00:00 2001 From: Amnisia Date: Tue, 23 Jan 2018 16:24:07 +0500 Subject: [PATCH 072/177] Revert "CHANGE 140 to 280" This reverts commit e31de5ce66a9eca15a6c8046932d4a791ac94c87. --- twitter/api.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 7ba58833..f0082d34 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -72,7 +72,7 @@ if sys.version_info > (3,): long = int -CHARACTER_LIMIT = 280 +CHARACTER_LIMIT = 140 # A singleton representing a lazily instantiated FileCache. DEFAULT_CACHE = object() @@ -976,7 +976,7 @@ def PostUpdate(self, Args: status (str): - The message text to be posted. Must be less than or equal to 280 + The message text to be posted. Must be less than or equal to 140 characters. media (int, str, fp, optional): A URL, a local file, or a file-like object (something with a @@ -1029,7 +1029,7 @@ def PostUpdate(self, otherwise the payload will contain the full user data item. verify_status_length (bool, optional): If True, api throws a hard error that the status is over - 280 characters. If False, Api will attempt to post the + 140 characters. If False, Api will attempt to post the status. Returns: (twitter.Status) A twitter.Status instance representing the @@ -1042,8 +1042,8 @@ def PostUpdate(self, else: u_status = str(status, self._input_encoding) - if verify_status_length and calc_expected_status_length(u_status) > 280: - raise TwitterError("Text must be less than or equal to 280 characters.") + if verify_status_length and calc_expected_status_length(u_status) > 140: + raise TwitterError("Text must be less than or equal to 140 characters.") if auto_populate_reply_metadata and not in_reply_to_status_id: raise TwitterError("If auto_populate_reply_metadata is True, you must set in_reply_to_status_id") @@ -1514,7 +1514,7 @@ def PostMultipleMedia(self, status, media, possibly_sensitive=None, def _TweetTextWrap(self, status, - char_lim=280): + char_lim=140): if not self._config: self.GetHelpConfiguration() @@ -1525,7 +1525,7 @@ def _TweetTextWrap(self, words = re.split(r'\s', status) if len(words) == 1 and not is_url(words[0]): - if len(words[0]) > 280: + if len(words[0]) > 140: raise TwitterError({"message": "Unable to split status into tweetable parts. Word was: {0}/{1}".format(len(words[0]), char_lim)}) else: tweets.append(words[0]) @@ -1541,7 +1541,7 @@ def _TweetTextWrap(self, else: new_len += len(word) + 1 - if new_len > 280: + if new_len > 140: tweets.append(' '.join(line)) line = [word] line_length = new_len - line_length @@ -1559,12 +1559,12 @@ def PostUpdates(self, """Post one or more twitter status messages from the authenticated user. Unlike api.PostUpdate, this method will post multiple status updates - if the message is longer than 280 characters. + if the message is longer than 140 characters. Args: status: The message text to be posted. - May be longer than 280 characters. + May be longer than 140 characters. continuation: The character string, if any, to be appended to all but the last message. Note that Twitter strips trailing '...' strings @@ -2978,7 +2978,7 @@ def GetDirectMessages(self, objects. [Optional] full_text: When set to True full message will be included in the returned message - object if message length is bigger than 280 characters. [Optional] + object if message length is bigger than 140 characters. [Optional] page: If you want more than 200 messages, you can use this and get 20 messages each time. You must recall it and increment the page value until it From 2f896ecb28f0e15835f9c46ed8fc877f5b2bcf76 Mon Sep 17 00:00:00 2001 From: Amnisia Date: Thu, 1 Feb 2018 14:00:17 +0500 Subject: [PATCH 073/177] change for GIF sizers --- twitter/twitter_utils.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/twitter/twitter_utils.py b/twitter/twitter_utils.py index 743cf65e..d05d6b9d 100644 --- a/twitter/twitter_utils.py +++ b/twitter/twitter_utils.py @@ -204,9 +204,11 @@ def parse_media_file(passed_media, async_upload=False): """ img_formats = ['image/jpeg', 'image/png', - 'image/gif', 'image/bmp', 'image/webp'] + long_img_formats = [ + 'image/gif' + ] video_formats = ['video/mp4', 'video/quicktime'] @@ -241,11 +243,13 @@ def parse_media_file(passed_media, async_upload=False): if media_type is not None: if media_type in img_formats and file_size > 5 * 1048576: raise TwitterError({'message': 'Images must be less than 5MB.'}) + elif media_type in long_img_formats and file_size > 15 * 1048576: + raise TwitterError({'message': 'GIF Image must be less than 15MB.'}) elif media_type in video_formats and not async_upload and file_size > 15 * 1048576: raise TwitterError({'message': 'Videos must be less than 15MB.'}) elif media_type in video_formats and async_upload and file_size > 512 * 1048576: raise TwitterError({'message': 'Videos must be less than 512MB.'}) - elif media_type not in img_formats and media_type not in video_formats: + elif media_type not in img_formats and media_type not in video_formats and media_type not in long_img_formats: raise TwitterError({'message': 'Media type could not be determined.'}) return data_file, filename, file_size, media_type From 6c2224961796ba5b520b7982c174dee8f4b7500e Mon Sep 17 00:00:00 2001 From: rajjain Date: Sat, 3 Feb 2018 16:35:26 +0530 Subject: [PATCH 074/177] increasing delta time to sleep --- twitter/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/api.py b/twitter/api.py index e8f98641..3d65b03a 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -5051,7 +5051,7 @@ def _RequestUrl(self, url, verb, data=None, json=None, enforce_auth=True): if limit.remaining == 0: try: - time.sleep(max(int(limit.reset - time.time()) + 2, 0)) + time.sleep(max(int(limit.reset - time.time()) + 10, 0)) except ValueError: pass From db9404165b0bb83ee0ed359fe73b021214f30090 Mon Sep 17 00:00:00 2001 From: Chris Topaloudis Date: Sat, 3 Feb 2018 14:03:28 +0100 Subject: [PATCH 075/177] Included requests_toolbelt in dependencies I just tried to use the library in Gae and was missing the `requests_toolbelt`. --- GAE.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GAE.rst b/GAE.rst index fb039b85..4429e02f 100644 --- a/GAE.rst +++ b/GAE.rst @@ -13,7 +13,7 @@ Google App Engine uses virtual machines to do work and serve your application's Prerequisites ************* -Follow the `third party vendor library install instructions `_ to include the two dependency libraries listed in ``requirements.txt``: ``requests`` and ``requests_oauthlib``, as well as this ``python-twitter`` library. Typically you can just place the three module folders into the same place as your app.yaml file; it might look something like this: +Follow the `third party vendor library install instructions `_ to include the dependency libraries listed in ``requirements.txt``: ``requests``, ``requests_oauthlib`` and ``requests_toolbelt``, as well as ``python-twitter`` library. Typically you can just place the module folders into the same place as your app.yaml file; it might look something like this: | myapp/ | ├── twitter/ @@ -52,4 +52,4 @@ If you plan to store tweets or other information returned by the API in Datastor Sockets ^^^^^^^^^ -When urllib3 is imported on App Engine it will throw a warning about sockets: ``AppEnginePlatformWarning: urllib3 is using URLFetch on Google App Engine sandbox...`` This is just a warning that you'd have to use the Sockets API if you intend to use the sockets feature of the library, which we don't use in python-twitter so it can be ignored. \ No newline at end of file +When urllib3 is imported on App Engine it will throw a warning about sockets: ``AppEnginePlatformWarning: urllib3 is using URLFetch on Google App Engine sandbox...`` This is just a warning that you'd have to use the Sockets API if you intend to use the sockets feature of the library, which we don't use in python-twitter so it can be ignored. From 438be010724e3e1fa47f1533092a9d03bb55f288 Mon Sep 17 00:00:00 2001 From: Amnisia Date: Mon, 5 Feb 2018 15:52:23 +0500 Subject: [PATCH 076/177] mini fix media_category to postUpdate and simple upload file --- twitter/api.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 71d719b7..2bfde8dc 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -1098,9 +1098,13 @@ def PostUpdate(self, else: _, _, file_size, media_type = parse_media_file(media) if file_size > self.chunk_size or media_type in chunked_types: - media_ids.append(self.UploadMediaChunked(media, media_additional_owners)) + media_ids.append(self.UploadMediaChunked( + media, media_additional_owners, media_category=media_category + )) else: - media_ids.append(self.UploadMediaSimple(media, media_additional_owners)) + media_ids.append(self.UploadMediaSimple( + media, media_additional_owners, media_category=media_category + )) parameters['media_ids'] = ','.join([str(mid) for mid in media_ids]) if latitude is not None and longitude is not None: From c2efa0688a391b1ecf1c725bf2722a327574647c Mon Sep 17 00:00:00 2001 From: epiphyte Date: Sat, 10 Feb 2018 10:54:34 -0500 Subject: [PATCH 077/177] Fix a resolved reference to warning.warn --- twitter/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/api.py b/twitter/api.py index e8f98641..fc9e69f8 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -230,7 +230,7 @@ def __init__(self, self._debugHTTP = debugHTTP self._shortlink_size = 19 if timeout and timeout < 30: - warn("Warning: The Twitter streaming API sends 30s keepalives, the given timeout is shorter!") + warnings.warn("Warning: The Twitter streaming API sends 30s keepalives, the given timeout is shorter!") self._timeout = timeout self.__auth = None From 185bff9981e4a959eb8c3d2f967dcc17cd2924d3 Mon Sep 17 00:00:00 2001 From: epiphyte Date: Sat, 10 Feb 2018 10:58:10 -0500 Subject: [PATCH 078/177] Add a local logger to api.py, use it to log when we are being rate-limited by an API request. --- twitter/api.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index fc9e69f8..d89c509a 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -26,6 +26,7 @@ import time import base64 import re +import logging import requests from requests_oauthlib import OAuth1, OAuth2 import io @@ -77,6 +78,7 @@ # A singleton representing a lazily instantiated FileCache. DEFAULT_CACHE = object() +logger = logging.getLogger(__name__) class Api(object): """A python interface into the Twitter API @@ -275,7 +277,6 @@ def __init__(self, application_only_auth) if debugHTTP: - import logging try: import http.client as http_client # python3 except ImportError: @@ -5051,7 +5052,9 @@ def _RequestUrl(self, url, verb, data=None, json=None, enforce_auth=True): if limit.remaining == 0: try: - time.sleep(max(int(limit.reset - time.time()) + 2, 0)) + stime = max(int(limit.reset - time.time()) + 2, 0) + logger.debug('Rate limited requesting [%s], sleeping for [%s]', url, stime) + time.sleep(stime) except ValueError: pass From ae8208405ed0bebd77b31e9187a46c3d7fc2bafc Mon Sep 17 00:00:00 2001 From: epiphyte Date: Sat, 10 Feb 2018 11:16:38 -0500 Subject: [PATCH 079/177] Add a test which forces execution through the time.sleep code path. --- tests/test_rate_limit.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tests/test_rate_limit.py b/tests/test_rate_limit.py index 9774f1c2..26981630 100644 --- a/tests/test_rate_limit.py +++ b/tests/test_rate_limit.py @@ -231,3 +231,32 @@ def testLimitsViaHeadersWithSleep(self): self.assertEqual(api.rate_limit.get_limit('/search/tweets').limit, 63) self.assertEqual(api.rate_limit.get_limit('/search/tweets').remaining, 63) self.assertEqual(api.rate_limit.get_limit('/search/tweets').reset, 626672700) + + @responses.activate + def testLimitsViaHeadersWithSleepLimitReached(self): + api = twitter.Api( + consumer_key='test', + consumer_secret='test', + access_token_key='test', + access_token_secret='test', + sleep_on_rate_limit=True) + + # Add handler for ratelimit check - this forces the codepath which goes through the time.sleep call + url = '%s/application/rate_limit_status.json?tweet_mode=compat' % api.base_url + responses.add( + method=responses.GET, url=url, + body='{"resources": {"search": {"/search/tweets": {"limit": 1, "remaining": 0, "reset": 1}}}}', + match_querystring=True) + + # Get initial rate limit data to populate api.rate_limit object + url = "https://api.twitter.com/1.1/search/tweets.json?tweet_mode=compat&q=test&count=15&result_type=mixed" + responses.add( + method=responses.GET, + url=url, + body='{}', + match_querystring=True, + adding_headers=HEADERS) + + resp = api.GetSearch(term='test') + self.assertTrue(api.rate_limit) + self.assertEqual(resp, []) From b9fdb7b531ff55825d4454f1c33e7b4b179c4c7a Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sat, 17 Feb 2018 08:21:17 -0500 Subject: [PATCH 080/177] fix lint --- twitter/api.py | 1 + 1 file changed, 1 insertion(+) diff --git a/twitter/api.py b/twitter/api.py index 3ba21c05..046a790e 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -80,6 +80,7 @@ logger = logging.getLogger(__name__) + class Api(object): """A python interface into the Twitter API From cd52ca74eaa36b2ba4330f2fa41e844f95fbd485 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sat, 17 Feb 2018 11:51:52 -0500 Subject: [PATCH 081/177] update char counting to account for multiple unicode points --- tests/test_twitter_utils.py | 9 +++++++++ twitter/api.py | 4 ++-- twitter/twitter_utils.py | 16 +++++++++++++++- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/tests/test_twitter_utils.py b/tests/test_twitter_utils.py index 9e872756..ad493d44 100644 --- a/tests/test_twitter_utils.py +++ b/tests/test_twitter_utils.py @@ -1,4 +1,5 @@ # encoding: utf-8 +from __future__ import unicode_literals import unittest @@ -81,3 +82,11 @@ def test_calc_expected_status_length_with_url_and_extra_spaces(self): status = 'hi a tweet there example.com' len_status = calc_expected_status_length(status) self.assertEqual(len_status, 63) + + def test_calc_expected_status_length_with_wide_unicode(self): + status = "…" + len_status = calc_expected_status_length(status) + assert len_status == 2 + status = "……" + len_status = calc_expected_status_length(status) + assert len_status == 4 diff --git a/twitter/api.py b/twitter/api.py index c65e3b1d..acbe8c1b 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -896,12 +896,12 @@ def GetStatuses(self, 'map': map } while offset < len(status_ids): - parameters['id'] = ','.join([str(enf_type('status_id', int, status_id)) for status_id in status_ids[offset:offset+100]]) + parameters['id'] = ','.join([str(enf_type('status_id', int, status_id)) for status_id in status_ids[offset:offset + 100]]) resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) if map: - result.update({int(key):(Status.NewFromJsonDict(value) if value else None) for key,value in data['id'].items()}) + result.update({int(key): (Status.NewFromJsonDict(value) if value else None) for key, value in data['id'].items()}) else: result += [Status.NewFromJsonDict(dataitem) for dataitem in data] diff --git a/twitter/twitter_utils.py b/twitter/twitter_utils.py index 8f9ca983..ec648341 100644 --- a/twitter/twitter_utils.py +++ b/twitter/twitter_utils.py @@ -4,7 +4,9 @@ import mimetypes import os import re +import sys from tempfile import NamedTemporaryFile +from unicodedata import normalize try: from urllib.parse import urlparse @@ -14,6 +16,14 @@ import requests from twitter import TwitterError +if sys.version_info < (3,): + range = xrange + +CHAR_RANGES = [ + range(0, 4351), + range(8192, 8205), + range(8208, 8223), + range(8242, 8247)] TLDS = [ "ac", "ad", "ae", "af", "ag", "ai", "al", "am", "an", "ao", "aq", "ar", @@ -171,7 +181,11 @@ def calc_expected_status_length(status, short_url_length=23): if is_url(word): status_length += short_url_length else: - status_length += len(word) + for character in word: + if any([ord(normalize("NFC", character)) in char_range for char_range in CHAR_RANGES]): + status_length += 1 + else: + status_length += 2 status_length += len(re.findall(r'\s', status)) return status_length From bd05145666cac2191045b81fc9b8f9206ed6175a Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sun, 18 Feb 2018 20:10:58 -0500 Subject: [PATCH 082/177] add twittererror for UsersLookup > 100 requested close #523 --- twitter/api.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/twitter/api.py b/twitter/api.py index acbe8c1b..18c532e1 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -2779,6 +2779,8 @@ def UsersLookup(self, screen_names, or twitter.User objects. The list of users that are queried is the union of all specified parameters. + No more than 100 users may be given per request. + Args: user_id (int, list, optional): A list of user_ids to retrieve extended information. @@ -2812,6 +2814,9 @@ def UsersLookup(self, if screen_name: parameters['screen_name'] = ','.join(screen_name) + if len(uids) > 100: + raise TwitterError("No more than 100 users may be requested per request.") + resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) From d5527ef725c0819d7e20a7841f03ac35ee85bb9e Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sun, 18 Feb 2018 20:11:56 -0500 Subject: [PATCH 083/177] add test for issue #541 re URL regex --- tests/test_url_regex.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_url_regex.py b/tests/test_url_regex.py index 9b86b9ce..1de1dca7 100644 --- a/tests/test_url_regex.py +++ b/tests/test_url_regex.py @@ -96,6 +96,8 @@ "http://10.1.1.1" "S.84", "http://s.84", + "L.512+MVG", + "http://L.512+MVG" ] } From dea7a1afd68e948f0f380f456980b1556ae9729b Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sun, 18 Feb 2018 20:57:23 -0500 Subject: [PATCH 084/177] fix lint --- twitter/api.py | 76 ++++++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 37 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 18c532e1..c6fc525e 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -71,7 +71,7 @@ ) if sys.version_info > (3,): - long = int + long = int # pylint: disable=invalid-name,redefined-builtin CHARACTER_LIMIT = 280 @@ -223,9 +223,11 @@ def __init__(self, # see GAE.rst for more information if os.environ: if 'APPENGINE_RUNTIME' in os.environ.keys(): - import requests_toolbelt.adapters.appengine # Adapter ensures requests use app engine's urlfetch + # Adapter ensures requests use app engine's urlfetch + import requests_toolbelt.adapters.appengine requests_toolbelt.adapters.appengine.monkeypatch() - cache = None # App Engine does not like this caching strategy, disable caching + # App Engine does not like this caching strategy, disable caching + cache = None self.SetCache(cache) self._cache_timeout = Api.DEFAULT_CACHE_TIMEOUT @@ -268,8 +270,7 @@ def __init__(self, warnings.warn(( "A chunk size lower than 16384 may result in too many " "requests to the Twitter API when uploading videos. You are " - "strongly advised to increase it above 16384" - )) + "strongly advised to increase it above 16384")) if (consumer_key and not (application_only_auth or all([access_token_key, access_token_secret]))): @@ -292,7 +293,8 @@ def __init__(self, requests_log.setLevel(logging.DEBUG) requests_log.propagate = True - def GetAppOnlyAuthToken(self, consumer_key, consumer_secret): + @staticmethod + def GetAppOnlyAuthToken(consumer_key, consumer_secret): """ Generate a Bearer Token from consumer_key and consumer_secret """ @@ -526,9 +528,9 @@ def GetSearch(self, data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) if return_json: - return data + return data else: - return [Status.NewFromJsonDict(x) for x in data.get('statuses', '')] + return [Status.NewFromJsonDict(x) for x in data.get('statuses', '')] def GetUsersSearch(self, term=None, @@ -2821,9 +2823,9 @@ def UsersLookup(self, data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) if return_json: - return data + return data else: - return [User.NewFromJsonDict(u) for u in data] + return [User.NewFromJsonDict(u) for u in data] def GetUser(self, user_id=None, @@ -2861,9 +2863,9 @@ def GetUser(self, data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) if return_json: - return data + return data else: - return User.NewFromJsonDict(data) + return User.NewFromJsonDict(data) def GetDirectMessages(self, since_id=None, @@ -2935,9 +2937,9 @@ def GetDirectMessages(self, data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) if return_json: - return data + return data else: - return [DirectMessage.NewFromJsonDict(x) for x in data] + return [DirectMessage.NewFromJsonDict(x) for x in data] def GetSentDirectMessages(self, since_id=None, @@ -2995,9 +2997,9 @@ def GetSentDirectMessages(self, data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) if return_json: - return data + return data else: - return [DirectMessage.NewFromJsonDict(x) for x in data] + return [DirectMessage.NewFromJsonDict(x) for x in data] def PostDirectMessage(self, text, @@ -3030,9 +3032,9 @@ def PostDirectMessage(self, data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) if return_json: - return data + return data else: - return DirectMessage.NewFromJsonDict(data) + return DirectMessage.NewFromJsonDict(data) def DestroyDirectMessage(self, message_id, include_entities=True, return_json=False): """Destroys the direct message specified in the required ID parameter. @@ -3060,9 +3062,9 @@ def DestroyDirectMessage(self, message_id, include_entities=True, return_json=Fa data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) if return_json: - return data + return data else: - return DirectMessage.NewFromJsonDict(data) + return DirectMessage.NewFromJsonDict(data) def CreateFriendship(self, user_id=None, screen_name=None, follow=True, retweets=True, **kwargs): """Befriends the user specified by the user_id or screen_name. @@ -3273,9 +3275,9 @@ def LookupFriendship(self, data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) if return_json: - return data + return data else: - return [UserStatus.NewFromJsonDict(x) for x in data] + return [UserStatus.NewFromJsonDict(x) for x in data] def IncomingFriendship(self, cursor=None, @@ -3493,9 +3495,9 @@ def GetFavorites(self, data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) if return_json: - return data + return data else: - return [Status.NewFromJsonDict(x) for x in data] + return [Status.NewFromJsonDict(x) for x in data] def GetMentions(self, count=None, @@ -3559,9 +3561,9 @@ def GetMentions(self, data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) if return_json: - return data + return data else: - return [Status.NewFromJsonDict(x) for x in data] + return [Status.NewFromJsonDict(x) for x in data] @staticmethod def _IDList(list_id, slug, owner_id, owner_screen_name): @@ -3791,9 +3793,9 @@ def ShowSubscription(self, data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) if return_json: - return data + return data else: - return User.NewFromJsonDict(data) + return User.NewFromJsonDict(data) def GetSubscriptions(self, user_id=None, @@ -3843,9 +3845,9 @@ def GetSubscriptions(self, data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) if return_json: - return data + return data else: - return [List.NewFromJsonDict(x) for x in data['lists']] + return [List.NewFromJsonDict(x) for x in data['lists']] def GetMemberships(self, user_id=None, @@ -3905,9 +3907,9 @@ def GetMemberships(self, data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) if return_json: - return data + return data else: - return [List.NewFromJsonDict(x) for x in data['lists']] + return [List.NewFromJsonDict(x) for x in data['lists']] def GetListsList(self, screen_name=None, @@ -3950,9 +3952,9 @@ def GetListsList(self, data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) if return_json: - return data + return data else: - return [List.NewFromJsonDict(x) for x in data] + return [List.NewFromJsonDict(x) for x in data] def GetListTimeline(self, list_id=None, @@ -4030,9 +4032,9 @@ def GetListTimeline(self, data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) if return_json: - return data + return data else: - return [Status.NewFromJsonDict(x) for x in data] + return [Status.NewFromJsonDict(x) for x in data] def GetListMembersPaged(self, list_id=None, @@ -4666,7 +4668,7 @@ def GetUserStream(self, data = self._ParseAndCheckTwitter(line.decode('utf-8')) yield data elif include_keepalive: - yield None + yield None def VerifyCredentials(self, include_entities=None, skip_status=None, include_email=None): """Returns a twitter.User instance if the authenticating user is valid. From baf6170a99154f147ddd4819621793c20f7e8642 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sun, 18 Feb 2018 21:20:50 -0500 Subject: [PATCH 085/177] cleanup funcs to reflect twitter defaults & update docs --- doc/changelog.rst | 14 +++++++------- tests/test_api_30.py | 18 +++++++++--------- twitter/api.py | 19 ++++++++++--------- 3 files changed, 26 insertions(+), 25 deletions(-) diff --git a/doc/changelog.rst b/doc/changelog.rst index 05b79fdb..91f4145c 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -5,7 +5,7 @@ Version 3.4 =========== Deprecations ------------- +++++++++++++ * :py:func:`twitter.api.Api.UpdateBackgroundImage`. Please make sure that your code does not call this function as it will now return a hard error. There is no replacement function. This was deprecated by Twitter around July 2015. @@ -46,7 +46,7 @@ Version 3.2 =========== Deprecations ------------- +++++++++++++ Nothing is being deprecationed this version, however here's what's being deprecated as of v. 3.3.0: @@ -62,7 +62,7 @@ Nothing is being deprecationed this version, however here's what's being depreca What's New ----------- +++++++++++ * We've added new deprecation warnings, so it's easier to track when things go away. All of python-twitter's deprecation warnings will be a subclass of :py:class:`twitter.error.PythonTwitterDeprecationWarning` and will have a version number associated with them such as :py:class:`twitter.error.PythonTwitterDeprecationWarning330`. @@ -80,7 +80,7 @@ What's New * `video_info` is now available on a `twitter.models.Media` object, which allows access to video urls/bitrates/etc. in the `extended_entities` node of a tweet. What's Changed --------------- +++++++++++++++ * :py:class:`twitter.models.Trend`'s `volume` attribute has been renamed `tweet_volume` in line with Twitter's naming convention. This change should allow users to access the number of tweets being tweeted for a given Trend. `PR #375 `_ @@ -90,7 +90,7 @@ What's Changed Bugfixes --------- +++++++++ * :py:class:`twitter.models.Media` again contains a ``sizes`` attribute, which was missed back in the Version 3.0 release. `PR #360 `_ @@ -106,7 +106,7 @@ Version 3.1 ========== What's New -____________ +++++++++++ * :py:func:`twitter.api.Api.PostMediaMetadata()` Method allows the posting of alt text (hover text) to a photo on Twitter. Note that it appears that you have to call this method prior to attaching the photo to a status. @@ -125,7 +125,7 @@ ____________ What's Changed -______________ +++++++++++++++ * :py:func:`twitter.api.Api.GetStatus()` Now accepts the keyword argument ``include_ext_alt_text`` which will request alt text to be included with the Status object being returned (if available). Defaults to ``True``. diff --git a/tests/test_api_30.py b/tests/test_api_30.py index 99e00bf0..dd4baa6d 100644 --- a/tests/test_api_30.py +++ b/tests/test_api_30.py @@ -219,7 +219,7 @@ def testGetBlocks(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/blocks/list.json?cursor=-1&tweet_mode=compat', + 'https://api.twitter.com/1.1/blocks/list.json?cursor=-1&stringify_ids=False&include_entities=False&skip_status=False&tweet_mode=compat', body=resp_data, match_querystring=True, status=200) @@ -227,7 +227,7 @@ def testGetBlocks(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/blocks/list.json?cursor=1524574483549312671&tweet_mode=compat', + 'https://api.twitter.com/1.1/blocks/list.json?cursor=1524574483549312671&stringify_ids=False&include_entities=False&skip_status=False&tweet_mode=compat', body=resp_data, match_querystring=True, status=200) @@ -278,7 +278,7 @@ def testGetBlocksIDs(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/blocks/ids.json?cursor=-1&tweet_mode=compat', + 'https://api.twitter.com/1.1/blocks/ids.json?cursor=-1&stringify_ids=False&include_entities=True&skip_status=False&tweet_mode=compat', body=resp_data, match_querystring=True, status=200) @@ -286,7 +286,7 @@ def testGetBlocksIDs(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/blocks/ids.json?cursor=1524566179872860311&tweet_mode=compat', + 'https://api.twitter.com/1.1/blocks/ids.json?cursor=1524566179872860311&stringify_ids=False&include_entities=True&skip_status=False&tweet_mode=compat', body=resp_data, match_querystring=True, status=200) @@ -1367,7 +1367,7 @@ def testGetMutes(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/mutes/users/list.json?cursor=-1&tweet_mode=compat&include_entities=True', + 'https://api.twitter.com/1.1/mutes/users/list.json?cursor=-1&stringify_ids=False&include_entities=True&skip_status=False&tweet_mode=compat', body=resp_data, match_querystring=True, status=200) @@ -1377,7 +1377,7 @@ def testGetMutes(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/mutes/users/list.json?cursor=1535206520056388207&include_entities=True&tweet_mode=compat', + 'https://api.twitter.com/1.1/mutes/users/list.json?cursor=1535206520056388207&stringify_ids=False&include_entities=True&skip_status=False&tweet_mode=compat', body=resp_data, match_querystring=True, status=200) @@ -1392,7 +1392,7 @@ def testGetMutesIDs(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/mutes/users/ids.json?tweet_mode=compat&cursor=-1', + 'https://api.twitter.com/1.1/mutes/users/ids.json?cursor=-1&stringify_ids=False&include_entities=True&skip_status=False&tweet_mode=compat', body=resp_data, match_querystring=True, status=200) @@ -1402,7 +1402,7 @@ def testGetMutesIDs(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/mutes/users/ids.json?tweet_mode=compat&cursor=1535206520056565155', + 'https://api.twitter.com/1.1/mutes/users/ids.json?cursor=1535206520056565155&stringify_ids=False&include_entities=True&skip_status=False&tweet_mode=compat', body=resp_data, match_querystring=True, status=200) @@ -1416,7 +1416,7 @@ def testCreateBlock(self): resp_data = f.read() responses.add( POST, - 'https://api.twitter.com/1.1/blocks/create.json', + DEFAULT_URL, body=resp_data, match_querystring=True, status=200) diff --git a/twitter/api.py b/twitter/api.py index c6fc525e..c59b0bac 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -1655,7 +1655,8 @@ def GetRetweeters(self, url = '%s/statuses/retweeters/ids.json' % (self.base_url) parameters = { 'id': enf_type('id', int, status_id), - 'stringify_ids': enf_type('stringify_ids', bool, stringify_ids) + 'stringify_ids': enf_type('stringify_ids', bool, stringify_ids), + 'count': count, } result = [] @@ -1742,7 +1743,7 @@ def _GetBlocksMutesPaged(self, action, cursor=-1, skip_status=False, - include_entities=False, + include_entities=True, stringify_ids=False): """ Fetch a page of the users (as twitter.User instances) blocked or muted by the currently authenticated user. @@ -1779,12 +1780,12 @@ def _GetBlocksMutesPaged(self, url = urls[endpoint][action] result = [] - parameters = {} - if skip_status: - parameters['skip_status'] = True - if include_entities: - parameters['include_entities'] = True - parameters['cursor'] = cursor + parameters = { + 'skip_status': bool(skip_status), + 'include_entities': bool(include_entities), + 'stringify_ids': bool(stringify_ids), + 'cursor': cursor, + } resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) @@ -1901,7 +1902,7 @@ def GetBlocksIDsPaged(self, return self._GetBlocksMutesPaged(endpoint='block', action='ids', cursor=cursor, - stringify_ids=False) + stringify_ids=stringify_ids) def GetMutes(self, skip_status=False, From 423a50eb264d41e9cd60d3cd1eb86147d1406303 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sun, 18 Feb 2018 22:29:27 -0500 Subject: [PATCH 086/177] bump version for 3.4 --- doc/conf.py | 4 ++-- twitter/__init__.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/conf.py b/doc/conf.py index 1afa0818..126ab64e 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -57,9 +57,9 @@ # built documents. # # The short X.Y version. -version = '3.3' +version = '3.4' # The full version, including alpha/beta/rc tags. -release = '3.3.1' +release = '3.4' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/twitter/__init__.py b/twitter/__init__.py index 0c4d75c4..2073370c 100644 --- a/twitter/__init__.py +++ b/twitter/__init__.py @@ -23,7 +23,7 @@ __email__ = 'python-twitter@googlegroups.com' __copyright__ = 'Copyright (c) 2007-2016 The Python-Twitter Developers' __license__ = 'Apache License 2.0' -__version__ = '3.3.1' +__version__ = '3.4' __url__ = 'https://github.com/bear/python-twitter' __download_url__ = 'https://pypi.python.org/pypi/python-twitter' __description__ = 'A Python wrapper around the Twitter API' From 409a7335f59dc4570c5d60065e7195f58285d9d0 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Thu, 22 Feb 2018 07:23:47 -0500 Subject: [PATCH 087/177] convert status to unicode for calculating expected status length in py27 --- tests/test_unicode.py | 5 +++++ twitter/twitter_utils.py | 2 ++ 2 files changed, 7 insertions(+) diff --git a/tests/test_unicode.py b/tests/test_unicode.py index 0be70761..94776f7e 100644 --- a/tests/test_unicode.py +++ b/tests/test_unicode.py @@ -97,6 +97,11 @@ def test_constructed_status(self): except Exception as e: self.fail(e) + def test_post_with_bytes_string(self): + status = 'x' + length = twitter.twitter_utils.calc_expected_status_length(status) + assert length == 1 + if __name__ == "__main__": suite = unittest.TestLoader().loadTestsFromTestCase(ApiTest) diff --git a/twitter/twitter_utils.py b/twitter/twitter_utils.py index ec648341..b5e9c18b 100644 --- a/twitter/twitter_utils.py +++ b/twitter/twitter_utils.py @@ -177,6 +177,8 @@ def calc_expected_status_length(status, short_url_length=23): """ status_length = 0 + if isinstance(status, bytes): + status = unicode(status) for word in re.split(r'\s', status): if is_url(word): status_length += short_url_length From 49c265d459cc31006370f6e8e14f11715982eeee Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sat, 24 Feb 2018 14:15:36 -0500 Subject: [PATCH 088/177] update tests for better coverage --- testdata/get_retweets_of_me.json | 2 +- testdata/post_retweet.json | 1 + tests/test_api_30.py | 39 ++++++++++- tests/test_direct_messages.py | 10 ++- tests/test_twitter_utils.py | 23 +++++++ twitter/api.py | 113 ++++++++++++++----------------- twitter/error.py | 5 ++ twitter/twitter_utils.py | 16 +++++ 8 files changed, 141 insertions(+), 68 deletions(-) create mode 100644 testdata/post_retweet.json diff --git a/testdata/get_retweets_of_me.json b/testdata/get_retweets_of_me.json index 0637a088..074d9f4b 100644 --- a/testdata/get_retweets_of_me.json +++ b/testdata/get_retweets_of_me.json @@ -1 +1 @@ -[] \ No newline at end of file +[{"source": "Tweetbot for i\u039fS", "entities": {"hashtags": [], "symbols": [], "user_mentions": [], "urls": []}, "in_reply_to_user_id_str": null, "lang": "en", "in_reply_to_status_id": null, "favorite_count": 3, "text": "These announcers yo \ud83d\ude21", "retweet_count": 1, "is_quote_status": false, "geo": null, "in_reply_to_user_id": null, "contributors": null, "id": 960340958003986432, "truncated": false, "in_reply_to_screen_name": null, "place": null, "user": {"profile_sidebar_border_color": "000000", "friends_count": 496, "utc_offset": -18000, "notifications": false, "profile_background_color": "FFFFFF", "listed_count": 6, "time_zone": "Eastern Time (US & Canada)", "profile_background_tile": false, "name": "Trolley Appreciator", "entities": {"description": {"urls": []}, "url": {"urls": [{"indices": [0, 23], "expanded_url": "http://iseverythingstilltheworst.com", "url": "https://t.co/wtg3XyA3vL", "display_url": "iseverythingstilltheworst.com"}]}}, "description": "these people have addresses | #botally", "lang": "en", "favourites_count": 20423, "verified": false, "protected": true, "statuses_count": 4022, "profile_banner_url": "https://pbs.twimg.com/profile_banners/372018022/1475799101", "created_at": "Sun Sep 11 23:49:28 +0000 2011", "screen_name": "__jcbl__", "profile_link_color": "EE3355", "has_extended_profile": false, "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "geo_enabled": false, "profile_sidebar_fill_color": "000000", "id": 372018022, "is_translation_enabled": false, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "following": false, "url": "https://t.co/wtg3XyA3vL", "default_profile_image": false, "id_str": "372018022", "profile_use_background_image": false, "default_profile": false, "translator_type": "none", "is_translator": false, "location": "philly", "profile_image_url": "http://pbs.twimg.com/profile_images/958783522008915969/brQwSHU7_normal.jpg", "contributors_enabled": false, "followers_count": 190, "profile_text_color": "000000", "follow_request_sent": false, "profile_image_url_https": "https://pbs.twimg.com/profile_images/958783522008915969/brQwSHU7_normal.jpg"}, "id_str": "960340958003986432", "retweeted": true, "created_at": "Mon Feb 05 02:35:01 +0000 2018", "in_reply_to_status_id_str": null, "favorited": false, "coordinates": null}] \ No newline at end of file diff --git a/testdata/post_retweet.json b/testdata/post_retweet.json new file mode 100644 index 00000000..15ededd9 --- /dev/null +++ b/testdata/post_retweet.json @@ -0,0 +1 @@ +{"retweeted_status": {"source": "Twitter for Android", "entities": {"hashtags": [], "symbols": [], "user_mentions": [], "urls": [{"indices": [117, 140], "expanded_url": "https://twitter.com/i/web/status/967413349473574913", "url": "https://t.co/PXKlDqrtUL", "display_url": "twitter.com/i/web/status/9\u2026"}]}, "in_reply_to_user_id_str": null, "lang": "en", "in_reply_to_status_id": null, "favorite_count": 1375, "text": "Honestly ppl shouldn't be saying anything about \"peaceful protest\" to leverage respectability politics because Stan\u2026 https://t.co/PXKlDqrtUL", "retweet_count": 678, "is_quote_status": false, "geo": null, "in_reply_to_user_id": null, "contributors": null, "id": 967413349473574913, "truncated": true, "in_reply_to_screen_name": null, "place": null, "user": {"profile_sidebar_border_color": "000000", "friends_count": 4745, "utc_offset": -25200, "notifications": false, "profile_background_color": "131516", "listed_count": 314, "time_zone": "Mountain Time (US & Canada)", "profile_background_tile": true, "name": "Dani", "entities": {"description": {"urls": [{"indices": [34, 57], "expanded_url": "http://NeverDeadNative.com", "url": "https://t.co/vVRmSfZLna", "display_url": "NeverDeadNative.com"}, {"indices": [128, 151], "expanded_url": "http://paypal.me/xodanix3", "url": "https://t.co/TtDWo5Y9Y2", "display_url": "paypal.me/xodanix3"}]}, "url": {"urls": [{"indices": [0, 23], "expanded_url": "https://www.patreon.com/Izanzanwin", "url": "https://t.co/nKRX7u0GVy", "display_url": "patreon.com/Izanzanwin"}]}}, "description": "Writer. Free Agent. Co-founder of https://t.co/vVRmSfZLna Urban Ndn (Dakota ka Wasicu), 28, UND alum. INTJ,Mother of twin boys. https://t.co/TtDWo5Y9Y2", "lang": "en", "favourites_count": 75004, "verified": false, "protected": false, "statuses_count": 179418, "profile_banner_url": "https://pbs.twimg.com/profile_banners/31653264/1496501092", "created_at": "Thu Apr 16 05:04:52 +0000 2009", "screen_name": "xodanix3", "profile_link_color": "080808", "has_extended_profile": false, "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/673801111/03b3d720c6fed3d511f55bb7b18b6eae.jpeg", "geo_enabled": false, "profile_sidebar_fill_color": "EFEFEF", "id": 31653264, "is_translation_enabled": false, "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/673801111/03b3d720c6fed3d511f55bb7b18b6eae.jpeg", "following": false, "url": "https://t.co/nKRX7u0GVy", "default_profile_image": false, "id_str": "31653264", "profile_use_background_image": true, "default_profile": false, "translator_type": "none", "is_translator": false, "location": "St Paul, MN", "profile_image_url": "http://pbs.twimg.com/profile_images/963498583797399553/5xLyN-P3_normal.jpg", "contributors_enabled": false, "followers_count": 16972, "profile_text_color": "333333", "follow_request_sent": false, "profile_image_url_https": "https://pbs.twimg.com/profile_images/963498583797399553/5xLyN-P3_normal.jpg"}, "id_str": "967413349473574913", "retweeted": true, "created_at": "Sat Feb 24 14:58:10 +0000 2018", "in_reply_to_status_id_str": null, "favorited": false, "coordinates": null}, "source": "psych_parse_", "entities": {"hashtags": [], "symbols": [], "user_mentions": [{"id_str": "31653264", "name": "Dani", "id": 31653264, "screen_name": "xodanix3", "indices": [3, 12]}], "urls": []}, "in_reply_to_user_id_str": null, "lang": "en", "in_reply_to_status_id": null, "favorite_count": 0, "text": "RT @xodanix3: Honestly ppl shouldn't be saying anything about \"peaceful protest\" to leverage respectability politics because Standing Rock\u2026", "retweet_count": 678, "is_quote_status": false, "geo": null, "in_reply_to_user_id": null, "contributors": null, "id": 967465567773839360, "truncated": false, "in_reply_to_screen_name": null, "place": null, "user": {"profile_sidebar_border_color": "000000", "friends_count": 496, "utc_offset": -18000, "notifications": false, "profile_background_color": "FFFFFF", "listed_count": 6, "time_zone": "Eastern Time (US & Canada)", "profile_background_tile": false, "name": "Trolley Appreciator", "entities": {"description": {"urls": []}, "url": {"urls": [{"indices": [0, 23], "expanded_url": "http://iseverythingstilltheworst.com", "url": "https://t.co/wtg3XyA3vL", "display_url": "iseverythingstilltheworst.com"}]}}, "description": "these people have addresses | #botally", "lang": "en", "favourites_count": 20423, "verified": false, "protected": true, "statuses_count": 4022, "profile_banner_url": "https://pbs.twimg.com/profile_banners/372018022/1475799101", "created_at": "Sun Sep 11 23:49:28 +0000 2011", "screen_name": "__jcbl__", "profile_link_color": "EE3355", "has_extended_profile": false, "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "geo_enabled": false, "profile_sidebar_fill_color": "000000", "id": 372018022, "is_translation_enabled": false, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "following": false, "url": "https://t.co/wtg3XyA3vL", "default_profile_image": false, "id_str": "372018022", "profile_use_background_image": false, "default_profile": false, "translator_type": "none", "is_translator": false, "location": "philly", "profile_image_url": "http://pbs.twimg.com/profile_images/958783522008915969/brQwSHU7_normal.jpg", "contributors_enabled": false, "followers_count": 191, "profile_text_color": "000000", "follow_request_sent": false, "profile_image_url_https": "https://pbs.twimg.com/profile_images/958783522008915969/brQwSHU7_normal.jpg"}, "id_str": "967465567773839360", "retweeted": true, "created_at": "Sat Feb 24 18:25:40 +0000 2018", "in_reply_to_status_id_str": null, "favorited": false, "coordinates": null} \ No newline at end of file diff --git a/tests/test_api_30.py b/tests/test_api_30.py index dd4baa6d..9b4d75f0 100644 --- a/tests/test_api_30.py +++ b/tests/test_api_30.py @@ -592,7 +592,7 @@ def testGetMentions(self): resp_data = f.read() responses.add(GET, DEFAULT_URL, body=resp_data) - resp = self.api.GetMentions() + resp = self.api.GetMentions(count=1) self.assertTrue(type(resp) is list) self.assertTrue([type(mention) is twitter.Status for mention in resp]) self.assertEqual(resp[0].id, 676148312349609985) @@ -1699,3 +1699,40 @@ def test_UploadSmallVideoUsesChunkedData(self, mocker): assert os.path.getsize(video.name) <= 1024 * 1024 assert isinstance(resp, twitter.Status) assert twitter.api.Api.UploadMediaChunked.called + + @responses.activate + def test_post_retweet(self): + with open('testdata/post_retweet.json') as f: + resp_data = f.read() + responses.add(POST, DEFAULT_URL, body=resp_data) + resp = self.api.PostRetweet(status_id=967413349473574913, trim_user=True) + assert resp + assert resp.id == 967465567773839360 + + self.assertRaises( + twitter.TwitterError, + lambda: self.api.PostRetweet(status_id=0)) + self.assertRaises( + twitter.TwitterError, + lambda: self.api.PostRetweet(status_id='asdf')) + + @responses.activate + def test_get_retweets_of_me(self): + with open('testdata/get_retweets_of_me.json') as f: + resp_data = f.read() + responses.add(GET, DEFAULT_URL, body=resp_data) + resp = self.api.GetRetweetsOfMe( + count=1, + since_id=0, + max_id=100, + trim_user=True, + include_entities=True, + include_user_entities=True) + assert resp + + self.assertRaises( + twitter.TwitterError, + lambda: self.api.GetRetweetsOfMe(count=200)) + self.assertRaises( + twitter.TwitterError, + lambda: self.api.GetRetweetsOfMe(count='asdf')) diff --git a/tests/test_direct_messages.py b/tests/test_direct_messages.py index b8a6484b..4f60e0d7 100644 --- a/tests/test_direct_messages.py +++ b/tests/test_direct_messages.py @@ -32,12 +32,18 @@ def test_get_direct_messages(): resp_data = f.read() responses.add(GET, DEFAULT_URL, body=resp_data) - resp = api.GetDirectMessages() + resp = api.GetDirectMessages(count=1, page=1) direct_message = resp[0] assert isinstance(resp, list) assert isinstance(direct_message, twitter.DirectMessage) assert direct_message.id == 678629245946433539 + try: + resp = api.GetDirectMessages(count='asdf') + assert 0 + except twitter.TwitterError as e: + assert True + @responses.activate def test_get_sent_direct_messages(): @@ -45,7 +51,7 @@ def test_get_sent_direct_messages(): resp_data = f.read() responses.add(GET, DEFAULT_URL, body=resp_data) - resp = api.GetSentDirectMessages() + resp = api.GetSentDirectMessages(count=1, page=1) direct_message = resp[0] assert isinstance(resp, list) assert isinstance(direct_message, twitter.DirectMessage) diff --git a/tests/test_twitter_utils.py b/tests/test_twitter_utils.py index ad493d44..39cf7bb3 100644 --- a/tests/test_twitter_utils.py +++ b/tests/test_twitter_utils.py @@ -9,6 +9,8 @@ parse_media_file ) +from twitter import twitter_utils as utils + class ApiTest(unittest.TestCase): @@ -90,3 +92,24 @@ def test_calc_expected_status_length_with_wide_unicode(self): status = "……" len_status = calc_expected_status_length(status) assert len_status == 4 + + def test_parse_args(self): + user = twitter.User(screen_name='__jcbl__') + out = utils.parse_arg_list(user, 'screen_name') + assert isinstance(out, (str, unicode)) + assert out == '__jcbl__' + + users = ['__jcbl__', 'notinourselves'] + out = utils.parse_arg_list(users, 'screen_name') + assert isinstance(out, (str, unicode)) + assert out == '__jcbl__,notinourselves' + + users2 = [user] + users + out = utils.parse_arg_list(users2, 'screen_name') + assert isinstance(out, (str, unicode)) + assert out == '__jcbl__,__jcbl__,notinourselves' + + users = '__jcbl__' + out = utils.parse_arg_list(users, 'screen_name') + assert isinstance(out, (str, unicode)) + assert out == '__jcbl__' diff --git a/twitter/api.py b/twitter/api.py index c59b0bac..e614bc72 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -63,7 +63,8 @@ calc_expected_status_length, is_url, parse_media_file, - enf_type) + enf_type, + parse_arg_list) from twitter.error import ( TwitterError, @@ -1713,25 +1714,20 @@ def GetRetweetsOfMe(self, When True, the user entities will be included. [Optional] """ url = '%s/statuses/retweets_of_me.json' % self.base_url - parameters = {} if count is not None: try: if int(count) > 100: raise TwitterError({'message': "'count' may not be greater than 100"}) except ValueError: raise TwitterError({'message': "'count' must be an integer"}) - if count: - parameters['count'] = count - if since_id: - parameters['since_id'] = since_id - if max_id: - parameters['max_id'] = max_id - if trim_user: - parameters['trim_user'] = trim_user - if not include_entities: - parameters['include_entities'] = include_entities - if not include_user_entities: - parameters['include_user_entities'] = include_user_entities + parameters = { + 'count': count, + 'since_id': since_id, + 'max_id': max_id, + 'trim_user': bool(trim_user), + 'include_entities': bool(include_entities), + 'include_user_entities': bool(include_user_entities), + } resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) @@ -2815,11 +2811,13 @@ def UsersLookup(self, if len(uids): parameters['user_id'] = ','.join([str(u) for u in uids]) if screen_name: - parameters['screen_name'] = ','.join(screen_name) + parameters['screen_name'] = parse_arg_list(screen_name, 'screen_name') if len(uids) > 100: raise TwitterError("No more than 100 users may be requested per request.") + print(parameters) + resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) @@ -2915,24 +2913,18 @@ def GetDirectMessages(self, A sequence of twitter.DirectMessage instances """ url = '%s/direct_messages.json' % self.base_url - parameters = {} - if since_id: - parameters['since_id'] = since_id - if max_id: - parameters['max_id'] = max_id + parameters = { + 'full_text': bool(full_text), + 'include_entities': bool(include_entities), + 'max_id': max_id, + 'since_id': since_id, + 'skip_status': bool(skip_status), + } + if count: - try: - parameters['count'] = int(count) - except ValueError: - raise TwitterError({'message': "count must be an integer"}) - if not include_entities: - parameters['include_entities'] = 'false' - if skip_status: - parameters['skip_status'] = 1 - if full_text: - parameters['full_text'] = 'true' + parameters['count'] = enf_type('count', int, count) if page: - parameters['page'] = page + parameters['page'] = enf_type('page', int, page) resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) @@ -2952,26 +2944,25 @@ def GetSentDirectMessages(self, """Returns a list of the direct messages sent by the authenticating user. Args: - since_id: + since_id (int, optional): Returns results with an ID greater than (that is, more recent than) the specified ID. There are limits to the number of Tweets which can be accessed through the API. If the limit of Tweets has occured since the since_id, the since_id will be - forced to the oldest ID available. [Optional] - max_id: + forced to the oldest ID available. + max_id (int, optional): Returns results with an ID less than (that is, older than) or - equal to the specified ID. [Optional] - count: + equal to the specified ID. + count (int, optional): Specifies the number of direct messages to try and retrieve, up to a maximum of 200. The value of count is best thought of as a limit to the number of Tweets to return because suspended or deleted content is - removed after the count has been applied. [Optional] - page: + removed after the count has been applied. + page (int, optional): Specifies the page of results to retrieve. Note: there are pagination limits. [Optional] - include_entities: + include_entities (bool, optional): The entities node will be omitted when set to False. - [Optional] return_json (bool, optional): If True JSON data will be returned, instead of twitter.User @@ -2979,20 +2970,17 @@ def GetSentDirectMessages(self, A sequence of twitter.DirectMessage instances """ url = '%s/direct_messages/sent.json' % self.base_url - parameters = {} - if since_id: - parameters['since_id'] = since_id - if page: - parameters['page'] = page - if max_id: - parameters['max_id'] = max_id + + parameters = { + 'include_entities': bool(include_entities), + 'max_id': max_id, + 'since_id': since_id, + } + if count: - try: - parameters['count'] = int(count) - except ValueError: - raise TwitterError({'message': "count must be an integer"}) - if not include_entities: - parameters['include_entities'] = 'false' + parameters['count'] = enf_type('count', int, count) + if page: + parameters['page'] = enf_type('page', int, page) resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) @@ -3543,20 +3531,17 @@ def GetMentions(self, A sequence of twitter.Status instances, one for each mention of the user. """ url = '%s/statuses/mentions_timeline.json' % self.base_url - parameters = {} + + parameters = { + 'contributor_details': bool(contributor_details), + 'include_entities': bool(include_entities), + 'max_id': max_id, + 'since_id': since_id, + 'trim_user': bool(trim_user), + } if count: parameters['count'] = enf_type('count', int, count) - if since_id: - parameters['since_id'] = enf_type('since_id', int, since_id) - if max_id: - parameters['max_id'] = enf_type('max_id', int, max_id) - if trim_user: - parameters['trim_user'] = 1 - if contributor_details: - parameters['contributor_details'] = 'true' - if not include_entities: - parameters['include_entities'] = 'false' resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) diff --git a/twitter/error.py b/twitter/error.py index 9df2af6a..2f3a2032 100644 --- a/twitter/error.py +++ b/twitter/error.py @@ -18,3 +18,8 @@ class PythonTwitterDeprecationWarning(DeprecationWarning): class PythonTwitterDeprecationWarning330(PythonTwitterDeprecationWarning): """Warning for features to be removed in version 3.3.0""" pass + + +class PythonTwitterDeprecationWarning340(PythonTwitterDeprecationWarning): + """Warning for features to be removed in version 3.4.0""" + pass diff --git a/twitter/twitter_utils.py b/twitter/twitter_utils.py index b5e9c18b..1e7d60b3 100644 --- a/twitter/twitter_utils.py +++ b/twitter/twitter_utils.py @@ -15,6 +15,7 @@ import requests from twitter import TwitterError +import twitter if sys.version_info < (3,): range = xrange @@ -292,3 +293,18 @@ def enf_type(field, _type, val): raise TwitterError({ 'message': '"{0}" must be type {1}'.format(field, _type.__name__) }) + + +def parse_arg_list(args, attr): + out = [] + if isinstance(args, (str, unicode)): + out.append(args) + elif isinstance(args, twitter.User): + out.append(getattr(args, attr)) + elif isinstance(args, (list, tuple)): + for item in args: + if isinstance(item, (str, unicode)): + out.append(item) + elif isinstance(item, twitter.User): + out.append(getattr(item, attr)) + return ",".join([str(item) for item in out]) From c8a25dc8d645ca18d3f82449e4d509063b7fe56b Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sat, 24 Feb 2018 14:15:49 -0500 Subject: [PATCH 089/177] use universal wheels in builds --- setup.cfg | 3 +++ 1 file changed, 3 insertions(+) diff --git a/setup.cfg b/setup.cfg index 6dd25c8e..1949d5c6 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,9 @@ [aliases] test = pytest +[bdist_wheel] +universal=1 + [check-manifest] ignore = .travis.yml From cec7aa52b4f0cfcdbd41f036f323af0250b506c9 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sat, 24 Feb 2018 19:05:31 -0500 Subject: [PATCH 090/177] compatibility fixes --- tests/test_twitter_utils.py | 4 ++++ twitter/twitter_utils.py | 3 +++ 2 files changed, 7 insertions(+) diff --git a/tests/test_twitter_utils.py b/tests/test_twitter_utils.py index 39cf7bb3..5ad3cff5 100644 --- a/tests/test_twitter_utils.py +++ b/tests/test_twitter_utils.py @@ -1,6 +1,7 @@ # encoding: utf-8 from __future__ import unicode_literals +import sys import unittest import twitter @@ -11,6 +12,9 @@ from twitter import twitter_utils as utils +if sys.version_info > (3,): + unicode = str + class ApiTest(unittest.TestCase): diff --git a/twitter/twitter_utils.py b/twitter/twitter_utils.py index 1e7d60b3..91e1a510 100644 --- a/twitter/twitter_utils.py +++ b/twitter/twitter_utils.py @@ -20,6 +20,9 @@ if sys.version_info < (3,): range = xrange +if sys.version_info > (3,): + unicode = str + CHAR_RANGES = [ range(0, 4351), range(8192, 8205), From 9b097e0c1a33b05db0ab6bd458a84985c109830c Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sat, 24 Feb 2018 19:05:42 -0500 Subject: [PATCH 091/177] fix lint --- twitter/api.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index e614bc72..f153cd7e 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -37,11 +37,9 @@ try: # python 3 from urllib.parse import urlparse, urlunparse, urlencode, quote_plus - from urllib.request import urlopen from urllib.request import __version__ as urllib_version except ImportError: from urlparse import urlparse, urlunparse - from urllib2 import urlopen from urllib import urlencode, quote_plus from urllib import __version__ as urllib_version @@ -1445,14 +1443,14 @@ def _TweetTextWrap(self, if len(words) == 1 and not is_url(words[0]): if len(words[0]) > CHARACTER_LIMIT: - raise TwitterError({"message": "Unable to split status into tweetable parts. Word was: {0}/{1}".format(len(words[0]), char_lim)}) + raise TwitterError("Unable to split status into tweetable parts. Word was: {0}/{1}".format(len(words[0]), char_lim)) else: tweets.append(words[0]) return tweets for word in words: if len(word) > char_lim: - raise TwitterError({"message": "Unable to split status into tweetable parts. Word was: {0}/{1}".format(len(word), char_lim)}) + raise TwitterError("Unable to split status into tweetable parts. Word was: {0}/{1}".format(len(word), char_lim)) new_len = line_length if is_url(word): @@ -1569,8 +1567,13 @@ def GetUserRetweets(self, Returns: A sequence of twitter.Status instances, one for each message up to count """ - return self.GetUserTimeline(since_id=since_id, count=count, max_id=max_id, trim_user=trim_user, - exclude_replies=True, include_rts=True) + return self.GetUserTimeline( + since_id=since_id, + count=count, + max_id=max_id, + trim_user=trim_user, + exclude_replies=True, + include_rts=True) def GetReplies(self, since_id=None, @@ -4808,10 +4811,10 @@ def _BuildUrl(self, url, path_elements=None, extra_params=None): # Add any additional path elements to the path if path_elements: # Filter out the path elements that have a value of None - p = [i for i in path_elements if i] + filtered_elements = [i for i in path_elements if i] if not path.endswith('/'): path += '/' - path += '/'.join(p) + path += '/'.join(filtered_elements) # Add any additional query parameters to the query string if extra_params and len(extra_params) > 0: From b9442e27730f876cf81a63e8f69a4af5358408b4 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Fri, 2 Mar 2018 07:48:10 -0500 Subject: [PATCH 092/177] fix documentation for UsersLookup; close #549 --- twitter/api.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index f153cd7e..4f57b6e4 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -2786,7 +2786,7 @@ def UsersLookup(self, Args: user_id (int, list, optional): A list of user_ids to retrieve extended information. - screen_name (str, optional): + screen_name (str, list, optional): A list of screen_names to retrieve extended information. users (list, optional): A list of twitter.User objects to retrieve extended information. @@ -3232,7 +3232,7 @@ def LookupFriendship(self, parameters = {} if user_id: - if isinstance(user_id, list) or isinstance(user_id, tuple): + if isinstance(user_id, (list, tuple)): uids = list() for user in user_id: if isinstance(user, User): @@ -3246,7 +3246,7 @@ def LookupFriendship(self, else: parameters['user_id'] = enf_type('user_id', int, user_id) if screen_name: - if isinstance(screen_name, list) or isinstance(screen_name, tuple): + if isinstance(screen_name, (list, tuple)): sn_list = list() for user in screen_name: if isinstance(user, User): @@ -3260,8 +3260,7 @@ def LookupFriendship(self, else: parameters['screen_name'] = enf_type('screen_name', str, screen_name) if not user_id and not screen_name: - raise TwitterError( - "Specify at least one of user_id or screen_name.") + raise TwitterError("Specify at least one of user_id or screen_name.") resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) From f80a8935bc603d4fd13b6e637124310f51107f7e Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Mon, 5 Mar 2018 07:16:37 -0500 Subject: [PATCH 093/177] fix issue with utf8 for encoding url params adds tests for in/out friendships --- requirements.testing.txt | 2 ++ testdata/get_incoming_friendships.json | 1 + testdata/get_outgoing_friendships.json | 1 + tests/test_api_30.py | 21 +++++++++++++++-- tests/test_unicode.py | 32 +++++++++++++++----------- twitter/api.py | 8 ++++++- 6 files changed, 48 insertions(+), 17 deletions(-) create mode 100644 testdata/get_incoming_friendships.json create mode 100644 testdata/get_outgoing_friendships.json diff --git a/requirements.testing.txt b/requirements.testing.txt index 595062af..a4a493ed 100644 --- a/requirements.testing.txt +++ b/requirements.testing.txt @@ -16,3 +16,5 @@ check-manifest tox tox-pyenv pycodestyle + +hypothesis diff --git a/testdata/get_incoming_friendships.json b/testdata/get_incoming_friendships.json new file mode 100644 index 00000000..2af04e95 --- /dev/null +++ b/testdata/get_incoming_friendships.json @@ -0,0 +1 @@ +{"previous_cursor_str": "0", "next_cursor": 0, "previous_cursor": 0, "ids": [12], "next_cursor_str": "0"} diff --git a/testdata/get_outgoing_friendships.json b/testdata/get_outgoing_friendships.json new file mode 100644 index 00000000..2af04e95 --- /dev/null +++ b/testdata/get_outgoing_friendships.json @@ -0,0 +1 @@ +{"previous_cursor_str": "0", "next_cursor": 0, "previous_cursor": 0, "ids": [12], "next_cursor_str": "0"} diff --git a/tests/test_api_30.py b/tests/test_api_30.py index 9b4d75f0..75388312 100644 --- a/tests/test_api_30.py +++ b/tests/test_api_30.py @@ -580,7 +580,7 @@ def testGetFavorites(self): resp_data = f.read() responses.add(GET, DEFAULT_URL, body=resp_data) - resp = self.api.GetFavorites() + resp = self.api.GetFavorites(user_id=12, count=1, since_id=10, max_id=200) self.assertTrue(type(resp) is list) fav = resp[0] self.assertEqual(fav.id, 677180133447372800) @@ -1294,7 +1294,6 @@ def testGetStatuses(self): resp = self.api.GetStatuses(status_ids) self.assertTrue(type(resp) is list) - print(resp) self.assertEqual(set(respitem.id for respitem in resp), set(status_ids)) self.assertFalse(resp != resp) @@ -1736,3 +1735,21 @@ def test_get_retweets_of_me(self): self.assertRaises( twitter.TwitterError, lambda: self.api.GetRetweetsOfMe(count='asdf')) + + @responses.activate + def test_incoming_friendships(self): + with open('testdata/get_incoming_friendships.json') as f: + responses.add(GET, DEFAULT_URL, f.read()) + resp = self.api.IncomingFriendship(cursor=1, stringify_ids=True) + assert resp + assert isinstance(resp, list) + assert resp[0] == 12 + + @responses.activate + def test_outgoing_friendships(self): + with open('testdata/get_outgoing_friendships.json') as f: + responses.add(GET, DEFAULT_URL, f.read()) + resp = self.api.OutgoingFriendship(cursor=1, stringify_ids=True) + assert resp + assert isinstance(resp, list) + assert resp[0] == 12 diff --git a/tests/test_unicode.py b/tests/test_unicode.py index 94776f7e..5d10aa39 100644 --- a/tests/test_unicode.py +++ b/tests/test_unicode.py @@ -8,6 +8,10 @@ import warnings import responses + +from hypothesis import given, example +from hypothesis import strategies as st + import twitter warnings.filterwarnings('ignore', category=DeprecationWarning) @@ -41,9 +45,11 @@ def tearDown(self): sys.stderr = self._stderr pass - def test_trend_repr1(self): + @given(text=st.text()) + @example(text="#نفسك_تبيع_ايه_للسعوديه") + def test_trend_repr1(self, text): trend = twitter.Trend( - name="#نفسك_تبيع_ايه_للسعوديه", + name=text, url="http://twitter.com/search?q=%23ChangeAConsonantSpoilAMovie", timestamp='whatever') try: @@ -51,9 +57,10 @@ def test_trend_repr1(self): except Exception as e: self.fail(e) - def test_trend_repr2(self): + @given(text=st.text()) + @example(text="#N\u00e3oD\u00eaUnfTagueirosSdv") + def test_trend_repr2(self, text): trend = twitter.Trend( - name="#N\u00e3oD\u00eaUnfTagueirosSdv", url='http://twitter.com/search?q=%23ChangeAConsonantSpoilAMovie', timestamp='whatever') @@ -72,23 +79,25 @@ def test_trend_repr3(self): resp = self.api.GetTrendsCurrent() for r in resp: - print(r.__str__()) try: r.__repr__() except Exception as e: self.fail(e) + @given(text=st.text()) @responses.activate - def test_unicode_get_search(self): + def test_unicode_get_search(self, text): responses.add(responses.GET, DEFAULT_URL, body=b'{}', status=200) try: - self.api.GetSearch(term="#ابشري_قابوس_جاء") + self.api.GetSearch(term=text) except Exception as e: self.fail(e) - def test_constructed_status(self): + @given(text=st.text()) + @example(text='可以倒着飞的飞机') + def test_constructed_status(self, text): s = twitter.Status() - s.text = "可以倒着飞的飞机" + s.text = text s.created_at = "016-02-13T23:00:00" s.screen_name = "himawari8bot" s.id = 1 @@ -101,8 +110,3 @@ def test_post_with_bytes_string(self): status = 'x' length = twitter.twitter_utils.calc_expected_status_length(status) assert length == 1 - - -if __name__ == "__main__": - suite = unittest.TestLoader().loadTestsFromTestCase(ApiTest) - unittest.TextTestRunner(verbosity=2).run(suite) diff --git a/twitter/api.py b/twitter/api.py index 4f57b6e4..798b89d0 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -4868,7 +4868,13 @@ def _EncodeParameters(parameters): if not isinstance(parameters, dict): raise TwitterError("`parameters` must be a dict.") else: - return urlencode(dict((k, v) for k, v in parameters.items() if v is not None)) + params = dict() + for k, v in parameters.items(): + if v is not None: + if getattr(v, 'encode', None): + v = v.encode('utf8') + params.update({k: v}) + return urlencode(params) def _ParseAndCheckTwitter(self, json_data): """Try and parse the JSON returned from Twitter and return From b3ae76334e64f0e31e82ce09af18847bdcbd1ee0 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Wed, 7 Mar 2018 10:16:16 -0500 Subject: [PATCH 094/177] add tests for updating profile --- testdata/update_profile.json | 1 + tests/test_api_30.py | 15 ++++++++++++ twitter/api.py | 46 +++++++++++++----------------------- 3 files changed, 33 insertions(+), 29 deletions(-) create mode 100644 testdata/update_profile.json diff --git a/testdata/update_profile.json b/testdata/update_profile.json new file mode 100644 index 00000000..c404cdb9 --- /dev/null +++ b/testdata/update_profile.json @@ -0,0 +1 @@ +{"follow_request_sent": null, "profile_image_url_https": "https://pbs.twimg.com/profile_images/968861535127949312/v7ZnBn4I_normal.jpg", "location": "philly", "created_at": "Sun Sep 11 23:49:28 +0000 2011", "profile_banner_url": "https://pbs.twimg.com/profile_banners/372018022/1475799101", "has_extended_profile": false, "is_translation_enabled": false, "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "description": "these people have addresses | #botally", "statuses_count": 4083, "profile_sidebar_fill_color": "000000", "following": null, "profile_location": null, "lang": "en", "default_profile_image": false, "verified": false, "notifications": null, "profile_image_url": "http://pbs.twimg.com/profile_images/968861535127949312/v7ZnBn4I_normal.jpg", "geo_enabled": false, "favourites_count": 20700, "profile_link_color": "EE3355", "utc_offset": -18000, "protected": true, "profile_sidebar_border_color": "000000", "friends_count": 497, "screen_name": "__jcbl__", "profile_background_color": "FFFFFF", "url": "https://t.co/wtg3XyA3vL", "id": 372018022, "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "iseverythingstilltheworst.com", "expanded_url": "http://iseverythingstilltheworst.com", "url": "https://t.co/wtg3XyA3vL", "indices": [0, 23]}]}}, "followers_count": 189, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "profile_use_background_image": false, "contributors_enabled": false, "translator_type": "none", "default_profile": false, "profile_background_tile": false, "name": "jeremy", "id_str": "372018022", "listed_count": 6, "profile_text_color": "000000", "is_translator": false, "time_zone": "Eastern Time (US & Canada)"} \ No newline at end of file diff --git a/tests/test_api_30.py b/tests/test_api_30.py index 75388312..c12b0662 100644 --- a/tests/test_api_30.py +++ b/tests/test_api_30.py @@ -1753,3 +1753,18 @@ def test_outgoing_friendships(self): assert resp assert isinstance(resp, list) assert resp[0] == 12 + + @responses.activate + def test_update_profile(self): + with open('testdata/update_profile.json') as f: + responses.add(POST, DEFAULT_URL, f.read()) + resp = self.api.UpdateProfile( + name='jeremy', + location='philly', + profileURL='example.com', + description='test', + profile_link_color='#e35', + include_entities=True, + skip_status=True) + assert resp + assert isinstance(resp, twitter.User) diff --git a/twitter/api.py b/twitter/api.py index 798b89d0..9ba26acf 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -4373,49 +4373,37 @@ def UpdateProfile(self, """Update's the authenticated user's profile data. Args: - name: + name (str, optional): Full name associated with the profile. - Maximum of 20 characters. [Optional] - profileURL: + profileURL (str, optional): URL associated with the profile. Will be prepended with "http://" if not present. - Maximum of 100 characters. [Optional] - location: + location (str, optional): The city or country describing where the user of the account is located. The contents are not normalized or geocoded in any way. - Maximum of 30 characters. [Optional] - description: + description (str, optional): A description of the user owning the account. - Maximum of 160 characters. [Optional] - profile_link_color: + profile_link_color (str, optional): hex value of profile color theme. formated without '#' or '0x'. Ex: FF00FF - [Optional] - include_entities: + include_entities (bool, optional): The entities node will be omitted when set to False. - [Optional] - skip_status: + skip_status (bool, optional): When set to either True, t or 1 then statuses will not be included - in the returned user objects. [Optional] + in the returned user objects. Returns: A twitter.User instance representing the modified user. """ url = '%s/account/update_profile.json' % (self.base_url) - data = {} - if name: - data['name'] = name - if profileURL: - data['url'] = profileURL - if location: - data['location'] = location - if description: - data['description'] = description - if profile_link_color: - data['profile_link_color'] = profile_link_color - if include_entities: - data['include_entities'] = include_entities - if skip_status: - data['skip_status'] = skip_status + data = { + 'name': name, + 'url': profileURL, + 'location': location, + 'description': description, + 'profile_link_color': profile_link_color, + 'include_entities': include_entities, + 'skip_status': skip_status, + } resp = self._RequestUrl(url, 'POST', data=data) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) From 2bf461ffdf276d05c6d0933621cddfacd02bf204 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Thu, 8 Mar 2018 07:18:30 -0500 Subject: [PATCH 095/177] use Response.content to perform automatic decoding for media downloads --- twitter/twitter_utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/twitter/twitter_utils.py b/twitter/twitter_utils.py index 91e1a510..e68804cc 100644 --- a/twitter/twitter_utils.py +++ b/twitter/twitter_utils.py @@ -211,7 +211,8 @@ def is_url(text): def http_to_file(http): data_file = NamedTemporaryFile() req = requests.get(http, stream=True) - data_file.write(req.raw.data) + for chunk in req.iter_content(chunk_size=1024 * 1024): + data_file.write(chunk) return data_file From d3ab207a43fe52051b9fd524a512fcfe26b816d1 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sat, 10 Mar 2018 08:47:32 -0500 Subject: [PATCH 096/177] add __init__ file to test folder change allows running of pytest without going through setup.py --- tests/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/__init__.py diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 00000000..e69de29b From 564e6bb620b20d09d937917e3094bcdb2c82c812 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sat, 10 Mar 2018 09:55:02 -0500 Subject: [PATCH 097/177] fix issue with streaming tweets loading extended_tweet data assigns each node in the extended_tweets dict to the top-level node tweet[extended_tweet][entities] > tweet[entities] for example. this fixes an issue where tweets were not being fully hydrated from the streaming apis. close issue #506; close issue #491 --- testdata/streaming/lines.json | 72 +++++++++++++++++++ .../streaming/streaming_extended_tweet.json | 1 + tests/test_streaming.py | 29 ++++++++ twitter/models.py | 5 ++ 4 files changed, 107 insertions(+) create mode 100644 testdata/streaming/lines.json create mode 100644 testdata/streaming/streaming_extended_tweet.json create mode 100644 tests/test_streaming.py diff --git a/testdata/streaming/lines.json b/testdata/streaming/lines.json new file mode 100644 index 00000000..e4a29c7d --- /dev/null +++ b/testdata/streaming/lines.json @@ -0,0 +1,72 @@ +{"reply_count": 0, "timestamp_ms": "1520690595660", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 19678, "geo_enabled": false, "utc_offset": 10800, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "395453797", "notifications": null, "followers_count": 910, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": "Riyadh", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 2, "profile_text_color": "333333", "translator_type": "none", "name": "\u0639\u0644\u064a \u062f\u062e\u064a\u062e \u0627\u0644\u063a\u0627\u0645\u062f\u064a", "default_profile_image": false, "friends_count": 1065, "verified": false, "default_profile": true, "favourites_count": 326, "id": 395453797, "profile_image_url": "http://pbs.twimg.com/profile_images/1610529504/pyvTQcDN_normal", "profile_background_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/1610529504/pyvTQcDN_normal", "profile_background_tile": false, "screen_name": "Ali_Dokhikh", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/395453797/1372937106", "created_at": "Fri Oct 21 17:47:08 +0000 2011", "contributors_enabled": false, "description": "\u200f\u0646\u0641\u0633\u064a \u0644\u0627 \u062a\u062c\u0645\u062f \u0641\u064a \u062d\u0642 \u0648\u0644\u0627 \u062a\u0630\u0648\u0628 \u0641\u064a \u0628\u0627\u0637\u0644 \u0648\u0627\u0644\u062d\u0645\u062f \u0644\u0644\u0647 \u060c \u0644\u0627 \u0623\u0646\u062a\u0645\u064a \u0644\u0623\u064a \u062d\u0632\u0628 \u060c \u0648\u0623\u0643\u0631\u0647 \u0627\u0644\u062a\u0635\u0646\u064a\u0641 \u0648\u0627\u0644\u062a\u0639\u0635\u0628 \u0627\u0644\u0623\u0639\u0645\u0649 .", "location": "\u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 - \u0623\u0628\u0647\u0627 ", "lang": "ar"}, "id_str": "972472958596866048", "entities": {"urls": [{"url": "https://t.co/A9OnSzGZIO", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472958596866048"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "\u064a\u0627 \u0623\u064a\u0647\u0627 \u0627\u0644\u0630\u064a\u0646 \u0622\u0645\u0646\u0648\u0627 \u0644\u0627 \u062a\u0642\u062f\u0645\u0648\u0627 \u0628\u064a\u0646 \u064a\u062f\u064a \u0627\u0644\u0644\u0640\u0647 \u0648\u0631\u0633\u0648\u0644\u0647 \u06d6 \u0648\u0627\u062a\u0642\u0648\u0627 \u0627\u0644\u0644\u0640\u0647 \u06da \u0625\u0646 \u0627\u0644\u0644\u0640\u0647 \u0633\u0645\u064a\u0639 \u0639\u0644\u064a\u0645 \ufd3f\u0661\ufd3e\u064a\u0627 \u0623\u064a\u0647\u0627 \u0627\u0644\u0630\u064a\u0646 \u0622\u0645\u0646\u0648\u0627 \u0644\u0627 \u062a\u0631\u2026 https://t.co/A9OnSzGZIO", "source": " \u062a\u0648\u064a\u062a \u0642\u0631\u0622\u0646", "created_at": "Sat Mar 10 14:03:15 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 237], "entities": {"urls": [], "hashtags": [{"indices": [231, 237], "text": "Quran"}], "user_mentions": [], "symbols": []}, "full_text": "\u064a\u0627 \u0623\u064a\u0647\u0627 \u0627\u0644\u0630\u064a\u0646 \u0622\u0645\u0646\u0648\u0627 \u0644\u0627 \u062a\u0642\u062f\u0645\u0648\u0627 \u0628\u064a\u0646 \u064a\u062f\u064a \u0627\u0644\u0644\u0640\u0647 \u0648\u0631\u0633\u0648\u0644\u0647 \u06d6 \u0648\u0627\u062a\u0642\u0648\u0627 \u0627\u0644\u0644\u0640\u0647 \u06da \u0625\u0646 \u0627\u0644\u0644\u0640\u0647 \u0633\u0645\u064a\u0639 \u0639\u0644\u064a\u0645 \ufd3f\u0661\ufd3e\u064a\u0627 \u0623\u064a\u0647\u0627 \u0627\u0644\u0630\u064a\u0646 \u0622\u0645\u0646\u0648\u0627 \u0644\u0627 \u062a\u0631\u0641\u0639\u0648\u0627 \u0623\u0635\u0648\u0627\u062a\u0643\u0645 \u0641\u0648\u0642 \u0635\u0648\u062a \u0627\u0644\u0646\u0628\u064a \u0648\u0644\u0627 \u062a\u062c\u0647\u0631\u0648\u0627 \u0644\u0647 \u0628\u0627\u0644\u0642\u0648\u0644 \u0643\u062c\u0647\u0631 \u0628\u0639\u0636\u0643\u0645 \u0644\u0628\u0639\u0636 \u0623\u0646 \u062a\u062d\u0628\u0637 \u0623\u0639\u0645\u0627\u0644\u0643\u0645 \u0648\u0623\u0646\u062a\u0645 \u0644\u0627 \u062a\u0634\u0639\u0631\u0648\u0646 \ufd3f\u0662\ufd3e -- \u0633\u0648\u0631\u0629 \u0627\u0644\u062d\u062c\u0631\u0627\u062a\u00a0#Quran"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972472958596866048, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "ar"} +{"reply_count": 0, "timestamp_ms": "1520690595657", "favorited": false, "in_reply_to_user_id_str": "703332370968141825", "user": {"statuses_count": 6614, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "857267033603530752", "notifications": null, "followers_count": 19, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "333333", "translator_type": "none", "name": "''", "default_profile_image": false, "friends_count": 6, "verified": false, "default_profile": true, "favourites_count": 3, "id": 857267033603530752, "profile_image_url": "http://pbs.twimg.com/profile_images/944194543011926016/_JWog-1K_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/944194543011926016/_JWog-1K_normal.jpg", "profile_background_tile": false, "screen_name": "_jalanazi", "is_translator": false, "created_at": "Wed Apr 26 16:16:02 +0000 2017", "contributors_enabled": false, "description": null, "location": null, "lang": "ar"}, "id_str": "972472958584320000", "entities": {"urls": [{"url": "https://t.co/eiqgduJTPI", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472958584320000"}], "hashtags": [], "user_mentions": [{"name": "\u0627\u0644\u0632\u0639\u064a\u0645 \u0627\u0644\u0631\u0627\u0642\u064a \u0627\u0644\u0643\u0628\u064a\u0631", "indices": [0, 12], "id": 703332370968141825, "screen_name": "alahli_omar", "id_str": "703332370968141825"}, {"name": "\u0645\u0648\u0633\u0649 \u0627\u0644\u0639\u0645\u0631\u064a", "indices": [13, 27], "id": 769878637524946944, "screen_name": "mousa_alamrii", "id_str": "769878637524946944"}], "symbols": []}, "text": "@alahli_omar @mousa_alamrii \u062d\u0633\u0628\u064a \u0627\u0644\u0644\u0647 \u0639\u0644\u064a\u0647 \u0627\u0644\u0644\u0647 \u0644\u0627\u064a\u0648\u0641\u0642\u0647 \u0648\u0627\u0646 \u0634\u0627\u0621\u0627\u0644\u0644\u0647 \u0646\u0648\u0627\u0641 \u0628\u0646 \u0633\u0639\u062f \u064a\u0644\u062d\u0642 \u062f\u064a\u0627\u0632\u0647\u0648 \u0648\u0627\u0644\u0645\u0641\u0631\u062c \u0627\u0644\u0645\u062a\u0641\u0631\u062c \u0627\u0644\u0645\u0635\u062e\u0631\u0647\u2026 https://t.co/eiqgduJTPI", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 14:03:15 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972472543960555520, "extended_tweet": {"display_text_range": [28, 168], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "\u0627\u0644\u0632\u0639\u064a\u0645 \u0627\u0644\u0631\u0627\u0642\u064a \u0627\u0644\u0643\u0628\u064a\u0631", "indices": [0, 12], "id": 703332370968141825, "screen_name": "alahli_omar", "id_str": "703332370968141825"}, {"name": "\u0645\u0648\u0633\u0649 \u0627\u0644\u0639\u0645\u0631\u064a", "indices": [13, 27], "id": 769878637524946944, "screen_name": "mousa_alamrii", "id_str": "769878637524946944"}], "symbols": []}, "full_text": "@alahli_omar @mousa_alamrii \u062d\u0633\u0628\u064a \u0627\u0644\u0644\u0647 \u0639\u0644\u064a\u0647 \u0627\u0644\u0644\u0647 \u0644\u0627\u064a\u0648\u0641\u0642\u0647 \u0648\u0627\u0646 \u0634\u0627\u0621\u0627\u0644\u0644\u0647 \u0646\u0648\u0627\u0641 \u0628\u0646 \u0633\u0639\u062f \u064a\u0644\u062d\u0642 \u062f\u064a\u0627\u0632\u0647\u0648 \u0648\u0627\u0644\u0645\u0641\u0631\u062c \u0627\u0644\u0645\u062a\u0641\u0631\u062c \u0627\u0644\u0645\u0635\u062e\u0631\u0647 \u0627\u0644\u0647\u0644\u0627\u0644 \u0627\u0643\u0628\u0631 \u0645\u0646 \u0648\u0627\u062d\u062f \u0645\u0627\u0644\u0647 \u0631\u0623\u064a \u0648\u064a\u062a\u062d\u0643\u0645 \u0641\u064a\u0647 \u0628\u0644\u0648\u062a\u0648 \u0639 \u0643\u064a\u0641\u0647"}, "in_reply_to_status_id_str": "972472543960555520", "in_reply_to_user_id": 703332370968141825, "is_quote_status": false, "filter_level": "low", "id": 972472958584320000, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "alahli_omar", "display_text_range": [28, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "ar"} +{"reply_count": 0, "timestamp_ms": "1520690595664", "favorited": false, "in_reply_to_user_id_str": "457311891", "user": {"statuses_count": 4751, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "882633903915253764", "notifications": null, "followers_count": 550, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "333333", "translator_type": "none", "name": "gitaa \u2022 I PROMISE YOU", "default_profile_image": false, "friends_count": 618, "verified": false, "default_profile": true, "favourites_count": 833, "id": 882633903915253764, "profile_image_url": "http://pbs.twimg.com/profile_images/969378469925699584/YH-ISatR_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/969378469925699584/YH-ISatR_normal.jpg", "profile_background_tile": false, "screen_name": "todayniel", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/882633903915253764/1511252030", "created_at": "Wed Jul 05 16:14:56 +0000 2017", "contributors_enabled": false, "description": "@realdefdanik\n\ub315\ub315\uc774 \u2661", "location": "Seoul, Republic of Korea", "lang": "en"}, "id_str": "972472958613508096", "entities": {"urls": [{"url": "https://t.co/Ezuq3erXpy", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472958613508096"}], "hashtags": [], "user_mentions": [{"name": "niz\ud83d\udc33", "indices": [0, 9], "id": 457311891, "screen_name": "catsniel", "id_str": "457311891"}], "symbols": []}, "text": "@catsniel Iya daniel banyak bat dah istrinya . Mau ngelirik yang lain tapi ttep gabisa . Mentok guanlin doang . Gak\u2026 https://t.co/Ezuq3erXpy", "source": "Twitter for Android", "created_at": "Sat Mar 10 14:03:15 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972472112077094912, "extended_tweet": {"display_text_range": [10, 156], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "niz\ud83d\udc33", "indices": [0, 9], "id": 457311891, "screen_name": "catsniel", "id_str": "457311891"}], "symbols": []}, "full_text": "@catsniel Iya daniel banyak bat dah istrinya . Mau ngelirik yang lain tapi ttep gabisa . Mentok guanlin doang . Gakuat di merch w kalo nge stand daniel wkkw"}, "in_reply_to_status_id_str": "972472112077094912", "in_reply_to_user_id": 457311891, "is_quote_status": false, "filter_level": "low", "id": 972472958613508096, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "catsniel", "display_text_range": [10, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "in"} +{"reply_count": 0, "in_reply_to_status_id": null, "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 71962, "geo_enabled": false, "utc_offset": 0, "profile_sidebar_border_color": "000000", "profile_link_color": "0084B4", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "3630919033", "notifications": null, "followers_count": 1997, "url": "http://gillinghamdebate.freeforums.org/", "profile_sidebar_fill_color": "000000", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": "UTC", "profile_use_background_image": false, "protected": false, "following": null, "listed_count": 20, "profile_text_color": "000000", "translator_type": "none", "name": "Gillingham Debate", "default_profile_image": false, "friends_count": 4920, "verified": false, "default_profile": false, "favourites_count": 49687, "id": 3630919033, "profile_image_url": "http://pbs.twimg.com/profile_images/718804888117977089/BTszZpBJ_normal.jpg", "profile_background_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/718804888117977089/BTszZpBJ_normal.jpg", "profile_background_tile": false, "screen_name": "GillsDebate", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/3630919033/1503914822", "created_at": "Sun Sep 20 21:28:08 +0000 2015", "contributors_enabled": false, "description": "Gillingham Debate - Gillingham FC fans forum with a prediction league. \nSnapchat: gillsdebate\nBlog: https://www.tumblr.com/blog/gillsdebate", "location": null, "lang": "en"}, "id_str": "972472958601056256", "entities": {"urls": [{"url": "https://t.co/Cp6Yq921c2", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472958601056256"}], "hashtags": [{"indices": [0, 6], "text": "Gills"}], "user_mentions": [], "symbols": []}, "text": "#Gills make 2 changes to the starting 11 for today's game with Wagstaff and Reilly coming in for Ogilvie and Nugent\u2026 https://t.co/Cp6Yq921c2", "source": "Twitter for Android", "place": null, "created_at": "Sat Mar 10 14:03:15 +0000 2018", "retweeted": false, "quoted_status_id_str": "972472152447438859", "extended_tweet": {"display_text_range": [0, 204], "entities": {"urls": [{"url": "https://t.co/eUgpWqnLls", "indices": [205, 228], "display_url": "twitter.com/TheGillsFC/sta\u2026", "expanded_url": "https://twitter.com/TheGillsFC/status/972472152447438859"}], "hashtags": [{"indices": [0, 6], "text": "Gills"}], "user_mentions": [], "symbols": []}, "full_text": "#Gills make 2 changes to the starting 11 for today's game with Wagstaff and Reilly coming in for Ogilvie and Nugent. Ogilvie is not in the squad for this afternoon's game (he was ill earlier in the week). https://t.co/eUgpWqnLls"}, "in_reply_to_status_id_str": null, "filter_level": "low", "in_reply_to_user_id": null, "is_quote_status": true, "quoted_status": {"reply_count": 1, "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 39278, "geo_enabled": true, "utc_offset": 0, "profile_sidebar_border_color": "000000", "profile_link_color": "89C9FA", "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/378800000045645567/515bf2b1ffeff6dd7bbfca46b3cf3f1d.jpeg", "id_str": "399314591", "notifications": null, "followers_count": 62316, "url": "http://www.gillinghamfootballclub.com", "profile_sidebar_fill_color": "DDFFCC", "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/378800000045645567/515bf2b1ffeff6dd7bbfca46b3cf3f1d.jpeg", "follow_request_sent": null, "time_zone": "London", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 529, "profile_text_color": "333333", "translator_type": "none", "name": "Gillingham FC", "default_profile_image": false, "friends_count": 606, "verified": true, "default_profile": false, "favourites_count": 3216, "id": 399314591, "profile_image_url": "http://pbs.twimg.com/profile_images/930487059999023105/B41q_5DH_normal.jpg", "profile_background_color": "000505", "profile_image_url_https": "https://pbs.twimg.com/profile_images/930487059999023105/B41q_5DH_normal.jpg", "profile_background_tile": true, "screen_name": "TheGillsFC", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/399314591/1469802637", "created_at": "Thu Oct 27 09:45:12 +0000 2011", "contributors_enabled": false, "description": "The official Twitter account for Kent's only @EFL club, bringing news and updates about all things Gills.", "location": "Gillingham Football Club", "lang": "en"}, "id_str": "972472152447438859", "entities": {"urls": [], "media": [{"url": "https://t.co/Ba5uZRXOfu", "id_str": "972471531107508225", "display_url": "pic.twitter.com/Ba5uZRXOfu", "media_url_https": "https://pbs.twimg.com/media/DX7ptIXX4AERf_z.png", "type": "photo", "indices": [79, 102], "id": 972471531107508225, "sizes": {"medium": {"resize": "fit", "w": 1200, "h": 600}, "thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 1600, "h": 800}, "small": {"resize": "fit", "w": 680, "h": 340}}, "media_url": "http://pbs.twimg.com/media/DX7ptIXX4AERf_z.png", "expanded_url": "https://twitter.com/TheGillsFC/status/972472152447438859/photo/1"}], "hashtags": [{"indices": [24, 30], "text": "Gills"}], "user_mentions": [{"name": "Portsmouth FC", "indices": [47, 62], "id": 203096999, "screen_name": "officialpompey", "id_str": "203096999"}], "symbols": []}, "text": "BREAKING | Here is your #Gills team to take on @officialpompey this afternoon. https://t.co/Ba5uZRXOfu", "source": "TweetDeck", "created_at": "Sat Mar 10 14:00:03 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972472152447438859, "contributors": null, "retweet_count": 9, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 78], "possibly_sensitive": false, "favorite_count": 15, "place": null, "truncated": false, "geo": null, "quote_count": 1, "extended_entities": {"media": [{"url": "https://t.co/Ba5uZRXOfu", "id_str": "972471531107508225", "display_url": "pic.twitter.com/Ba5uZRXOfu", "media_url_https": "https://pbs.twimg.com/media/DX7ptIXX4AERf_z.png", "type": "photo", "indices": [79, 102], "id": 972471531107508225, "sizes": {"medium": {"resize": "fit", "w": 1200, "h": 600}, "thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 1600, "h": 800}, "small": {"resize": "fit", "w": 680, "h": 340}}, "media_url": "http://pbs.twimg.com/media/DX7ptIXX4AERf_z.png", "expanded_url": "https://twitter.com/TheGillsFC/status/972472152447438859/photo/1"}]}, "lang": "en"}, "id": 972472958601056256, "timestamp_ms": "1520690595661", "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 0, "quoted_status_id": 972472152447438859, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690595666", "favorited": false, "in_reply_to_user_id_str": "797879793182212097", "user": {"statuses_count": 3, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "972469654479364096", "notifications": null, "followers_count": 0, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "333333", "translator_type": "none", "name": "Ztei", "default_profile_image": false, "friends_count": 0, "verified": false, "default_profile": true, "favourites_count": 0, "id": 972469654479364096, "profile_image_url": "http://pbs.twimg.com/profile_images/972471271635251200/sbFLXQk-_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/972471271635251200/sbFLXQk-_normal.jpg", "profile_background_tile": false, "screen_name": "Stqi_", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/972469654479364096/1520690234", "created_at": "Sat Mar 10 13:50:08 +0000 2018", "contributors_enabled": false, "description": null, "location": null, "lang": "es"}, "id_str": "972472958621974528", "entities": {"urls": [{"url": "https://t.co/9AgwV4eS5i", "indices": [116, 139], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472958621974528"}], "hashtags": [], "user_mentions": [{"name": "FerniAlts", "indices": [0, 10], "id": 797879793182212097, "screen_name": "FerniAlts", "id_str": "797879793182212097"}, {"name": "MostAlts [6,7K] #Most", "indices": [12, 21], "id": 877993163419516928, "screen_name": "MostAlts", "id_str": "877993163419516928"}, {"name": "JohanAlts", "indices": [23, 34], "id": 875065555308380160, "screen_name": "Johan_Alts", "id_str": "875065555308380160"}, {"name": "ZuperAlts", "indices": [36, 46], "id": 914944193461702656, "screen_name": "ZuperAlts", "id_str": "914944193461702656"}, {"name": "\u2022MateoAlts\u2022", "indices": [48, 58], "id": 849386467449241604, "screen_name": "MateoAlts", "id_str": "849386467449241604"}, {"name": "\u00c4\u0324L\u0324\u0308\u00cb\u0324\u1e8c\u0324N\u0324\u0308V\u0324\u0308 [1.4k] #AlexNvLegit", "indices": [67, 82], "id": 925889113546469379, "screen_name": "AlexnavarroYT_", "id_str": "925889113546469379"}], "symbols": []}, "text": "@FerniAlts @MostAlts @Johan_Alts @ZuperAlts @MateoAlts El tal @AlexnavarroYT_ Miren Se hace llamar Legit Lmao\u2026 https://t.co/9AgwV4eS5i", "source": "Twitter Web Client", "created_at": "Sat Mar 10 14:03:15 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"extended_entities": {"media": [{"url": "https://t.co/OUzn1R2wuK", "id_str": "972472801436291073", "display_url": "pic.twitter.com/OUzn1R2wuK", "media_url_https": "https://pbs.twimg.com/media/DX7q3EtW0AEFi3h.jpg", "type": "photo", "indices": [122, 145], "id": 972472801436291073, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 675}, "large": {"resize": "fit", "w": 1366, "h": 768}, "small": {"resize": "fit", "w": 680, "h": 382}}, "media_url": "http://pbs.twimg.com/media/DX7q3EtW0AEFi3h.jpg", "expanded_url": "https://twitter.com/Stqi_/status/972472958621974528/photo/1"}]}, "display_text_range": [0, 121], "entities": {"urls": [], "media": [{"url": "https://t.co/OUzn1R2wuK", "id_str": "972472801436291073", "display_url": "pic.twitter.com/OUzn1R2wuK", "media_url_https": "https://pbs.twimg.com/media/DX7q3EtW0AEFi3h.jpg", "type": "photo", "indices": [122, 145], "id": 972472801436291073, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 675}, "large": {"resize": "fit", "w": 1366, "h": 768}, "small": {"resize": "fit", "w": 680, "h": 382}}, "media_url": "http://pbs.twimg.com/media/DX7q3EtW0AEFi3h.jpg", "expanded_url": "https://twitter.com/Stqi_/status/972472958621974528/photo/1"}], "hashtags": [], "user_mentions": [{"name": "FerniAlts", "indices": [0, 10], "id": 797879793182212097, "screen_name": "FerniAlts", "id_str": "797879793182212097"}, {"name": "MostAlts [6,7K] #Most", "indices": [12, 21], "id": 877993163419516928, "screen_name": "MostAlts", "id_str": "877993163419516928"}, {"name": "JohanAlts", "indices": [23, 34], "id": 875065555308380160, "screen_name": "Johan_Alts", "id_str": "875065555308380160"}, {"name": "ZuperAlts", "indices": [36, 46], "id": 914944193461702656, "screen_name": "ZuperAlts", "id_str": "914944193461702656"}, {"name": "\u2022MateoAlts\u2022", "indices": [48, 58], "id": 849386467449241604, "screen_name": "MateoAlts", "id_str": "849386467449241604"}, {"name": "\u00c4\u0324L\u0324\u0308\u00cb\u0324\u1e8c\u0324N\u0324\u0308V\u0324\u0308 [1.4k] #AlexNvLegit", "indices": [67, 82], "id": 925889113546469379, "screen_name": "AlexnavarroYT_", "id_str": "925889113546469379"}, {"name": "MeGustaLaMagia \ud83c\udf40", "indices": [115, 121], "id": 1567019317, "screen_name": "mqgia", "id_str": "1567019317"}], "symbols": []}, "full_text": "@FerniAlts @MostAlts @Johan_Alts @ZuperAlts @MateoAlts El tal @AlexnavarroYT_ Miren Se hace llamar Legit Lmao @mqgia https://t.co/OUzn1R2wuK"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": 797879793182212097, "is_quote_status": false, "filter_level": "low", "id": 972472958621974528, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "FerniAlts", "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "es"} +{"reply_count": 0, "timestamp_ms": "1520690596658", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 269227, "geo_enabled": true, "utc_offset": null, "profile_sidebar_border_color": "000000", "profile_link_color": "FFCC4D", "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/661433718175731712/togaPBli.png", "id_str": "2168508404", "notifications": null, "followers_count": 434, "url": "http://ncolofic.blogspot.com", "profile_sidebar_fill_color": "000000", "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/661433718175731712/togaPBli.png", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 19, "profile_text_color": "000000", "translator_type": "none", "name": "\ub178\ub780\uacf0\uc774\u0295\u2022\u1d25\u2022\u0294\u2661", "default_profile_image": false, "friends_count": 895, "verified": false, "default_profile": false, "favourites_count": 25938, "id": 2168508404, "profile_image_url": "http://pbs.twimg.com/profile_images/970343693239517184/YTpxt89j_normal.jpg", "profile_background_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/970343693239517184/YTpxt89j_normal.jpg", "profile_background_tile": true, "screen_name": "kumaaom", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/2168508404/1519746125", "created_at": "Fri Nov 01 14:13:01 +0000 2013", "contributors_enabled": false, "description": "\ud83e\udd68 = 96 \u00f7 2^2 - 2x7 = 10", "location": null, "lang": "th"}, "id_str": "972472962782818304", "entities": {"urls": [{"url": "https://t.co/4xylMwjR3m", "indices": [71, 94], "display_url": "youtube.com.convey.pro/l/rlR2P8q", "expanded_url": "http://www.youtube.com.convey.pro/l/rlR2P8q"}, {"url": "https://t.co/SQgPvEmMPE", "indices": [116, 139], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472962782818304"}], "hashtags": [{"indices": [97, 104], "text": "LISTEN"}, {"indices": [105, 108], "text": "\uc218\ud638"}, {"indices": [109, 114], "text": "SUHO"}], "user_mentions": [], "symbols": []}, "text": "[MYSTIC LISTEN] \uc7a5\uc7ac\uc778 X EXO \uc218\ud638(SUHO) '\uc2e4\ub840\ud574\ub3c4 \ub420\uae4c\uc694(Do you have a moment)' MV\nhttps://t.co/4xylMwjR3m\n-\n#LISTEN #\uc218\ud638 #SUHO\u2026 https://t.co/SQgPvEmMPE", "source": "Convey: Make it post for you", "created_at": "Sat Mar 10 14:03:16 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 161], "entities": {"urls": [{"url": "https://t.co/4xylMwjR3m", "indices": [71, 94], "display_url": "youtube.com.convey.pro/l/rlR2P8q", "expanded_url": "http://www.youtube.com.convey.pro/l/rlR2P8q"}], "hashtags": [{"indices": [97, 104], "text": "LISTEN"}, {"indices": [105, 108], "text": "\uc218\ud638"}, {"indices": [109, 114], "text": "SUHO"}, {"indices": [115, 123], "text": "\uc2e4\ub840\ud574\ub3c4\ub420\uae4c\uc694"}, {"indices": [124, 127], "text": "\uc5d1\uc18c"}, {"indices": [128, 132], "text": "EXO"}, {"indices": [133, 137], "text": "\uc7a5\uc7ac\uc778"}, {"indices": [141, 149], "text": "9194bro"}], "user_mentions": [{"name": "Convey", "indices": [154, 161], "id": 750282011160481792, "screen_name": "c0nvey", "id_str": "750282011160481792"}], "symbols": []}, "full_text": "[MYSTIC LISTEN] \uc7a5\uc7ac\uc778 X EXO \uc218\ud638(SUHO) '\uc2e4\ub840\ud574\ub3c4 \ub420\uae4c\uc694(Do you have a moment)' MV\nhttps://t.co/4xylMwjR3m\n-\n#LISTEN #\uc218\ud638 #SUHO #\uc2e4\ub840\ud574\ub3c4\ub420\uae4c\uc694 #\uc5d1\uc18c #EXO #\uc7a5\uc7ac\uc778 by #9194bro via @c0nvey"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972472962782818304, "possibly_sensitive": false, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "ko"} +{"reply_count": 0, "timestamp_ms": "1520690596659", "favorited": false, "in_reply_to_user_id_str": "93069110", "user": {"statuses_count": 84958, "geo_enabled": false, "utc_offset": -28800, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "704718761060868096", "notifications": null, "followers_count": 8520, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": "Pacific Time (US & Canada)", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 82, "profile_text_color": "333333", "translator_type": "none", "name": "Reader Adrift", "default_profile_image": false, "friends_count": 7394, "verified": false, "default_profile": true, "favourites_count": 128525, "id": 704718761060868096, "profile_image_url": "http://pbs.twimg.com/profile_images/704828114409558016/CXb4mhQU_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/704828114409558016/CXb4mhQU_normal.jpg", "profile_background_tile": false, "screen_name": "ReaderAdrift", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/704718761060868096/1468808162", "created_at": "Tue Mar 01 17:23:40 +0000 2016", "contributors_enabled": false, "description": "I will call out hypocrisy on either side.", "location": null, "lang": "en"}, "id_str": "972472962786869248", "entities": {"urls": [{"url": "https://t.co/zmRP59oVj0", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472962786869248"}], "hashtags": [{"indices": [21, 28], "text": "Bossie"}, {"indices": [32, 47], "text": "CitizensUnited"}, {"indices": [62, 76], "text": "RebekahMercer"}], "user_mentions": [{"name": "Maggie Haberman", "indices": [0, 10], "id": 93069110, "screen_name": "maggieNYT", "id_str": "93069110"}], "symbols": []}, "text": "@maggieNYT Reminder: #Bossie of #CitizensUnited was placed by #RebekahMercer as a Trump handler during the transiti\u2026 https://t.co/zmRP59oVj0", "source": "Twitter Web Client", "created_at": "Sat Mar 10 14:03:16 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972186314475962369, "extended_tweet": {"extended_entities": {"media": [{"url": "https://t.co/OQ13KtHfK3", "id_str": "972472942276657153", "display_url": "pic.twitter.com/OQ13KtHfK3", "media_url_https": "https://pbs.twimg.com/media/DX7q_RYUQAEJZLF.jpg", "type": "photo", "indices": [119, 142], "id": 972472942276657153, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 527}, "large": {"resize": "fit", "w": 1216, "h": 534}, "small": {"resize": "fit", "w": 680, "h": 299}}, "media_url": "http://pbs.twimg.com/media/DX7q_RYUQAEJZLF.jpg", "expanded_url": "https://twitter.com/ReaderAdrift/status/972472962786869248/photo/1"}]}, "display_text_range": [11, 118], "entities": {"urls": [], "media": [{"url": "https://t.co/OQ13KtHfK3", "id_str": "972472942276657153", "display_url": "pic.twitter.com/OQ13KtHfK3", "media_url_https": "https://pbs.twimg.com/media/DX7q_RYUQAEJZLF.jpg", "type": "photo", "indices": [119, 142], "id": 972472942276657153, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 527}, "large": {"resize": "fit", "w": 1216, "h": 534}, "small": {"resize": "fit", "w": 680, "h": 299}}, "media_url": "http://pbs.twimg.com/media/DX7q_RYUQAEJZLF.jpg", "expanded_url": "https://twitter.com/ReaderAdrift/status/972472962786869248/photo/1"}], "hashtags": [{"indices": [21, 28], "text": "Bossie"}, {"indices": [32, 47], "text": "CitizensUnited"}, {"indices": [62, 76], "text": "RebekahMercer"}], "user_mentions": [{"name": "Maggie Haberman", "indices": [0, 10], "id": 93069110, "screen_name": "maggieNYT", "id_str": "93069110"}], "symbols": []}, "full_text": "@maggieNYT Reminder: #Bossie of #CitizensUnited was placed by #RebekahMercer as a Trump handler during the transition. https://t.co/OQ13KtHfK3"}, "in_reply_to_status_id_str": "972186314475962369", "in_reply_to_user_id": 93069110, "is_quote_status": false, "filter_level": "low", "id": 972472962786869248, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "maggieNYT", "display_text_range": [11, 140], "possibly_sensitive": false, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690596662", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 215, "geo_enabled": true, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "3654517647", "notifications": null, "followers_count": 263, "url": "http://portlandmomandbabyexpo.com", "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 4, "profile_text_color": "333333", "translator_type": "none", "name": "Portland Baby Expo", "default_profile_image": false, "friends_count": 758, "verified": false, "default_profile": true, "favourites_count": 345, "id": 3654517647, "profile_image_url": "http://pbs.twimg.com/profile_images/643455783728975872/BJAl39oT_normal.jpg", "profile_background_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/643455783728975872/BJAl39oT_normal.jpg", "profile_background_tile": false, "screen_name": "MaineBabyExpo", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/3654517647/1453544447", "created_at": "Mon Sep 14 16:04:22 +0000 2015", "contributors_enabled": false, "description": "Second Annual Mom & Baby Expo in Portland, Maine on May 5th & 6th, 2017 at the Portland Expo Building", "location": "Portland, ME", "lang": "en"}, "id_str": "972472962799603712", "entities": {"urls": [{"url": "https://t.co/bVg4ha0RjZ", "indices": [113, 136], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472962799603712"}], "hashtags": [{"indices": [99, 110], "text": "portlandme"}], "user_mentions": [{"name": "Float Harder", "indices": [11, 23], "id": 2861921269, "screen_name": "FloatHarder", "id_str": "2861921269"}, {"name": "Maine Doulas", "indices": [24, 36], "id": 4071550565, "screen_name": "mainedoulas", "id_str": "4071550565"}, {"name": "JadeIntegratedHealth", "indices": [41, 56], "id": 458767402, "screen_name": "JadeIntegrated", "id_str": "458767402"}], "symbols": []}, "text": "Connect w/ @FloatHarder @mainedoulas and @JadeIntegrated at Portland Mom & Baby Expo on 5/5 in #portlandme!\u2026 https://t.co/bVg4ha0RjZ", "source": "Twitter Web Client", "created_at": "Sat Mar 10 14:03:16 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"extended_entities": {"media": [{"url": "https://t.co/dw57NACq0F", "id_str": "972472948274507776", "display_url": "pic.twitter.com/dw57NACq0F", "media_url_https": "https://pbs.twimg.com/media/DX7q_nuUMAAhx9r.jpg", "type": "photo", "indices": [136, 159], "id": 972472948274507776, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 1000}, "large": {"resize": "fit", "w": 2048, "h": 1707}, "small": {"resize": "fit", "w": 680, "h": 567}}, "media_url": "http://pbs.twimg.com/media/DX7q_nuUMAAhx9r.jpg", "expanded_url": "https://twitter.com/MaineBabyExpo/status/972472962799603712/photo/1"}]}, "display_text_range": [0, 135], "entities": {"urls": [{"url": "https://t.co/triAGvO3mY", "indices": [112, 135], "display_url": "portlandmomandbabyexpo.com", "expanded_url": "http://www.portlandmomandbabyexpo.com"}], "media": [{"url": "https://t.co/dw57NACq0F", "id_str": "972472948274507776", "display_url": "pic.twitter.com/dw57NACq0F", "media_url_https": "https://pbs.twimg.com/media/DX7q_nuUMAAhx9r.jpg", "type": "photo", "indices": [136, 159], "id": 972472948274507776, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 1000}, "large": {"resize": "fit", "w": 2048, "h": 1707}, "small": {"resize": "fit", "w": 680, "h": 567}}, "media_url": "http://pbs.twimg.com/media/DX7q_nuUMAAhx9r.jpg", "expanded_url": "https://twitter.com/MaineBabyExpo/status/972472962799603712/photo/1"}], "hashtags": [{"indices": [99, 110], "text": "portlandme"}], "user_mentions": [{"name": "Float Harder", "indices": [11, 23], "id": 2861921269, "screen_name": "FloatHarder", "id_str": "2861921269"}, {"name": "Maine Doulas", "indices": [24, 36], "id": 4071550565, "screen_name": "mainedoulas", "id_str": "4071550565"}, {"name": "JadeIntegratedHealth", "indices": [41, 56], "id": 458767402, "screen_name": "JadeIntegrated", "id_str": "458767402"}], "symbols": []}, "full_text": "Connect w/ @FloatHarder @mainedoulas and @JadeIntegrated at Portland Mom & Baby Expo on 5/5 in #portlandme! https://t.co/triAGvO3mY https://t.co/dw57NACq0F"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972472962799603712, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "in_reply_to_status_id": null, "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 16882, "geo_enabled": true, "utc_offset": 3600, "profile_sidebar_border_color": "EEEEEE", "profile_link_color": "9266CC", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme14/bg.gif", "id_str": "1874184379", "notifications": null, "followers_count": 1905, "url": "http://jco.jakub.id", "profile_sidebar_fill_color": "EFEFEF", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme14/bg.gif", "follow_request_sent": null, "time_zone": "Amsterdam", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 2, "profile_text_color": "333333", "translator_type": "regular", "name": "jakub", "default_profile_image": false, "friends_count": 115, "verified": false, "default_profile": false, "favourites_count": 424, "id": 1874184379, "profile_image_url": "http://pbs.twimg.com/profile_images/966073986542051329/qyRclce8_normal.jpg", "profile_background_color": "131516", "profile_image_url_https": "https://pbs.twimg.com/profile_images/966073986542051329/qyRclce8_normal.jpg", "profile_background_tile": true, "screen_name": "jakubsinjai", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/1874184379/1520235444", "created_at": "Tue Sep 17 04:53:38 +0000 2013", "contributors_enabled": false, "description": "#ViscaBarca #ImHMI", "location": "Jakarta Pusat, DKI Jakarta", "lang": "id"}, "id_str": "972472975361388544", "entities": {"urls": [{"url": "https://t.co/aCTtDVMzUE", "indices": [109, 132], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472975361388544"}], "hashtags": [{"indices": [34, 43], "text": "prukades"}, {"indices": [45, 56], "text": "TPPIsinjai"}, {"indices": [57, 68], "text": "TPPIsulsel"}], "user_mentions": [{"name": "Nasra sulsel", "indices": [69, 81], "id": 822707313349783552, "screen_name": "NasraSulsel", "id_str": "822707313349783552"}, {"name": "A. Ante", "indices": [82, 93], "id": 933154028300615680, "screen_name": "andiante70", "id_str": "933154028300615680"}, {"name": "Faisal Sinjai", "indices": [94, 107], "id": 369907489, "screen_name": "faisalsinjai", "id_str": "369907489"}], "symbols": []}, "text": "Desa Mandiri Indonesia Sejahtera, #prukades #TPPIsinjai #TPPIsulsel @NasraSulsel @andiante70 @faisalsinjai\u2026 https://t.co/aCTtDVMzUE", "source": "Twitter Web Client", "place": null, "created_at": "Sat Mar 10 14:03:19 +0000 2018", "retweeted": false, "quoted_status_id_str": "964280839784681472", "extended_tweet": {"display_text_range": [0, 238], "entities": {"urls": [{"url": "https://t.co/dOnt7BEv7J", "indices": [239, 262], "display_url": "twitter.com/EkoSandjojo/st\u2026", "expanded_url": "https://twitter.com/EkoSandjojo/status/964280839784681472"}], "hashtags": [{"indices": [34, 43], "text": "prukades"}, {"indices": [45, 56], "text": "TPPIsinjai"}, {"indices": [57, 68], "text": "TPPIsulsel"}], "user_mentions": [{"name": "Nasra sulsel", "indices": [69, 81], "id": 822707313349783552, "screen_name": "NasraSulsel", "id_str": "822707313349783552"}, {"name": "A. Ante", "indices": [82, 93], "id": 933154028300615680, "screen_name": "andiante70", "id_str": "933154028300615680"}, {"name": "Faisal Sinjai", "indices": [94, 107], "id": 369907489, "screen_name": "faisalsinjai", "id_str": "369907489"}, {"name": "Abd. Rahman", "indices": [108, 122], "id": 943757553950900225, "screen_name": "RahmanTahir63", "id_str": "943757553950900225"}, {"name": "Joko Widodo", "indices": [123, 130], "id": 366987179, "screen_name": "jokowi", "id_str": "366987179"}, {"name": "ervinda", "indices": [131, 143], "id": 949509831626342400, "screen_name": "vindasinjai", "id_str": "949509831626342400"}, {"name": "Akbarp3md", "indices": [145, 155], "id": 939044043660541952, "screen_name": "akbarp3md", "id_str": "939044043660541952"}, {"name": "Nurhaji Madjid", "indices": [156, 170], "id": 947439748666114048, "screen_name": "MadjidNurhaji", "id_str": "947439748666114048"}, {"name": "Andikaya Sinjai", "indices": [172, 188], "id": 934585101454675968, "screen_name": "MappakayaArifin", "id_str": "934585101454675968"}, {"name": "Nasra sulsel", "indices": [189, 201], "id": 822707313349783552, "screen_name": "NasraSulsel", "id_str": "822707313349783552"}, {"name": "ASHO P3MD SINJAI", "indices": [202, 215], "id": 844829067853541376, "screen_name": "AndiAsho_ABM", "id_str": "844829067853541376"}, {"name": "Muhammad Ihsan Maro", "indices": [216, 226], "id": 920923211436404736, "screen_name": "IhsanMaro", "id_str": "920923211436404736"}, {"name": "P3MD SINJAI", "indices": [227, 238], "id": 933144396626665474, "screen_name": "P3mdSinjai", "id_str": "933144396626665474"}], "symbols": []}, "full_text": "Desa Mandiri Indonesia Sejahtera, #prukades #TPPIsinjai #TPPIsulsel @NasraSulsel @andiante70 @faisalsinjai @RahmanTahir63 @jokowi @vindasinjai @akbarp3md @MadjidNurhaji @MappakayaArifin @NasraSulsel @AndiAsho_ABM @IhsanMaro @P3mdSinjai https://t.co/dOnt7BEv7J"}, "in_reply_to_status_id_str": null, "filter_level": "low", "in_reply_to_user_id": null, "is_quote_status": true, "quoted_status": {"reply_count": 26, "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 9841, "geo_enabled": false, "utc_offset": -28800, "profile_sidebar_border_color": "000000", "profile_link_color": "19CF86", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "758565899032854528", "notifications": null, "followers_count": 75945, "url": "http://www.kemendesa.go.id", "profile_sidebar_fill_color": "000000", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": "Pacific Time (US & Canada)", "profile_use_background_image": false, "protected": false, "following": null, "listed_count": 25, "profile_text_color": "000000", "translator_type": "none", "name": "Eko Putro Sandjojo", "default_profile_image": false, "friends_count": 2819, "verified": true, "default_profile": false, "favourites_count": 4527, "id": 758565899032854528, "profile_image_url": "http://pbs.twimg.com/profile_images/831836886633046016/yDvvsSlv_normal.jpg", "profile_background_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/831836886633046016/yDvvsSlv_normal.jpg", "profile_background_tile": false, "screen_name": "EkoSandjojo", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/758565899032854528/1518304289", "created_at": "Thu Jul 28 07:32:58 +0000 2016", "contributors_enabled": false, "description": "#DanaDesa tahun 2018 sudah bisa dicairkan sejak 20 Januari. pekerjaan #DanaDesa wajib dilaksanakan secara #SwaKelola. 30% dari #DanaDesa wajib untuk upah.", "location": "Indonesia", "lang": "en-gb"}, "id_str": "964280839784681472", "entities": {"urls": [{"url": "https://t.co/6l7iTXyiOY", "indices": [103, 126], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/964280839784681472"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "Kunjungan kerja Presiden Joko Widodo ke Batu Merah, Ambon meninjau normalisasi sungai melalui program\u2026 https://t.co/6l7iTXyiOY", "source": "Twitter for iPhone", "created_at": "Thu Feb 15 23:30:42 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"extended_entities": {"media": [{"url": "https://t.co/3eGlxFfyaY", "id_str": "964280829923835904", "display_url": "pic.twitter.com/3eGlxFfyaY", "media_url_https": "https://pbs.twimg.com/media/DWHQTktUQAAheDk.jpg", "type": "photo", "indices": [193, 216], "id": 964280829923835904, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1024, "h": 651}, "large": {"resize": "fit", "w": 1024, "h": 651}, "small": {"resize": "fit", "w": 680, "h": 432}}, "media_url": "http://pbs.twimg.com/media/DWHQTktUQAAheDk.jpg", "expanded_url": "https://twitter.com/EkoSandjojo/status/964280839784681472/photo/1"}, {"url": "https://t.co/3eGlxFfyaY", "id_str": "964280829907120133", "display_url": "pic.twitter.com/3eGlxFfyaY", "media_url_https": "https://pbs.twimg.com/media/DWHQTkpVMAU_L26.jpg", "type": "photo", "indices": [193, 216], "id": 964280829907120133, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 697, "h": 1024}, "large": {"resize": "fit", "w": 697, "h": 1024}, "small": {"resize": "fit", "w": 463, "h": 680}}, "media_url": "http://pbs.twimg.com/media/DWHQTkpVMAU_L26.jpg", "expanded_url": "https://twitter.com/EkoSandjojo/status/964280839784681472/photo/1"}, {"url": "https://t.co/3eGlxFfyaY", "id_str": "964280829840015360", "display_url": "pic.twitter.com/3eGlxFfyaY", "media_url_https": "https://pbs.twimg.com/media/DWHQTkZVQAAgYcN.jpg", "type": "photo", "indices": [193, 216], "id": 964280829840015360, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1024, "h": 677}, "large": {"resize": "fit", "w": 1024, "h": 677}, "small": {"resize": "fit", "w": 680, "h": 450}}, "media_url": "http://pbs.twimg.com/media/DWHQTkZVQAAgYcN.jpg", "expanded_url": "https://twitter.com/EkoSandjojo/status/964280839784681472/photo/1"}, {"url": "https://t.co/3eGlxFfyaY", "id_str": "964280829793857536", "display_url": "pic.twitter.com/3eGlxFfyaY", "media_url_https": "https://pbs.twimg.com/media/DWHQTkOU8AAt6LF.jpg", "type": "photo", "indices": [193, 216], "id": 964280829793857536, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1024, "h": 648}, "large": {"resize": "fit", "w": 1024, "h": 648}, "small": {"resize": "fit", "w": 680, "h": 430}}, "media_url": "http://pbs.twimg.com/media/DWHQTkOU8AAt6LF.jpg", "expanded_url": "https://twitter.com/EkoSandjojo/status/964280839784681472/photo/1"}]}, "display_text_range": [0, 192], "entities": {"urls": [], "media": [{"url": "https://t.co/3eGlxFfyaY", "id_str": "964280829923835904", "display_url": "pic.twitter.com/3eGlxFfyaY", "media_url_https": "https://pbs.twimg.com/media/DWHQTktUQAAheDk.jpg", "type": "photo", "indices": [193, 216], "id": 964280829923835904, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1024, "h": 651}, "large": {"resize": "fit", "w": 1024, "h": 651}, "small": {"resize": "fit", "w": 680, "h": 432}}, "media_url": "http://pbs.twimg.com/media/DWHQTktUQAAheDk.jpg", "expanded_url": "https://twitter.com/EkoSandjojo/status/964280839784681472/photo/1"}, {"url": "https://t.co/3eGlxFfyaY", "id_str": "964280829907120133", "display_url": "pic.twitter.com/3eGlxFfyaY", "media_url_https": "https://pbs.twimg.com/media/DWHQTkpVMAU_L26.jpg", "type": "photo", "indices": [193, 216], "id": 964280829907120133, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 697, "h": 1024}, "large": {"resize": "fit", "w": 697, "h": 1024}, "small": {"resize": "fit", "w": 463, "h": 680}}, "media_url": "http://pbs.twimg.com/media/DWHQTkpVMAU_L26.jpg", "expanded_url": "https://twitter.com/EkoSandjojo/status/964280839784681472/photo/1"}, {"url": "https://t.co/3eGlxFfyaY", "id_str": "964280829840015360", "display_url": "pic.twitter.com/3eGlxFfyaY", "media_url_https": "https://pbs.twimg.com/media/DWHQTkZVQAAgYcN.jpg", "type": "photo", "indices": [193, 216], "id": 964280829840015360, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1024, "h": 677}, "large": {"resize": "fit", "w": 1024, "h": 677}, "small": {"resize": "fit", "w": 680, "h": 450}}, "media_url": "http://pbs.twimg.com/media/DWHQTkZVQAAgYcN.jpg", "expanded_url": "https://twitter.com/EkoSandjojo/status/964280839784681472/photo/1"}, {"url": "https://t.co/3eGlxFfyaY", "id_str": "964280829793857536", "display_url": "pic.twitter.com/3eGlxFfyaY", "media_url_https": "https://pbs.twimg.com/media/DWHQTkOU8AAt6LF.jpg", "type": "photo", "indices": [193, 216], "id": 964280829793857536, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1024, "h": 648}, "large": {"resize": "fit", "w": 1024, "h": 648}, "small": {"resize": "fit", "w": 680, "h": 430}}, "media_url": "http://pbs.twimg.com/media/DWHQTkOU8AAt6LF.jpg", "expanded_url": "https://twitter.com/EkoSandjojo/status/964280839784681472/photo/1"}], "hashtags": [{"indices": [102, 118], "text": "PadatKaryaTunai"}, {"indices": [126, 135], "text": "DanaDesa"}], "user_mentions": [{"name": "Kemendesa PDTT", "indices": [136, 146], "id": 802380540, "screen_name": "KemenDesa", "id_str": "802380540"}, {"name": "TPPI P3MD Kemendesa", "indices": [147, 160], "id": 820643331839397888, "screen_name": "tppindonesia", "id_str": "820643331839397888"}, {"name": "Sandjojo Center", "indices": [161, 176], "id": 715758180488384512, "screen_name": "SandjojoCenter", "id_str": "715758180488384512"}, {"name": "SATGAS DANA DESA", "indices": [177, 192], "id": 882945294081576960, "screen_name": "SatgasDanaDesa", "id_str": "882945294081576960"}], "symbols": []}, "full_text": "Kunjungan kerja Presiden Joko Widodo ke Batu Merah, Ambon meninjau normalisasi sungai melalui program #PadatKaryaTunai dengan #DanaDesa.@KemenDesa @tppindonesia @SandjojoCenter @SatgasDanaDesa https://t.co/3eGlxFfyaY"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 964280839784681472, "contributors": null, "retweet_count": 612, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 904, "place": null, "truncated": true, "geo": null, "quote_count": 7, "lang": "in"}, "id": 972472975361388544, "timestamp_ms": "1520690599657", "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 0, "quoted_status_id": 964280839784681472, "truncated": true, "geo": null, "quote_count": 0, "lang": "in"} +{"reply_count": 0, "timestamp_ms": "1520690600657", "favorited": false, "in_reply_to_user_id_str": "3202312903", "user": {"statuses_count": 7837, "geo_enabled": false, "utc_offset": 0, "profile_sidebar_border_color": "F2E195", "profile_link_color": "FF0000", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme12/bg.gif", "id_str": "23314059", "notifications": null, "followers_count": 890, "url": "https://lowkeyhighflyer.wordpress.com", "profile_sidebar_fill_color": "FFF7CC", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme12/bg.gif", "follow_request_sent": null, "time_zone": "London", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 39, "profile_text_color": "0C3E53", "translator_type": "none", "name": "Helen Hardy", "default_profile_image": false, "friends_count": 2686, "verified": false, "default_profile": false, "favourites_count": 9050, "id": 23314059, "profile_image_url": "http://pbs.twimg.com/profile_images/478121896194473985/Jmb6I_bx_normal.jpeg", "profile_background_color": "BADFCD", "profile_image_url_https": "https://pbs.twimg.com/profile_images/478121896194473985/Jmb6I_bx_normal.jpeg", "profile_background_tile": false, "screen_name": "lowkeyhighflyer", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/23314059/1380189752", "created_at": "Sun Mar 08 14:47:39 +0000 2009", "contributors_enabled": false, "description": "Public services, museum digitisation @NHM_london @NHM_digitise, writing, the occasional cute animal - views my own, I have even been known to change my mind...", "location": "London", "lang": "en"}, "id_str": "972472979555782658", "entities": {"urls": [{"url": "https://t.co/F1DNQabsoG", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472979555782658"}], "hashtags": [], "user_mentions": [{"name": "Isla Gladstone", "indices": [0, 15], "id": 3202312903, "screen_name": "isla_gladstone", "id_str": "3202312903"}, {"name": "iDigBio", "indices": [16, 24], "id": 330041881, "screen_name": "iDigBio", "id_str": "330041881"}, {"name": "Digitising the NHM", "indices": [25, 38], "id": 3770207661, "screen_name": "NHM_Digitise", "id_str": "3770207661"}, {"name": "Bristol Museum", "indices": [39, 53], "id": 104190367, "screen_name": "bristolmuseum", "id_str": "104190367"}, {"name": "vsmithuk", "indices": [54, 63], "id": 14530569, "screen_name": "vsmithuk", "id_str": "14530569"}, {"name": "Deborah Paul", "indices": [64, 71], "id": 2214727674, "screen_name": "idbdeb", "id_str": "2214727674"}, {"name": "Gil Nelson", "indices": [72, 86], "id": 2243608636, "screen_name": "iDigGilNelson", "id_str": "2243608636"}, {"name": "Deborah Hutchinson", "indices": [87, 102], "id": 2456822965, "screen_name": "DebsHutchinson", "id_str": "2456822965"}, {"name": "Rhian Rowson", "indices": [103, 115], "id": 2317274953, "screen_name": "RhianRowson", "id_str": "2317274953"}], "symbols": []}, "text": "@isla_gladstone @iDigBio @NHM_Digitise @bristolmuseum @vsmithuk @idbdeb @iDigGilNelson @DebsHutchinson @RhianRowson\u2026 https://t.co/F1DNQabsoG", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 14:03:20 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972168748168818689, "extended_tweet": {"display_text_range": [129, 151], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "Isla Gladstone", "indices": [0, 15], "id": 3202312903, "screen_name": "isla_gladstone", "id_str": "3202312903"}, {"name": "iDigBio", "indices": [16, 24], "id": 330041881, "screen_name": "iDigBio", "id_str": "330041881"}, {"name": "Digitising the NHM", "indices": [25, 38], "id": 3770207661, "screen_name": "NHM_Digitise", "id_str": "3770207661"}, {"name": "Bristol Museum", "indices": [39, 53], "id": 104190367, "screen_name": "bristolmuseum", "id_str": "104190367"}, {"name": "vsmithuk", "indices": [54, 63], "id": 14530569, "screen_name": "vsmithuk", "id_str": "14530569"}, {"name": "Deborah Paul", "indices": [64, 71], "id": 2214727674, "screen_name": "idbdeb", "id_str": "2214727674"}, {"name": "Gil Nelson", "indices": [72, 86], "id": 2243608636, "screen_name": "iDigGilNelson", "id_str": "2243608636"}, {"name": "Deborah Hutchinson", "indices": [87, 102], "id": 2456822965, "screen_name": "DebsHutchinson", "id_str": "2456822965"}, {"name": "Rhian Rowson", "indices": [103, 115], "id": 2317274953, "screen_name": "RhianRowson", "id_str": "2317274953"}, {"name": "Mark Pajak", "indices": [116, 128], "id": 506447498, "screen_name": "MarkySpider", "id_str": "506447498"}], "symbols": []}, "full_text": "@isla_gladstone @iDigBio @NHM_Digitise @bristolmuseum @vsmithuk @idbdeb @iDigGilNelson @DebsHutchinson @RhianRowson @MarkySpider It was fun! Thanks all"}, "in_reply_to_status_id_str": "972168748168818689", "in_reply_to_user_id": 3202312903, "is_quote_status": false, "filter_level": "low", "id": 972472979555782658, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "isla_gladstone", "display_text_range": [117, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690600664", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 383, "geo_enabled": false, "utc_offset": -21600, "profile_sidebar_border_color": "FFFFFF", "profile_link_color": "B40B43", "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/447727159356837888/76EXds97.jpeg", "id_str": "1762102284", "notifications": null, "followers_count": 57, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/447727159356837888/76EXds97.jpeg", "follow_request_sent": null, "time_zone": "Central Time (US & Canada)", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "333333", "translator_type": "none", "name": "mischibee", "default_profile_image": false, "friends_count": 131, "verified": false, "default_profile": false, "favourites_count": 973, "id": 1762102284, "profile_image_url": "http://pbs.twimg.com/profile_images/947768683408928768/fGBN-spp_normal.jpg", "profile_background_color": "FF6699", "profile_image_url_https": "https://pbs.twimg.com/profile_images/947768683408928768/fGBN-spp_normal.jpg", "profile_background_tile": false, "screen_name": "MEschibee", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/1762102284/1520541393", "created_at": "Sat Sep 07 17:53:29 +0000 2013", "contributors_enabled": false, "description": "shadow crystal", "location": null, "lang": "en"}, "id_str": "972472979585052674", "entities": {"urls": [{"url": "https://t.co/1VWFNttW89", "indices": [116, 139], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472979585052674"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "I wish i wish with all my heart\nTo wake early and study for a start\nTo review all my midterms and turn my notes to\u2026 https://t.co/1VWFNttW89", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 14:03:20 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"extended_entities": {"media": [{"url": "https://t.co/QUeX5DDnvo", "id_str": "972472973759168512", "display_url": "pic.twitter.com/QUeX5DDnvo", "media_url_https": "https://pbs.twimg.com/media/DX7rBGqVQAAtS1d.jpg", "type": "photo", "indices": [156, 179], "id": 972472973759168512, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 675}, "large": {"resize": "fit", "w": 1280, "h": 720}, "small": {"resize": "fit", "w": 680, "h": 383}}, "media_url": "http://pbs.twimg.com/media/DX7rBGqVQAAtS1d.jpg", "expanded_url": "https://twitter.com/MEschibee/status/972472979585052674/photo/1"}]}, "display_text_range": [0, 155], "entities": {"urls": [], "media": [{"url": "https://t.co/QUeX5DDnvo", "id_str": "972472973759168512", "display_url": "pic.twitter.com/QUeX5DDnvo", "media_url_https": "https://pbs.twimg.com/media/DX7rBGqVQAAtS1d.jpg", "type": "photo", "indices": [156, 179], "id": 972472973759168512, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 675}, "large": {"resize": "fit", "w": 1280, "h": 720}, "small": {"resize": "fit", "w": 680, "h": 383}}, "media_url": "http://pbs.twimg.com/media/DX7rBGqVQAAtS1d.jpg", "expanded_url": "https://twitter.com/MEschibee/status/972472979585052674/photo/1"}], "hashtags": [], "user_mentions": [], "symbols": []}, "full_text": "I wish i wish with all my heart\nTo wake early and study for a start\nTo review all my midterms and turn my notes to art\nSo i may end the week and party hard https://t.co/QUeX5DDnvo"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972472979585052674, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690601663", "favorited": false, "in_reply_to_user_id_str": "797815590501097473", "user": {"statuses_count": 2604998, "geo_enabled": true, "utc_offset": 0, "profile_sidebar_border_color": "FFFFFF", "profile_link_color": "FF0000", "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/520520649001799680/SbSoBIMO.png", "id_str": "17872077", "notifications": null, "followers_count": 243704, "url": "http://www.virginmedia.com", "profile_sidebar_fill_color": "FFA694", "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/520520649001799680/SbSoBIMO.png", "follow_request_sent": null, "time_zone": "London", "profile_use_background_image": false, "protected": false, "following": null, "listed_count": 1453, "profile_text_color": "212121", "translator_type": "none", "name": "Virgin Media", "default_profile_image": false, "friends_count": 152, "verified": true, "default_profile": false, "favourites_count": 7283, "id": 17872077, "profile_image_url": "http://pbs.twimg.com/profile_images/924954698343505920/pDQiP-71_normal.jpg", "profile_background_color": "CCCCCC", "profile_image_url_https": "https://pbs.twimg.com/profile_images/924954698343505920/pDQiP-71_normal.jpg", "profile_background_tile": false, "screen_name": "virginmedia", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/17872077/1517479754", "created_at": "Thu Dec 04 17:01:54 +0000 2008", "contributors_enabled": false, "description": "The one-stop shop for all your movie, telly, sport and Virgin Media service needs. We\u2019re here to help from 8am - 10pm Mon - Fri & 8am - 4pm on weekends.", "location": "London, Manchester & Swansea", "lang": "en"}, "id_str": "972472983775338496", "entities": {"urls": [{"url": "https://t.co/gQa1SytS3c", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472983775338496"}], "hashtags": [], "user_mentions": [{"name": "HertsGTFC", "indices": [0, 10], "id": 797815590501097473, "screen_name": "HertsGTFC", "id_str": "797815590501097473"}], "symbols": []}, "text": "@HertsGTFC Hi, sorry for this experience. I do fully understand your concern. I can check via webchat to see if can\u2026 https://t.co/gQa1SytS3c", "source": "Lithium Tech.", "created_at": "Sat Mar 10 14:03:21 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972467368961216512, "extended_tweet": {"display_text_range": [11, 184], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "HertsGTFC", "indices": [0, 10], "id": 797815590501097473, "screen_name": "HertsGTFC", "id_str": "797815590501097473"}], "symbols": []}, "full_text": "@HertsGTFC Hi, sorry for this experience. I do fully understand your concern. I can check via webchat to see if can do this any earlier, if you are free now? No guarantee however. ^JGS"}, "in_reply_to_status_id_str": "972467368961216512", "in_reply_to_user_id": 797815590501097473, "is_quote_status": false, "filter_level": "low", "id": 972472983775338496, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "HertsGTFC", "display_text_range": [11, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690601662", "favorited": false, "in_reply_to_user_id_str": "963023618178453509", "user": {"statuses_count": 125, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "963023618178453509", "notifications": null, "followers_count": 77, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "333333", "translator_type": "none", "name": "Agire Cihane", "default_profile_image": false, "friends_count": 839, "verified": false, "default_profile": true, "favourites_count": 70, "id": 963023618178453509, "profile_image_url": "http://pbs.twimg.com/profile_images/970975274111262721/VdsYo93q_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/970975274111262721/VdsYo93q_normal.jpg", "profile_background_tile": false, "screen_name": "AgireCihan", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/963023618178453509/1520627942", "created_at": "Mon Feb 12 12:14:57 +0000 2018", "contributors_enabled": false, "description": "Partiya karkeren Kurdistan", "location": "Bochum, Deutschland", "lang": "de"}, "id_str": "972472983771078657", "entities": {"urls": [{"url": "https://t.co/JKRpIntY2u", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472983771078657"}], "hashtags": [], "user_mentions": [{"name": "Kerem Han", "indices": [0, 10], "id": 153730401, "screen_name": "Kerem_Han", "id_str": "153730401"}, {"name": "Mustafa Yenero\u011flu", "indices": [11, 22], "id": 291368363, "screen_name": "myeneroglu", "id_str": "291368363"}, {"name": "Bodo Ramelow", "indices": [23, 35], "id": 21392844, "screen_name": "bodoramelow", "id_str": "21392844"}], "symbols": []}, "text": "@Kerem_Han @myeneroglu @bodoramelow Macht er diese mal einen Fehler gehen \u00fcber Russland, dann ist er auch sich alle\u2026 https://t.co/JKRpIntY2u", "source": "Twitter for Android", "created_at": "Sat Mar 10 14:03:21 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972467904749932544, "extended_tweet": {"display_text_range": [36, 221], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "Kerem Han", "indices": [0, 10], "id": 153730401, "screen_name": "Kerem_Han", "id_str": "153730401"}, {"name": "Mustafa Yenero\u011flu", "indices": [11, 22], "id": 291368363, "screen_name": "myeneroglu", "id_str": "291368363"}, {"name": "Bodo Ramelow", "indices": [23, 35], "id": 21392844, "screen_name": "bodoramelow", "id_str": "21392844"}], "symbols": []}, "full_text": "@Kerem_Han @myeneroglu @bodoramelow Macht er diese mal einen Fehler gehen \u00fcber Russland, dann ist er auch sich allein gestellt, da er die Amerikaner zum \u00f6fteren, ausgenutzt hat und sich dann Russland angeschlossen hatte ."}, "in_reply_to_status_id_str": "972467904749932544", "in_reply_to_user_id": 963023618178453509, "is_quote_status": false, "filter_level": "low", "id": 972472983771078657, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "AgireCihan", "display_text_range": [36, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "de"} +{"reply_count": 0, "timestamp_ms": "1520690601664", "favorited": false, "in_reply_to_user_id_str": "2314229087", "user": {"statuses_count": 135577, "geo_enabled": true, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "2314229087", "notifications": null, "followers_count": 9491, "url": "https://mcaf.ee/twi61q", "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 68, "profile_text_color": "333333", "translator_type": "none", "name": "Abdul Hakim Khan", "default_profile_image": false, "friends_count": 8353, "verified": false, "default_profile": true, "favourites_count": 120711, "id": 2314229087, "profile_image_url": "http://pbs.twimg.com/profile_images/963832103287885824/_BbtEfIo_normal.jpg", "profile_background_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/963832103287885824/_BbtEfIo_normal.jpg", "profile_background_tile": false, "screen_name": "khanhakim_k", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/2314229087/1511193513", "created_at": "Thu Jan 30 14:23:11 +0000 2014", "contributors_enabled": false, "description": "Pakistani Pukhtoon Muslim ; like nature its beauty ,Photography *Educationist Respects others rights.#IFB* #F4F*\ud83c\uddf5\ud83c\uddf0", "location": "Charsadda ,KPK, PAKISTAN", "lang": "en-gb"}, "id_str": "972472983779528704", "entities": {"urls": [{"url": "https://t.co/8fcsZtn0m6", "indices": [109, 132], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472983779528704"}], "hashtags": [], "user_mentions": [{"name": "#TMPETAL #TEAMSIL", "indices": [0, 13], "id": 1673457223, "screen_name": "BrettCateley", "id_str": "1673457223"}, {"name": "\ud83c\udf38.\u00b0\u2022\u273a\ud83c\udf3a \u1e15\u1e36\u1e2d \u1e36\u1e15\u1e4f\u1e46\u1e00\u1e59\u1e0a\u1e00\ud83c\udf43\ud83c\udf3c\u273a\u00b0\u00b0", "indices": [14, 26], "id": 734181166530613249, "screen_name": "EliLeonarda", "id_str": "734181166530613249"}, {"name": "\u6d69\u5b50", "indices": [27, 41], "id": 3152205769, "screen_name": "isamuuran1316", "id_str": "3152205769"}, {"name": "REALTEAMFOLLOWTRAIN", "indices": [42, 58], "id": 1893444990, "screen_name": "REALTEAMFOLLOW2", "id_str": "1893444990"}, {"name": "Ginetti", "indices": [59, 72], "id": 939603685126131712, "screen_name": "Ginette00058", "id_str": "939603685126131712"}, {"name": "A. Ghani", "indices": [73, 81], "id": 1057937090, "screen_name": "KhanSVC", "id_str": "1057937090"}, {"name": "zahoor ahmed", "indices": [82, 97], "id": 3293525598, "screen_name": "zahoorahmed553", "id_str": "3293525598"}, {"name": "OLIVERESKRIDGE", "indices": [98, 107], "id": 733332854038368257, "screen_name": "SKID1144", "id_str": "733332854038368257"}], "symbols": []}, "text": "@BrettCateley @EliLeonarda @isamuuran1316 @REALTEAMFOLLOW2 @Ginette00058 @KhanSVC @zahoorahmed553 @SKID1144\u2026 https://t.co/8fcsZtn0m6", "source": "Twitter for iPad", "created_at": "Sat Mar 10 14:03:21 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972454931939635200, "extended_tweet": {"display_text_range": [595, 620], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "#TMPETAL #TEAMSIL", "indices": [0, 13], "id": 1673457223, "screen_name": "BrettCateley", "id_str": "1673457223"}, {"name": "\ud83c\udf38.\u00b0\u2022\u273a\ud83c\udf3a \u1e15\u1e36\u1e2d \u1e36\u1e15\u1e4f\u1e46\u1e00\u1e59\u1e0a\u1e00\ud83c\udf43\ud83c\udf3c\u273a\u00b0\u00b0", "indices": [14, 26], "id": 734181166530613249, "screen_name": "EliLeonarda", "id_str": "734181166530613249"}, {"name": "\u6d69\u5b50", "indices": [27, 41], "id": 3152205769, "screen_name": "isamuuran1316", "id_str": "3152205769"}, {"name": "REALTEAMFOLLOWTRAIN", "indices": [42, 58], "id": 1893444990, "screen_name": "REALTEAMFOLLOW2", "id_str": "1893444990"}, {"name": "Ginetti", "indices": [59, 72], "id": 939603685126131712, "screen_name": "Ginette00058", "id_str": "939603685126131712"}, {"name": "A. Ghani", "indices": [73, 81], "id": 1057937090, "screen_name": "KhanSVC", "id_str": "1057937090"}, {"name": "zahoor ahmed", "indices": [82, 97], "id": 3293525598, "screen_name": "zahoorahmed553", "id_str": "3293525598"}, {"name": "OLIVERESKRIDGE", "indices": [98, 107], "id": 733332854038368257, "screen_name": "SKID1144", "id_str": "733332854038368257"}, {"name": "Stephen G. Porter \ud83c\uddfa\ud83c\uddf8", "indices": [108, 120], "id": 844507268, "screen_name": "PapaPorter1", "id_str": "844507268"}, {"name": "Nadeem Abbas Jafree", "indices": [121, 133], "id": 929195641, "screen_name": "ABBASJAFREE", "id_str": "929195641"}, {"name": "hamo", "indices": [134, 150], "id": 885272615912439808, "screen_name": "hamouda05034871", "id_str": "885272615912439808"}, {"name": "Andreas Leu #Majix\ud83d\udc0d\u2764\ud83d\udc0d", "indices": [151, 163], "id": 2893887310, "screen_name": "andreasleu1", "id_str": "2893887310"}, {"name": "#TMLILY \ud83d\udc91 #MEL_LILY", "indices": [164, 173], "id": 1860260125, "screen_name": "LiliBodo", "id_str": "1860260125"}, {"name": "ivy nascimento", "indices": [174, 185], "id": 3032397237, "screen_name": "ivymarina1", "id_str": "3032397237"}, {"name": "Lani Davies", "indices": [186, 195], "id": 2724273446, "screen_name": "LaniJDav", "id_str": "2724273446"}, {"name": "Robert Tropper", "indices": [196, 207], "id": 3398691107, "screen_name": "robtropper", "id_str": "3398691107"}, {"name": "Roshan Dua", "indices": [208, 218], "id": 904868210872164352, "screen_name": "RoshanDua", "id_str": "904868210872164352"}, {"name": "Edu live", "indices": [219, 231], "id": 1447562450, "screen_name": "DeFaukatrua", "id_str": "1447562450"}, {"name": "Alessandra", "indices": [232, 241], "id": 4623268695, "screen_name": "MSpadine", "id_str": "4623268695"}, {"name": "Victoria #MGWV", "indices": [242, 256], "id": 842498096793866242, "screen_name": "VictoriaD6363", "id_str": "842498096793866242"}, {"name": "\ud83c\udf11\ud83d\udc99\ud83d\udebctapos\ud83d\udebc\ud83d\udc99\ud83c\udf11", "indices": [257, 272], "id": 2422484312, "screen_name": "TaposKumarBasu", "id_str": "2422484312"}, {"name": "Gaby", "indices": [273, 280], "id": 4720325113, "screen_name": "lv4gab", "id_str": "4720325113"}, {"name": "\ud83c\udf40Sara ~\ud83c\udfbb\ud83d\udc98\ud83c\udfbb~ \u0938\u093e\u0930\u093e \ud83c\udf40", "indices": [281, 288], "id": 1498384819, "screen_name": "r95731", "id_str": "1498384819"}, {"name": "Lud.Marx \ud83c\uddea\ud83c\uddfa", "indices": [289, 298], "id": 562094558, "screen_name": "LudMarx1", "id_str": "562094558"}, {"name": "herold barton", "indices": [299, 312], "id": 2895726730, "screen_name": "heroldbarton", "id_str": "2895726730"}, {"name": "Silvia", "indices": [313, 321], "id": 1928707944, "screen_name": "Silau25", "id_str": "1928707944"}, {"name": "@vken11", "indices": [322, 329], "id": 855951641844998145, "screen_name": "VKEN11", "id_str": "855951641844998145"}, {"name": "Rosa", "indices": [330, 340], "id": 1710120552, "screen_name": "RosaTrunk", "id_str": "1710120552"}, {"name": "\u2764\u2b50#EADT17\u2764", "indices": [341, 352], "id": 2836795494, "screen_name": "fevziates3", "id_str": "2836795494"}, {"name": "\u0623\u062d\u0628\u0643\u0650 \u0623\u0646\u062b\u0649ahbak ana", "indices": [353, 363], "id": 912408481642270721, "screen_name": "ahbakana4", "id_str": "912408481642270721"}, {"name": "Rossy\ud83d\ude4b\u2764", "indices": [364, 378], "id": 580055444, "screen_name": "ROSMERYALPIRE", "id_str": "580055444"}, {"name": "\ud83d\udc95KedmaHelena1\ud83d\udc95", "indices": [379, 392], "id": 4221944637, "screen_name": "KedmaHelena1", "id_str": "4221944637"}, {"name": "Pam Suzanne Reich", "indices": [393, 403], "id": 271244383, "screen_name": "prcowboys", "id_str": "271244383"}, {"name": "\ud83c\uddff\ud83c\udde6\ud83c\uddf5\ud83c\uddf9An African in London\ud83e\udd2a\ud83e\uddda\ud83c\udffb\u200d\u2640\ufe0f", "indices": [404, 414], "id": 49371618, "screen_name": "gypsy1207", "id_str": "49371618"}, {"name": "katyayan vajpayaee", "indices": [415, 426], "id": 2241016927, "screen_name": "KVajpayaee", "id_str": "2241016927"}, {"name": "Thaar AL_Taiey", "indices": [427, 433], "id": 30068057, "screen_name": "thaar", "id_str": "30068057"}, {"name": "Yuki S. Tanaka", "indices": [434, 447], "id": 774133248586715136, "screen_name": "Japan_kenpou", "id_str": "774133248586715136"}, {"name": "Daisy2 \u2618", "indices": [448, 463], "id": 866625717685043200, "screen_name": "Daisy284762327", "id_str": "866625717685043200"}, {"name": "\ud83d\udc51\u2764Latifa\u2764\ud83d\udc51", "indices": [464, 473], "id": 2864461901, "screen_name": "LatofaOb", "id_str": "2864461901"}, {"name": "Lilian2020", "indices": [474, 485], "id": 3000523623, "screen_name": "lilian8090", "id_str": "3000523623"}, {"name": "A MAJESTADE #SDV/#MGWV/#MAJIX/#1 FIRST/#1 D DRIVE", "indices": [486, 501], "id": 2458908332, "screen_name": "CaipiraRanchao", "id_str": "2458908332"}, {"name": "LAUREN\u2618", "indices": [502, 518], "id": 719792457815363584, "screen_name": "LaurenVictorita", "id_str": "719792457815363584"}, {"name": "\u221d\u256c\u2550\u2550\u2192L\u03b1\u03c5r\u03b1\u2764", "indices": [519, 527], "id": 1406351096, "screen_name": "Lau_SDV", "id_str": "1406351096"}, {"name": "Luigi Rizzo", "indices": [528, 542], "id": 1301064319, "screen_name": "RizzoGigirz58", "id_str": "1301064319"}, {"name": "D_Lees", "indices": [543, 556], "id": 3555727397, "screen_name": "dilruba_lees", "id_str": "3555727397"}, {"name": "perryd", "indices": [557, 566], "id": 413929358, "screen_name": "perryd43", "id_str": "413929358"}, {"name": "Shugga_Shugg", "indices": [567, 583], "id": 1330955659, "screen_name": "Printspixnremix", "id_str": "1330955659"}, {"name": "the engineer", "indices": [584, 594], "id": 1625407075, "screen_name": "eng30june", "id_str": "1625407075"}], "symbols": []}, "full_text": "@BrettCateley @EliLeonarda @isamuuran1316 @REALTEAMFOLLOW2 @Ginette00058 @KhanSVC @zahoorahmed553 @SKID1144 @PapaPorter1 @ABBASJAFREE @hamouda05034871 @andreasleu1 @LiliBodo @ivymarina1 @LaniJDav @robtropper @RoshanDua @DeFaukatrua @MSpadine @VictoriaD6363 @TaposKumarBasu @lv4gab @r95731 @LudMarx1 @heroldbarton @Silau25 @VKEN11 @RosaTrunk @fevziates3 @ahbakana4 @ROSMERYALPIRE @KedmaHelena1 @prcowboys @gypsy1207 @KVajpayaee @thaar @Japan_kenpou @Daisy284762327 @LatofaOb @lilian8090 @CaipiraRanchao @LaurenVictorita @Lau_SDV @RizzoGigirz58 @dilruba_lees @perryd43 @Printspixnremix @eng30june So kind of you Andreas \ud83c\udf38\ud83c\udf38"}, "in_reply_to_status_id_str": "972454931939635200", "in_reply_to_user_id": 2314229087, "is_quote_status": false, "filter_level": "low", "id": 972472983779528704, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "khanhakim_k", "display_text_range": [117, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690602660", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 729, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "906537327593365505", "notifications": null, "followers_count": 63, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 1, "profile_text_color": "333333", "translator_type": "none", "name": "\u2729KANNA\u2729", "default_profile_image": false, "friends_count": 66, "verified": false, "default_profile": true, "favourites_count": 867, "id": 906537327593365505, "profile_image_url": "http://pbs.twimg.com/profile_images/971415424523882496/AgN0_C0s_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/971415424523882496/AgN0_C0s_normal.jpg", "profile_background_tile": false, "screen_name": "Kyankiti_LOVE", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/906537327593365505/1519718787", "created_at": "Sat Sep 09 15:18:36 +0000 2017", "contributors_enabled": false, "description": "\u81ea\u7531\u4eba\ud83d\ude18\uff65\u5143\u67d4\u9053\u90e8\ud83d\udc63\uff65 \u8ab0\u3067\u3082\u3075\u3049\u308d\u307f~\ud83d\ude0e\ud83d\udc95", "location": "\u572d\u53f8 10/29~\u2661", "lang": "ja"}, "id_str": "972472987956858880", "entities": {"urls": [{"url": "https://t.co/0Iutx5TbV7", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472987956858880"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "\u4eca\u65e5\u306f\u826f\u304d\u65e5\u3067\u3057\u305f\ud83d\udc4f\n\u7f8e\u5473\u3057\u304b\u3063\u305f\u3057\u3001\u697d\u3057\u304b\u3063\u305f\uff01\n\u5909\u306a\u30c0\u30f3\u30b9\u898b\u308c\u305f\u3057\u7b11\u7b11\n\u3067\u3082\u306d\u3001\u6700\u5f8c\u306d\u59b9\u9054\u3068\u5e30\u308a\u3088\u3063\u3066\n\u6642\u9593\u3084\u3070\u304f\u3066\u8d70\u308b\u4e8b\u306b\u306a\u3063\u305f\u306e\n\u305d\u3057\u305f\u3089\u3001\u3069\u30fc\u3057\u305f\u3068\u601d\u3046\uff1f\n\n\u9053\u306e\u9014\u4e2d\u3067\u5927\u80c6\u306b\n\u30d8\u30c3\u30c9\u30b9\u30e9\u30a4\u30c7\u30a3\u30f3\u30b0\u304b\u307e\u3057\u305f\u3088\ud83d\ude0e\ud83d\udc95\n\u3059\u3063\u3054\u3044\u2026 https://t.co/0Iutx5TbV7", "source": "Twitter for Android", "created_at": "Sat Mar 10 14:03:22 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"extended_entities": {"media": [{"url": "https://t.co/yOoQUfbG3h", "id_str": "972472927449882624", "display_url": "pic.twitter.com/yOoQUfbG3h", "media_url_https": "https://pbs.twimg.com/media/DX7q-aJVoAAT3nm.jpg", "type": "photo", "indices": [121, 144], "id": 972472927449882624, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 900}, "large": {"resize": "fit", "w": 2048, "h": 1536}, "small": {"resize": "fit", "w": 680, "h": 510}}, "media_url": "http://pbs.twimg.com/media/DX7q-aJVoAAT3nm.jpg", "expanded_url": "https://twitter.com/Kyankiti_LOVE/status/972472987956858880/photo/1"}, {"url": "https://t.co/yOoQUfbG3h", "id_str": "972472946768793601", "display_url": "pic.twitter.com/yOoQUfbG3h", "media_url_https": "https://pbs.twimg.com/media/DX7q_iHU0AEC2mz.jpg", "type": "photo", "indices": [121, 144], "id": 972472946768793601, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 900, "h": 1200}, "large": {"resize": "fit", "w": 1536, "h": 2048}, "small": {"resize": "fit", "w": 510, "h": 680}}, "media_url": "http://pbs.twimg.com/media/DX7q_iHU0AEC2mz.jpg", "expanded_url": "https://twitter.com/Kyankiti_LOVE/status/972472987956858880/photo/1"}, {"url": "https://t.co/yOoQUfbG3h", "id_str": "972472968986046464", "display_url": "pic.twitter.com/yOoQUfbG3h", "media_url_https": "https://pbs.twimg.com/media/DX7rA04VMAAPsiI.jpg", "type": "photo", "indices": [121, 144], "id": 972472968986046464, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 900}, "large": {"resize": "fit", "w": 2048, "h": 1536}, "small": {"resize": "fit", "w": 680, "h": 510}}, "media_url": "http://pbs.twimg.com/media/DX7rA04VMAAPsiI.jpg", "expanded_url": "https://twitter.com/Kyankiti_LOVE/status/972472987956858880/photo/1"}]}, "display_text_range": [0, 120], "entities": {"urls": [], "media": [{"url": "https://t.co/yOoQUfbG3h", "id_str": "972472927449882624", "display_url": "pic.twitter.com/yOoQUfbG3h", "media_url_https": "https://pbs.twimg.com/media/DX7q-aJVoAAT3nm.jpg", "type": "photo", "indices": [121, 144], "id": 972472927449882624, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 900}, "large": {"resize": "fit", "w": 2048, "h": 1536}, "small": {"resize": "fit", "w": 680, "h": 510}}, "media_url": "http://pbs.twimg.com/media/DX7q-aJVoAAT3nm.jpg", "expanded_url": "https://twitter.com/Kyankiti_LOVE/status/972472987956858880/photo/1"}, {"url": "https://t.co/yOoQUfbG3h", "id_str": "972472946768793601", "display_url": "pic.twitter.com/yOoQUfbG3h", "media_url_https": "https://pbs.twimg.com/media/DX7q_iHU0AEC2mz.jpg", "type": "photo", "indices": [121, 144], "id": 972472946768793601, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 900, "h": 1200}, "large": {"resize": "fit", "w": 1536, "h": 2048}, "small": {"resize": "fit", "w": 510, "h": 680}}, "media_url": "http://pbs.twimg.com/media/DX7q_iHU0AEC2mz.jpg", "expanded_url": "https://twitter.com/Kyankiti_LOVE/status/972472987956858880/photo/1"}, {"url": "https://t.co/yOoQUfbG3h", "id_str": "972472968986046464", "display_url": "pic.twitter.com/yOoQUfbG3h", "media_url_https": "https://pbs.twimg.com/media/DX7rA04VMAAPsiI.jpg", "type": "photo", "indices": [121, 144], "id": 972472968986046464, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 900}, "large": {"resize": "fit", "w": 2048, "h": 1536}, "small": {"resize": "fit", "w": 680, "h": 510}}, "media_url": "http://pbs.twimg.com/media/DX7rA04VMAAPsiI.jpg", "expanded_url": "https://twitter.com/Kyankiti_LOVE/status/972472987956858880/photo/1"}], "hashtags": [], "user_mentions": [], "symbols": []}, "full_text": "\u4eca\u65e5\u306f\u826f\u304d\u65e5\u3067\u3057\u305f\ud83d\udc4f\n\u7f8e\u5473\u3057\u304b\u3063\u305f\u3057\u3001\u697d\u3057\u304b\u3063\u305f\uff01\n\u5909\u306a\u30c0\u30f3\u30b9\u898b\u308c\u305f\u3057\u7b11\u7b11\n\u3067\u3082\u306d\u3001\u6700\u5f8c\u306d\u59b9\u9054\u3068\u5e30\u308a\u3088\u3063\u3066\n\u6642\u9593\u3084\u3070\u304f\u3066\u8d70\u308b\u4e8b\u306b\u306a\u3063\u305f\u306e\n\u305d\u3057\u305f\u3089\u3001\u3069\u30fc\u3057\u305f\u3068\u601d\u3046\uff1f\n\n\u9053\u306e\u9014\u4e2d\u3067\u5927\u80c6\u306b\n\u30d8\u30c3\u30c9\u30b9\u30e9\u30a4\u30c7\u30a3\u30f3\u30b0\u304b\u307e\u3057\u305f\u3088\ud83d\ude0e\ud83d\udc95\n\u3059\u3063\u3054\u3044\u624b\u304c\u75db\u3044\ud83d\ude31 https://t.co/yOoQUfbG3h"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972472987956858880, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "ja"} +{"reply_count": 0, "timestamp_ms": "1520690603657", "favorited": false, "in_reply_to_user_id_str": "1249495926", "user": {"statuses_count": 15421, "geo_enabled": false, "utc_offset": -14400, "profile_sidebar_border_color": "000000", "profile_link_color": "FFC0CB", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "2664620811", "notifications": null, "followers_count": 538, "url": null, "profile_sidebar_fill_color": "000000", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": "Atlantic Time (Canada)", "profile_use_background_image": false, "protected": false, "following": null, "listed_count": 2, "profile_text_color": "000000", "translator_type": "none", "name": "marcela", "default_profile_image": false, "friends_count": 397, "verified": false, "default_profile": false, "favourites_count": 8643, "id": 2664620811, "profile_image_url": "http://pbs.twimg.com/profile_images/941819701688193024/QBPU6tg0_normal.jpg", "profile_background_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/941819701688193024/QBPU6tg0_normal.jpg", "profile_background_tile": false, "screen_name": "cexcela", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/2664620811/1516976786", "created_at": "Wed Jul 02 17:30:21 +0000 2014", "contributors_enabled": false, "description": "smelly cat, what are they feeding you?", "location": null, "lang": "pt"}, "id_str": "972472992138715136", "entities": {"urls": [{"url": "https://t.co/xenTHiYcci", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472992138715136"}], "hashtags": [], "user_mentions": [{"name": "Jazz", "indices": [0, 12], "id": 1249495926, "screen_name": "jesgalidade", "id_str": "1249495926"}], "symbols": []}, "text": "@jesgalidade anem jessica nao me venha com sanduiches caros pra cima de mim\nmiojao 3 sabores diferentes apenas para\u2026 https://t.co/xenTHiYcci", "source": "Twitter Web Client", "created_at": "Sat Mar 10 14:03:23 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972472108352720896, "extended_tweet": {"display_text_range": [13, 184], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "Jazz", "indices": [0, 12], "id": 1249495926, "screen_name": "jesgalidade", "id_str": "1249495926"}], "symbols": []}, "full_text": "@jesgalidade anem jessica nao me venha com sanduiches caros pra cima de mim\nmiojao 3 sabores diferentes apenas para os vips>>>>>>> sanduiche do madero 283948 reais"}, "in_reply_to_status_id_str": "972472108352720896", "in_reply_to_user_id": 1249495926, "is_quote_status": false, "filter_level": "low", "id": 972472992138715136, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "jesgalidade", "display_text_range": [13, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "pt"} +{"reply_count": 0, "timestamp_ms": "1520690603664", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 21710, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "000000", "profile_link_color": "7FDBB6", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "817462838927048704", "notifications": null, "followers_count": 815, "url": "https://open.kakao.com/o/sxilmuH", "profile_sidebar_fill_color": "000000", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": false, "protected": false, "following": null, "listed_count": 7, "profile_text_color": "000000", "translator_type": "none", "name": "[\uc0c8\ubcbd...\uc774\uc654\uc2b5\ub2c8\ub31c\ud6c4\ud6c4]\ub9ac\ub378\ud83d\ude18", "default_profile_image": false, "friends_count": 548, "verified": false, "default_profile": false, "favourites_count": 22635, "id": 817462838927048704, "profile_image_url": "http://pbs.twimg.com/profile_images/972458460695560193/1HXzJxQd_normal.jpg", "profile_background_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/972458460695560193/1HXzJxQd_normal.jpg", "profile_background_tile": false, "screen_name": "lee_cherry16", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/817462838927048704/1520598986", "created_at": "Fri Jan 06 20:08:23 +0000 2017", "contributors_enabled": false, "description": "20\u2193/\uc5f0\uc131\ub7ec/\uba58\uc158\uc2a4\ub8e8 \uace0\uc758x \ub9de\ud314\u261e\uba58\uc158 \ud30c\ud2b8\ub108\uc870\ud83d\udc95 \ud788\ub098\ub978\ud83d\udc95\uc138\uc774\uc8e0\uc0bc\ub128\uc138\ud83d\udc95 (\u2741\u00b4\u25bd`\u2741) \uc778\uc7a5\u261e\ubb3c\ub9cc\ub450\u2665\n\ud1a0\uc624\ub8e8\ud83d\udc95 @oikawa_for_lee \ud558\uc9c0\uba54\ud83d\udc95@Iwa_chan_forLee \uc787\uc138\uc774\ud83d\udc95 @ORENO_AOHARU \uc6b0\uc2dc\uc9c0\ub9c8\ud83d\udc95 @Ushi_for_lee", "location": "\ud1a0\uc624\ub8e8\ub791 \ud558\uc9c0\uba54\uca29 \uc0ac\uc774", "lang": "ko"}, "id_str": "972472992168009728", "entities": {"urls": [{"url": "https://t.co/OBM01OpaGe", "indices": [116, 139], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472992168009728"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "\uc580\ub370\ub808\uce74\uc640\uac00 \ub0a9\uce58/\uac10\uae08/\uc9d1\ucc29\ud558\uba74 \uc5bc\ub9c8\ub098 \uca4c\ub294\uc9c0 \uc544\uc2ed\ub2c8\uae4c...\n\uc545\u3131 \uc18c\uc720\uc695 \uca4c\ub294 \ud1a0\uc624\ub8e8...\ud751\ud751\n\uac70\uae30\ub2e4\uac00 \ud589\ub3d9(?)\ub9d0\uc740 \ub2e4\uc815\ud55c\ub370 \ud558\uccb4\ub294 \ubc18\ub300\uc778\uac83 \uae4c\uc9c0 \ub354\ud558\uba74 \uccb4\uace0\uc784,..\n\ubc15\uace0\uc788\ub294\ub370 \uc544\ud30c\uc11cor\ucf8c\uac10\ub54c\ubb38\uc5d0 \uc6b0\ub294\uac70\u2026 https://t.co/OBM01OpaGe", "source": "Twitter for Android", "created_at": "Sat Mar 10 14:03:23 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 153], "entities": {"urls": [], "hashtags": [], "user_mentions": [], "symbols": []}, "full_text": "\uc580\ub370\ub808\uce74\uc640\uac00 \ub0a9\uce58/\uac10\uae08/\uc9d1\ucc29\ud558\uba74 \uc5bc\ub9c8\ub098 \uca4c\ub294\uc9c0 \uc544\uc2ed\ub2c8\uae4c...\n\uc545\u3131 \uc18c\uc720\uc695 \uca4c\ub294 \ud1a0\uc624\ub8e8...\ud751\ud751\n\uac70\uae30\ub2e4\uac00 \ud589\ub3d9(?)\ub9d0\uc740 \ub2e4\uc815\ud55c\ub370 \ud558\uccb4\ub294 \ubc18\ub300\uc778\uac83 \uae4c\uc9c0 \ub354\ud558\uba74 \uccb4\uace0\uc784,..\n\ubc15\uace0\uc788\ub294\ub370 \uc544\ud30c\uc11cor\ucf8c\uac10\ub54c\ubb38\uc5d0 \uc6b0\ub294\uac70 \ubcf4\uba74 \uc774\uc131\uc758 \ub048 \ub193\uce58\uace0 \ub354 \ud55c\uc9d3 \ud574\ubc84\ub9ac\uba74 \uc9c4\uc2ec \uc624\uc9d0...(??\ub9ac\ub378\uc544?"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972472992168009728, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "ko"} +{"reply_count": 0, "timestamp_ms": "1520690603663", "favorited": false, "in_reply_to_user_id_str": "1603421874", "user": {"statuses_count": 1433, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "928204976949776384", "notifications": null, "followers_count": 45, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "333333", "translator_type": "none", "name": "\u0627\u0628\u0648 \u0645\u0633\u0645\u0627\u0631", "default_profile_image": false, "friends_count": 353, "verified": false, "default_profile": true, "favourites_count": 100, "id": 928204976949776384, "profile_image_url": "http://pbs.twimg.com/profile_images/930897765407821824/x80FgkxE_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/930897765407821824/x80FgkxE_normal.jpg", "profile_background_tile": false, "screen_name": "saas454", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/928204976949776384/1510805504", "created_at": "Wed Nov 08 10:18:06 +0000 2017", "contributors_enabled": false, "description": "\u200f(\u200f\u200f\u200f\u200f\u0627\u0644\u0648\u0637\u0646 \u062e\u0637 \u0627\u062d\u0645\u0631) \n\n\n\n\u200f", "location": "\u0639\u0627\u064a\u0634 \u062a\u062d\u062a \u0627\u0644\u0633\u0645\u0627\u0621 \u0641\u0648\u0642 \u0627\u0644\u0627\u0631\u0636", "lang": "ar"}, "id_str": "972472992163942400", "entities": {"urls": [{"url": "https://t.co/CroGzlxIDs", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472992163942400"}], "hashtags": [], "user_mentions": [{"name": "\u0631\u0627\u0645\u064a \u0627\u0644\u0645\u062c\u0646\u062f\u0644", "indices": [0, 6], "id": 1603421874, "screen_name": "H1am1", "id_str": "1603421874"}, {"name": "\u0627\u0628\u0648 \u062d\u0633\u064a\u0646", "indices": [7, 14], "id": 972115947598336000, "screen_name": "m8alQt", "id_str": "972115947598336000"}, {"name": "\u0632\u00a4\u0631\u00b0\u0642#\u0627\u00b0\u0648\u00a4\u064a", "indices": [15, 31], "id": 972106894650179584, "screen_name": "boedsawv8nrewoo", "id_str": "972106894650179584"}, {"name": "\u0627\u0644\u0635\u0651\u064e\u0627\u0631\u0645 \u0627\u0644\u064a\u064e\u0627\u0645\u064a\u0640", "indices": [32, 43], "id": 884303701, "screen_name": "rg00d12011", "id_str": "884303701"}, {"name": "M.H. Aleisa \ud83c\udf99", "indices": [44, 60], "id": 2549106078, "screen_name": "Herald_Reporter", "id_str": "2549106078"}, {"name": "\u0627\u0633\u062a\u063a\u0641\u0631\u0627\u0644\u0644\u0647", "indices": [61, 77], "id": 972341086483046400, "screen_name": "5bBHUqlJka6lxp4", "id_str": "972341086483046400"}, {"name": "\u0645\u062a\u0623\u0645\u0644", "indices": [78, 94], "id": 971756165196632064, "screen_name": "ETKWQEztH09ib62", "id_str": "971756165196632064"}], "symbols": []}, "text": "@H1am1 @m8alQt @boedsawv8nrewoo @rg00d12011 @Herald_Reporter @5bBHUqlJka6lxp4 @ETKWQEztH09ib62 \u0627\u0646\u0639\u0645 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0647 \u0634\u0646\u062a \u062d\u0631\u2026 https://t.co/CroGzlxIDs", "source": "Twitter for Android", "created_at": "Sat Mar 10 14:03:23 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972471980527034368, "extended_tweet": {"display_text_range": [95, 298], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "\u0631\u0627\u0645\u064a \u0627\u0644\u0645\u062c\u0646\u062f\u0644", "indices": [0, 6], "id": 1603421874, "screen_name": "H1am1", "id_str": "1603421874"}, {"name": "\u0627\u0628\u0648 \u062d\u0633\u064a\u0646", "indices": [7, 14], "id": 972115947598336000, "screen_name": "m8alQt", "id_str": "972115947598336000"}, {"name": "\u0632\u00a4\u0631\u00b0\u0642#\u0627\u00b0\u0648\u00a4\u064a", "indices": [15, 31], "id": 972106894650179584, "screen_name": "boedsawv8nrewoo", "id_str": "972106894650179584"}, {"name": "\u0627\u0644\u0635\u0651\u064e\u0627\u0631\u0645 \u0627\u0644\u064a\u064e\u0627\u0645\u064a\u0640", "indices": [32, 43], "id": 884303701, "screen_name": "rg00d12011", "id_str": "884303701"}, {"name": "M.H. Aleisa \ud83c\udf99", "indices": [44, 60], "id": 2549106078, "screen_name": "Herald_Reporter", "id_str": "2549106078"}, {"name": "\u0627\u0633\u062a\u063a\u0641\u0631\u0627\u0644\u0644\u0647", "indices": [61, 77], "id": 972341086483046400, "screen_name": "5bBHUqlJka6lxp4", "id_str": "972341086483046400"}, {"name": "\u0645\u062a\u0623\u0645\u0644", "indices": [78, 94], "id": 971756165196632064, "screen_name": "ETKWQEztH09ib62", "id_str": "971756165196632064"}], "symbols": []}, "full_text": "@H1am1 @m8alQt @boedsawv8nrewoo @rg00d12011 @Herald_Reporter @5bBHUqlJka6lxp4 @ETKWQEztH09ib62 \u0627\u0646\u0639\u0645 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0647 \u0634\u0646\u062a \u062d\u0631\u0628 \u0639\u0644\u0649 \u062f\u0627\u0639\u0634 \u0648\u062c\u0645\u0639\u062a \u0627\u0644\u0639\u0627\u0644\u0645 \u0636\u062f \u062f\u0627\u0639\u0634 \u0628\u0639\u062f \u0645\u0627\u0641\u062c\u0631\u0648 \u0641\u064a \u0627\u0644\u0631\u064a\u0627\u0636 \u0648\u0642\u0627\u0644\u0648 \u0627\u0648\u0644 \u063a\u0632\u0648 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0647 \u0648\u0647\u062f\u062f \u0628\u0633\u062d\u0642 \u0627\u0644\u0634\u0639\u0628 \u0641\u064a \u0634\u0648\u0631\u0627\u0639 \u0627\u0644\u0631\u064a\u0627\u0636 \u0647\u0646\u0627 \u0645\u0646 \u062d\u0642\u0646\u0627 \u062f\u0627\u0644\u062f\u0641\u0627\u0639 \u0639\u0646 \u0627\u0644\u0646\u0641\u0633 \u0648\u0628\u0634\u0631\u0643 \u0633\u062d\u0642 \u062f\u0627\u0639\u0634 \u0627\u0646 \u0634\u0627\u0621\u0627\u0644\u0644\u0647 \u0639\u0644\u0649 \u064a\u062f\u064a\u0646 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0647"}, "in_reply_to_status_id_str": "972471980527034368", "in_reply_to_user_id": 1603421874, "is_quote_status": false, "filter_level": "low", "id": 972472992163942400, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "H1am1", "display_text_range": [95, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "ar"} +{"reply_count": 0, "timestamp_ms": "1520690603661", "favorited": false, "in_reply_to_user_id_str": "164787343", "user": {"statuses_count": 4096, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "000000", "profile_link_color": "3B94D9", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "164787343", "notifications": null, "followers_count": 205, "url": null, "profile_sidebar_fill_color": "000000", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": false, "protected": false, "following": null, "listed_count": 3, "profile_text_color": "000000", "translator_type": "none", "name": "Brian Macpherson", "default_profile_image": false, "friends_count": 417, "verified": false, "default_profile": false, "favourites_count": 1595, "id": 164787343, "profile_image_url": "http://pbs.twimg.com/profile_images/963817001243168768/8egyfyyi_normal.jpg", "profile_background_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/963817001243168768/8egyfyyi_normal.jpg", "profile_background_tile": false, "screen_name": "Rigmac", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/164787343/1498937528", "created_at": "Fri Jul 09 19:16:59 +0000 2010", "contributors_enabled": false, "description": "Working in Middle East, Living Uganda/Scotland. Opinions my own, except those times I borrow from someone wittier. Skilled in nephelococcygia", "location": "Kuwait", "lang": "en"}, "id_str": "972472992155557888", "entities": {"urls": [{"url": "https://t.co/kXTWKVuPRe", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472992155557888"}], "hashtags": [], "user_mentions": [{"name": "Miss Donna Babington", "indices": [0, 14], "id": 828881340, "screen_name": "MissBabington", "id_str": "828881340"}], "symbols": []}, "text": "@MissBabington The birds are flying south for the spring Ivan, your grandmother likes chocolate eggs.\nYes Boris, sh\u2026 https://t.co/kXTWKVuPRe", "source": "Twitter Web Client", "created_at": "Sat Mar 10 14:03:23 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972471984910151681, "extended_tweet": {"display_text_range": [15, 263], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "Miss Donna Babington", "indices": [0, 14], "id": 828881340, "screen_name": "MissBabington", "id_str": "828881340"}], "symbols": []}, "full_text": "@MissBabington The birds are flying south for the spring Ivan, your grandmother likes chocolate eggs.\nYes Boris, she eats many of them, and really likes the ones which glow.\nThat is very good Ivan, how many kilos would she like, and does she prefer weapons grade?"}, "in_reply_to_status_id_str": "972471984910151681", "in_reply_to_user_id": 164787343, "is_quote_status": false, "filter_level": "low", "id": 972472992155557888, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "Rigmac", "display_text_range": [15, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690603664", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 4, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "966975690774949888", "notifications": null, "followers_count": 56, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "333333", "translator_type": "none", "name": "\u6afb\u4e95 \u8cb4\u5b9f\u4e5f", "default_profile_image": false, "friends_count": 81, "verified": false, "default_profile": true, "favourites_count": 19, "id": 966975690774949888, "profile_image_url": "http://pbs.twimg.com/profile_images/966992528892309504/tsn_W_fi_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/966992528892309504/tsn_W_fi_normal.jpg", "profile_background_tile": false, "screen_name": "tIk62FpnVY6I0z5", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/966975690774949888/1519383958", "created_at": "Fri Feb 23 09:59:04 +0000 2018", "contributors_enabled": false, "description": "\u65e5\u672c\u306e\u30c8\u30ec\u30fc\u30ca\u30fc\u754c\u306b\u8ca2\u732e\u3059\u308b\u3053\u3068\u304c\u50d5\u306e\u5922\u3067\u3059", "location": "\u5343\u8449 \u938c\u30b1\u8c37\u5e02", "lang": "ja"}, "id_str": "972472992167968769", "entities": {"urls": [{"url": "https://t.co/MmERj45mzY", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472992167968769"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "jarta\u306e\u30bb\u30df\u30ca\u30fc\u306b\u53c2\u52a0\u3055\u305b\u3066\u3044\u305f\u3060\u304d\u307e\u3057\u305f\u3002\u50d5\u306fjarta\u306e\u8003\u3048\u65b9\u3084\u77e5\u8b58\u3001\u65b9\u6cd5\u3092\u77e5\u308c\u3070\u3001\u4eca\u3088\u308a\u3082\u66f4\u306b\u81ea\u5206\u306e\u4f53\u306e\u53ef\u80fd\u6027\u3092\u77e5\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u601d\u3044\u307e\u3059\u3002\n\u3082\u3057\u3001jarta\u3092\u77e5\u3089\u306a\u3044\u4eba\u306f\u662f\u975e\u4e00\u5ea6\u6642\u9593\u304c\u3042\u308b\u3068\u304d\u306b\u8aad\u3093\u3067\u307b\u3057\u3044\u3067\u3059\u3002\u3088\u308d\u3057\u304f\u2026 https://t.co/MmERj45mzY", "source": "Twitter for Android", "created_at": "Sat Mar 10 14:03:23 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 146], "entities": {"urls": [{"url": "https://t.co/g676zucq4D", "indices": [123, 146], "display_url": "jarta.jp", "expanded_url": "https://jarta.jp"}], "hashtags": [], "user_mentions": [], "symbols": []}, "full_text": "jarta\u306e\u30bb\u30df\u30ca\u30fc\u306b\u53c2\u52a0\u3055\u305b\u3066\u3044\u305f\u3060\u304d\u307e\u3057\u305f\u3002\u50d5\u306fjarta\u306e\u8003\u3048\u65b9\u3084\u77e5\u8b58\u3001\u65b9\u6cd5\u3092\u77e5\u308c\u3070\u3001\u4eca\u3088\u308a\u3082\u66f4\u306b\u81ea\u5206\u306e\u4f53\u306e\u53ef\u80fd\u6027\u3092\u77e5\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u601d\u3044\u307e\u3059\u3002\n\u3082\u3057\u3001jarta\u3092\u77e5\u3089\u306a\u3044\u4eba\u306f\u662f\u975e\u4e00\u5ea6\u6642\u9593\u304c\u3042\u308b\u3068\u304d\u306b\u8aad\u3093\u3067\u307b\u3057\u3044\u3067\u3059\u3002\u3088\u308d\u3057\u304f\u304a\u9858\u3044\u3057\u307e\u3059\u3002\nhttps://t.co/g676zucq4D"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972472992167968769, "possibly_sensitive": false, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "ja"} +{"reply_count": 0, "timestamp_ms": "1520690603662", "favorited": false, "in_reply_to_user_id_str": "971751850000097280", "user": {"statuses_count": 3631, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "871013753780805632", "notifications": null, "followers_count": 86, "url": "http://twpf.jp/inazuma11_pipi", "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 10, "profile_text_color": "333333", "translator_type": "none", "name": "\u2020\u250f\u251b\u304d\u3083\u3089\u3081\u308b\u2517\u2513\u2020", "default_profile_image": false, "friends_count": 71, "verified": false, "default_profile": true, "favourites_count": 2536, "id": 871013753780805632, "profile_image_url": "http://pbs.twimg.com/profile_images/967316719889825793/AFFMALp2_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/967316719889825793/AFFMALp2_normal.jpg", "profile_background_tile": false, "screen_name": "inazuma11_pipi", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/871013753780805632/1520606182", "created_at": "Sat Jun 03 14:40:36 +0000 2017", "contributors_enabled": false, "description": "\u7a32\u59bb\u306e\u304a\u305f\u304f\u3057\u3066\u307e\u3059", "location": "\u3088\u3093\u3067\u306d\u261e", "lang": "ja"}, "id_str": "972472992159576064", "entities": {"urls": [{"url": "https://t.co/3KBo4Hujrv", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472992159576064"}], "hashtags": [], "user_mentions": [{"name": "\u3061\u3083\uff01", "indices": [0, 12], "id": 971751850000097280, "screen_name": "chaxx__1710", "id_str": "971751850000097280"}], "symbols": []}, "text": "@chaxx__1710 \u672c\u5f53\u306b\u5b09\u3057\u3044\u3067\u3059\u611f\u8b1d\u3067\u3044\u3063\u3071\u3044\u3067\u3059\ud83d\ude22\ud83d\udc97\n\u571f\u66dc\u65e5\u306a\u306e\u3067\u3059\u306d(TT) \u6050\u3089\u304f\u571f\u66dc\u65e5\u306f\u4f1a\u5834\u5411\u304b\u3048\u306a\u3044\u306e\u3067\u90f5\u9001\uff06\u632f\u8fbc\u3067\u306e\u304a\u53d6\u5f15\u3067\u5927\u4e08\u592b\u3067\u3059\u304b..? \n\u3042\u3068\u4fa1\u683c\u51fa\u3066\u307e\u3057\u305f\uff5e\uff01 \u534a\u5206\u4fa1\u683c\u3067400\u5186\u3067\u3059\u306d\ud83d\udca6 \u4ee3\u884c\u8cbb\u3068\u304b\u2026 https://t.co/3KBo4Hujrv", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 14:03:23 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972471621985251328, "extended_tweet": {"extended_entities": {"media": [{"url": "https://t.co/oQOHzuIXLQ", "id_str": "972472986706956288", "display_url": "pic.twitter.com/oQOHzuIXLQ", "media_url_https": "https://pbs.twimg.com/media/DX7rB25U0AABicy.jpg", "type": "photo", "indices": [140, 163], "id": 972472986706956288, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 750, "h": 458}, "large": {"resize": "fit", "w": 750, "h": 458}, "small": {"resize": "fit", "w": 680, "h": 415}}, "media_url": "http://pbs.twimg.com/media/DX7rB25U0AABicy.jpg", "expanded_url": "https://twitter.com/inazuma11_pipi/status/972472992159576064/photo/1"}]}, "display_text_range": [13, 139], "entities": {"urls": [], "media": [{"url": "https://t.co/oQOHzuIXLQ", "id_str": "972472986706956288", "display_url": "pic.twitter.com/oQOHzuIXLQ", "media_url_https": "https://pbs.twimg.com/media/DX7rB25U0AABicy.jpg", "type": "photo", "indices": [140, 163], "id": 972472986706956288, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 750, "h": 458}, "large": {"resize": "fit", "w": 750, "h": 458}, "small": {"resize": "fit", "w": 680, "h": 415}}, "media_url": "http://pbs.twimg.com/media/DX7rB25U0AABicy.jpg", "expanded_url": "https://twitter.com/inazuma11_pipi/status/972472992159576064/photo/1"}], "hashtags": [], "user_mentions": [{"name": "\u3061\u3083\uff01", "indices": [0, 12], "id": 971751850000097280, "screen_name": "chaxx__1710", "id_str": "971751850000097280"}], "symbols": []}, "full_text": "@chaxx__1710 \u672c\u5f53\u306b\u5b09\u3057\u3044\u3067\u3059\u611f\u8b1d\u3067\u3044\u3063\u3071\u3044\u3067\u3059\ud83d\ude22\ud83d\udc97\n\u571f\u66dc\u65e5\u306a\u306e\u3067\u3059\u306d(TT) \u6050\u3089\u304f\u571f\u66dc\u65e5\u306f\u4f1a\u5834\u5411\u304b\u3048\u306a\u3044\u306e\u3067\u90f5\u9001\uff06\u632f\u8fbc\u3067\u306e\u304a\u53d6\u5f15\u3067\u5927\u4e08\u592b\u3067\u3059\u304b..? \n\u3042\u3068\u4fa1\u683c\u51fa\u3066\u307e\u3057\u305f\uff5e\uff01 \u534a\u5206\u4fa1\u683c\u3067400\u5186\u3067\u3059\u306d\ud83d\udca6 \u4ee3\u884c\u8cbb\u3068\u304b\u3082\u308d\u3082\u308d\u5408\u308f\u305b\u305f\u3082\u306e\u306fDM\u306b\u3066\u304a\u4f1d\u3048\u3057\u307e\u3059 \u2600\ufe0f https://t.co/oQOHzuIXLQ"}, "in_reply_to_status_id_str": "972471621985251328", "in_reply_to_user_id": 971751850000097280, "is_quote_status": false, "filter_level": "low", "id": 972472992159576064, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "chaxx__1710", "display_text_range": [13, 140], "possibly_sensitive": false, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "ja"} +{"reply_count": 0, "timestamp_ms": "1520690604665", "favorited": false, "in_reply_to_user_id_str": "310745610", "user": {"statuses_count": 19400, "geo_enabled": true, "utc_offset": 0, "profile_sidebar_border_color": "C6E2EE", "profile_link_color": "1F98C7", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme2/bg.gif", "id_str": "547677411", "notifications": null, "followers_count": 1280, "url": null, "profile_sidebar_fill_color": "DAECF4", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme2/bg.gif", "follow_request_sent": null, "time_zone": "London", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 6, "profile_text_color": "663B12", "translator_type": "none", "name": "Tony Forrest", "default_profile_image": false, "friends_count": 1504, "verified": false, "default_profile": false, "favourites_count": 61855, "id": 547677411, "profile_image_url": "http://pbs.twimg.com/profile_images/935475395503239168/R-BPssV5_normal.jpg", "profile_background_color": "C6E2EE", "profile_image_url_https": "https://pbs.twimg.com/profile_images/935475395503239168/R-BPssV5_normal.jpg", "profile_background_tile": false, "screen_name": "Dasher777", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/547677411/1511870899", "created_at": "Sat Apr 07 13:10:03 +0000 2012", "contributors_enabled": false, "description": null, "location": "Edinburgh, Scotland", "lang": "en"}, "id_str": "972472996366618624", "entities": {"urls": [{"url": "https://t.co/aBKe23DKzu", "indices": [111, 134], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972472996366618624"}], "hashtags": [], "user_mentions": [{"name": "ron payne", "indices": [0, 10], "id": 310745610, "screen_name": "ron_payne", "id_str": "310745610"}, {"name": "StarStuffFraoch", "indices": [11, 20], "id": 83124525, "screen_name": "Aibagawa", "id_str": "83124525"}, {"name": "Winston C", "indices": [21, 37], "id": 2365875094, "screen_name": "Proud2BScotBrit", "id_str": "2365875094"}, {"name": "Brian", "indices": [38, 45], "id": 489261587, "screen_name": "bpth67", "id_str": "489261587"}, {"name": "Sharon McGonigal", "indices": [46, 56], "id": 79175176, "screen_name": "Shazza1uk", "id_str": "79175176"}, {"name": "Historywoman", "indices": [57, 71], "id": 27610463, "screen_name": "2351onthelist", "id_str": "27610463"}, {"name": "brendan mccaughey", "indices": [72, 85], "id": 2922518121, "screen_name": "bmccaughey66", "id_str": "2922518121"}, {"name": "Greige Elder", "indices": [86, 97], "id": 3288290296, "screen_name": "GREIGE1969", "id_str": "3288290296"}, {"name": "JH", "indices": [98, 109], "id": 2842580613, "screen_name": "Hethers100", "id_str": "2842580613"}], "symbols": []}, "text": "@ron_payne @Aibagawa @Proud2BScotBrit @bpth67 @Shazza1uk @2351onthelist @bmccaughey66 @GREIGE1969 @Hethers100\u2026 https://t.co/aBKe23DKzu", "source": "Twitter Web Client", "created_at": "Sat Mar 10 14:03:24 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972472059732340737, "extended_tweet": {"display_text_range": [636, 791], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "ron payne", "indices": [0, 10], "id": 310745610, "screen_name": "ron_payne", "id_str": "310745610"}, {"name": "StarStuffFraoch", "indices": [11, 20], "id": 83124525, "screen_name": "Aibagawa", "id_str": "83124525"}, {"name": "Winston C", "indices": [21, 37], "id": 2365875094, "screen_name": "Proud2BScotBrit", "id_str": "2365875094"}, {"name": "Brian", "indices": [38, 45], "id": 489261587, "screen_name": "bpth67", "id_str": "489261587"}, {"name": "Sharon McGonigal", "indices": [46, 56], "id": 79175176, "screen_name": "Shazza1uk", "id_str": "79175176"}, {"name": "Historywoman", "indices": [57, 71], "id": 27610463, "screen_name": "2351onthelist", "id_str": "27610463"}, {"name": "brendan mccaughey", "indices": [72, 85], "id": 2922518121, "screen_name": "bmccaughey66", "id_str": "2922518121"}, {"name": "Greige Elder", "indices": [86, 97], "id": 3288290296, "screen_name": "GREIGE1969", "id_str": "3288290296"}, {"name": "JH", "indices": [98, 109], "id": 2842580613, "screen_name": "Hethers100", "id_str": "2842580613"}, {"name": "Ted Ditchburn@NNP", "indices": [110, 126], "id": 31096322, "screen_name": "TedDitchburnNNP", "id_str": "31096322"}, {"name": "Pro UK Anti Theism\u269b\ufe0f", "indices": [127, 139], "id": 95298042, "screen_name": "AyrshireBog", "id_str": "95298042"}, {"name": "Allan Sutherland", "indices": [140, 152], "id": 3000375921, "screen_name": "sud55_allan", "id_str": "3000375921"}, {"name": "Lorraine", "indices": [153, 165], "id": 1138242889, "screen_name": "coolstaggie", "id_str": "1138242889"}, {"name": "Bill Robertson", "indices": [166, 177], "id": 4164143872, "screen_name": "Feroxbill1", "id_str": "4164143872"}, {"name": "Okai Thenoo", "indices": [178, 186], "id": 952463035502866432, "screen_name": "OThenoo", "id_str": "952463035502866432"}, {"name": "Linda Scott", "indices": [187, 197], "id": 232941908, "screen_name": "sindalott", "id_str": "232941908"}, {"name": "Tony.", "indices": [198, 211], "id": 1834939934, "screen_name": "CelticRebel7", "id_str": "1834939934"}, {"name": "John Burns", "indices": [212, 224], "id": 833784180962185218, "screen_name": "burnsjohn49", "id_str": "833784180962185218"}, {"name": "yescotland", "indices": [225, 236], "id": 592118626, "screen_name": "yescotland", "id_str": "592118626"}, {"name": "linda morling", "indices": [237, 248], "id": 288430198, "screen_name": "morling123", "id_str": "288430198"}, {"name": "Jim Bond", "indices": [249, 261], "id": 2951989629, "screen_name": "thebestbond", "id_str": "2951989629"}, {"name": "Robert the Wallace", "indices": [262, 276], "id": 793220904146919424, "screen_name": "ScottFree2018", "id_str": "793220904146919424"}, {"name": "Dyspeptic Codger", "indices": [277, 293], "id": 729361341077700611, "screen_name": "DyspepticCodger", "id_str": "729361341077700611"}, {"name": "Young Capital \ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f\ud83c\uddec\ud83c\udde7\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f", "indices": [294, 307], "id": 883388549743202304, "screen_name": "HypocriteJoe", "id_str": "883388549743202304"}, {"name": "Jocky McJockface BA", "indices": [308, 319], "id": 4033486030, "screen_name": "ColinMair3", "id_str": "4033486030"}, {"name": "David Rushent", "indices": [320, 327], "id": 935117743, "screen_name": "davdiy", "id_str": "935117743"}, {"name": "S t e v e\u2122 \ud83c\uddec\ud83c\udde7\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f\ud83c\uddec\ud83c\udde7", "indices": [328, 336], "id": 2832484257, "screen_name": "TS_3502", "id_str": "2832484257"}, {"name": "Gordon Sinclair", "indices": [337, 348], "id": 54290957, "screen_name": "ggsinclair", "id_str": "54290957"}, {"name": "Scottish Welfare Blog", "indices": [349, 357], "id": 854434282680483840, "screen_name": "RWBBlog", "id_str": "854434282680483840"}, {"name": "Primordial Stoo OBE", "indices": [358, 368], "id": 881954262, "screen_name": "MusicStoo", "id_str": "881954262"}, {"name": "cyril.mitchell@live.", "indices": [369, 385], "id": 2576952659, "screen_name": "cyrilmitchell23", "id_str": "2576952659"}, {"name": "Craigie Watson", "indices": [386, 401], "id": 923121979, "screen_name": "craigie_watson", "id_str": "923121979"}, {"name": "Bertie Basset", "indices": [402, 416], "id": 2564867026, "screen_name": "OrkneyReality", "id_str": "2564867026"}, {"name": "Blindmanonhorse", "indices": [417, 433], "id": 277194766, "screen_name": "blindmanonhorse", "id_str": "277194766"}, {"name": "Capekness", "indices": [434, 444], "id": 18305299, "screen_name": "Capekness", "id_str": "18305299"}, {"name": "Jon Smith", "indices": [445, 453], "id": 1538580487, "screen_name": "S_U_A_R", "id_str": "1538580487"}, {"name": "geoff", "indices": [454, 466], "id": 4090866028, "screen_name": "jeffers6550", "id_str": "4090866028"}, {"name": "Jeremy Chillcott", "indices": [467, 478], "id": 4274628615, "screen_name": "Kallemet86", "id_str": "4274628615"}, {"name": "Fighting Fox", "indices": [479, 494], "id": 918445535895457793, "screen_name": "SabaidSionnach", "id_str": "918445535895457793"}, {"name": "Caroline Carmichael", "indices": [495, 503], "id": 922894164, "screen_name": "carmic3", "id_str": "922894164"}, {"name": "P\u00f2l Balla Gall-chn\u00f2", "indices": [504, 518], "id": 274142793, "screen_name": "paul13walnut5", "id_str": "274142793"}, {"name": "Andy Freedom", "indices": [519, 534], "id": 3137095281, "screen_name": "andyforfreedom", "id_str": "3137095281"}, {"name": "Brook Bay Pirate", "indices": [535, 550], "id": 560914742, "screen_name": "BrookBayPirate", "id_str": "560914742"}, {"name": "Derek Timothy", "indices": [551, 565], "id": 1256761860, "screen_name": "Derek_Timothy", "id_str": "1256761860"}, {"name": "Alex", "indices": [566, 580], "id": 820581501842628608, "screen_name": "alexiomeister", "id_str": "820581501842628608"}, {"name": "BRRSC (#1517)", "indices": [581, 587], "id": 938227789, "screen_name": "BRRSC", "id_str": "938227789"}, {"name": "GrumpyByName", "indices": [588, 599], "id": 24937181, "screen_name": "LessGrumpy", "id_str": "24937181"}, {"name": "Glasgow Girl \ud83d\udc90", "indices": [600, 609], "id": 231560243, "screen_name": "G32woman", "id_str": "231560243"}, {"name": "TheChieftain", "indices": [610, 621], "id": 806465530798501888, "screen_name": "t_chieftan", "id_str": "806465530798501888"}, {"name": "Kevin Evans", "indices": [622, 635], "id": 747398201116856320, "screen_name": "KevinTREvans", "id_str": "747398201116856320"}], "symbols": []}, "full_text": "@ron_payne @Aibagawa @Proud2BScotBrit @bpth67 @Shazza1uk @2351onthelist @bmccaughey66 @GREIGE1969 @Hethers100 @TedDitchburnNNP @AyrshireBog @sud55_allan @coolstaggie @Feroxbill1 @OThenoo @sindalott @CelticRebel7 @burnsjohn49 @yescotland @morling123 @thebestbond @ScottFree2018 @DyspepticCodger @HypocriteJoe @ColinMair3 @davdiy @TS_3502 @ggsinclair @RWBBlog @MusicStoo @cyrilmitchell23 @craigie_watson @OrkneyReality @blindmanonhorse @Capekness @S_U_A_R @jeffers6550 @Kallemet86 @SabaidSionnach @carmic3 @paul13walnut5 @andyforfreedom @BrookBayPirate @Derek_Timothy @alexiomeister @BRRSC @LessGrumpy @G32woman @t_chieftan @KevinTREvans Anyone moronic enough to commence a tweet with \"So, basically\" would probably have been whining and whinging for another referendum on 19th September 2014?"}, "in_reply_to_status_id_str": "972472059732340737", "in_reply_to_user_id": 310745610, "is_quote_status": false, "filter_level": "low", "id": 972472996366618624, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "ron_payne", "display_text_range": [117, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690606665", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 435, "geo_enabled": false, "utc_offset": -28800, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "904270638721978368", "notifications": null, "followers_count": 7, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": "Pacific Time (US & Canada)", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "333333", "translator_type": "none", "name": "niki niki", "default_profile_image": false, "friends_count": 275, "verified": false, "default_profile": true, "favourites_count": 117, "id": 904270638721978368, "profile_image_url": "http://pbs.twimg.com/profile_images/909347578596200448/oeoI8X8J_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/909347578596200448/oeoI8X8J_normal.jpg", "profile_background_tile": false, "screen_name": "nikinik00140268", "is_translator": false, "created_at": "Sun Sep 03 09:11:35 +0000 2017", "contributors_enabled": false, "description": null, "location": null, "lang": "bg"}, "id_str": "972473004755169281", "entities": {"urls": [{"url": "https://t.co/UjHfrd1fXP", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473004755169281"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "\u0438\u0434\u0432\u0430 \u043b\u0435\u0442\u043d\u0438\u044f\u0442 \u0441\u0435\u0437\u043e\u043d \u0432\u0440\u0435\u043c\u0435 \u0435 \u0437\u0430 \u043c\u043e\u0440\u0435 \u0440\u0435\u043a\u0438 \u0438 \u043b\u0435\u0442\u043d\u0438 \u043a\u044a\u043c\u043f\u0438\u043d\u0433\u0438 \u0447\u0443\u0436\u0434\u0435\u043d\u0446\u0438\u0442\u0435 \u0437\u0430\u043f\u043e\u0432\u044f\u0434\u0430\u0439\u0442\u0435 \u043f\u043e \u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u043e\u0442\u043e \u0447\u0435\u0440\u043d\u043e\u043c\u043e\u0440\u0438\u0435 \u0437\u0430 \u0435\u0434\u043d\u0430 \u0434\u2026 https://t.co/UjHfrd1fXP", "source": "Twitter Web Client", "created_at": "Sat Mar 10 14:03:26 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 273], "entities": {"urls": [], "hashtags": [], "user_mentions": [], "symbols": []}, "full_text": "\u0438\u0434\u0432\u0430 \u043b\u0435\u0442\u043d\u0438\u044f\u0442 \u0441\u0435\u0437\u043e\u043d \u0432\u0440\u0435\u043c\u0435 \u0435 \u0437\u0430 \u043c\u043e\u0440\u0435 \u0440\u0435\u043a\u0438 \u0438 \u043b\u0435\u0442\u043d\u0438 \u043a\u044a\u043c\u043f\u0438\u043d\u0433\u0438 \u0447\u0443\u0436\u0434\u0435\u043d\u0446\u0438\u0442\u0435 \u0437\u0430\u043f\u043e\u0432\u044f\u0434\u0430\u0439\u0442\u0435 \u043f\u043e \u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u043e\u0442\u043e \u0447\u0435\u0440\u043d\u043e\u043c\u043e\u0440\u0438\u0435 \u0437\u0430 \u0435\u0434\u043d\u0430 \u0434\u043e\u0431\u0440\u0430 \u043f\u043e\u0447\u0438\u0432\u043a\u0430 \u0431\u044a\u043b\u0433\u0430\u0440\u0438\u0442\u0435 \u0441\u043c\u0435 \u043c\u043d\u043e\u0433\u043e \u0433\u043e\u0441\u0442\u043e\u043f\u0440\u0438\u0435\u043c\u043d\u0438 \u0445\u043e\u0440\u0430 \u0440\u0438\u0441\u043a\u043e\u0432\u0435\u0442\u0435 \u0437\u0430 \u043f\u0440\u0435\u0441\u0442\u044a\u043f\u043d\u043e\u0441\u0442 \u043d\u0435 \u0441\u0430 \u043f\u043e \u0433\u043e\u043b\u0435\u043c\u0438 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0442\u0435 \u0434\u044a\u0440\u0436\u0430\u0432\u0438 \u043d\u043e \u0434\u043e\u0439\u0434\u0435 \u0435\u0434\u0438\u043d \u0448\u0432\u0435\u0442\u0441\u043a\u0438 \u0442\u044e\u0444\u043b\u0435\u043a \u0438 \u0440\u0438\u0442\u043d\u0430 \u043a\u0430\u043c\u0435\u0440\u0438\u0435\u0440\u043a\u0430"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473004755169281, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "bg"} +{"reply_count": 0, "timestamp_ms": "1520690606657", "favorited": false, "in_reply_to_user_id_str": "796910354781634562", "user": {"statuses_count": 4043, "geo_enabled": true, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "252305595", "notifications": null, "followers_count": 147, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 1, "profile_text_color": "333333", "translator_type": "none", "name": "Quantum1", "default_profile_image": false, "friends_count": 103, "verified": false, "default_profile": true, "favourites_count": 5165, "id": 252305595, "profile_image_url": "http://pbs.twimg.com/profile_images/939207358621863938/liT1iZEA_normal.jpg", "profile_background_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/939207358621863938/liT1iZEA_normal.jpg", "profile_background_tile": false, "screen_name": "ffemt210", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/252305595/1512759459", "created_at": "Mon Feb 14 22:49:58 +0000 2011", "contributors_enabled": false, "description": "#GunControlNow #BanAssaultWeapons \n#NoNRA#NeverAgain \n#BlueWave #VoteThemOut\n#Resist", "location": null, "lang": "en"}, "id_str": "972473004721627137", "entities": {"urls": [{"url": "https://t.co/5AI9gnwgD3", "indices": [116, 139], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473004721627137"}], "hashtags": [], "user_mentions": [{"name": "\ud835\ude79\ud835\ude9e\ud835\ude95\ud835\ude92\ud835\ude8e", "indices": [0, 13], "id": 796910354781634562, "screen_name": "resisterhood", "id_str": "796910354781634562"}, {"name": "The Last Person to join Tw*tter", "indices": [14, 30], "id": 952506773491060738, "screen_name": "TheLastPersont2", "id_str": "952506773491060738"}], "symbols": []}, "text": "@resisterhood @TheLastPersont2 My sincere prayers of comfort go out to their families in this difficult time. When\u2026 https://t.co/5AI9gnwgD3", "source": "Twitter for Android", "created_at": "Sat Mar 10 14:03:26 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972350166505226241, "extended_tweet": {"display_text_range": [31, 255], "entities": {"urls": [], "hashtags": [{"indices": [163, 177], "text": "GunControlNow"}, {"indices": [199, 210], "text": "NeverAgain"}, {"indices": [225, 231], "text": "NoNRA"}, {"indices": [232, 244], "text": "VoteThemOut"}, {"indices": [246, 255], "text": "BlueWave"}], "user_mentions": [{"name": "\ud835\ude79\ud835\ude9e\ud835\ude95\ud835\ude92\ud835\ude8e", "indices": [0, 13], "id": 796910354781634562, "screen_name": "resisterhood", "id_str": "796910354781634562"}, {"name": "The Last Person to join Tw*tter", "indices": [14, 30], "id": 952506773491060738, "screen_name": "TheLastPersont2", "id_str": "952506773491060738"}], "symbols": []}, "full_text": "@resisterhood @TheLastPersont2 My sincere prayers of comfort go out to their families in this difficult time. When is this Country going to come together and pass #GunControlNow, so we can truly say #NeverAgain and mean it. \n#NoNRA\n#VoteThemOut \n#BlueWave"}, "in_reply_to_status_id_str": "972350166505226241", "in_reply_to_user_id": 796910354781634562, "is_quote_status": false, "filter_level": "low", "id": 972473004721627137, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "resisterhood", "display_text_range": [31, 140], "favorite_count": 0, "place": {"url": "https://api.twitter.com/1.1/geo/id/6565298bcadb82a1.json", "place_type": "city", "attributes": {}, "name": "Knoxville", "country_code": "US", "full_name": "Knoxville, TN", "id": "6565298bcadb82a1", "country": "United States", "bounding_box": {"coordinates": [[[-84.19397, 35.831436], [-84.19397, 36.133505], [-83.733713, 36.133505], [-83.733713, 35.831436]]], "type": "Polygon"}}, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690606661", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 19, "geo_enabled": true, "utc_offset": -18000, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "4A913C", "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/315340628/Twitter-BG_2_bg-image.jpg", "id_str": "189534922", "notifications": null, "followers_count": 273, "url": "http://www.careerarc.com/job-seeker", "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/315340628/Twitter-BG_2_bg-image.jpg", "follow_request_sent": null, "time_zone": "Quito", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 16, "profile_text_color": "333333", "translator_type": "none", "name": "MiddletownCT S-Chain", "default_profile_image": false, "friends_count": 262, "verified": false, "default_profile": false, "favourites_count": 0, "id": 189534922, "profile_image_url": "http://pbs.twimg.com/profile_images/713284840859172864/XvlOPi3T_normal.jpg", "profile_background_color": "253956", "profile_image_url_https": "https://pbs.twimg.com/profile_images/713284840859172864/XvlOPi3T_normal.jpg", "profile_background_tile": false, "screen_name": "tmj_CTM_schn", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/189534922/1458895334", "created_at": "Sat Sep 11 14:48:48 +0000 2010", "contributors_enabled": false, "description": "Follow this account for geo-targeted Supply Chain job tweets in Middletown, CT. Need help? Tweet us at @CareerArc!", "location": "Middletown, CT", "lang": "en"}, "id_str": "972473004738338816", "entities": {"urls": [{"url": "https://t.co/DkkpLdzIhM", "indices": [89, 112], "display_url": "bit.ly/2CqUQZB", "expanded_url": "http://bit.ly/2CqUQZB"}, {"url": "https://t.co/RSwGvdu2OC", "indices": [114, 137], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473004738338816"}], "hashtags": [{"indices": [6, 13], "text": "hiring"}, {"indices": [37, 41], "text": "job"}], "user_mentions": [], "symbols": []}, "text": "We're #hiring! Read about our latest #job opening here: NON-CDL, Route Delivery Driver - https://t.co/DkkpLdzIhM\u2026 https://t.co/RSwGvdu2OC", "source": "TweetMyJOBS", "created_at": "Sat Mar 10 14:03:26 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 152], "entities": {"urls": [{"url": "https://t.co/DkkpLdzIhM", "indices": [89, 112], "display_url": "bit.ly/2CqUQZB", "expanded_url": "http://bit.ly/2CqUQZB"}], "hashtags": [{"indices": [6, 13], "text": "hiring"}, {"indices": [37, 41], "text": "job"}, {"indices": [113, 125], "text": "SupplyChain"}, {"indices": [126, 137], "text": "NorthHaven"}, {"indices": [142, 152], "text": "CareerArc"}], "user_mentions": [], "symbols": []}, "full_text": "We're #hiring! Read about our latest #job opening here: NON-CDL, Route Delivery Driver - https://t.co/DkkpLdzIhM #SupplyChain #NorthHaven, CT #CareerArc"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473004738338816, "possibly_sensitive": false, "retweet_count": 0, "coordinates": {"coordinates": [-72.8595447, 41.3909139], "type": "Point"}, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 0, "place": {"url": "https://api.twitter.com/1.1/geo/id/dc482d90e88b4cc7.json", "place_type": "city", "attributes": {}, "name": "North Haven", "country_code": "US", "full_name": "North Haven, CT", "id": "dc482d90e88b4cc7", "country": "United States", "bounding_box": {"coordinates": [[[-72.907963, 41.332539], [-72.907963, 41.434448], [-72.728027, 41.434448], [-72.728027, 41.332539]]], "type": "Polygon"}}, "truncated": true, "geo": {"coordinates": [41.3909139, -72.8595447], "type": "Point"}, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690607657", "favorited": false, "in_reply_to_user_id_str": "114943015", "user": {"statuses_count": 129, "geo_enabled": true, "utc_offset": -14400, "profile_sidebar_border_color": "000000", "profile_link_color": "389C2E", "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/378800000031294621/769ebc051c3b86afc09a0d8d4df63bb1.jpeg", "id_str": "133746199", "notifications": null, "followers_count": 22, "url": null, "profile_sidebar_fill_color": "EADEAA", "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/378800000031294621/769ebc051c3b86afc09a0d8d4df63bb1.jpeg", "follow_request_sent": null, "time_zone": "Atlantic Time (Canada)", "profile_use_background_image": false, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "333333", "translator_type": "none", "name": "WILLIAM GIL", "default_profile_image": false, "friends_count": 109, "verified": false, "default_profile": false, "favourites_count": 19, "id": 133746199, "profile_image_url": "http://pbs.twimg.com/profile_images/497804760741732352/sR6JjXMF_normal.jpeg", "profile_background_color": "8B552B", "profile_image_url_https": "https://pbs.twimg.com/profile_images/497804760741732352/sR6JjXMF_normal.jpeg", "profile_background_tile": false, "screen_name": "williamjgil", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/133746199/1407520830", "created_at": "Fri Apr 16 14:33:10 +0000 2010", "contributors_enabled": false, "description": "SINCERO, JUSTICIERO, AVENTURERO, RESPONSABLE, COMPA\u00d1ERO Y ENAMORADO DE LA VIDA.", "location": "VENEZUELA", "lang": "es"}, "id_str": "972473008915968001", "entities": {"urls": [{"url": "https://t.co/RXQJ2p9TVQ", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473008915968001"}], "hashtags": [], "user_mentions": [{"name": "TRP", "indices": [0, 6], "id": 114943015, "screen_name": "TRP31", "id_str": "114943015"}], "symbols": []}, "text": "@TRP31 Servicio P\u00fablico: para la Sra. Humberta Alejo, C.I. V-8.663.388, quien padece de Cirrosis, se requiere con c\u2026 https://t.co/RXQJ2p9TVQ", "source": "Twitter Web Client", "created_at": "Sat Mar 10 14:03:27 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 271], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "TRP", "indices": [0, 6], "id": 114943015, "screen_name": "TRP31", "id_str": "114943015"}], "symbols": []}, "full_text": "@TRP31 Servicio P\u00fablico: para la Sra. Humberta Alejo, C.I. V-8.663.388, quien padece de Cirrosis, se requiere con car\u00e1cter de urgencia Albumina Humana. Se agradece a las personas o instituciones que tengan informaci\u00f3n al respecto llamar al 0426.178.66.38, 0416.561.82.50."}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": 114943015, "is_quote_status": false, "filter_level": "low", "id": 972473008915968001, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "TRP31", "contributors": null, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "es"} +{"reply_count": 0, "in_reply_to_status_id": null, "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 163242, "geo_enabled": true, "utc_offset": -21600, "profile_sidebar_border_color": "EEEEEE", "profile_link_color": "009999", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme14/bg.gif", "id_str": "240900235", "notifications": null, "followers_count": 1743, "url": null, "profile_sidebar_fill_color": "EFEFEF", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme14/bg.gif", "follow_request_sent": null, "time_zone": "Central Time (US & Canada)", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 11, "profile_text_color": "333333", "translator_type": "none", "name": "#TeamArmy\ud83c\uddfa\ud83c\uddf8", "default_profile_image": false, "friends_count": 722, "verified": false, "default_profile": false, "favourites_count": 618, "id": 240900235, "profile_image_url": "http://pbs.twimg.com/profile_images/967066769914396672/sy4S1hMb_normal.jpg", "profile_background_color": "131516", "profile_image_url_https": "https://pbs.twimg.com/profile_images/967066769914396672/sy4S1hMb_normal.jpg", "profile_background_tile": true, "screen_name": "ChynaaKDave", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/240900235/1509823441", "created_at": "Fri Jan 21 00:35:01 +0000 2011", "contributors_enabled": false, "description": "What\u2019s Meant for Me , Will Be for Me\ud83d\udc4c\ud83c\udffd!! #Army #LongLiveAshley\u2764\ufe0f #BreadWinner #1993", "location": null, "lang": "en"}, "id_str": "972473008953708545", "entities": {"urls": [{"url": "https://t.co/8fZKsgcuma", "indices": [132, 155], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473008953708545"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "\ud83d\ude02\ud83d\ude02 you was drunk && i don\u2019t babysit drunk ppl , the shit had me irritated! You was crying && yelling at me and you\u2026 https://t.co/8fZKsgcuma", "source": "Twitter for iPhone", "place": null, "created_at": "Sat Mar 10 14:03:27 +0000 2018", "retweeted": false, "quoted_status_id_str": "972469475994894336", "extended_tweet": {"display_text_range": [0, 167], "entities": {"urls": [{"url": "https://t.co/rxh7GXOsbp", "indices": [168, 191], "display_url": "twitter.com/mzphantaztik/s\u2026", "expanded_url": "https://twitter.com/mzphantaztik/status/972469475994894336"}], "hashtags": [], "user_mentions": [], "symbols": []}, "full_text": "\ud83d\ude02\ud83d\ude02 you was drunk && i don\u2019t babysit drunk ppl , the shit had me irritated! You was crying && yelling at me and you didn\u2019t wanna drink the damn water !! https://t.co/rxh7GXOsbp"}, "in_reply_to_status_id_str": null, "filter_level": "low", "in_reply_to_user_id": null, "is_quote_status": true, "quoted_status": {"reply_count": 0, "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 59323, "geo_enabled": false, "utc_offset": -14400, "profile_sidebar_border_color": "0B0B0C", "profile_link_color": "33A37F", "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/731399935/7416f62254dcbab3b54104ee01b6ff28.png", "id_str": "194705712", "notifications": null, "followers_count": 1638, "url": null, "profile_sidebar_fill_color": "040404", "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/731399935/7416f62254dcbab3b54104ee01b6ff28.png", "follow_request_sent": null, "time_zone": "Atlantic Time (Canada)", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 11, "profile_text_color": "070808", "translator_type": "none", "name": "c\u0131\u03b1\u044f\u03b1\ud83d\udda4", "default_profile_image": false, "friends_count": 1165, "verified": false, "default_profile": false, "favourites_count": 1147, "id": 194705712, "profile_image_url": "http://pbs.twimg.com/profile_images/945040797593989121/2XjUfzNy_normal.jpg", "profile_background_color": "020202", "profile_image_url_https": "https://pbs.twimg.com/profile_images/945040797593989121/2XjUfzNy_normal.jpg", "profile_background_tile": true, "screen_name": "MzPhantaztik", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/194705712/1439270591", "created_at": "Fri Sep 24 20:09:17 +0000 2010", "contributors_enabled": false, "description": "25. \u03b9\u0438\u0442\u0454\u2113\u2113\u03b9g\u0454\u0438\u0442.\u0432\u0454\u03b1\u03c5\u0442\u03b9f\u03c5\u2113.\u0432\u2113\u0454\u0455\u0455\u0454\u2202", "location": "Chattanooga ", "lang": "en"}, "id_str": "972469475994894336", "entities": {"urls": [], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "I\u2019m in the bathroom half dead and crying and what was the love of my life doing? Tweeting about it! \ud83d\ude2d\ud83d\ude2d\ud83d\ude2d\ud83d\ude02\ud83d\ude02\ud83d\ude02\ud83d\ude02", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 13:49:25 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972469475994894336, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 0, "place": null, "truncated": false, "geo": null, "quote_count": 0, "lang": "en"}, "id": 972473008953708545, "timestamp_ms": "1520690607666", "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 0, "quoted_status_id": 972469475994894336, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690607657", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 23, "geo_enabled": true, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "893956886990659588", "notifications": null, "followers_count": 25, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "333333", "translator_type": "none", "name": "Juan Lopez", "default_profile_image": false, "friends_count": 76, "verified": false, "default_profile": true, "favourites_count": 0, "id": 893956886990659588, "profile_image_url": "http://pbs.twimg.com/profile_images/894006946730311681/3Nu-yuvR_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/894006946730311681/3Nu-yuvR_normal.jpg", "profile_background_tile": false, "screen_name": "lopezlocus", "is_translator": false, "created_at": "Sat Aug 05 22:08:25 +0000 2017", "contributors_enabled": false, "description": null, "location": "Ocala, FL", "lang": "en"}, "id_str": "972473008915968000", "entities": {"urls": [{"url": "https://t.co/KO9HQkOeqr", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473008915968000"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "A day of recognition by peers! \u201cPassing the Torch of Excellence\u201d ceremony at Psychological and Social Work Services\u2026 https://t.co/KO9HQkOeqr", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 14:03:27 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"extended_entities": {"media": [{"url": "https://t.co/203c5p43Iw", "id_str": "972472992570556416", "display_url": "pic.twitter.com/203c5p43Iw", "media_url_https": "https://pbs.twimg.com/media/DX7rCMvUQAARslw.jpg", "type": "photo", "indices": [190, 213], "id": 972472992570556416, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 900, "h": 1200}, "large": {"resize": "fit", "w": 1536, "h": 2048}, "small": {"resize": "fit", "w": 510, "h": 680}}, "media_url": "http://pbs.twimg.com/media/DX7rCMvUQAARslw.jpg", "expanded_url": "https://twitter.com/lopezlocus/status/972473008915968000/photo/1"}, {"url": "https://t.co/203c5p43Iw", "id_str": "972472992558010368", "display_url": "pic.twitter.com/203c5p43Iw", "media_url_https": "https://pbs.twimg.com/media/DX7rCMsU0AARslT.jpg", "type": "photo", "indices": [190, 213], "id": 972472992558010368, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 900, "h": 1200}, "large": {"resize": "fit", "w": 1536, "h": 2048}, "small": {"resize": "fit", "w": 510, "h": 680}}, "media_url": "http://pbs.twimg.com/media/DX7rCMsU0AARslT.jpg", "expanded_url": "https://twitter.com/lopezlocus/status/972473008915968000/photo/1"}]}, "display_text_range": [0, 189], "entities": {"urls": [], "media": [{"url": "https://t.co/203c5p43Iw", "id_str": "972472992570556416", "display_url": "pic.twitter.com/203c5p43Iw", "media_url_https": "https://pbs.twimg.com/media/DX7rCMvUQAARslw.jpg", "type": "photo", "indices": [190, 213], "id": 972472992570556416, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 900, "h": 1200}, "large": {"resize": "fit", "w": 1536, "h": 2048}, "small": {"resize": "fit", "w": 510, "h": 680}}, "media_url": "http://pbs.twimg.com/media/DX7rCMvUQAARslw.jpg", "expanded_url": "https://twitter.com/lopezlocus/status/972473008915968000/photo/1"}, {"url": "https://t.co/203c5p43Iw", "id_str": "972472992558010368", "display_url": "pic.twitter.com/203c5p43Iw", "media_url_https": "https://pbs.twimg.com/media/DX7rCMsU0AARslT.jpg", "type": "photo", "indices": [190, 213], "id": 972472992558010368, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 900, "h": 1200}, "large": {"resize": "fit", "w": 1536, "h": 2048}, "small": {"resize": "fit", "w": 510, "h": 680}}, "media_url": "http://pbs.twimg.com/media/DX7rCMsU0AARslT.jpg", "expanded_url": "https://twitter.com/lopezlocus/status/972473008915968000/photo/1"}], "hashtags": [], "user_mentions": [], "symbols": []}, "full_text": "A day of recognition by peers! \u201cPassing the Torch of Excellence\u201d ceremony at Psychological and Social Work Services. This month\u2019s recipients: Alyssa Koesy and April Adams. CONGRATULATIONS!! https://t.co/203c5p43Iw"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473008915968000, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "in_reply_to_status_id": null, "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 546, "geo_enabled": false, "utc_offset": -28800, "profile_sidebar_border_color": "000000", "profile_link_color": "000000", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "951126045696118784", "notifications": null, "followers_count": 87, "url": null, "profile_sidebar_fill_color": "000000", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": "Pacific Time (US & Canada)", "profile_use_background_image": false, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "000000", "translator_type": "none", "name": "Discovery Chanyeol", "default_profile_image": false, "friends_count": 209, "verified": false, "default_profile": false, "favourites_count": 285, "id": 951126045696118784, "profile_image_url": "http://pbs.twimg.com/profile_images/972207247488180233/xSdjpwJU_normal.jpg", "profile_background_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/972207247488180233/xSdjpwJU_normal.jpg", "profile_background_tile": false, "screen_name": "erroraphaella", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/951126045696118784/1520627553", "created_at": "Wed Jan 10 16:18:15 +0000 2018", "contributors_enabled": false, "description": "aqui so tem eu falando sozinha", "location": "Slytherin", "lang": "pt"}, "id_str": "972473013110272000", "entities": {"urls": [{"url": "https://t.co/rSZiM7G4cS", "indices": [120, 143], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473013110272000"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "escuta os rap do namjoon&yoongi eh pros fortes pq a vontade que da eh de chuta as cadeira quebra\u2026 https://t.co/rSZiM7G4cS", "source": "Twitter for Android", "place": null, "created_at": "Sat Mar 10 14:03:28 +0000 2018", "retweeted": false, "quoted_status_id_str": "972272073342095360", "extended_tweet": {"display_text_range": [0, 283], "entities": {"urls": [{"url": "https://t.co/8PMQqahkA3", "indices": [284, 307], "display_url": "twitter.com/parkchanyeoIx/\u2026", "expanded_url": "https://twitter.com/parkchanyeoIx/status/972272073342095360"}], "hashtags": [], "user_mentions": [], "symbols": []}, "full_text": "escuta os rap do namjoon&yoongi eh pros fortes pq a vontade que da eh de chuta as cadeira quebra as mesa da soco em tudo joga alguem da janela mas nois se contenta em so balan\u00e7a a cabe\u00e7a fazer cara de bravo e imagina a cena na mente https://t.co/8PMQqahkA3"}, "in_reply_to_status_id_str": null, "filter_level": "low", "in_reply_to_user_id": null, "is_quote_status": true, "quoted_status": {"reply_count": 2, "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 4860, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "933504121365303296", "notifications": null, "followers_count": 9288, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 143, "profile_text_color": "333333", "translator_type": "none", "name": "edu pior exol do site", "default_profile_image": false, "friends_count": 7179, "verified": false, "default_profile": true, "favourites_count": 11280, "id": 933504121365303296, "profile_image_url": "http://pbs.twimg.com/profile_images/972336601039884288/OXxYJWsL_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/972336601039884288/OXxYJWsL_normal.jpg", "profile_background_tile": false, "screen_name": "parkchanyeoIx", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/933504121365303296/1517873884", "created_at": "Thu Nov 23 01:15:00 +0000 2017", "contributors_enabled": false, "description": "eu nao julgo voces por nao gostarem de exo nem todo mundo tem bom gosto mesmo", "location": "exoplanet ", "lang": "pt"}, "id_str": "972272073342095360", "entities": {"urls": [{"url": "https://t.co/FV43pv1p6e", "indices": [120, 143], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972272073342095360"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "escuta os rap do chanyeol&sehun eh pros fortes pq a vontade que da eh de chuta as cadeira quebra\u2026 https://t.co/FV43pv1p6e", "source": "Twitter for Android", "created_at": "Sat Mar 10 00:45:00 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 283], "entities": {"urls": [], "hashtags": [], "user_mentions": [], "symbols": []}, "full_text": "escuta os rap do chanyeol&sehun eh pros fortes pq a vontade que da eh de chuta as cadeira quebra as mesa da soco em tudo joga alguem da janela mas nois se contenta em so balan\u00e7a a cabe\u00e7a fazer cara de bravo e imagina a cena na mente"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972272073342095360, "retweet_count": 251, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 303, "place": null, "truncated": true, "geo": null, "quote_count": 10, "lang": "pt"}, "id": 972473013110272000, "timestamp_ms": "1520690608657", "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 0, "quoted_status_id": 972272073342095360, "truncated": true, "geo": null, "quote_count": 0, "lang": "pt"} +{"reply_count": 0, "timestamp_ms": "1520690608665", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 1157, "geo_enabled": true, "utc_offset": -28800, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "862479145003081728", "notifications": null, "followers_count": 471, "url": "http://www.wholesomestart.com", "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": "Pacific Time (US & Canada)", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 5, "profile_text_color": "333333", "translator_type": "none", "name": "Samina RDN LD IFNCP", "default_profile_image": false, "friends_count": 875, "verified": false, "default_profile": true, "favourites_count": 2927, "id": 862479145003081728, "profile_image_url": "http://pbs.twimg.com/profile_images/883832169491292161/a0O8KUm-_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/883832169491292161/a0O8KUm-_normal.jpg", "profile_background_tile": false, "screen_name": "WholesomeStart", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/862479145003081728/1499651585", "created_at": "Thu May 11 01:27:07 +0000 2017", "contributors_enabled": false, "description": "\ud83d\udc69\ud83c\udffd\u200d\ud83d\udcbbVirtual Dietitian \ud83c\udf35HAES \ud83e\udd51Integrative & Functional Nutrition Therapy \u2728Empowering you to achieve your best health \ud83d\udc47\ud83c\udffdFREE 15min consult", "location": "Houston, TX", "lang": "en"}, "id_str": "972473013143851008", "entities": {"urls": [{"url": "https://t.co/tIhsSKAxrc", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473013143851008"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "Threw this breakfast together in minutes with whatever food I could find in my fridge \ud83e\udd51 + \ud83c\udf45 +\ud83c\udf5e. I topped this simpl\u2026 https://t.co/tIhsSKAxrc", "source": "IFTTT", "created_at": "Sat Mar 10 14:03:28 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"extended_entities": {"media": [{"url": "https://t.co/o4znInQFs6", "id_str": "972473011575107584", "display_url": "pic.twitter.com/o4znInQFs6", "media_url_https": "https://pbs.twimg.com/media/DX7rDTiWsAAdWV3.jpg", "type": "photo", "indices": [276, 299], "id": 972473011575107584, "sizes": {"medium": {"resize": "fit", "w": 640, "h": 640}, "thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 640, "h": 640}, "small": {"resize": "fit", "w": 640, "h": 640}}, "media_url": "http://pbs.twimg.com/media/DX7rDTiWsAAdWV3.jpg", "expanded_url": "https://twitter.com/WholesomeStart/status/972473013143851008/photo/1"}]}, "display_text_range": [0, 275], "entities": {"urls": [{"url": "https://t.co/bw3YLKq7Tl", "indices": [252, 275], "display_url": "ift.tt/2p3PnPq", "expanded_url": "http://ift.tt/2p3PnPq"}], "media": [{"url": "https://t.co/o4znInQFs6", "id_str": "972473011575107584", "display_url": "pic.twitter.com/o4znInQFs6", "media_url_https": "https://pbs.twimg.com/media/DX7rDTiWsAAdWV3.jpg", "type": "photo", "indices": [276, 299], "id": 972473011575107584, "sizes": {"medium": {"resize": "fit", "w": 640, "h": 640}, "thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 640, "h": 640}, "small": {"resize": "fit", "w": 640, "h": 640}}, "media_url": "http://pbs.twimg.com/media/DX7rDTiWsAAdWV3.jpg", "expanded_url": "https://twitter.com/WholesomeStart/status/972473013143851008/photo/1"}], "hashtags": [], "user_mentions": [], "symbols": []}, "full_text": "Threw this breakfast together in minutes with whatever food I could find in my fridge \ud83e\udd51 + \ud83c\udf45 +\ud83c\udf5e. I topped this simple avocado toast with salt, black pepper and chili flakes for an extra boost of flavor but really wished I had some \ud83e\uddc0! It\u2019s definitely t\u2026 https://t.co/bw3YLKq7Tl https://t.co/o4znInQFs6"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473013143851008, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690609662", "favorited": false, "in_reply_to_user_id_str": "889779351058862080", "user": {"statuses_count": 14009, "geo_enabled": true, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "748771123597234177", "notifications": null, "followers_count": 484, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 11, "profile_text_color": "333333", "translator_type": "none", "name": "\ud83d\udde1nero", "default_profile_image": false, "friends_count": 166, "verified": false, "default_profile": true, "favourites_count": 9962, "id": 748771123597234177, "profile_image_url": "http://pbs.twimg.com/profile_images/968616558066053121/qz3kBiH-_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/968616558066053121/qz3kBiH-_normal.jpg", "profile_background_tile": false, "screen_name": "zayloux", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/748771123597234177/1517380484", "created_at": "Fri Jul 01 06:52:02 +0000 2016", "contributors_enabled": false, "description": "\u3086\u3059\u3089\ud83e\udd40 jabami yumeko", "location": "Osaka-shi Konohana, Osaka", "lang": "fr"}, "id_str": "972473017325453312", "entities": {"urls": [{"url": "https://t.co/hoj9bZqhT7", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473017325453312"}], "hashtags": [], "user_mentions": [{"name": "\u271e bankrupt", "indices": [0, 14], "id": 889779351058862080, "screen_name": "NEEDGODSAVEME", "id_str": "889779351058862080"}], "symbols": []}, "text": "@NEEDGODSAVEME bah d\u00e9j\u00e0 j'ai jamais dis que jvoulais un barbu hein mais jpropose que vous mettiez de l'apr\u00e8s shampo\u2026 https://t.co/hoj9bZqhT7", "source": "Twitter for Android", "created_at": "Sat Mar 10 14:03:29 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972471893260369922, "extended_tweet": {"display_text_range": [15, 202], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "\u271e bankrupt", "indices": [0, 14], "id": 889779351058862080, "screen_name": "NEEDGODSAVEME", "id_str": "889779351058862080"}], "symbols": []}, "full_text": "@NEEDGODSAVEME bah d\u00e9j\u00e0 j'ai jamais dis que jvoulais un barbu hein mais jpropose que vous mettiez de l'apr\u00e8s shampoing pr adoucir un peu prcq l\u00e0 \u00e7a va plus on peut plus faire de bisous sans \u00eatre bless\u00e9e"}, "in_reply_to_status_id_str": "972471893260369922", "in_reply_to_user_id": 889779351058862080, "is_quote_status": false, "filter_level": "low", "id": 972473017325453312, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "NEEDGODSAVEME", "display_text_range": [15, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "fr"} +{"reply_count": 0, "timestamp_ms": "1520690609664", "favorited": false, "in_reply_to_user_id_str": "26133242", "user": {"statuses_count": 59924, "geo_enabled": true, "utc_offset": -28800, "profile_sidebar_border_color": "03021C", "profile_link_color": "F58EA8", "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/283406678/n16727354_39021828_3772.jpg", "id_str": "202752376", "notifications": null, "followers_count": 765, "url": null, "profile_sidebar_fill_color": "0A506B", "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/283406678/n16727354_39021828_3772.jpg", "follow_request_sent": null, "time_zone": "Pacific Time (US & Canada)", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 16, "profile_text_color": "227ACC", "translator_type": "none", "name": "\ud83e\udd23 Deepening My Laugh Lines \ud83d\ude1c", "default_profile_image": false, "friends_count": 586, "verified": false, "default_profile": false, "favourites_count": 11467, "id": 202752376, "profile_image_url": "http://pbs.twimg.com/profile_images/971791179384844291/NKFeMcgh_normal.jpg", "profile_background_color": "021F1E", "profile_image_url_https": "https://pbs.twimg.com/profile_images/971791179384844291/NKFeMcgh_normal.jpg", "profile_background_tile": false, "screen_name": "Inquired_Mind", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/202752376/1520343775", "created_at": "Thu Oct 14 19:04:19 +0000 2010", "contributors_enabled": false, "description": "Singer\u2022Designer\u2022Stylist\u2022Decorator\u2022Poet", "location": "Dallas, Tx", "lang": "en"}, "id_str": "972473017333899264", "entities": {"urls": [{"url": "https://t.co/ND6yGcFTpY", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473017333899264"}], "hashtags": [], "user_mentions": [{"name": "swaggaUNFLAWED\u2122", "indices": [0, 14], "id": 26133242, "screen_name": "FebruarysOwn8", "id_str": "26133242"}], "symbols": []}, "text": "@FebruarysOwn8 I do not! I stay in my lane and keep my commentary to a minimum. My face however .... didn\u2019t get the\u2026 https://t.co/ND6yGcFTpY", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 14:03:29 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972472524155039744, "extended_tweet": {"display_text_range": [15, 181], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "swaggaUNFLAWED\u2122", "indices": [0, 14], "id": 26133242, "screen_name": "FebruarysOwn8", "id_str": "26133242"}], "symbols": []}, "full_text": "@FebruarysOwn8 I do not! I stay in my lane and keep my commentary to a minimum. My face however .... didn\u2019t get the memo tht things hv to shift \ud83e\udd23. Quit playing Jason I wanna gooooo!"}, "in_reply_to_status_id_str": "972472524155039744", "in_reply_to_user_id": 26133242, "is_quote_status": false, "filter_level": "low", "id": 972473017333899264, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "FebruarysOwn8", "display_text_range": [15, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690609662", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 3225, "geo_enabled": true, "utc_offset": 3600, "profile_sidebar_border_color": "96B8C1", "profile_link_color": "FAB81E", "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/566725239468331008/es8AcevL.jpeg", "id_str": "368242968", "notifications": null, "followers_count": 800, "url": null, "profile_sidebar_fill_color": "E4E4CC", "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/566725239468331008/es8AcevL.jpeg", "follow_request_sent": null, "time_zone": "Rome", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 26, "profile_text_color": "382124", "translator_type": "none", "name": "carlo erba", "default_profile_image": false, "friends_count": 5001, "verified": false, "default_profile": false, "favourites_count": 2428, "id": 368242968, "profile_image_url": "http://pbs.twimg.com/profile_images/723820250773499904/gtbyV0Vi_normal.jpg", "profile_background_color": "5E747C", "profile_image_url_https": "https://pbs.twimg.com/profile_images/723820250773499904/gtbyV0Vi_normal.jpg", "profile_background_tile": false, "screen_name": "carloerbaa", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/368242968/1520439689", "created_at": "Mon Sep 05 09:48:32 +0000 2011", "contributors_enabled": false, "description": "#RT/#follow/#link is not necessarily endorsement.", "location": "Olbia-Tempio, Sardegna", "lang": "it"}, "id_str": "972473017325572097", "entities": {"urls": [{"url": "https://t.co/uTTVRYEcmV", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473017325572097"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "la vigilanza in sardegna, \u00e8 un \"accompagnatore\" pi\u00f9 che affidabile, ma forse tagliare ancora sulla pelle degli oper\u2026 https://t.co/uTTVRYEcmV", "source": "Twitter Web Client", "created_at": "Sat Mar 10 14:03:29 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 200], "entities": {"urls": [{"url": "https://t.co/TKrdkfrSvW", "indices": [177, 200], "display_url": "portale.fnomceo.it/violenza-gli-o\u2026", "expanded_url": "https://portale.fnomceo.it/violenza-gli-operatori-sanitari-un-fenomeno-crescita-quali-soluzioni/"}], "hashtags": [{"indices": [148, 165], "text": "arrusicurosicuro"}], "user_mentions": [{"name": "Luigi Arru", "indices": [167, 176], "id": 25867341, "screen_name": "luiseddu", "id_str": "25867341"}], "symbols": []}, "full_text": "la vigilanza in sardegna, \u00e8 un \"accompagnatore\" pi\u00f9 che affidabile, ma forse tagliare ancora sulla pelle degli operai porter\u00e0 a risultati vincenti, #arrusicurosicuro? @luiseddu https://t.co/TKrdkfrSvW"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473017325572097, "possibly_sensitive": false, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "it"} +{"reply_count": 0, "timestamp_ms": "1520690609666", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 25229, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "934906610954076161", "notifications": null, "followers_count": 79, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 1, "profile_text_color": "333333", "translator_type": "none", "name": "Carlo Ciccone", "default_profile_image": false, "friends_count": 118, "verified": false, "default_profile": true, "favourites_count": 21, "id": 934906610954076161, "profile_image_url": "http://pbs.twimg.com/profile_images/934907570451570688/8RRkQ2g6_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/934907570451570688/8RRkQ2g6_normal.jpg", "profile_background_tile": false, "screen_name": "CarloCiccone2", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/934906610954076161/1513601276", "created_at": "Sun Nov 26 22:08:00 +0000 2017", "contributors_enabled": false, "description": "Consultant. CPA, CISA, Attorney. eDiscovery, litigation support, IT-SOX, COSO, CoBIT.", "location": null, "lang": "en"}, "id_str": "972473017342349312", "entities": {"urls": [{"url": "https://t.co/BF6obIePqK", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473017342349312"}], "hashtags": [], "user_mentions": [{"name": "Dataconomy", "indices": [3, 19], "id": 2318606822, "screen_name": "DataconomyMedia", "id_str": "2318606822"}], "symbols": []}, "text": "RT @DataconomyMedia: Big data's rapid growth puts a bigger target on its back for cyberattacks. Here are some ideas\u2026 https://t.co/BF6obIePqK", "source": "IFTTT", "created_at": "Sat Mar 10 14:03:29 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"extended_entities": {"media": [{"id": 972472244482928640, "display_url": "pic.twitter.com/iuu6heM9CM", "media_url_https": "https://pbs.twimg.com/media/DX7qWp5U8AApm6O.jpg", "source_user_id_str": "2318606822", "indices": [233, 256], "id_str": "972472244482928640", "source_status_id_str": "972472249516249088", "expanded_url": "https://twitter.com/DataconomyMedia/status/972472249516249088/photo/1", "url": "https://t.co/iuu6heM9CM", "type": "photo", "source_user_id": 2318606822, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 800}, "large": {"resize": "fit", "w": 2048, "h": 1365}, "small": {"resize": "fit", "w": 680, "h": 453}}, "source_status_id": 972472249516249088, "media_url": "http://pbs.twimg.com/media/DX7qWp5U8AApm6O.jpg"}]}, "display_text_range": [0, 256], "entities": {"urls": [{"url": "https://t.co/WzTj0VIuhX", "indices": [176, 199], "display_url": "buff.ly/2oTjh9C", "expanded_url": "https://buff.ly/2oTjh9C"}], "media": [{"id": 972472244482928640, "display_url": "pic.twitter.com/iuu6heM9CM", "media_url_https": "https://pbs.twimg.com/media/DX7qWp5U8AApm6O.jpg", "source_user_id_str": "2318606822", "indices": [233, 256], "id_str": "972472244482928640", "source_status_id_str": "972472249516249088", "expanded_url": "https://twitter.com/DataconomyMedia/status/972472249516249088/photo/1", "url": "https://t.co/iuu6heM9CM", "type": "photo", "source_user_id": 2318606822, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 800}, "large": {"resize": "fit", "w": 2048, "h": 1365}, "small": {"resize": "fit", "w": 680, "h": 453}}, "source_status_id": 972472249516249088, "media_url": "http://pbs.twimg.com/media/DX7qWp5U8AApm6O.jpg"}], "hashtags": [{"indices": [200, 217], "text": "BigDataAnalytics"}, {"indices": [218, 232], "text": "CyberSecurity"}], "user_mentions": [{"name": "Dataconomy", "indices": [3, 19], "id": 2318606822, "screen_name": "DataconomyMedia", "id_str": "2318606822"}], "symbols": []}, "full_text": "RT @DataconomyMedia: Big data's rapid growth puts a bigger target on its back for cyberattacks. Here are some ideas on how your business can make your stored data more secure: https://t.co/WzTj0VIuhX #BigDataAnalytics #CyberSecurity https://t.co/iuu6heM9CM"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473017342349312, "possibly_sensitive": false, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690609663", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 39479, "geo_enabled": true, "utc_offset": -28800, "profile_sidebar_border_color": "000000", "profile_link_color": "1B95E0", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme4/bg.gif", "id_str": "226280047", "notifications": null, "followers_count": 456, "url": null, "profile_sidebar_fill_color": "000000", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme4/bg.gif", "follow_request_sent": null, "time_zone": "Pacific Time (US & Canada)", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 3, "profile_text_color": "000000", "translator_type": "none", "name": "bangdimple\ud83d\udd2d\ud83c\udf88\ud83d\udc99\ud83d\ude0a", "default_profile_image": false, "friends_count": 631, "verified": false, "default_profile": false, "favourites_count": 15872, "id": 226280047, "profile_image_url": "http://pbs.twimg.com/profile_images/965784746121822208/oP8WoDtY_normal.jpg", "profile_background_color": "1B95E0", "profile_image_url_https": "https://pbs.twimg.com/profile_images/965784746121822208/oP8WoDtY_normal.jpg", "profile_background_tile": false, "screen_name": "noonaecla", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/226280047/1458235032", "created_at": "Mon Dec 13 19:46:20 +0000 2010", "contributors_enabled": false, "description": "worldwide music fan! \n#justME\n@BTS_twt fan \n#BTSnoona \n#myviews_comments", "location": null, "lang": "en"}, "id_str": "972473017329532930", "entities": {"urls": [{"url": "https://t.co/eHHCNLMoXZ", "indices": [113, 136], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473017329532930"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "Lets make it to the fullest dear ARMY in the last days of voting in iHeartAwards...\n\nLets do this!\nLets get it!\u2026 https://t.co/eHHCNLMoXZ", "source": "Twitter Lite", "created_at": "Sat Mar 10 14:03:29 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 197], "entities": {"urls": [], "hashtags": [{"indices": [113, 126], "text": "iHeartAwards"}, {"indices": [128, 140], "text": "BestFanArmy"}, {"indices": [142, 150], "text": "BTSARMY"}, {"indices": [163, 181], "text": "ThankYouiLovelies"}, {"indices": [182, 197], "text": "THOSFansBTS10M"}], "user_mentions": [{"name": "\ubc29\ud0c4\uc18c\ub144\ub2e8", "indices": [152, 160], "id": 335141638, "screen_name": "BTS_twt", "id_str": "335141638"}], "symbols": []}, "full_text": "Lets make it to the fullest dear ARMY in the last days of voting in iHeartAwards...\n\nLets do this!\nLets get it!\n\n#iHeartAwards \n#BestFanArmy \n#BTSARMY \n@BTS_twt \n\n#ThankYouiLovelies #THOSFansBTS10M"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473017329532930, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690609662", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 2792, "geo_enabled": true, "utc_offset": -28800, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "2899162100", "notifications": null, "followers_count": 94, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": "Pacific Time (US & Canada)", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 5, "profile_text_color": "333333", "translator_type": "none", "name": "\u697d\u306b\u751f\u304d\u305f\u3044\u6bdb\u574a\u4e3b", "default_profile_image": false, "friends_count": 152, "verified": false, "default_profile": true, "favourites_count": 2297, "id": 2899162100, "profile_image_url": "http://pbs.twimg.com/profile_images/941269136008667136/SQzs9xGM_normal.jpg", "profile_background_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/941269136008667136/SQzs9xGM_normal.jpg", "profile_background_tile": false, "screen_name": "nemutaiM", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/2899162100/1513251025", "created_at": "Fri Nov 14 08:31:20 +0000 2014", "contributors_enabled": false, "description": "\u982d\u306f\u574a\u4e3b\u3067\u306f\u306a\u3044(\u7834\u6212)\u50e7\u4fb6\u3067\u3082\u306a\u3044", "location": null, "lang": "ja"}, "id_str": "972473017325445120", "entities": {"urls": [{"url": "https://t.co/X9rfMHeXjc", "indices": [60, 83], "display_url": "japanese.joins.com/article/423/23\u2026", "expanded_url": "http://japanese.joins.com/article/423/239423.html"}, {"url": "https://t.co/gv1ckEY56Z", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473017325445120"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "\u671d\u7c73\u9996\u8133\u4f1a\u8ac7\u306b\u300c\u30c1\u30e3\u30a4\u30ca\u30d1\u30c3\u30b7\u30f3\u30b0\u300d\u61f8\u5ff5\u3059\u308b\u4e2d\u56fd\u2026\u5b89\u500d\u9996\u76f8\u306f\u6025\u3044\u3067\u8a2a\u7c73\u767a\u8868| Joongang Ilbo | \u4e2d\u592e\u65e5\u5831 https://t.co/X9rfMHeXjc\n\n\u632f\u308a\u8fd4\u308b\u3068\u8a95\u751f\u65e5\u306b\u6dcb\u3057\u304fTwitter\u3067\u653f\u6cbb\u306e\u8a71\u3092\u3057\u3066\u3044\u305f\u304c\u2026 https://t.co/gv1ckEY56Z", "source": "Twitter for Android", "created_at": "Sat Mar 10 14:03:29 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 150], "entities": {"urls": [{"url": "https://t.co/X9rfMHeXjc", "indices": [60, 83], "display_url": "japanese.joins.com/article/423/23\u2026", "expanded_url": "http://japanese.joins.com/article/423/239423.html"}], "hashtags": [], "user_mentions": [], "symbols": []}, "full_text": "\u671d\u7c73\u9996\u8133\u4f1a\u8ac7\u306b\u300c\u30c1\u30e3\u30a4\u30ca\u30d1\u30c3\u30b7\u30f3\u30b0\u300d\u61f8\u5ff5\u3059\u308b\u4e2d\u56fd\u2026\u5b89\u500d\u9996\u76f8\u306f\u6025\u3044\u3067\u8a2a\u7c73\u767a\u8868| Joongang Ilbo | \u4e2d\u592e\u65e5\u5831 https://t.co/X9rfMHeXjc\n\n\u632f\u308a\u8fd4\u308b\u3068\u8a95\u751f\u65e5\u306b\u6dcb\u3057\u304fTwitter\u3067\u653f\u6cbb\u306e\u8a71\u3092\u3057\u3066\u3044\u305f\u304c\u300c\u5317\u671d\u9bae\u30bf\u30af\u30b9\u30d8\u30a4\u30d6\u30f3\u5316\u8aac\u300d\u3092\u767a\u60f3\u3057\u3066\u3044\u305f\u306e\u3067\u3001\u6700\u8fd1\u982d\u306e\u52d5\u304d\u304c\u920d\u3044\u306a\u3002"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473017325445120, "possibly_sensitive": false, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "ja"} +{"reply_count": 0, "timestamp_ms": "1520690610660", "favorited": false, "in_reply_to_user_id_str": "869665165112991744", "user": {"statuses_count": 10701, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "869665165112991744", "notifications": null, "followers_count": 561, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 2, "profile_text_color": "333333", "translator_type": "none", "name": "Daniellalli", "default_profile_image": false, "friends_count": 1100, "verified": false, "default_profile": true, "favourites_count": 32289, "id": 869665165112991744, "profile_image_url": "http://pbs.twimg.com/profile_images/869696417052336128/DSbHq6aD_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/869696417052336128/DSbHq6aD_normal.jpg", "profile_background_tile": false, "screen_name": "Daniellalli4", "is_translator": false, "created_at": "Tue May 30 21:21:47 +0000 2017", "contributors_enabled": false, "description": null, "location": null, "lang": "en"}, "id_str": "972473021511368705", "entities": {"urls": [{"url": "https://t.co/R4SmLh46nc", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473021511368705"}], "hashtags": [], "user_mentions": [{"name": "#ThePersistence", "indices": [0, 13], "id": 931286316, "screen_name": "ScottPresler", "id_str": "931286316"}], "symbols": []}, "text": "@ScottPresler I only see your tweets if I go to your page, it\u2019s retweeted or sometimes it\u2019s liked by someone else I\u2026 https://t.co/R4SmLh46nc", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 14:03:30 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972472107387977731, "extended_tweet": {"display_text_range": [14, 179], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "#ThePersistence", "indices": [0, 13], "id": 931286316, "screen_name": "ScottPresler", "id_str": "931286316"}], "symbols": []}, "full_text": "@ScottPresler I only see your tweets if I go to your page, it\u2019s retweeted or sometimes it\u2019s liked by someone else I follow. So frustrating but I visit your page regularly to see \ud83d\ude0e"}, "in_reply_to_status_id_str": "972472107387977731", "in_reply_to_user_id": 869665165112991744, "is_quote_status": false, "filter_level": "low", "id": 972473021511368705, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "Daniellalli4", "display_text_range": [14, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690611665", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 4174, "geo_enabled": false, "utc_offset": -28800, "profile_sidebar_border_color": "C6E2EE", "profile_link_color": "1F98C7", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme2/bg.gif", "id_str": "284288096", "notifications": null, "followers_count": 3916, "url": "http://www.facebook.com/Childrenlost", "profile_sidebar_fill_color": "DAECF4", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme2/bg.gif", "follow_request_sent": null, "time_zone": "Pacific Time (US & Canada)", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 16, "profile_text_color": "663B12", "translator_type": "none", "name": "Children Lost", "default_profile_image": false, "friends_count": 557, "verified": false, "default_profile": false, "favourites_count": 438, "id": 284288096, "profile_image_url": "http://pbs.twimg.com/profile_images/521808043101540352/HoDsIW0w_normal.jpeg", "profile_background_color": "C6E2EE", "profile_image_url_https": "https://pbs.twimg.com/profile_images/521808043101540352/HoDsIW0w_normal.jpeg", "profile_background_tile": false, "screen_name": "PedophilePlanet", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/284288096/1413242403", "created_at": "Tue Apr 19 00:52:50 +0000 2011", "contributors_enabled": false, "description": "ALL over the #USA-& WORLD-Stalker geeks, Pedophile freaks, corrupt child trafficking divorce court judges & lawyers,weirdos of all sorts...#STOPCourtTrafficking", "location": "WORLD", "lang": "en"}, "id_str": "972473025726763008", "entities": {"urls": [{"url": "https://t.co/5luRgi00SN", "indices": [120, 143], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473025726763008"}], "hashtags": [{"indices": [0, 10], "text": "Hollywood"}], "user_mentions": [], "symbols": []}, "text": "#Hollywood better start acknowledging & eliminating the child rapists that are directors, actors, producers, et al\u2026 https://t.co/5luRgi00SN", "source": "Twitter for iPad", "created_at": "Sat Mar 10 14:03:31 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 281], "entities": {"urls": [], "hashtags": [{"indices": [0, 10], "text": "Hollywood"}, {"indices": [201, 207], "text": "movie"}, {"indices": [265, 270], "text": "film"}], "user_mentions": [], "symbols": []}, "full_text": "#Hollywood better start acknowledging & eliminating the child rapists that are directors, actors, producers, et al that are getting rich off movies because every time I see Woody Allen\u2019s name on a #movie I want to watch, I FEEL SICK and put it at the END of my #film watch list"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473025726763008, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "in_reply_to_status_id": null, "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 1869, "geo_enabled": false, "utc_offset": -18000, "profile_sidebar_border_color": "000000", "profile_link_color": "003087", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "3246878477", "notifications": null, "followers_count": 2407, "url": "http://floridagators.com/gymnastics", "profile_sidebar_fill_color": "000000", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": "Eastern Time (US & Canada)", "profile_use_background_image": false, "protected": false, "following": null, "listed_count": 34, "profile_text_color": "000000", "translator_type": "none", "name": "Coach Jenny Rowland", "default_profile_image": false, "friends_count": 456, "verified": false, "default_profile": false, "favourites_count": 3905, "id": 3246878477, "profile_image_url": "http://pbs.twimg.com/profile_images/599670773771587586/MJ_k3U0q_normal.jpg", "profile_background_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/599670773771587586/MJ_k3U0q_normal.jpg", "profile_background_tile": false, "screen_name": "JennyRowlandUF", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/3246878477/1431617001", "created_at": "Mon May 11 22:09:05 +0000 2015", "contributors_enabled": false, "description": "@GatorsGym Head Coach \u2013 Chomp, Chomp! * Garon\u2019s wife, Ella & Emmy's mom * Brevet-level judge (so watch your toe point!) #GoGators", "location": "Gainesville, FL", "lang": "en"}, "id_str": "972473025718358016", "entities": {"urls": [{"url": "https://t.co/Ve5VaKuFFW", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473025718358016"}], "hashtags": [], "user_mentions": [{"name": "Yanna Pantelis", "indices": [10, 20], "id": 598905227, "screen_name": "ypantelis", "id_str": "598905227"}, {"name": "Shelby Granath", "indices": [25, 40], "id": 876304370, "screen_name": "Shelby_Granath", "id_str": "876304370"}], "symbols": []}, "text": "THANK YOU @ypantelis and @Shelby_Granath for all of your hard work, passion and \u2665\ufe0f that you pour into this \ud83d\udc0a\ud83e\udd38\u200d\u2640\ufe0f pr\u2026 https://t.co/Ve5VaKuFFW", "source": "Twitter for iPhone", "place": null, "created_at": "Sat Mar 10 14:03:31 +0000 2018", "retweeted": false, "quoted_status_id_str": "972323594717028352", "extended_tweet": {"display_text_range": [0, 249], "entities": {"urls": [{"url": "https://t.co/oEcedDPYxl", "indices": [250, 273], "display_url": "twitter.com/gatorsgym/stat\u2026", "expanded_url": "https://twitter.com/gatorsgym/status/972323594717028352"}], "hashtags": [{"indices": [216, 228], "text": "GatorNation"}], "user_mentions": [{"name": "Yanna Pantelis", "indices": [10, 20], "id": 598905227, "screen_name": "ypantelis", "id_str": "598905227"}, {"name": "Shelby Granath", "indices": [25, 40], "id": 876304370, "screen_name": "Shelby_Granath", "id_str": "876304370"}, {"name": "Florida Gators", "indices": [235, 249], "id": 30870308, "screen_name": "FloridaGators", "id_str": "30870308"}], "symbols": []}, "full_text": "THANK YOU @ypantelis and @Shelby_Granath for all of your hard work, passion and \u2665\ufe0f that you pour into this \ud83d\udc0a\ud83e\udd38\u200d\u2640\ufe0f program!! Truly thankful and blessed for the excitement and joy you bring to both student-athletes and #GatorNation!! \ud83d\udc0a\ud83d\udc99\ud83e\udd29 @FloridaGators https://t.co/oEcedDPYxl"}, "in_reply_to_status_id_str": null, "filter_level": "low", "in_reply_to_user_id": null, "is_quote_status": true, "quoted_status": {"reply_count": 0, "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 6617, "geo_enabled": true, "utc_offset": -18000, "profile_sidebar_border_color": "CCCCCC", "profile_link_color": "003087", "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/628569776353361921/8yMoljcg.jpg", "id_str": "40294888", "notifications": null, "followers_count": 22173, "url": "http://floridagators.com/gymnastics", "profile_sidebar_fill_color": "E4E4E4", "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/628569776353361921/8yMoljcg.jpg", "follow_request_sent": null, "time_zone": "Eastern Time (US & Canada)", "profile_use_background_image": false, "protected": false, "following": null, "listed_count": 249, "profile_text_color": "222222", "translator_type": "none", "name": "Gators Gymnastics", "default_profile_image": false, "friends_count": 61, "verified": false, "default_profile": false, "favourites_count": 1426, "id": 40294888, "profile_image_url": "http://pbs.twimg.com/profile_images/969231421201108993/LkVb_PLt_normal.jpg", "profile_background_color": "003399", "profile_image_url_https": "https://pbs.twimg.com/profile_images/969231421201108993/LkVb_PLt_normal.jpg", "profile_background_tile": false, "screen_name": "GatorsGym", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/40294888/1503331760", "created_at": "Fri May 15 18:02:32 +0000 2009", "contributors_enabled": false, "description": "The official Twitter account of the 2013 + 2014 + 2015 National Champion Florida Gator Women's Gymnastics team. #GoGators", "location": "Gainesville, Florida", "lang": "en"}, "id_str": "972323594717028352", "entities": {"urls": [], "media": [{"url": "https://t.co/bQggxpwhp9", "id_str": "972323583799083009", "display_url": "pic.twitter.com/bQggxpwhp9", "media_url_https": "https://pbs.twimg.com/media/DX5jJdsUQAE7oNn.jpg", "type": "photo", "indices": [104, 127], "id": 972323583799083009, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 675}, "large": {"resize": "fit", "w": 1920, "h": 1080}, "small": {"resize": "fit", "w": 680, "h": 383}}, "media_url": "http://pbs.twimg.com/media/DX5jJdsUQAE7oNn.jpg", "expanded_url": "https://twitter.com/GatorsGym/status/972323594717028352/photo/1"}], "hashtags": [{"indices": [11, 23], "text": "GatorNation"}, {"indices": [95, 103], "text": "WeChomp"}], "user_mentions": [], "symbols": []}, "text": "Thank you, #GatorNation for a record breaking home season \ud83d\udc99\n\nPost season here we come! \ud83d\udd25\ud83d\udc0a\ud83e\udd38\u200d\u2640\ufe0f\n\n#WeChomp https://t.co/bQggxpwhp9", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 04:09:44 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972323594717028352, "contributors": null, "retweet_count": 8, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 103], "possibly_sensitive": false, "favorite_count": 85, "place": {"url": "https://api.twitter.com/1.1/geo/id/0b46f28c15d45000.json", "place_type": "poi", "attributes": {}, "name": "Exactech Arena", "country_code": "US", "full_name": "Exactech Arena", "id": "0b46f28c15d45000", "country": "United States", "bounding_box": {"coordinates": [[[-82.35258, 29.649023], [-82.35258, 29.649023], [-82.35258, 29.649023], [-82.35258, 29.649023]]], "type": "Polygon"}}, "truncated": false, "geo": null, "quote_count": 0, "extended_entities": {"media": [{"url": "https://t.co/bQggxpwhp9", "id_str": "972323583799083009", "display_url": "pic.twitter.com/bQggxpwhp9", "media_url_https": "https://pbs.twimg.com/media/DX5jJdsUQAE7oNn.jpg", "type": "photo", "indices": [104, 127], "id": 972323583799083009, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 675}, "large": {"resize": "fit", "w": 1920, "h": 1080}, "small": {"resize": "fit", "w": 680, "h": 383}}, "media_url": "http://pbs.twimg.com/media/DX5jJdsUQAE7oNn.jpg", "expanded_url": "https://twitter.com/GatorsGym/status/972323594717028352/photo/1"}]}, "lang": "en"}, "id": 972473025718358016, "timestamp_ms": "1520690611663", "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 0, "quoted_status_id": 972323594717028352, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "in_reply_to_status_id": null, "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 5952, "geo_enabled": false, "utc_offset": -28800, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "916444131584610304", "notifications": null, "followers_count": 143, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": "Pacific Time (US & Canada)", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 2, "profile_text_color": "333333", "translator_type": "none", "name": "Jemima || TeamSi\u2113verForce", "default_profile_image": false, "friends_count": 288, "verified": false, "default_profile": true, "favourites_count": 5739, "id": 916444131584610304, "profile_image_url": "http://pbs.twimg.com/profile_images/972309179280117761/2vn1_eCK_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/972309179280117761/2vn1_eCK_normal.jpg", "profile_background_tile": false, "screen_name": "Jemyvalladares", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/916444131584610304/1517911336", "created_at": "Fri Oct 06 23:24:42 +0000 2017", "contributors_enabled": false, "description": null, "location": "Per\u00fa\u2764\u2764", "lang": "es"}, "id_str": "972473029895884800", "entities": {"urls": [{"url": "https://t.co/LylTzb8BDZ", "indices": [112, 135], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473029895884800"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "Sigamos realizando stream.\nDINNER es hermosa.\n\nRecomendada totalmente.\nDemostremos nuestro amor a Junmyeon.\u2661\u2661\u2661\u2026 https://t.co/LylTzb8BDZ", "source": "Twitter for Android", "place": null, "created_at": "Sat Mar 10 14:03:32 +0000 2018", "retweeted": false, "quoted_status_id_str": "972470967007043584", "extended_tweet": {"display_text_range": [0, 175], "entities": {"urls": [{"url": "https://t.co/DiPnmVPfR9", "indices": [176, 199], "display_url": "twitter.com/weareoneEXO/st\u2026", "expanded_url": "https://twitter.com/weareoneEXO/status/972470967007043584"}], "hashtags": [{"indices": [112, 127], "text": "DinnerWithSuho"}, {"indices": [130, 135], "text": "EXOL"}, {"indices": [136, 148], "text": "BestFanArmy"}, {"indices": [149, 162], "text": "iHeartAwards"}], "user_mentions": [{"name": "EXO", "indices": [163, 175], "id": 873115441303924736, "screen_name": "weareoneEXO", "id_str": "873115441303924736"}], "symbols": []}, "full_text": "Sigamos realizando stream.\nDINNER es hermosa.\n\nRecomendada totalmente.\nDemostremos nuestro amor a Junmyeon.\u2661\u2661\u2661\n\n#DinnerWithSuho \n\n#EXOL #BestFanArmy #iHeartAwards @weareoneEXO https://t.co/DiPnmVPfR9"}, "in_reply_to_status_id_str": null, "filter_level": "low", "in_reply_to_user_id": null, "is_quote_status": true, "quoted_status": {"reply_count": 504, "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 231, "geo_enabled": true, "utc_offset": 32400, "profile_sidebar_border_color": "000000", "profile_link_color": "1B95E0", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "873115441303924736", "notifications": null, "followers_count": 2533159, "url": "http://exo.smtown.com", "profile_sidebar_fill_color": "000000", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": "Seoul", "profile_use_background_image": false, "protected": false, "following": null, "listed_count": 3202, "profile_text_color": "000000", "translator_type": "none", "name": "EXO", "default_profile_image": false, "friends_count": 1, "verified": true, "default_profile": false, "favourites_count": 14, "id": 873115441303924736, "profile_image_url": "http://pbs.twimg.com/profile_images/940960637735157762/dG8BRGa8_normal.jpg", "profile_background_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/940960637735157762/dG8BRGa8_normal.jpg", "profile_background_tile": false, "screen_name": "weareoneEXO", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/873115441303924736/1513177400", "created_at": "Fri Jun 09 09:51:57 +0000 2017", "contributors_enabled": false, "description": "We are ONE\ud83d\udc4dEXO \uc0ac\ub791\ud558\uc790", "location": null, "lang": "ko"}, "id_str": "972470967007043584", "entities": {"urls": [], "media": [{"url": "https://t.co/w4ucrb46Lq", "additional_media_info": {"monetizable": false}, "id_str": "972470825436684288", "display_url": "pic.twitter.com/w4ucrb46Lq", "media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/972470825436684288/pu/img/4Nq_p0gSpZTiq6Ro.jpg", "type": "photo", "media_url": "http://pbs.twimg.com/ext_tw_video_thumb/972470825436684288/pu/img/4Nq_p0gSpZTiq6Ro.jpg", "id": 972470825436684288, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 675}, "large": {"resize": "fit", "w": 1280, "h": 720}, "small": {"resize": "fit", "w": 680, "h": 383}}, "indices": [94, 117], "expanded_url": "https://twitter.com/weareoneEXO/status/972470967007043584/video/1"}], "hashtags": [{"indices": [0, 14], "text": "SMTOWNSTATION"}, {"indices": [15, 22], "text": "Dinner"}, {"indices": [23, 27], "text": "EXO"}, {"indices": [28, 36], "text": "SUHO_TV"}, {"indices": [37, 42], "text": "\uc218\ud638TV"}, {"indices": [48, 61], "text": "iHeartAwards"}, {"indices": [62, 74], "text": "BestFanArmy"}, {"indices": [75, 80], "text": "EXOL"}], "user_mentions": [{"name": "EXO", "indices": [81, 93], "id": 873115441303924736, "screen_name": "weareoneEXO", "id_str": "873115441303924736"}], "symbols": []}, "text": "#SMTOWNSTATION #Dinner #EXO #SUHO_TV #\uc218\ud638TV\ud83d\udcfa (3) #iHeartAwards #BestFanArmy #EXOL @weareoneEXO https://t.co/w4ucrb46Lq", "source": "Twitter for Android", "created_at": "Sat Mar 10 13:55:20 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972470967007043584, "contributors": null, "retweet_count": 11609, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 93], "possibly_sensitive": false, "favorite_count": 7469, "place": null, "truncated": false, "geo": null, "quote_count": 93, "extended_entities": {"media": [{"id": 972470825436684288, "display_url": "pic.twitter.com/w4ucrb46Lq", "media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/972470825436684288/pu/img/4Nq_p0gSpZTiq6Ro.jpg", "media_url": "http://pbs.twimg.com/ext_tw_video_thumb/972470825436684288/pu/img/4Nq_p0gSpZTiq6Ro.jpg", "id_str": "972470825436684288", "expanded_url": "https://twitter.com/weareoneEXO/status/972470967007043584/video/1", "url": "https://t.co/w4ucrb46Lq", "additional_media_info": {"monetizable": false}, "type": "video", "video_info": {"duration_millis": 44978, "aspect_ratio": [16, 9], "variants": [{"url": "https://video.twimg.com/ext_tw_video/972470825436684288/pu/pl/8YVa0gzcbjOHN0Dg.m3u8", "content_type": "application/x-mpegURL"}, {"url": "https://video.twimg.com/ext_tw_video/972470825436684288/pu/vid/640x360/o2jnRWC7O4V2dUyu.mp4", "bitrate": 832000, "content_type": "video/mp4"}, {"url": "https://video.twimg.com/ext_tw_video/972470825436684288/pu/vid/1280x720/QCiWGCJS6BqUjTwP.mp4", "bitrate": 2176000, "content_type": "video/mp4"}, {"url": "https://video.twimg.com/ext_tw_video/972470825436684288/pu/vid/320x180/Mv47NW_lzrBi7zaR.mp4", "bitrate": 256000, "content_type": "video/mp4"}]}, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 675}, "large": {"resize": "fit", "w": 1280, "h": 720}, "small": {"resize": "fit", "w": 680, "h": 383}}, "indices": [94, 117]}]}, "lang": "und"}, "id": 972473029895884800, "timestamp_ms": "1520690612659", "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 0, "quoted_status_id": 972470967007043584, "truncated": true, "geo": null, "quote_count": 0, "lang": "es"} +{"reply_count": 0, "timestamp_ms": "1520690612662", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 30, "geo_enabled": false, "utc_offset": -28800, "profile_sidebar_border_color": "000000", "profile_link_color": "ABB8C2", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "4259388214", "notifications": null, "followers_count": 18, "url": "http://oswegomusichall.org", "profile_sidebar_fill_color": "000000", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": "Pacific Time (US & Canada)", "profile_use_background_image": false, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "000000", "translator_type": "none", "name": "Oswego Music Hall", "default_profile_image": false, "friends_count": 21, "verified": false, "default_profile": false, "favourites_count": 3, "id": 4259388214, "profile_image_url": "http://pbs.twimg.com/profile_images/670642642573729792/VWE7fGg0_normal.jpg", "profile_background_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/670642642573729792/VWE7fGg0_normal.jpg", "profile_background_tile": false, "screen_name": "OswegoMusicHall", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/4259388214/1448728773", "created_at": "Mon Nov 23 19:20:39 +0000 2015", "contributors_enabled": false, "description": "The Oswego Music Hall is located at the McCrobie Building. Performances occur September to June, every other Saturday night. Open Mic Nights on Friday night.", "location": "Oswego, NY", "lang": "en"}, "id_str": "972473029908402176", "entities": {"urls": [{"url": "https://t.co/M7jlyW8YsU", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473029908402176"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "Tonight (3/10) we have Joan and Joni on the National Stage. Come watch Allison Shapira and Kipyn Martin perform hit\u2026 https://t.co/M7jlyW8YsU", "source": "Twitter for Android", "created_at": "Sat Mar 10 14:03:32 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"extended_entities": {"media": [{"url": "https://t.co/pyLB7R3op5", "id_str": "972473019879903232", "display_url": "pic.twitter.com/pyLB7R3op5", "media_url_https": "https://pbs.twimg.com/media/DX7rDyeX0AAN3PA.jpg", "type": "photo", "indices": [257, 280], "id": 972473019879903232, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 720, "h": 720}, "large": {"resize": "fit", "w": 720, "h": 720}, "small": {"resize": "fit", "w": 680, "h": 680}}, "media_url": "http://pbs.twimg.com/media/DX7rDyeX0AAN3PA.jpg", "expanded_url": "https://twitter.com/OswegoMusicHall/status/972473029908402176/photo/1"}]}, "display_text_range": [0, 256], "entities": {"urls": [], "media": [{"url": "https://t.co/pyLB7R3op5", "id_str": "972473019879903232", "display_url": "pic.twitter.com/pyLB7R3op5", "media_url_https": "https://pbs.twimg.com/media/DX7rDyeX0AAN3PA.jpg", "type": "photo", "indices": [257, 280], "id": 972473019879903232, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 720, "h": 720}, "large": {"resize": "fit", "w": 720, "h": 720}, "small": {"resize": "fit", "w": 680, "h": 680}}, "media_url": "http://pbs.twimg.com/media/DX7rDyeX0AAN3PA.jpg", "expanded_url": "https://twitter.com/OswegoMusicHall/status/972473029908402176/photo/1"}], "hashtags": [], "user_mentions": [], "symbols": []}, "full_text": "Tonight (3/10) we have Joan and Joni on the National Stage. Come watch Allison Shapira and Kipyn Martin perform hits of folk legends, Joan Baez and Joni Mitchell. Tickets are $16 in advance and $18 at the door. The show starts at 7:30, and doors open at 7! https://t.co/pyLB7R3op5"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473029908402176, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690612661", "favorited": false, "in_reply_to_user_id_str": "873115441303924736", "user": {"statuses_count": 34928, "geo_enabled": true, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "729121245841739776", "notifications": null, "followers_count": 615, "url": "https://www.instagram.com/zhang_sekai/", "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 16, "profile_text_color": "333333", "translator_type": "none", "name": "\u5f20\u827a\u5174 \ud83d\udc0f \uc5d1\uc18c (iHeartAwards :BestFanArmy || EXO-L)", "default_profile_image": false, "friends_count": 376, "verified": false, "default_profile": true, "favourites_count": 4138, "id": 729121245841739776, "profile_image_url": "http://pbs.twimg.com/profile_images/944307459073675264/CSmetRX0_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/944307459073675264/CSmetRX0_normal.jpg", "profile_background_tile": false, "screen_name": "zhang_sekai", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/729121245841739776/1519910471", "created_at": "Sun May 08 01:30:26 +0000 2016", "contributors_enabled": false, "description": "It has to be dark for the stars to appear..\n#\uc5d1\uc18c (OT12 || OT9) #EXO \\^0^/ [VOTE] #EXOL #BestFanArmy #iHeartAwards @weareoneEXO\n.~~L-1485", "location": "EXO PLANET", "lang": "en"}, "id_str": "972473029904265216", "entities": {"urls": [{"url": "https://t.co/naWgs5p9Os", "indices": [106, 129], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473029904265216"}], "hashtags": [{"indices": [72, 77], "text": "EXOL"}, {"indices": [78, 90], "text": "BestFanArmy"}, {"indices": [91, 104], "text": "iHeartAwards"}], "user_mentions": [{"name": "EXO", "indices": [0, 12], "id": 873115441303924736, "screen_name": "weareoneEXO", "id_str": "873115441303924736"}], "symbols": []}, "text": "@weareoneEXO [STATION] EXO \uc218\ud638(SUHO) X \uc7a5\uc7ac\uc778 'Dinner' Making Film\n\uc5d1\uc18c EXO \n#EXOL #BestFanArmy #iHeartAwards\u2026 https://t.co/naWgs5p9Os", "source": "Twitter for Android", "created_at": "Sat Mar 10 14:03:32 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972469573889871878, "extended_tweet": {"extended_entities": {"media": [{"id": 972471002679709696, "display_url": "pic.twitter.com/1hSplOJ0bP", "media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/972471002679709696/pu/img/VyzArirU9yWb3giP.jpg", "media_url": "http://pbs.twimg.com/ext_tw_video_thumb/972471002679709696/pu/img/VyzArirU9yWb3giP.jpg", "id_str": "972471002679709696", "expanded_url": "https://twitter.com/zhang_sekai/status/972473029904265216/video/1", "url": "https://t.co/1hSplOJ0bP", "additional_media_info": {"monetizable": false}, "type": "video", "video_info": {"duration_millis": 23189, "aspect_ratio": [16, 9], "variants": [{"url": "https://video.twimg.com/ext_tw_video/972471002679709696/pu/vid/320x180/wdgWVsKjQ0K0IrU0.mp4", "bitrate": 256000, "content_type": "video/mp4"}, {"url": "https://video.twimg.com/ext_tw_video/972471002679709696/pu/vid/1280x720/KLnoSx-dHwEUEQi0.mp4", "bitrate": 2176000, "content_type": "video/mp4"}, {"url": "https://video.twimg.com/ext_tw_video/972471002679709696/pu/pl/Uw2Zv9WnGq-2ZdCJ.m3u8", "content_type": "application/x-mpegURL"}, {"url": "https://video.twimg.com/ext_tw_video/972471002679709696/pu/vid/640x360/LCsdxo9x2hqW4pkt.mp4", "bitrate": 832000, "content_type": "video/mp4"}]}, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 675}, "large": {"resize": "fit", "w": 1280, "h": 720}, "small": {"resize": "fit", "w": 680, "h": 383}}, "indices": [150, 173]}]}, "display_text_range": [13, 149], "entities": {"urls": [{"url": "https://t.co/FjUBuztnFf", "indices": [126, 149], "display_url": "m.facebook.com/story.php?stor\u2026", "expanded_url": "https://m.facebook.com/story.php?story_fbid=335125703645915&id=191155418042945&_rdr"}], "media": [{"id": 972471002679709696, "display_url": "pic.twitter.com/1hSplOJ0bP", "media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/972471002679709696/pu/img/VyzArirU9yWb3giP.jpg", "media_url": "http://pbs.twimg.com/ext_tw_video_thumb/972471002679709696/pu/img/VyzArirU9yWb3giP.jpg", "id_str": "972471002679709696", "expanded_url": "https://twitter.com/zhang_sekai/status/972473029904265216/video/1", "url": "https://t.co/1hSplOJ0bP", "additional_media_info": {"monetizable": false}, "type": "video", "video_info": {"duration_millis": 23189, "aspect_ratio": [16, 9], "variants": [{"url": "https://video.twimg.com/ext_tw_video/972471002679709696/pu/vid/320x180/wdgWVsKjQ0K0IrU0.mp4", "bitrate": 256000, "content_type": "video/mp4"}, {"url": "https://video.twimg.com/ext_tw_video/972471002679709696/pu/vid/1280x720/KLnoSx-dHwEUEQi0.mp4", "bitrate": 2176000, "content_type": "video/mp4"}, {"url": "https://video.twimg.com/ext_tw_video/972471002679709696/pu/pl/Uw2Zv9WnGq-2ZdCJ.m3u8", "content_type": "application/x-mpegURL"}, {"url": "https://video.twimg.com/ext_tw_video/972471002679709696/pu/vid/640x360/LCsdxo9x2hqW4pkt.mp4", "bitrate": 832000, "content_type": "video/mp4"}]}, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 675}, "large": {"resize": "fit", "w": 1280, "h": 720}, "small": {"resize": "fit", "w": 680, "h": 383}}, "indices": [150, 173]}], "hashtags": [{"indices": [72, 77], "text": "EXOL"}, {"indices": [78, 90], "text": "BestFanArmy"}, {"indices": [91, 104], "text": "iHeartAwards"}], "user_mentions": [{"name": "EXO", "indices": [0, 12], "id": 873115441303924736, "screen_name": "weareoneEXO", "id_str": "873115441303924736"}, {"name": "EXO", "indices": [107, 119], "id": 873115441303924736, "screen_name": "weareoneEXO", "id_str": "873115441303924736"}], "symbols": []}, "full_text": "@weareoneEXO [STATION] EXO \uc218\ud638(SUHO) X \uc7a5\uc7ac\uc778 'Dinner' Making Film\n\uc5d1\uc18c EXO \n#EXOL #BestFanArmy #iHeartAwards \n\n@weareoneEXO \nFull:https://t.co/FjUBuztnFf https://t.co/1hSplOJ0bP"}, "in_reply_to_status_id_str": "972469573889871878", "in_reply_to_user_id": 873115441303924736, "is_quote_status": false, "filter_level": "low", "id": 972473029904265216, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "weareoneEXO", "display_text_range": [13, 140], "possibly_sensitive": false, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "ko"} +{"reply_count": 0, "timestamp_ms": "1520690611662", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 627, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "921385529962323969", "notifications": null, "followers_count": 161, "url": "http://www.greystone.outwood.com", "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "333333", "translator_type": "none", "name": "OPA Greystone", "default_profile_image": false, "friends_count": 56, "verified": false, "default_profile": true, "favourites_count": 947, "id": 921385529962323969, "profile_image_url": "http://pbs.twimg.com/profile_images/928209738713714688/YCeS0YyB_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/928209738713714688/YCeS0YyB_normal.jpg", "profile_background_tile": false, "screen_name": "OPA_Greystone", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/921385529962323969/1516227056", "created_at": "Fri Oct 20 14:40:03 +0000 2017", "contributors_enabled": false, "description": "Primary School from Nursery to Year 6, nestled in the beautiful North Yorkshire city of Ripon.\n01765 603481", "location": "Ripon", "lang": "en-gb"}, "id_str": "972473025714147329", "entities": {"urls": [{"url": "https://t.co/ebSLyWDaok", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473025714147329"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "What a fantastic opportunity meeting the Morris Dancers of Ripon and watching the amazing choir from Angola High Sc\u2026 https://t.co/ebSLyWDaok", "source": "Twitter Lite", "created_at": "Sat Mar 10 14:03:31 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"extended_entities": {"media": [{"url": "https://t.co/yY4fQnFdaW", "id_str": "972472809661325314", "display_url": "pic.twitter.com/yY4fQnFdaW", "media_url_https": "https://pbs.twimg.com/media/DX7q3jWW4AIv_Ny.jpg", "type": "photo", "indices": [217, 240], "id": 972472809661325314, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 900}, "large": {"resize": "fit", "w": 2048, "h": 1536}, "small": {"resize": "fit", "w": 680, "h": 510}}, "media_url": "http://pbs.twimg.com/media/DX7q3jWW4AIv_Ny.jpg", "expanded_url": "https://twitter.com/OPA_Greystone/status/972473025714147329/photo/1"}, {"url": "https://t.co/yY4fQnFdaW", "id_str": "972472809669742592", "display_url": "pic.twitter.com/yY4fQnFdaW", "media_url_https": "https://pbs.twimg.com/media/DX7q3jYXUAAm21b.jpg", "type": "photo", "indices": [217, 240], "id": 972472809669742592, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 900}, "large": {"resize": "fit", "w": 2048, "h": 1536}, "small": {"resize": "fit", "w": 680, "h": 510}}, "media_url": "http://pbs.twimg.com/media/DX7q3jYXUAAm21b.jpg", "expanded_url": "https://twitter.com/OPA_Greystone/status/972473025714147329/photo/1"}]}, "display_text_range": [0, 216], "entities": {"urls": [], "media": [{"url": "https://t.co/yY4fQnFdaW", "id_str": "972472809661325314", "display_url": "pic.twitter.com/yY4fQnFdaW", "media_url_https": "https://pbs.twimg.com/media/DX7q3jWW4AIv_Ny.jpg", "type": "photo", "indices": [217, 240], "id": 972472809661325314, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 900}, "large": {"resize": "fit", "w": 2048, "h": 1536}, "small": {"resize": "fit", "w": 680, "h": 510}}, "media_url": "http://pbs.twimg.com/media/DX7q3jWW4AIv_Ny.jpg", "expanded_url": "https://twitter.com/OPA_Greystone/status/972473025714147329/photo/1"}, {"url": "https://t.co/yY4fQnFdaW", "id_str": "972472809669742592", "display_url": "pic.twitter.com/yY4fQnFdaW", "media_url_https": "https://pbs.twimg.com/media/DX7q3jYXUAAm21b.jpg", "type": "photo", "indices": [217, 240], "id": 972472809669742592, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 900}, "large": {"resize": "fit", "w": 2048, "h": 1536}, "small": {"resize": "fit", "w": 680, "h": 510}}, "media_url": "http://pbs.twimg.com/media/DX7q3jYXUAAm21b.jpg", "expanded_url": "https://twitter.com/OPA_Greystone/status/972473025714147329/photo/1"}], "hashtags": [], "user_mentions": [{"name": "Emily Smith", "indices": [201, 216], "id": 770822345078431744, "screen_name": "emilysmith1130", "id_str": "770822345078431744"}], "symbols": []}, "full_text": "What a fantastic opportunity meeting the Morris Dancers of Ripon and watching the amazing choir from Angola High School, Minnesota, USA.\nThey really inspired our choir members, Tilly, Owen and Keiran.\n@Emilysmith1130 https://t.co/yY4fQnFdaW"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473025714147329, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690613664", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 142187, "geo_enabled": true, "utc_offset": 25200, "profile_sidebar_border_color": "FFFFFF", "profile_link_color": "FA8072", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "2182562312", "notifications": null, "followers_count": 715, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": "Novosibirsk", "profile_use_background_image": false, "protected": false, "following": null, "listed_count": 5, "profile_text_color": "333333", "translator_type": "none", "name": "\ud6c8\ubcb1\ud83d\udcab ft.midterm", "default_profile_image": false, "friends_count": 310, "verified": false, "default_profile": false, "favourites_count": 11433, "id": 2182562312, "profile_image_url": "http://pbs.twimg.com/profile_images/963766185601908736/x3LGbDM__normal.jpg", "profile_background_color": "FFC0CB", "profile_image_url_https": "https://pbs.twimg.com/profile_images/963766185601908736/x3LGbDM__normal.jpg", "profile_background_tile": true, "screen_name": "KNeSH_", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/2182562312/1473658921", "created_at": "Fri Nov 08 16:54:08 +0000 2013", "contributors_enabled": false, "description": "M y \u2018 S \u2019 / C B - 6 1 4 \u2661 / E X O \u2018 s", "location": "You\u2019ll always be my favorite-", "lang": "th"}, "id_str": "972473034111049733", "entities": {"urls": [{"url": "https://t.co/wxZnUqpSAW", "indices": [105, 128], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473034111049733"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "((( \u0e40\u0e40\u0e08\u0e01 ))) \n\u0e40\u0e23\u0e32\u0e08\u0e30\u0e40\u0e40\u0e08\u0e01\u0e1a\u0e31\u0e49\u0e21 The War \u0e23\u0e35\u0e40\u0e40\u0e1e\u0e47\u0e04 (\u0e1a\u0e31\u0e49\u0e21\u0e40\u0e1b\u0e25\u0e48\u0e32)\n*\u0e23\u0e35\u0e44\u0e27\u0e49\u0e40\u0e25\u0e22\u0e40\u0e14\u0e49\u0e2d*\n\n!\u0e2a\u0e07\u0e27\u0e19\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e43\u0e2b\u0e49\u0e2d\u0e0b\u0e2d.\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\u0e40\u0e19\u0e49\u0e2d!\u2026 https://t.co/wxZnUqpSAW", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 14:03:33 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"extended_entities": {"media": [{"url": "https://t.co/7GVvAptRlZ", "id_str": "972473022987698176", "display_url": "pic.twitter.com/7GVvAptRlZ", "media_url_https": "https://pbs.twimg.com/media/DX7rD-DVAAAUq9a.jpg", "type": "photo", "indices": [126, 149], "id": 972473022987698176, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 622, "h": 750}, "large": {"resize": "fit", "w": 622, "h": 750}, "small": {"resize": "fit", "w": 564, "h": 680}}, "media_url": "http://pbs.twimg.com/media/DX7rD-DVAAAUq9a.jpg", "expanded_url": "https://twitter.com/KNeSH_/status/972473034111049733/photo/1"}]}, "display_text_range": [0, 125], "entities": {"urls": [], "media": [{"url": "https://t.co/7GVvAptRlZ", "id_str": "972473022987698176", "display_url": "pic.twitter.com/7GVvAptRlZ", "media_url_https": "https://pbs.twimg.com/media/DX7rD-DVAAAUq9a.jpg", "type": "photo", "indices": [126, 149], "id": 972473022987698176, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 622, "h": 750}, "large": {"resize": "fit", "w": 622, "h": 750}, "small": {"resize": "fit", "w": 564, "h": 680}}, "media_url": "http://pbs.twimg.com/media/DX7rD-DVAAAUq9a.jpg", "expanded_url": "https://twitter.com/KNeSH_/status/972473034111049733/photo/1"}], "hashtags": [{"indices": [106, 119], "text": "ElyXioninBKK"}, {"indices": [120, 125], "text": "\u0e40\u0e40\u0e08\u0e01"}], "user_mentions": [], "symbols": []}, "full_text": "((( \u0e40\u0e40\u0e08\u0e01 ))) \n\u0e40\u0e23\u0e32\u0e08\u0e30\u0e40\u0e40\u0e08\u0e01\u0e1a\u0e31\u0e49\u0e21 The War \u0e23\u0e35\u0e40\u0e40\u0e1e\u0e47\u0e04 (\u0e1a\u0e31\u0e49\u0e21\u0e40\u0e1b\u0e25\u0e48\u0e32)\n*\u0e23\u0e35\u0e44\u0e27\u0e49\u0e40\u0e25\u0e22\u0e40\u0e14\u0e49\u0e2d*\n\n!\u0e2a\u0e07\u0e27\u0e19\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e43\u0e2b\u0e49\u0e2d\u0e0b\u0e2d.\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\u0e40\u0e19\u0e49\u0e2d!\n \n#ElyXioninBKK #\u0e40\u0e40\u0e08\u0e01 https://t.co/7GVvAptRlZ"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473034111049733, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "th"} +{"reply_count": 0, "timestamp_ms": "1520690614663", "favorited": false, "in_reply_to_user_id_str": "146882655", "user": {"statuses_count": 2071, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "000000", "profile_link_color": "19CF86", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "4839154900", "notifications": null, "followers_count": 31, "url": null, "profile_sidebar_fill_color": "000000", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": false, "protected": false, "following": null, "listed_count": 3, "profile_text_color": "000000", "translator_type": "none", "name": "\u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u0418\u0432\u0430\u043d\u043e\u0432\u0438\u0447", "default_profile_image": false, "friends_count": 52, "verified": false, "default_profile": false, "favourites_count": 1669, "id": 4839154900, "profile_image_url": "http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png", "profile_background_color": "000000", "profile_image_url_https": "https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png", "profile_background_tile": false, "screen_name": "Potykun79", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/4839154900/1509903888", "created_at": "Sat Jan 23 17:04:36 +0000 2016", "contributors_enabled": false, "description": "\u0428\u0430\u0433\u043d\u0443\u043b", "location": "TAGANROG", "lang": "ru"}, "id_str": "972473038301220870", "entities": {"urls": [{"url": "https://t.co/yUD6FVpZIS", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473038301220870"}], "hashtags": [], "user_mentions": [{"name": "Vladimir Soloviev", "indices": [0, 11], "id": 146882655, "screen_name": "VRSoloviev", "id_str": "146882655"}], "symbols": []}, "text": "@VRSoloviev \u041d\u0430 \u0417\u0430\u043f\u0430\u0434\u0435,\u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0438\u043d\u0443\u0442 \u043a\u043b\u0438\u0447-\u043f\u0430\u043f\u0430 \u0441 \u043f\u0430\u043f\u043e\u0439,\u043c\u0430\u043c\u0430 \u0441 \u043c\u0430\u043c\u043e\u0439,\u043c\u0443\u0436\u0438\u043a \u0441 \u0436\u0435\u043d\u0449\u0438\u043d\u043e\u0439 \u043d\u0438 \u043d\u0438,\u0442\u0430\u043a \u0442\u0443\u0442 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u2026 https://t.co/yUD6FVpZIS", "source": "Twitter Web Client", "created_at": "Sat Mar 10 14:03:34 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972448668921008128, "extended_tweet": {"display_text_range": [12, 262], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "Vladimir Soloviev", "indices": [0, 11], "id": 146882655, "screen_name": "VRSoloviev", "id_str": "146882655"}], "symbols": []}, "full_text": "@VRSoloviev \u041d\u0430 \u0417\u0430\u043f\u0430\u0434\u0435,\u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0438\u043d\u0443\u0442 \u043a\u043b\u0438\u0447-\u043f\u0430\u043f\u0430 \u0441 \u043f\u0430\u043f\u043e\u0439,\u043c\u0430\u043c\u0430 \u0441 \u043c\u0430\u043c\u043e\u0439,\u043c\u0443\u0436\u0438\u043a \u0441 \u0436\u0435\u043d\u0449\u0438\u043d\u043e\u0439 \u043d\u0438 \u043d\u0438,\u0442\u0430\u043a \u0442\u0443\u0442 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u0438.\u0410\u0443,\u043d\u0430\u0440\u043e\u0434?\u0423\u043c \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439?\u0418\u043b\u0438 \u0432\u044b \u0443\u0436\u0435 \u0437\u0430 \u0433\u043e\u0434\u044b \u043b\u0438\u0431\u0435\u0440\u0430\u043b\u0438\u0437\u043c\u0430,\u0442\u0430\u043a \u043f\u0440\u0438\u0432\u044b\u043a\u043b\u0438 \u0441\u0442\u0430\u0434\u043e\u043c \u0431\u044b\u0442\u044c,\u0441 \u043f\u043e\u0433\u043e\u043d\u0449\u0438\u043a\u0430\u043c\u0438 \u043a\u043e\u0432\u0431\u043e\u0439\u0441\u043a\u043e\u0439 \u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438?\u041b\u044e\u0434\u0438\u0448\u0435\u0447\u043a\u0438..."}, "in_reply_to_status_id_str": "972448668921008128", "in_reply_to_user_id": 146882655, "is_quote_status": false, "filter_level": "low", "id": 972473038301220870, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "VRSoloviev", "display_text_range": [12, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "ru"} +{"reply_count": 0, "timestamp_ms": "1520690614658", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 19930, "geo_enabled": false, "utc_offset": -28800, "profile_sidebar_border_color": "DFDFDF", "profile_link_color": "990000", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme7/bg.gif", "id_str": "3230684747", "notifications": null, "followers_count": 1574, "url": "http://www.alscraftycorner.com/shop/", "profile_sidebar_fill_color": "F3F3F3", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme7/bg.gif", "follow_request_sent": null, "time_zone": "Pacific Time (US & Canada)", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 101, "profile_text_color": "333333", "translator_type": "none", "name": "AlsCraftyCorner", "default_profile_image": false, "friends_count": 2256, "verified": false, "default_profile": false, "favourites_count": 2160, "id": 3230684747, "profile_image_url": "http://pbs.twimg.com/profile_images/796334807622025217/mQMVqMsW_normal.jpg", "profile_background_color": "EBEBEB", "profile_image_url_https": "https://pbs.twimg.com/profile_images/796334807622025217/mQMVqMsW_normal.jpg", "profile_background_tile": false, "screen_name": "AlsCraftyCorner", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/3230684747/1478695958", "created_at": "Sun May 03 14:23:30 +0000 2015", "contributors_enabled": false, "description": "I sell on #Etsy https://www.etsy.com/shop/AlsCraftyCorner?ref=hdr_shop_menu and have a website.", "location": "Brittany, France", "lang": "en"}, "id_str": "972473038280318976", "entities": {"urls": [{"url": "https://t.co/5ThGSQh1uZ", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473038280318976"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "Hand sewn Felt Needle Case with a heart, Needle Book, Felt Pin Case, Sewing Accessory, Needle Holder, Needle Keeper\u2026 https://t.co/5ThGSQh1uZ", "source": "twitter-fu", "created_at": "Sat Mar 10 14:03:34 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"extended_entities": {"media": [{"url": "https://t.co/C42LuzHt5t", "id_str": "972473036224909312", "display_url": "pic.twitter.com/C42LuzHt5t", "media_url_https": "https://pbs.twimg.com/media/DX7rEvXU0AA-W2N.jpg", "type": "photo", "indices": [200, 223], "id": 972473036224909312, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 900}, "large": {"resize": "fit", "w": 1500, "h": 1125}, "small": {"resize": "fit", "w": 680, "h": 510}}, "media_url": "http://pbs.twimg.com/media/DX7rEvXU0AA-W2N.jpg", "expanded_url": "https://twitter.com/AlsCraftyCorner/status/972473038280318976/photo/1"}]}, "display_text_range": [0, 199], "entities": {"urls": [{"url": "https://t.co/a7hthG8LtK", "indices": [141, 164], "display_url": "tuppu.net/5e683a5a", "expanded_url": "http://tuppu.net/5e683a5a"}], "media": [{"url": "https://t.co/C42LuzHt5t", "id_str": "972473036224909312", "display_url": "pic.twitter.com/C42LuzHt5t", "media_url_https": "https://pbs.twimg.com/media/DX7rEvXU0AA-W2N.jpg", "type": "photo", "indices": [200, 223], "id": 972473036224909312, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 900}, "large": {"resize": "fit", "w": 1500, "h": 1125}, "small": {"resize": "fit", "w": 680, "h": 510}}, "media_url": "http://pbs.twimg.com/media/DX7rEvXU0AA-W2N.jpg", "expanded_url": "https://twitter.com/AlsCraftyCorner/status/972473038280318976/photo/1"}], "hashtags": [{"indices": [165, 181], "text": "AlsCraftyCorner"}, {"indices": [182, 187], "text": "Etsy"}, {"indices": [188, 199], "text": "NeedleCase"}], "user_mentions": [], "symbols": []}, "full_text": "Hand sewn Felt Needle Case with a heart, Needle Book, Felt Pin Case, Sewing Accessory, Needle Holder, Needle Keeper, hand sewn sewing needle https://t.co/a7hthG8LtK #AlsCraftyCorner #Etsy #NeedleCase https://t.co/C42LuzHt5t"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473038280318976, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690615658", "favorited": false, "in_reply_to_user_id_str": "740241910481162241", "user": {"statuses_count": 91581, "geo_enabled": true, "utc_offset": -10800, "profile_sidebar_border_color": "CC3366", "profile_link_color": "B40B43", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme11/bg.gif", "id_str": "144617083", "notifications": null, "followers_count": 3359, "url": null, "profile_sidebar_fill_color": "E5507E", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme11/bg.gif", "follow_request_sent": null, "time_zone": "Buenos Aires", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 27, "profile_text_color": "362720", "translator_type": "none", "name": "Fernanda \ud83d\udc99\ud83d\udc9b\ud83d\udc99", "default_profile_image": false, "friends_count": 3021, "verified": false, "default_profile": false, "favourites_count": 75994, "id": 144617083, "profile_image_url": "http://pbs.twimg.com/profile_images/969280575436619777/-7Ig87hk_normal.jpg", "profile_background_color": "FF6699", "profile_image_url_https": "https://pbs.twimg.com/profile_images/969280575436619777/-7Ig87hk_normal.jpg", "profile_background_tile": true, "screen_name": "FFEERRNANDA", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/144617083/1487311357", "created_at": "Sun May 16 20:50:04 +0000 2010", "contributors_enabled": false, "description": "\"Ser independiente es cosa de una peque\u00f1a minor\u00eda, es el privilegio de los fuertes\" Friedrich Nietzsche\u2712\r\r\ud83d\udc99\ud83d\udc9b\ud83d\udc99 MI PASI\u00d3N: CABJ \ud83d\udc99\ud83d\udc9b\ud83d\udc99\rHincha y Socia \ud83c\uddf8\ud83c\uddea", "location": "Recoleta - Bs As - Argentina", "lang": "en"}, "id_str": "972473042474545153", "entities": {"urls": [{"url": "https://t.co/LvQChAFGbF", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473042474545153"}], "hashtags": [], "user_mentions": [{"name": "rodrigo fernandez", "indices": [0, 9], "id": 740241910481162241, "screen_name": "roodri87", "id_str": "740241910481162241"}, {"name": "Jorge", "indices": [10, 24], "id": 945811174595186688, "screen_name": "Jorge46851577", "id_str": "945811174595186688"}, {"name": "damian Benitez\ud83d\udc99\ud83d\udc9b\ud83d\udc99", "indices": [25, 40], "id": 870314743151689728, "screen_name": "damiantalica84", "id_str": "870314743151689728"}], "symbols": []}, "text": "@roodri87 @Jorge46851577 @damiantalica84 Discutir en privado TODO LO QUE QUIERAS!!! TODOOOO! frente a una c\u00e1mara...\u2026 https://t.co/LvQChAFGbF", "source": "Twitter for Android", "created_at": "Sat Mar 10 14:03:35 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972472362280128512, "extended_tweet": {"display_text_range": [41, 184], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "rodrigo fernandez", "indices": [0, 9], "id": 740241910481162241, "screen_name": "roodri87", "id_str": "740241910481162241"}, {"name": "Jorge", "indices": [10, 24], "id": 945811174595186688, "screen_name": "Jorge46851577", "id_str": "945811174595186688"}, {"name": "damian Benitez\ud83d\udc99\ud83d\udc9b\ud83d\udc99", "indices": [25, 40], "id": 870314743151689728, "screen_name": "damiantalica84", "id_str": "870314743151689728"}], "symbols": []}, "full_text": "@roodri87 @Jorge46851577 @damiantalica84 Discutir en privado TODO LO QUE QUIERAS!!! TODOOOO! frente a una c\u00e1mara... JAM\u00c1S \nSE LLAMA \"c\u00f3digos \" que lo tienen los GRANDES. Este chico NO."}, "in_reply_to_status_id_str": "972472362280128512", "in_reply_to_user_id": 740241910481162241, "is_quote_status": false, "filter_level": "low", "id": 972473042474545153, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "roodri87", "display_text_range": [41, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "es"} +{"reply_count": 0, "timestamp_ms": "1520690615658", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 11748, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "724954276573777921", "notifications": null, "followers_count": 664, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 5, "profile_text_color": "333333", "translator_type": "none", "name": "\u3086\u3074", "default_profile_image": false, "friends_count": 187, "verified": false, "default_profile": true, "favourites_count": 21657, "id": 724954276573777921, "profile_image_url": "http://pbs.twimg.com/profile_images/945146893708943360/a3lOfMr5_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/945146893708943360/a3lOfMr5_normal.jpg", "profile_background_tile": false, "screen_name": "KMF2_taitai", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/724954276573777921/1507337991", "created_at": "Tue Apr 26 13:32:23 +0000 2016", "contributors_enabled": false, "description": "\u30ad\u30b9\u30de\u30a4\u306e\u59eb\u30dd\u30b8\ud83c\udf51", "location": "\u63cf\u3044\u305f\u672a\u6765\u3078\u5171\u306b\u884c\u3053\u3046\u304b \u8ff7\u3044\u3055\u3048\u9053\u305a\u308c\u306b", "lang": "en"}, "id_str": "972473042474446848", "entities": {"urls": [{"url": "https://t.co/yKarE6Rk1a", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473042474446848"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "\u30fb\u30c9\u30e9\u30de\u300c\u25ef\u25ef\u3092\u304f\u3063\u3064\u3051\u3066\u300d\uff01\uff1f\n\u30fb\u25ef\u25ef de \u30b3\u30f3\u30c8\u3057\u3061\u3083\u3044\u306a\u3088\uff01\uff1f\n\u30fb\u30ad\u30b9\u30de\u30a4\u304c\u25ef\u25ef\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u51fa\u6f14\uff01\uff1f\n\u30fb\u3042\u306e2\u4eba\u304c\u30b5\u30b7\u30e1\u30b7\uff01\u672c\u97f3\u5c4b\u53f0\uff01\uff1f\n\u30fb7\u4eba\u304c\u6d77\u8fba\u3067\u30b5\u30c3\u30ab\u30fc\u304b\u3089\u306e\u25ef\u25ef\uff01\uff1f\n\u30fb\u25ef\u25ef Tube\uff01\uff1f\n\u30fb\u7537\u5b50\u5bee\u306e\u4e8c\u6bb5\u30d9\u30c3\u30c9\u3067\u25ef\u2026 https://t.co/yKarE6Rk1a", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 14:03:35 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 155], "entities": {"urls": [], "hashtags": [{"indices": [142, 148], "text": "Yummy"}], "user_mentions": [], "symbols": []}, "full_text": "\u30fb\u30c9\u30e9\u30de\u300c\u25ef\u25ef\u3092\u304f\u3063\u3064\u3051\u3066\u300d\uff01\uff1f\n\u30fb\u25ef\u25ef de \u30b3\u30f3\u30c8\u3057\u3061\u3083\u3044\u306a\u3088\uff01\uff1f\n\u30fb\u30ad\u30b9\u30de\u30a4\u304c\u25ef\u25ef\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u51fa\u6f14\uff01\uff1f\n\u30fb\u3042\u306e2\u4eba\u304c\u30b5\u30b7\u30e1\u30b7\uff01\u672c\u97f3\u5c4b\u53f0\uff01\uff1f\n\u30fb7\u4eba\u304c\u6d77\u8fba\u3067\u30b5\u30c3\u30ab\u30fc\u304b\u3089\u306e\u25ef\u25ef\uff01\uff1f\n\u30fb\u25ef\u25ef Tube\uff01\uff1f\n\u30fb\u7537\u5b50\u5bee\u306e\u4e8c\u6bb5\u30d9\u30c3\u30c9\u3067\u25ef\u25ef\u30c0\u30f3\u30b9\uff01\uff1f\n\n\u6587\u5b57\u3060\u3051\u3067\u3082\u5341\u5206Yummy\uff01\uff01\uff01\uff01\n\n#Yummy!!!!!!!"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473042474446848, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "ja"} +{"reply_count": 0, "timestamp_ms": "1520690615662", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 211, "geo_enabled": false, "utc_offset": -18000, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "18514440", "notifications": null, "followers_count": 17, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": "Quito", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "333333", "translator_type": "none", "name": "John Paxinos", "default_profile_image": false, "friends_count": 38, "verified": false, "default_profile": true, "favourites_count": 0, "id": 18514440, "profile_image_url": "http://pbs.twimg.com/profile_images/838174165882527745/QEGgKWwK_normal.jpg", "profile_background_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/838174165882527745/QEGgKWwK_normal.jpg", "profile_background_tile": false, "screen_name": "paxiarch", "is_translator": false, "created_at": "Wed Dec 31 19:56:38 +0000 2008", "contributors_enabled": false, "description": null, "location": "Athens, Greece", "lang": "en"}, "id_str": "972473042491379714", "entities": {"urls": [{"url": "https://t.co/07CQLmXbGC", "indices": [116, 139], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473042491379714"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "\u0391\u03c0\u03cc \u03b5\u03ba\u03b5\u03af \u03c0\u03bf\u03c5 \u03bf \u0398\u03bf\u03b4\u03c9\u03c1\u03ae\u03c2 \u03ba\u03b1\u03c4\u03b7\u03b3\u03bf\u03c1\u03bf\u03cd\u03c3\u03b5 \u03a1\u03bf\u03b4\u03ac\u03bd\u03b8\u03b5\u03c2, \u0392\u03b9\u03c1\u03b3\u03b9\u03bd\u03af\u03b5\u03c2 \u03cc\u03c4\u03b9 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c0\u03c1\u03cc\u03b2\u03b1\u03c4\u03b1, \u03be\u03b1\u03c6\u03bd\u03b9\u03ba\u03ac \u03ad\u03b3\u03b9\u03bd\u03b5 \u03bf \u03af\u03b4\u03b9\u03bf\u03c2 \u03b3\u03b9\u03b4\u03bf\u03b2\u03bf\u03c3\u03ba\u03cc\u03c2 \u03ba\u03b1\u03b9 \u03c4\u03b9\u03c2\u2026 https://t.co/07CQLmXbGC", "source": "Twitter Web Client", "created_at": "Sat Mar 10 14:03:35 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 212], "entities": {"urls": [], "hashtags": [{"indices": [201, 212], "text": "survivorGR"}], "user_mentions": [], "symbols": []}, "full_text": "\u0391\u03c0\u03cc \u03b5\u03ba\u03b5\u03af \u03c0\u03bf\u03c5 \u03bf \u0398\u03bf\u03b4\u03c9\u03c1\u03ae\u03c2 \u03ba\u03b1\u03c4\u03b7\u03b3\u03bf\u03c1\u03bf\u03cd\u03c3\u03b5 \u03a1\u03bf\u03b4\u03ac\u03bd\u03b8\u03b5\u03c2, \u0392\u03b9\u03c1\u03b3\u03b9\u03bd\u03af\u03b5\u03c2 \u03cc\u03c4\u03b9 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c0\u03c1\u03cc\u03b2\u03b1\u03c4\u03b1, \u03be\u03b1\u03c6\u03bd\u03b9\u03ba\u03ac \u03ad\u03b3\u03b9\u03bd\u03b5 \u03bf \u03af\u03b4\u03b9\u03bf\u03c2 \u03b3\u03b9\u03b4\u03bf\u03b2\u03bf\u03c3\u03ba\u03cc\u03c2 \u03ba\u03b1\u03b9 \u03c4\u03b9\u03c2 \u03c3\u03c4\u03c1\u03ad\u03c6\u03b5\u03b9 \u03b5\u03bd\u03b1\u03bd\u03c4\u03af\u03bf\u03bd \u0397\u03bb\u03af\u03b1. \u03a0\u03bf\u03bb\u03cd \u03ad\u03be\u03c5\u03c0\u03bd\u03bf, \u03b1\u03bb\u03bb\u03ac \u03ba\u03bf\u03bc\u03bc\u03b1\u03c4\u03ac\u03ba\u03b9 \u03b1\u03b4\u03af\u03c3\u03c4\u03b1\u03ba\u03c4\u03bf. \u039a\u03b1\u03b9 \u03bc\u03ac\u03bb\u03bb\u03bf\u03bd \u03b8\u03b1 \u03c4\u03bf\u03c5 \u03b2\u03b3\u03b5\u03b9. #survivorGR"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473042491379714, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "el"} +{"reply_count": 0, "in_reply_to_status_id": null, "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 23896, "geo_enabled": true, "utc_offset": 0, "profile_sidebar_border_color": "B88DB8", "profile_link_color": "E319B7", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme14/bg.gif", "id_str": "22843783", "notifications": null, "followers_count": 13468, "url": "http://www.balletblack.co.uk", "profile_sidebar_fill_color": "E8D6E8", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme14/bg.gif", "follow_request_sent": null, "time_zone": "London", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 258, "profile_text_color": "171517", "translator_type": "none", "name": "Ballet Black", "default_profile_image": false, "friends_count": 362, "verified": false, "default_profile": false, "favourites_count": 6683, "id": 22843783, "profile_image_url": "http://pbs.twimg.com/profile_images/639059758218129408/PIh2KjGy_normal.jpg", "profile_background_color": "131516", "profile_image_url_https": "https://pbs.twimg.com/profile_images/639059758218129408/PIh2KjGy_normal.jpg", "profile_background_tile": true, "screen_name": "BalletBlack", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/22843783/1517577814", "created_at": "Wed Mar 04 22:12:17 +0000 2009", "contributors_enabled": false, "description": "A glimpse into life at Ballet Black, a neo-classical ballet company highlighting dancers of black & Asian descent. Tweets by Artistic Director, Cassa Pancho MBE", "location": "London", "lang": "en"}, "id_str": "972473046681440257", "entities": {"urls": [{"url": "https://t.co/cU9Lr0J4Sa", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473046681440257"}], "hashtags": [], "user_mentions": [{"name": "Stopgap Dance Co.", "indices": [80, 93], "id": 33466802, "screen_name": "Stopgapdance", "id_str": "33466802"}], "symbols": []}, "text": "I can only imagine how stressful this situation must be. If anyone can chip in, @Stopgapdance have \u00a32k left to rais\u2026 https://t.co/cU9Lr0J4Sa", "source": "Twitter for Android", "place": null, "created_at": "Sat Mar 10 14:03:36 +0000 2018", "retweeted": false, "quoted_status_id_str": "971837349259866112", "extended_tweet": {"display_text_range": [0, 197], "entities": {"urls": [{"url": "https://t.co/ZDwXtryFkp", "indices": [198, 221], "display_url": "twitter.com/Stopgapdance/s\u2026", "expanded_url": "https://twitter.com/Stopgapdance/status/971837349259866112"}], "hashtags": [{"indices": [179, 197], "text": "SgTheEnormousRoom"}], "user_mentions": [{"name": "Stopgap Dance Co.", "indices": [80, 93], "id": 33466802, "screen_name": "Stopgapdance", "id_str": "33466802"}], "symbols": []}, "full_text": "I can only imagine how stressful this situation must be. If anyone can chip in, @Stopgapdance have \u00a32k left to raise to remake their stolen sets, props & costumes! Please RT! #SgTheEnormousRoom https://t.co/ZDwXtryFkp"}, "in_reply_to_status_id_str": null, "filter_level": "low", "in_reply_to_user_id": null, "is_quote_status": true, "quoted_status": {"reply_count": 0, "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 9657, "geo_enabled": true, "utc_offset": 0, "profile_sidebar_border_color": "FFCC00", "profile_link_color": "82041D", "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/618308918/fwvtg3ggymgwcs6unfg2.jpeg", "id_str": "33466802", "notifications": null, "followers_count": 7971, "url": "http://www.stopgapdance.com", "profile_sidebar_fill_color": "FFCC66", "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/618308918/fwvtg3ggymgwcs6unfg2.jpeg", "follow_request_sent": null, "time_zone": "London", "profile_use_background_image": false, "protected": false, "following": null, "listed_count": 126, "profile_text_color": "333333", "translator_type": "none", "name": "Stopgap Dance Co.", "default_profile_image": false, "friends_count": 1823, "verified": false, "default_profile": false, "favourites_count": 1943, "id": 33466802, "profile_image_url": "http://pbs.twimg.com/profile_images/753643288985538561/ot2gsfUb_normal.jpg", "profile_background_color": "FFFFFF", "profile_image_url_https": "https://pbs.twimg.com/profile_images/753643288985538561/ot2gsfUb_normal.jpg", "profile_background_tile": true, "screen_name": "Stopgapdance", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/33466802/1468587899", "created_at": "Mon Apr 20 09:11:37 +0000 2009", "contributors_enabled": false, "description": "Stopgap Dance Company makes exhilarating dance productions with exceptional disabled and non-disabled artists for national and international touring.", "location": "Farnham, Surrey, England.", "lang": "en"}, "id_str": "971837349259866112", "entities": {"urls": [{"url": "https://t.co/XBNCtn02my", "indices": [116, 139], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/971837349259866112"}], "hashtags": [{"indices": [55, 73], "text": "SgTheEnormousRoom"}], "user_mentions": [], "symbols": []}, "text": "Having had our van stolen with all our theatre set for #SgTheEnormousRoom we\u2019re Crowdfunding to get it all rebuilt\u2026 https://t.co/XBNCtn02my", "source": "Twitter for iPhone", "created_at": "Thu Mar 08 19:57:34 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 203], "entities": {"urls": [{"url": "https://t.co/6nDW463VY8", "indices": [180, 203], "display_url": "crowdfunder.co.uk/please-help-en\u2026", "expanded_url": "https://www.crowdfunder.co.uk/please-help-enormous-room-go-back-on-the-road"}], "hashtags": [{"indices": [55, 73], "text": "SgTheEnormousRoom"}, {"indices": [167, 179], "text": "PeoplePower"}], "user_mentions": [], "symbols": []}, "full_text": "Having had our van stolen with all our theatre set for #SgTheEnormousRoom we\u2019re Crowdfunding to get it all rebuilt from scratch...! Please help if you can! THANK YOU! #PeoplePower https://t.co/6nDW463VY8"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 971837349259866112, "possibly_sensitive": false, "retweet_count": 1, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 2, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"}, "id": 972473046681440257, "timestamp_ms": "1520690616661", "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 0, "quoted_status_id": 971837349259866112, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690616665", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 76, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "000000", "profile_link_color": "0C5B2F", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "874533772682698753", "notifications": null, "followers_count": 2, "url": "http://www.logospharmacy.net", "profile_sidebar_fill_color": "000000", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": false, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "000000", "translator_type": "none", "name": "Logos Pharmacy", "default_profile_image": false, "friends_count": 0, "verified": false, "default_profile": false, "favourites_count": 0, "id": 874533772682698753, "profile_image_url": "http://pbs.twimg.com/profile_images/874534733870276608/Csc2Gn24_normal.jpg", "profile_background_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/874534733870276608/Csc2Gn24_normal.jpg", "profile_background_tile": false, "screen_name": "LogosPharmacy", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/874533772682698753/1497340296", "created_at": "Tue Jun 13 07:47:54 +0000 2017", "contributors_enabled": false, "description": "In the Tampa area, you will find a pharmacy that cares about your health. We are Logos Pharmacy and we are here to serve the community from our hearts.", "location": "8315 Sheldon Rd. Tampa, FL 336", "lang": "en-gb"}, "id_str": "972473046698110977", "entities": {"urls": [{"url": "https://t.co/MPnzrqdeSE", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473046698110977"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "Reasons Why You Should Stick to One Pharmacy\n\nHaving one pharmacy to take care of all our medication isn\u2019t just sma\u2026 https://t.co/MPnzrqdeSE", "source": "Social Media Sharing - Proweaver", "created_at": "Sat Mar 10 14:03:36 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"extended_entities": {"media": [{"url": "https://t.co/E2IqY3Mg69", "id_str": "972473033083387904", "display_url": "pic.twitter.com/E2IqY3Mg69", "media_url_https": "https://pbs.twimg.com/media/DX7rEjqVAAAFw1_.jpg", "type": "photo", "indices": [278, 301], "id": 972473033083387904, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 800}, "large": {"resize": "fit", "w": 1200, "h": 800}, "small": {"resize": "fit", "w": 680, "h": 453}}, "media_url": "http://pbs.twimg.com/media/DX7rEjqVAAAFw1_.jpg", "expanded_url": "https://twitter.com/LogosPharmacy/status/972473046698110977/photo/1"}]}, "display_text_range": [0, 277], "entities": {"urls": [{"url": "https://t.co/0Oz6lj246U", "indices": [234, 257], "display_url": "goo.gl/cmuVYF", "expanded_url": "https://goo.gl/cmuVYF"}], "media": [{"url": "https://t.co/E2IqY3Mg69", "id_str": "972473033083387904", "display_url": "pic.twitter.com/E2IqY3Mg69", "media_url_https": "https://pbs.twimg.com/media/DX7rEjqVAAAFw1_.jpg", "type": "photo", "indices": [278, 301], "id": 972473033083387904, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 1200, "h": 800}, "large": {"resize": "fit", "w": 1200, "h": 800}, "small": {"resize": "fit", "w": 680, "h": 453}}, "media_url": "http://pbs.twimg.com/media/DX7rEjqVAAAFw1_.jpg", "expanded_url": "https://twitter.com/LogosPharmacy/status/972473046698110977/photo/1"}], "hashtags": [{"indices": [259, 268], "text": "pharmacy"}, {"indices": [269, 277], "text": "reasons"}], "user_mentions": [], "symbols": []}, "full_text": "Reasons Why You Should Stick to One Pharmacy\n\nHaving one pharmacy to take care of all our medication isn\u2019t just smart-it\u2019s safe and ideal. We usually don\u2019t mind where we get our medicine, as long as it\u2019s from a pharmacy. \n\nRead more: https://t.co/0Oz6lj246U\n\n#pharmacy #reasons https://t.co/E2IqY3Mg69"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473046698110977, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690616661", "favorited": false, "in_reply_to_user_id_str": "18029837", "user": {"statuses_count": 36541, "geo_enabled": true, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "2525716756", "notifications": null, "followers_count": 257, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 3, "profile_text_color": "333333", "translator_type": "none", "name": "Molly Robicheaux", "default_profile_image": false, "friends_count": 141, "verified": false, "default_profile": true, "favourites_count": 21317, "id": 2525716756, "profile_image_url": "http://pbs.twimg.com/profile_images/834472632854728704/nJTVSU1X_normal.jpg", "profile_background_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/834472632854728704/nJTVSU1X_normal.jpg", "profile_background_tile": false, "screen_name": "mdr651", "is_translator": false, "created_at": "Sat May 03 15:43:57 +0000 2014", "contributors_enabled": false, "description": null, "location": "Louisiana, USA", "lang": "en"}, "id_str": "972473046681440256", "entities": {"urls": [{"url": "https://t.co/w7UO2eFJxN", "indices": [121, 144], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473046681440256"}], "hashtags": [], "user_mentions": [{"name": "mikemcconn", "indices": [0, 11], "id": 18029837, "screen_name": "mikemcconn", "id_str": "18029837"}, {"name": "Ken Dilanian", "indices": [12, 27], "id": 325001316, "screen_name": "KenDilanianNBC", "id_str": "325001316"}, {"name": "Ruth Marcus", "indices": [28, 39], "id": 21148783, "screen_name": "RuthMarcus", "id_str": "21148783"}], "symbols": []}, "text": "@mikemcconn @KenDilanianNBC @RuthMarcus You & your family know you are blessed. A pure soul incapable of sinning. G\u2026 https://t.co/w7UO2eFJxN", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 14:03:36 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972325764375851009, "extended_tweet": {"extended_entities": {"media": [{"url": "https://t.co/3MGEfi2EZa", "id_str": "972473039425232896", "display_url": "pic.twitter.com/3MGEfi2EZa", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/DX7rE7SV4AAnBh4.jpg", "type": "animated_gif", "video_info": {"variants": [{"url": "https://video.twimg.com/tweet_video/DX7rE7SV4AAnBh4.mp4", "bitrate": 0, "content_type": "video/mp4"}], "aspect_ratio": [53, 64]}, "indices": [129, 152], "id": 972473039425232896, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 212, "h": 256}, "large": {"resize": "fit", "w": 212, "h": 256}, "small": {"resize": "fit", "w": 212, "h": 256}}, "media_url": "http://pbs.twimg.com/tweet_video_thumb/DX7rE7SV4AAnBh4.jpg", "expanded_url": "https://twitter.com/mdr651/status/972473046681440256/photo/1"}]}, "display_text_range": [40, 128], "entities": {"urls": [], "media": [{"url": "https://t.co/3MGEfi2EZa", "id_str": "972473039425232896", "display_url": "pic.twitter.com/3MGEfi2EZa", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/DX7rE7SV4AAnBh4.jpg", "type": "animated_gif", "video_info": {"variants": [{"url": "https://video.twimg.com/tweet_video/DX7rE7SV4AAnBh4.mp4", "bitrate": 0, "content_type": "video/mp4"}], "aspect_ratio": [53, 64]}, "indices": [129, 152], "id": 972473039425232896, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 212, "h": 256}, "large": {"resize": "fit", "w": 212, "h": 256}, "small": {"resize": "fit", "w": 212, "h": 256}}, "media_url": "http://pbs.twimg.com/tweet_video_thumb/DX7rE7SV4AAnBh4.jpg", "expanded_url": "https://twitter.com/mdr651/status/972473046681440256/photo/1"}], "hashtags": [], "user_mentions": [{"name": "mikemcconn", "indices": [0, 11], "id": 18029837, "screen_name": "mikemcconn", "id_str": "18029837"}, {"name": "Ken Dilanian", "indices": [12, 27], "id": 325001316, "screen_name": "KenDilanianNBC", "id_str": "325001316"}, {"name": "Ruth Marcus", "indices": [28, 39], "id": 21148783, "screen_name": "RuthMarcus", "id_str": "21148783"}], "symbols": []}, "full_text": "@mikemcconn @KenDilanianNBC @RuthMarcus You & your family know you are blessed. A pure soul incapable of sinning. God bless. https://t.co/3MGEfi2EZa"}, "in_reply_to_status_id_str": "972325764375851009", "in_reply_to_user_id": 18029837, "is_quote_status": false, "filter_level": "low", "id": 972473046681440256, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "mikemcconn", "display_text_range": [40, 140], "possibly_sensitive": false, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690617664", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 1951, "geo_enabled": false, "utc_offset": 32400, "profile_sidebar_border_color": "000000", "profile_link_color": "1B95E0", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "763942523790168066", "notifications": null, "followers_count": 153, "url": "http://mypage.syosetu.com/414320/", "profile_sidebar_fill_color": "000000", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": "Tokyo", "profile_use_background_image": false, "protected": false, "following": null, "listed_count": 4, "profile_text_color": "000000", "translator_type": "none", "name": "\u65e5\u91ce\u7950\u5e0c@\u30ab\u30e9\u30d5\u30eb\u30ce\u30fc\u30c8\u767a\u58f2\u4e2d", "default_profile_image": false, "friends_count": 218, "verified": false, "default_profile": false, "favourites_count": 1873, "id": 763942523790168066, "profile_image_url": "http://pbs.twimg.com/profile_images/764800980164632576/b8hHMDbj_normal.jpg", "profile_background_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/764800980164632576/b8hHMDbj_normal.jpg", "profile_background_tile": false, "screen_name": "library_relieur", "is_translator": false, "created_at": "Fri Aug 12 03:37:45 +0000 2016", "contributors_enabled": false, "description": "\u534a\u4eba\u524d\u306e\u5927\u5b66\u56f3\u66f8\u9928\u54e1\u3067\u3059\u3002\u5c0f\u8aac\u5bb6\u306b\u306a\u308d\u3046\u69d8\u3001\u30a2\u30eb\u30d5\u30a1\u30dd\u30ea\u30b9\u69d8\u3001\u30ab\u30af\u30e8\u30e0\u69d8\u3067\u6d3b\u52d5\u3057\u3066\u3044\u307e\u3059\u3002 SKYHIGH\u6587\u5eab\u69d8\u3088\u308a\u300e\u30ab\u30e9\u30d5\u30eb \u30ce\u30fc\u30c8\u3000\u4e45\u6211\u30c7\u30b6\u30a4\u30f3\u4e8b\u52d9\u6240\u306e\u6625\u5d50\u300f\u767a\u58f2\u4e2d\u3067\u3059\u3002", "location": null, "lang": "ja"}, "id_str": "972473050888265728", "entities": {"urls": [{"url": "https://t.co/BGI5x7LNa3", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473050888265728"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "\u3010\u5ba3\u4f1d\u3011\n\u30ab\u30af\u30e8\u30e0\u30b3\u30f33\u306e\u4e2d\u9593\u9078\u8003\u3092\u7a81\u7834\u3057\u307e\u3057\u305f\u3002\n\n\u300e\u8679\u306e\u67b6\u3051\u6a4b\u300f\u516850\u8a71\u516c\u958b\u4e2d\u3067\u3059\u3002\n\n\u5948\u6d25\u7f8e\u5148\u8f29\u3068\u4ea4\u308f\u3057\u305f\u7d04\u675f\u304c\u3001\u3044\u3064\u3082\u50d5\u306e\u80cc\u4e2d\u3092\u62bc\u3057\u3066\u304f\u308c\u305f\u2015\u2015\u3002\n\u3053\u308c\u306f\u53f8\u66f8\u3092\u76ee\u6307\u3059\u50d5\u3068\u88fd\u672c\u5bb6\u3092\u5fd7\u3059\u5148\u8f29\u306e\u3001\u3055\u3055\u3084\u304b\u3060\u3051\u3069\u5927\u5207\u306a\u7d04\u675f\u306e\u7269\u8a9e\u3002\u2026 https://t.co/BGI5x7LNa3", "source": "Twitter Web Client", "created_at": "Sat Mar 10 14:03:37 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 155], "entities": {"urls": [{"url": "https://t.co/4M6mI9O5e5", "indices": [132, 155], "display_url": "kakuyomu.jp/works/11773540\u2026", "expanded_url": "https://kakuyomu.jp/works/1177354054884469055"}], "hashtags": [{"indices": [117, 122], "text": "\u30ab\u30af\u30e8\u30e0"}, {"indices": [123, 131], "text": "\u30ab\u30af\u30e8\u30e0\u30b3\u30f33"}], "user_mentions": [], "symbols": []}, "full_text": "\u3010\u5ba3\u4f1d\u3011\n\u30ab\u30af\u30e8\u30e0\u30b3\u30f33\u306e\u4e2d\u9593\u9078\u8003\u3092\u7a81\u7834\u3057\u307e\u3057\u305f\u3002\n\n\u300e\u8679\u306e\u67b6\u3051\u6a4b\u300f\u516850\u8a71\u516c\u958b\u4e2d\u3067\u3059\u3002\n\n\u5948\u6d25\u7f8e\u5148\u8f29\u3068\u4ea4\u308f\u3057\u305f\u7d04\u675f\u304c\u3001\u3044\u3064\u3082\u50d5\u306e\u80cc\u4e2d\u3092\u62bc\u3057\u3066\u304f\u308c\u305f\u2015\u2015\u3002\n\u3053\u308c\u306f\u53f8\u66f8\u3092\u76ee\u6307\u3059\u50d5\u3068\u88fd\u672c\u5bb6\u3092\u5fd7\u3059\u5148\u8f29\u306e\u3001\u3055\u3055\u3084\u304b\u3060\u3051\u3069\u5927\u5207\u306a\u7d04\u675f\u306e\u7269\u8a9e\u3002\n\n#\u30ab\u30af\u30e8\u30e0\u3000#\u30ab\u30af\u30e8\u30e0\u30b3\u30f33\nhttps://t.co/4M6mI9O5e5"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473050888265728, "possibly_sensitive": false, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "ja"} +{"reply_count": 0, "timestamp_ms": "1520690617665", "favorited": false, "in_reply_to_user_id_str": "46302096", "user": {"statuses_count": 3066, "geo_enabled": true, "utc_offset": null, "profile_sidebar_border_color": "000000", "profile_link_color": "981CEB", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "2400398276", "notifications": null, "followers_count": 1261, "url": null, "profile_sidebar_fill_color": "000000", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": false, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "000000", "translator_type": "none", "name": "CarolynBResister", "default_profile_image": false, "friends_count": 1876, "verified": false, "default_profile": false, "favourites_count": 4312, "id": 2400398276, "profile_image_url": "http://pbs.twimg.com/profile_images/957767734267469824/KQeaswXp_normal.jpg", "profile_background_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/957767734267469824/KQeaswXp_normal.jpg", "profile_background_tile": false, "screen_name": "CarolynBowen53", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/2400398276/1517184218", "created_at": "Thu Mar 20 20:18:43 +0000 2014", "contributors_enabled": false, "description": "Proud Liberal, lover of cats, gardening, antiques, & history,", "location": "Dayton, OH", "lang": "en"}, "id_str": "972473050892505088", "entities": {"urls": [{"url": "https://t.co/yfpNQ2Gk0j", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473050892505088"}], "hashtags": [], "user_mentions": [{"name": "Joey Mannarino", "indices": [0, 9], "id": 46302096, "screen_name": "JTMann05", "id_str": "46302096"}, {"name": "Donald J. Trump", "indices": [10, 26], "id": 25073877, "screen_name": "realDonaldTrump", "id_str": "25073877"}], "symbols": []}, "text": "@JTMann05 @realDonaldTrump Oh hell no...I will not sit here and listen to that lie. U all complained and disrespect\u2026 https://t.co/yfpNQ2Gk0j", "source": "Twitter Web Client", "created_at": "Sat Mar 10 14:03:37 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972468559107502080, "extended_tweet": {"display_text_range": [27, 216], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "Joey Mannarino", "indices": [0, 9], "id": 46302096, "screen_name": "JTMann05", "id_str": "46302096"}, {"name": "Donald J. Trump", "indices": [10, 26], "id": 25073877, "screen_name": "realDonaldTrump", "id_str": "25073877"}], "symbols": []}, "full_text": "@JTMann05 @realDonaldTrump Oh hell no...I will not sit here and listen to that lie. U all complained and disrespected Obama every day. So until this orange piece of sh*t is out of office I will complain every minute!"}, "in_reply_to_status_id_str": "972468559107502080", "in_reply_to_user_id": 46302096, "is_quote_status": false, "filter_level": "low", "id": 972473050892505088, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "JTMann05", "display_text_range": [27, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690609664", "favorited": false, "in_reply_to_user_id_str": "26133242", "user": {"statuses_count": 59924, "geo_enabled": true, "utc_offset": -28800, "profile_sidebar_border_color": "03021C", "profile_link_color": "F58EA8", "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/283406678/n16727354_39021828_3772.jpg", "id_str": "202752376", "notifications": null, "followers_count": 765, "url": null, "profile_sidebar_fill_color": "0A506B", "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/283406678/n16727354_39021828_3772.jpg", "follow_request_sent": null, "time_zone": "Pacific Time (US & Canada)", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 16, "profile_text_color": "227ACC", "translator_type": "none", "name": "\ud83e\udd23 Deepening My Laugh Lines \ud83d\ude1c", "default_profile_image": false, "friends_count": 586, "verified": false, "default_profile": false, "favourites_count": 11467, "id": 202752376, "profile_image_url": "http://pbs.twimg.com/profile_images/971791179384844291/NKFeMcgh_normal.jpg", "profile_background_color": "021F1E", "profile_image_url_https": "https://pbs.twimg.com/profile_images/971791179384844291/NKFeMcgh_normal.jpg", "profile_background_tile": false, "screen_name": "Inquired_Mind", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/202752376/1520343775", "created_at": "Thu Oct 14 19:04:19 +0000 2010", "contributors_enabled": false, "description": "Singer\u2022Designer\u2022Stylist\u2022Decorator\u2022Poet", "location": "Dallas, Tx", "lang": "en"}, "id_str": "972473017333899264", "entities": {"urls": [{"url": "https://t.co/ND6yGcFTpY", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473017333899264"}], "hashtags": [], "user_mentions": [{"name": "swaggaUNFLAWED\u2122", "indices": [0, 14], "id": 26133242, "screen_name": "FebruarysOwn8", "id_str": "26133242"}], "symbols": []}, "text": "@FebruarysOwn8 I do not! I stay in my lane and keep my commentary to a minimum. My face however .... didn\u2019t get the\u2026 https://t.co/ND6yGcFTpY", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 14:03:29 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972472524155039744, "extended_tweet": {"display_text_range": [15, 181], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "swaggaUNFLAWED\u2122", "indices": [0, 14], "id": 26133242, "screen_name": "FebruarysOwn8", "id_str": "26133242"}], "symbols": []}, "full_text": "@FebruarysOwn8 I do not! I stay in my lane and keep my commentary to a minimum. My face however .... didn\u2019t get the memo tht things hv to shift \ud83e\udd23. Quit playing Jason I wanna gooooo!"}, "in_reply_to_status_id_str": "972472524155039744", "in_reply_to_user_id": 26133242, "is_quote_status": false, "filter_level": "low", "id": 972473017333899264, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "FebruarysOwn8", "display_text_range": [15, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690618665", "favorited": false, "in_reply_to_user_id_str": "813223935672139776", "user": {"statuses_count": 49221, "geo_enabled": true, "utc_offset": 25200, "profile_sidebar_border_color": "000000", "profile_link_color": "FF6347", "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/675303563602493440/I7UPlvcG.png", "id_str": "2376998935", "notifications": null, "followers_count": 109, "url": null, "profile_sidebar_fill_color": "000000", "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/675303563602493440/I7UPlvcG.png", "follow_request_sent": null, "time_zone": "Hanoi", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 6, "profile_text_color": "000000", "translator_type": "none", "name": "(\u25cf\u00b4\u03c9\uff40\u25cf)ppp~", "default_profile_image": false, "friends_count": 228, "verified": false, "default_profile": false, "favourites_count": 6645, "id": 2376998935, "profile_image_url": "http://pbs.twimg.com/profile_images/971423900335669250/AMyq7Oj__normal.jpg", "profile_background_color": "FF7E9D", "profile_image_url_https": "https://pbs.twimg.com/profile_images/971423900335669250/AMyq7Oj__normal.jpg", "profile_background_tile": true, "screen_name": "piiijmp95_", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/2376998935/1517058549", "created_at": "Fri Mar 07 11:46:51 +0000 2014", "contributors_enabled": false, "description": "@BTS_twt | \uc288\uc9d0\ud83c\udf26", "location": null, "lang": "en"}, "id_str": "972473055086694400", "entities": {"urls": [{"url": "https://t.co/y2MEzLtLYQ", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473055086694400"}], "hashtags": [], "user_mentions": [{"name": "All4RM\ud83c\udf31", "indices": [0, 12], "id": 813223935672139776, "screen_name": "kratai_2202", "id_str": "813223935672139776"}], "symbols": []}, "text": "@kratai_2202 \u0e44\u0e21\u0e48\u0e41\u0e19\u0e48\u0e43\u0e08\u0e27\u0e48\u0e32\u0e21\u0e31\u0e19\u0e19\u0e31\u0e1a\u0e21\u0e31\u0e49\u0e22\u0e2d\u0e30 \u0e04\u0e37\u0e2d\u0e21\u0e35\u0e1e\u0e35\u0e48\u0e04\u0e19\u0e19\u0e36\u0e07\u0e41\u0e01\u0e15\u0e34\u0e14\u0e40\u0e07\u0e32\u0e41\u0e25\u0e49\u0e27\u0e2b\u0e25\u0e32\u0e22\u0e46\u0e04\u0e19\u0e01\u0e47\u0e1a\u0e2d\u0e01\u0e43\u0e2b\u0e49\u0e41\u0e01\u0e23\u0e35\u0e40\u0e22\u0e2d\u0e30\u0e46 \u0e08\u0e30\u0e44\u0e14\u0e49\u0e42\u0e14\u0e19\u0e40\u0e0a\u0e47\u0e04\u0e1e\u0e32\u0e2a \u0e41\u0e15\u0e48\u0e27\u0e48\u0e32\u0e44\u0e21\u0e48\u0e2d\u0e22\u0e32\u2026 https://t.co/y2MEzLtLYQ", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 14:03:38 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972472610691756032, "extended_tweet": {"display_text_range": [13, 165], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "All4RM\ud83c\udf31", "indices": [0, 12], "id": 813223935672139776, "screen_name": "kratai_2202", "id_str": "813223935672139776"}], "symbols": []}, "full_text": "@kratai_2202 \u0e44\u0e21\u0e48\u0e41\u0e19\u0e48\u0e43\u0e08\u0e27\u0e48\u0e32\u0e21\u0e31\u0e19\u0e19\u0e31\u0e1a\u0e21\u0e31\u0e49\u0e22\u0e2d\u0e30 \u0e04\u0e37\u0e2d\u0e21\u0e35\u0e1e\u0e35\u0e48\u0e04\u0e19\u0e19\u0e36\u0e07\u0e41\u0e01\u0e15\u0e34\u0e14\u0e40\u0e07\u0e32\u0e41\u0e25\u0e49\u0e27\u0e2b\u0e25\u0e32\u0e22\u0e46\u0e04\u0e19\u0e01\u0e47\u0e1a\u0e2d\u0e01\u0e43\u0e2b\u0e49\u0e41\u0e01\u0e23\u0e35\u0e40\u0e22\u0e2d\u0e30\u0e46 \u0e08\u0e30\u0e44\u0e14\u0e49\u0e42\u0e14\u0e19\u0e40\u0e0a\u0e47\u0e04\u0e1e\u0e32\u0e2a \u0e41\u0e15\u0e48\u0e27\u0e48\u0e32\u0e44\u0e21\u0e48\u0e2d\u0e22\u0e32\u0e01\u0e43\u0e2b\u0e49\u0e42\u0e14\u0e19\u0e40\u0e0a\u0e47\u0e04\u0e2d\u0e30 \u0e04\u0e37\u0e2d\u0e40\u0e04\u0e22\u0e42\u0e14\u0e19\u0e40\u0e0a\u0e47\u0e04\u0e2b\u0e25\u0e32\u0e22\u0e23\u0e2d\u0e1a\u0e21\u0e32\u0e01\u0e08\u0e19\u0e40\u0e25\u0e34\u0e01\u0e23\u0e35\u0e44\u0e1b\u0e40\u0e25\u0e22"}, "in_reply_to_status_id_str": "972472610691756032", "in_reply_to_user_id": 813223935672139776, "is_quote_status": false, "filter_level": "low", "id": 972473055086694400, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "kratai_2202", "display_text_range": [13, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "th"} +{"reply_count": 0, "timestamp_ms": "1520690619665", "favorited": false, "in_reply_to_user_id_str": "521872712", "user": {"statuses_count": 25533, "geo_enabled": false, "utc_offset": -18000, "profile_sidebar_border_color": "FFFFFF", "profile_link_color": "FF0000", "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/378800000096452877/e30e2ccdf1590dd1e5c96e324ecc833a.jpeg", "id_str": "296537787", "notifications": null, "followers_count": 668, "url": null, "profile_sidebar_fill_color": "7AC3EE", "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/378800000096452877/e30e2ccdf1590dd1e5c96e324ecc833a.jpeg", "follow_request_sent": null, "time_zone": "Quito", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 1, "profile_text_color": "3D1957", "translator_type": "none", "name": "lucky", "default_profile_image": false, "friends_count": 297, "verified": false, "default_profile": false, "favourites_count": 32177, "id": 296537787, "profile_image_url": "http://pbs.twimg.com/profile_images/968149338147958784/mj3i28h7_normal.jpg", "profile_background_color": "642D8B", "profile_image_url_https": "https://pbs.twimg.com/profile_images/968149338147958784/mj3i28h7_normal.jpg", "profile_background_tile": true, "screen_name": "rdnbthkrmr", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/296537787/1518823996", "created_at": "Tue May 10 23:29:10 +0000 2011", "contributors_enabled": false, "description": "i'm doing my best!", "location": "Providence, RI", "lang": "en"}, "id_str": "972473059281178624", "entities": {"urls": [{"url": "https://t.co/AsdBXrrdqE", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473059281178624"}], "hashtags": [], "user_mentions": [{"name": "\ud83c\udf08Ivy Fouts", "indices": [0, 13], "id": 521872712, "screen_name": "poisonivy_xx", "id_str": "521872712"}], "symbols": []}, "text": "@poisonivy_xx she had a mental break, believes she died and was born again, used to be a flat earther and pro hitle\u2026 https://t.co/AsdBXrrdqE", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 14:03:39 +0000 2018", "retweeted": false, "in_reply_to_status_id": 971258813729951746, "extended_tweet": {"display_text_range": [14, 215], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "\ud83c\udf08Ivy Fouts", "indices": [0, 13], "id": 521872712, "screen_name": "poisonivy_xx", "id_str": "521872712"}], "symbols": []}, "full_text": "@poisonivy_xx she had a mental break, believes she died and was born again, used to be a flat earther and pro hitler on her old twitter, and now believes she is a prophet of god....it\u2019s all mental illness i think \u2639\ufe0f"}, "in_reply_to_status_id_str": "971258813729951746", "in_reply_to_user_id": 521872712, "is_quote_status": false, "filter_level": "low", "id": 972473059281178624, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "poisonivy_xx", "display_text_range": [14, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690619664", "favorited": false, "in_reply_to_user_id_str": "951113665423405056", "user": {"statuses_count": 12582, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "955105724606046210", "notifications": null, "followers_count": 9, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "333333", "translator_type": "none", "name": "\ub2e8\ube4495\ud83c\udf40", "default_profile_image": false, "friends_count": 6, "verified": false, "default_profile": true, "favourites_count": 5, "id": 955105724606046210, "profile_image_url": "http://pbs.twimg.com/profile_images/955108719112593408/TOexIQ0f_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/955108719112593408/TOexIQ0f_normal.jpg", "profile_background_tile": false, "screen_name": "danbi__95", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/955105724606046210/1516550637", "created_at": "Sun Jan 21 15:52:04 +0000 2018", "contributors_enabled": false, "description": null, "location": null, "lang": "ko"}, "id_str": "972473059276832768", "entities": {"urls": [{"url": "https://t.co/AldhklUjUg", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473059276832768"}], "hashtags": [{"indices": [23, 41], "text": "ThankYouiLovelies"}, {"indices": [102, 115], "text": "iHeartAwards"}], "user_mentions": [{"name": "BTS iHeart \ud22c\ud45c(RT\uacc4)", "indices": [0, 13], "id": 951113665423405056, "screen_name": "iHeart_BTSrt", "id_str": "951113665423405056"}, {"name": "\ubc29\ud0c4\uc18c\ub144\ub2e8", "indices": [14, 22], "id": 335141638, "screen_name": "BTS_twt", "id_str": "335141638"}], "symbols": []}, "text": "@iHeart_BTSrt @BTS_twt #ThankYouiLovelies \n\n\u2796\u2796\u2796\u2796\ud83d\udc9c\ud83d\udc9c\ud83d\udc9c\u2796\u2796\u2796\u2796\n Best Fan Army, complete\n \ubca0\uc2a4\ud2b8 \ud32c\ub364,\uc644\ub8cc\n#iHeartAwards\u2026 https://t.co/AldhklUjUg", "source": "Twitter for Android", "created_at": "Sat Mar 10 14:03:39 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972385930949644288, "extended_tweet": {"display_text_range": [23, 161], "entities": {"urls": [], "hashtags": [{"indices": [23, 41], "text": "ThankYouiLovelies"}, {"indices": [102, 115], "text": "iHeartAwards"}, {"indices": [116, 128], "text": "BestFanArmy"}, {"indices": [129, 137], "text": "BTSARMY"}], "user_mentions": [{"name": "BTS iHeart \ud22c\ud45c(RT\uacc4)", "indices": [0, 13], "id": 951113665423405056, "screen_name": "iHeart_BTSrt", "id_str": "951113665423405056"}, {"name": "\ubc29\ud0c4\uc18c\ub144\ub2e8", "indices": [14, 22], "id": 335141638, "screen_name": "BTS_twt", "id_str": "335141638"}, {"name": "\ubc29\ud0c4\uc18c\ub144\ub2e8", "indices": [138, 146], "id": 335141638, "screen_name": "BTS_twt", "id_str": "335141638"}], "symbols": []}, "full_text": "@iHeart_BTSrt @BTS_twt #ThankYouiLovelies \n\n\u2796\u2796\u2796\u2796\ud83d\udc9c\ud83d\udc9c\ud83d\udc9c\u2796\u2796\u2796\u2796\n Best Fan Army, complete\n \ubca0\uc2a4\ud2b8 \ud32c\ub364,\uc644\ub8cc\n#iHeartAwards #BestFanArmy #BTSARMY @BTS_twt 50\n\u2796\u2796\u2796\u2796\u2796\u2796\u2796\u2796\u2796\u2796\u2796"}, "in_reply_to_status_id_str": "972385930949644288", "in_reply_to_user_id": 951113665423405056, "is_quote_status": false, "filter_level": "low", "id": 972473059276832768, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "iHeart_BTSrt", "display_text_range": [23, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "ko"} +{"reply_count": 0, "timestamp_ms": "1520690620663", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 456, "geo_enabled": false, "utc_offset": -28800, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "903098413662613504", "notifications": null, "followers_count": 1811, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": "Pacific Time (US & Canada)", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "333333", "translator_type": "none", "name": "andis nachips", "default_profile_image": false, "friends_count": 4962, "verified": false, "default_profile": true, "favourites_count": 370, "id": 903098413662613504, "profile_image_url": "http://pbs.twimg.com/profile_images/963077798611927041/U8Nh_PDr_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/963077798611927041/U8Nh_PDr_normal.jpg", "profile_background_tile": false, "screen_name": "NachipsAndis", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/903098413662613504/1504150602", "created_at": "Thu Aug 31 03:33:35 +0000 2017", "contributors_enabled": false, "description": "im jomblo :D", "location": "in", "lang": "en"}, "id_str": "972473063466913792", "entities": {"urls": [{"url": "https://t.co/sXM2RmipGt", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473063466913792"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "\"This solution is more accessible and affordable for all and it can be customized to fit students\u2019 needs by providi\u2026 https://t.co/sXM2RmipGt", "source": "Twitter Web Client", "created_at": "Sat Mar 10 14:03:40 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 255], "entities": {"urls": [{"url": "https://t.co/4nCVuPKQ7N", "indices": [208, 231], "display_url": "ed.gr/n9al", "expanded_url": "http://ed.gr/n9al"}], "hashtags": [{"indices": [238, 243], "text": "ODEM"}, {"indices": [247, 255], "text": "ODEMICO"}], "user_mentions": [], "symbols": []}, "full_text": "\"This solution is more accessible and affordable for all and it can be customized to fit students\u2019 needs by providing live in-classroom experiences that also benefit from the support of online capabilities.\" https://t.co/4nCVuPKQ7N via #ODEM.IO #ODEMICO"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473063466913792, "possibly_sensitive": false, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690622666", "favorited": false, "in_reply_to_user_id_str": "197823320", "user": {"statuses_count": 12667, "geo_enabled": true, "utc_offset": -18000, "profile_sidebar_border_color": "FFFFFF", "profile_link_color": "B40B43", "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/378800000033005897/1acacb83cdb1752416a548be115d02b2.jpeg", "id_str": "59257786", "notifications": null, "followers_count": 7296, "url": "http://Instagram.com/deaja_deaj", "profile_sidebar_fill_color": "E5507E", "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/378800000033005897/1acacb83cdb1752416a548be115d02b2.jpeg", "follow_request_sent": null, "time_zone": "Quito", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 33, "profile_text_color": "362720", "translator_type": "none", "name": "\ue314\ue035IG:deaja_deaj\ue035\ue314", "default_profile_image": false, "friends_count": 862, "verified": false, "default_profile": false, "favourites_count": 1666, "id": 59257786, "profile_image_url": "http://pbs.twimg.com/profile_images/961040001021685760/9ioYzs6f_normal.jpg", "profile_background_color": "FF6699", "profile_image_url_https": "https://pbs.twimg.com/profile_images/961040001021685760/9ioYzs6f_normal.jpg", "profile_background_tile": true, "screen_name": "Ms_Deaj", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/59257786/1467767268", "created_at": "Wed Jul 22 21:38:28 +0000 2009", "contributors_enabled": false, "description": "--Entrepreneur--Published Model--Mental Health Advocate--Fitness Fanatic--Ms Twerk Fit #twitterisjustforfundonttakemeserious", "location": "Where u want me to be???", "lang": "en"}, "id_str": "972473071868239872", "entities": {"urls": [{"url": "https://t.co/KvwCMymyTM", "indices": [116, 139], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473071868239872"}], "hashtags": [], "user_mentions": [{"name": "Veteran Freshman", "indices": [0, 10], "id": 197823320, "screen_name": "yusufyuie", "id_str": "197823320"}], "symbols": []}, "text": "@yusufyuie The guy I was seeing he wouldn\u2019t communicate at all tbh. He went from annoying me to death so to say to\u2026 https://t.co/KvwCMymyTM", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 14:03:42 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972472537333620737, "extended_tweet": {"display_text_range": [11, 284], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "Veteran Freshman", "indices": [0, 10], "id": 197823320, "screen_name": "yusufyuie", "id_str": "197823320"}], "symbols": []}, "full_text": "@yusufyuie The guy I was seeing he wouldn\u2019t communicate at all tbh. He went from annoying me to death so to say to doing nothing. But, claimed he was just busy, but soon as he wanted me to come over the text started rolling in \ud83e\udd37\ud83c\udffe\u200d\u2640\ufe0f I don\u2019t think you can be involved and just not talk"}, "in_reply_to_status_id_str": "972472537333620737", "in_reply_to_user_id": 197823320, "is_quote_status": false, "filter_level": "low", "id": 972473071868239872, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "yusufyuie", "display_text_range": [11, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690622661", "favorited": false, "in_reply_to_user_id_str": "871871124161921024", "user": {"statuses_count": 679, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "780443101953454080", "notifications": null, "followers_count": 487, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "333333", "translator_type": "none", "name": "hate box", "default_profile_image": false, "friends_count": 128, "verified": false, "default_profile": true, "favourites_count": 1910, "id": 780443101953454080, "profile_image_url": "http://pbs.twimg.com/profile_images/780444226895147008/kNZXWM9L_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/780444226895147008/kNZXWM9L_normal.jpg", "profile_background_tile": false, "screen_name": "hateboxx", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/780443101953454080/1474907590", "created_at": "Mon Sep 26 16:25:10 +0000 2016", "contributors_enabled": false, "description": "Sitzt im hohem Rat der Heydaschaft.\nNominiert f\u00fcr den Goldenen Heyd.\nStalker aus LEIDENSCHAFT!\nFan von Boss Monsta", "location": null, "lang": "de"}, "id_str": "972473071847264257", "entities": {"urls": [{"url": "https://t.co/Dq9FUisdmK", "indices": [116, 139], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473071847264257"}], "hashtags": [], "user_mentions": [{"name": "Apocaliptica", "indices": [0, 16], "id": 871871124161921024, "screen_name": "Apocaliptica888", "id_str": "871871124161921024"}, {"name": "Rudolph Freshokowski", "indices": [17, 33], "id": 893790066140729344, "screen_name": "RudiExilokowski", "id_str": "893790066140729344"}, {"name": "Andy aus Mitte", "indices": [34, 44], "id": 882883203790491648, "screen_name": "AndyMitte", "id_str": "882883203790491648"}], "symbols": []}, "text": "@Apocaliptica888 @RudiExilokowski @AndyMitte Mimon bedankt sich doch bei Max Mustermann und Olligo in seinem Video\u2026 https://t.co/Dq9FUisdmK", "source": "Twitter for Android", "created_at": "Sat Mar 10 14:03:42 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972468871243489282, "extended_tweet": {"display_text_range": [45, 178], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "Apocaliptica", "indices": [0, 16], "id": 871871124161921024, "screen_name": "Apocaliptica888", "id_str": "871871124161921024"}, {"name": "Rudolph Freshokowski", "indices": [17, 33], "id": 893790066140729344, "screen_name": "RudiExilokowski", "id_str": "893790066140729344"}, {"name": "Andy aus Mitte", "indices": [34, 44], "id": 882883203790491648, "screen_name": "AndyMitte", "id_str": "882883203790491648"}], "symbols": []}, "full_text": "@Apocaliptica888 @RudiExilokowski @AndyMitte Mimon bedankt sich doch bei Max Mustermann und Olligo in seinem Video ich denke nicht dasan noch mehr beweise brauch.p.s. bin Bastard"}, "in_reply_to_status_id_str": "972468871243489282", "in_reply_to_user_id": 871871124161921024, "is_quote_status": false, "filter_level": "low", "id": 972473071847264257, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "Apocaliptica888", "display_text_range": [45, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "de"} +{"reply_count": 0, "timestamp_ms": "1520690622666", "favorited": false, "in_reply_to_user_id_str": "167712640", "user": {"statuses_count": 405, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "3139255454", "notifications": null, "followers_count": 40, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "333333", "translator_type": "none", "name": "\u0627\u0628\u0648\u0633\u064a\u0641", "default_profile_image": false, "friends_count": 105, "verified": false, "default_profile": true, "favourites_count": 828, "id": 3139255454, "profile_image_url": "http://pbs.twimg.com/profile_images/790608543531532289/vYXB_bWH_normal.jpg", "profile_background_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/790608543531532289/vYXB_bWH_normal.jpg", "profile_background_tile": false, "screen_name": "aboseif1111", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/3139255454/1477330738", "created_at": "Sat Apr 04 17:12:53 +0000 2015", "contributors_enabled": false, "description": "\u200f\u00a0\n\u200f\u0622\u0644\u0644\u06c1\u0645 \u0625\u0646\u0627 \u0646\u0633\u0622\u0644\u06af \u0622\u064a\u0622\u0645\u0627\u064b \u062c\u0645\u064a\u0644\u0647 \u0642\u0622\u062f\u0645\u06c1\u00a0\n\u200f\u0622\u0644\u0644\u06c1\u0645 \u0644\u0622\u062a\u063a\u064a\u0631 \u0639\u0644\u064a\u0646\u0622 \u0622\u0644\u062d\u0622\u0644 \u0622\u0644\u0622 \u0644\u0622\u062d\u0633\u0646\u06c1 \ud83c\udf37", "location": "\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629", "lang": "ar"}, "id_str": "972473071868284930", "entities": {"urls": [{"url": "https://t.co/uH7g8ADPal", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473071868284930"}], "hashtags": [], "user_mentions": [{"name": "\u0627\u0644\u062a\u0639\u0627\u0648\u0646\u064a\u0629 \u0644\u0644\u062a\u0623\u0645\u064a\u0646", "indices": [0, 9], "id": 167712640, "screen_name": "Tawuniya", "id_str": "167712640"}], "symbols": []}, "text": "@Tawuniya \u0627\u0644\u0633\u0644\u0627\u0645 \u0639\u0644\u064a\u0643\u0645 \u064a\u0648\u062c\u062f \u0645\u0634\u0643\u0644\u0629 \u0641\u064a \u0645\u0648\u0642\u0639\u0643\u0645 \u0623\u0643\u062b\u0631 \u0645\u0646 \u0633\u062a\u0629 \u0623\u0634\u0647\u0631 \u0623\u062d\u0627\u0648\u0644 \u0627\u0644\u062a\u0633\u062c\u064a\u0644 \u062f\u0648\u0646 \u062c\u062f\u0648\u0649 \u0623\u0631\u062c\u0648 \u062d\u0644 \u0627\u0644\u0645\u0634\u0627\u0643\u0644\u0647 \u0634\u0627\u0643\u0631\u0627 \u0644\u0643\u0645 \u062a\u0639\u0627\u2026 https://t.co/uH7g8ADPal", "source": "Twitter for Android", "created_at": "Sat Mar 10 14:03:42 +0000 2018", "retweeted": false, "in_reply_to_status_id": 967455314189737990, "extended_tweet": {"extended_entities": {"media": [{"url": "https://t.co/I9zkVx76gq", "id_str": "972473060271026177", "display_url": "pic.twitter.com/I9zkVx76gq", "media_url_https": "https://pbs.twimg.com/media/DX7rGI8XcAEKVXA.jpg", "type": "photo", "indices": [134, 157], "id": 972473060271026177, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 675, "h": 1200}, "large": {"resize": "fit", "w": 1080, "h": 1920}, "small": {"resize": "fit", "w": 383, "h": 680}}, "media_url": "http://pbs.twimg.com/media/DX7rGI8XcAEKVXA.jpg", "expanded_url": "https://twitter.com/aboseif1111/status/972473071868284930/photo/1"}]}, "display_text_range": [10, 133], "entities": {"urls": [], "media": [{"url": "https://t.co/I9zkVx76gq", "id_str": "972473060271026177", "display_url": "pic.twitter.com/I9zkVx76gq", "media_url_https": "https://pbs.twimg.com/media/DX7rGI8XcAEKVXA.jpg", "type": "photo", "indices": [134, 157], "id": 972473060271026177, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 675, "h": 1200}, "large": {"resize": "fit", "w": 1080, "h": 1920}, "small": {"resize": "fit", "w": 383, "h": 680}}, "media_url": "http://pbs.twimg.com/media/DX7rGI8XcAEKVXA.jpg", "expanded_url": "https://twitter.com/aboseif1111/status/972473071868284930/photo/1"}], "hashtags": [], "user_mentions": [{"name": "\u0627\u0644\u062a\u0639\u0627\u0648\u0646\u064a\u0629 \u0644\u0644\u062a\u0623\u0645\u064a\u0646", "indices": [0, 9], "id": 167712640, "screen_name": "Tawuniya", "id_str": "167712640"}], "symbols": []}, "full_text": "@Tawuniya \u0627\u0644\u0633\u0644\u0627\u0645 \u0639\u0644\u064a\u0643\u0645 \u064a\u0648\u062c\u062f \u0645\u0634\u0643\u0644\u0629 \u0641\u064a \u0645\u0648\u0642\u0639\u0643\u0645 \u0623\u0643\u062b\u0631 \u0645\u0646 \u0633\u062a\u0629 \u0623\u0634\u0647\u0631 \u0623\u062d\u0627\u0648\u0644 \u0627\u0644\u062a\u0633\u062c\u064a\u0644 \u062f\u0648\u0646 \u062c\u062f\u0648\u0649 \u0623\u0631\u062c\u0648 \u062d\u0644 \u0627\u0644\u0645\u0634\u0627\u0643\u0644\u0647 \u0634\u0627\u0643\u0631\u0627 \u0644\u0643\u0645 \u062a\u0639\u0627\u0648\u0646\u0643\u0645\n\u0641\u0647\u062f \u0627\u0644\u0639\u0628\u062f\u0627\u0644\u0644\u0647 https://t.co/I9zkVx76gq"}, "in_reply_to_status_id_str": "967455314189737990", "in_reply_to_user_id": 167712640, "is_quote_status": false, "filter_level": "low", "id": 972473071868284930, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "Tawuniya", "display_text_range": [10, 140], "possibly_sensitive": false, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "ar"} +{"reply_count": 0, "timestamp_ms": "1520690623659", "favorited": false, "in_reply_to_user_id_str": "2790297881", "user": {"statuses_count": 32, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "971234904590692352", "notifications": null, "followers_count": 1, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "333333", "translator_type": "none", "name": "Fares Fares", "default_profile_image": false, "friends_count": 17, "verified": false, "default_profile": true, "favourites_count": 10, "id": 971234904590692352, "profile_image_url": "http://pbs.twimg.com/profile_images/971926105581084672/mfj6T-Bp_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/971926105581084672/mfj6T-Bp_normal.jpg", "profile_background_tile": false, "screen_name": "FaresFa40658517", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/971234904590692352/1520560214", "created_at": "Wed Mar 07 04:03:40 +0000 2018", "contributors_enabled": false, "description": null, "location": null, "lang": "ar"}, "id_str": "972473076033179648", "entities": {"urls": [{"url": "https://t.co/FvZzAmewtY", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473076033179648"}], "hashtags": [], "user_mentions": [{"name": "Pierre Bush", "indices": [0, 14], "id": 2790297881, "screen_name": "Supermario289", "id_str": "2790297881"}, {"name": "Abitren", "indices": [15, 23], "id": 3312399314, "screen_name": "Abitren", "id_str": "3312399314"}, {"name": "xxx", "indices": [24, 36], "id": 255986116, "screen_name": "markito0171", "id_str": "255986116"}], "symbols": []}, "text": "@Supermario289 @Abitren @markito0171 Assad regime not the only own responsible to these crimes , the whole world se\u2026 https://t.co/FvZzAmewtY", "source": "Twitter for Android", "created_at": "Sat Mar 10 14:03:43 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972226867632668672, "extended_tweet": {"display_text_range": [37, 150], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "Pierre Bush", "indices": [0, 14], "id": 2790297881, "screen_name": "Supermario289", "id_str": "2790297881"}, {"name": "Abitren", "indices": [15, 23], "id": 3312399314, "screen_name": "Abitren", "id_str": "3312399314"}, {"name": "xxx", "indices": [24, 36], "id": 255986116, "screen_name": "markito0171", "id_str": "255986116"}], "symbols": []}, "full_text": "@Supermario289 @Abitren @markito0171 Assad regime not the only own responsible to these crimes , the whole world see it and doing nothing to stop it ."}, "in_reply_to_status_id_str": "972226867632668672", "in_reply_to_user_id": 2790297881, "is_quote_status": false, "filter_level": "low", "id": 972473076033179648, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "Supermario289", "display_text_range": [37, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "in_reply_to_status_id": null, "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 12932, "geo_enabled": true, "utc_offset": -10800, "profile_sidebar_border_color": "FFFFFF", "profile_link_color": "990000", "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/649632970/4u9zqkswv2w74nm2ls6y.jpeg", "id_str": "405601936", "notifications": null, "followers_count": 811, "url": null, "profile_sidebar_fill_color": "F3F3F3", "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/649632970/4u9zqkswv2w74nm2ls6y.jpeg", "follow_request_sent": null, "time_zone": "Buenos Aires", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 4, "profile_text_color": "333333", "translator_type": "none", "name": "NO CAMBIAMOS MAS...", "default_profile_image": false, "friends_count": 1007, "verified": false, "default_profile": false, "favourites_count": 389, "id": 405601936, "profile_image_url": "http://pbs.twimg.com/profile_images/626432892474949632/OgEnQ4np_normal.jpg", "profile_background_color": "EBEBEB", "profile_image_url_https": "https://pbs.twimg.com/profile_images/626432892474949632/OgEnQ4np_normal.jpg", "profile_background_tile": false, "screen_name": "ingcon44", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/405601936/1434236672", "created_at": "Sat Nov 05 14:55:49 +0000 2011", "contributors_enabled": false, "description": "Detr\u00e1s de una gran fortuna...est\u00e1 el delito. Honor\u00e9 de Balzac", "location": null, "lang": "es"}, "id_str": "972473076029050881", "entities": {"urls": [{"url": "https://t.co/ihncW0qD3c", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473076029050881"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "Del \u00fanico lado que encontr\u00e9 sensibilidad cuando estuve en la mala, fue del peronismo. Soy de tradici\u00f3n radical y vo\u2026 https://t.co/ihncW0qD3c", "source": "Twitter for Android", "place": null, "created_at": "Sat Mar 10 14:03:43 +0000 2018", "retweeted": false, "quoted_status_id_str": "972470491834388482", "extended_tweet": {"display_text_range": [0, 270], "entities": {"urls": [{"url": "https://t.co/72CBcJnPCf", "indices": [271, 294], "display_url": "twitter.com/emiCambiemos/s\u2026", "expanded_url": "https://twitter.com/emiCambiemos/status/972470491834388482"}], "hashtags": [], "user_mentions": [], "symbols": []}, "full_text": "Del \u00fanico lado que encontr\u00e9 sensibilidad cuando estuve en la mala, fue del peronismo. Soy de tradici\u00f3n radical y vot\u00e9 por un cambio que me est\u00e1 marginando. Ah! No me discriminen por esto. Soy honesto conmigo y con todos. Ser justo es dif\u00edcil, ser bueno lo es cualquiera. https://t.co/72CBcJnPCf"}, "in_reply_to_status_id_str": null, "filter_level": "low", "in_reply_to_user_id": null, "is_quote_status": true, "quoted_status": {"reply_count": 3, "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 67096, "geo_enabled": true, "utc_offset": -28800, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "836455284", "notifications": null, "followers_count": 10400, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": "Pacific Time (US & Canada)", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 25, "profile_text_color": "333333", "translator_type": "none", "name": "Emi", "default_profile_image": false, "friends_count": 4882, "verified": false, "default_profile": true, "favourites_count": 82786, "id": 836455284, "profile_image_url": "http://pbs.twimg.com/profile_images/927342987314688001/DPjdxDaW_normal.jpg", "profile_background_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/927342987314688001/DPjdxDaW_normal.jpg", "profile_background_tile": false, "screen_name": "emiCambiemos", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/836455284/1497641705", "created_at": "Thu Sep 20 22:14:16 +0000 2012", "contributors_enabled": false, "description": "solo quiero un pa\u00eds mejor! y una sociedad con principios y valores!!!!!!! #RecuperarLoRobado", "location": null, "lang": "es"}, "id_str": "972470491834388482", "entities": {"urls": [{"url": "https://t.co/zOmTEfKXkY", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972470491834388482"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "solo se, que me mi lucha es para que no vuelva m\u00e1s el peronismo! Ni en 6, ni en 10 a\u00f1os !Todos los d\u00edas voy a traba\u2026 https://t.co/zOmTEfKXkY", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 13:53:27 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 275], "entities": {"urls": [], "hashtags": [{"indices": [264, 275], "text": "BuenSabado"}], "user_mentions": [{"name": "Nicol\u00e1s Massot", "indices": [248, 263], "id": 4198001913, "screen_name": "Nicolas_Massot", "id_str": "4198001913"}], "symbols": []}, "full_text": "solo se, que me mi lucha es para que no vuelva m\u00e1s el peronismo! Ni en 6, ni en 10 a\u00f1os !Todos los d\u00edas voy a trabajar para eso! El q piense de otra manera podr\u00eda quedarse en su casa as\u00ed no me hace perder tiempo! O me avise si trabaja para eso ... @Nicolas_Massot #BuenSabado"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972470491834388482, "retweet_count": 10, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 21, "place": null, "truncated": true, "geo": null, "quote_count": 2, "lang": "es"}, "id": 972473076029050881, "timestamp_ms": "1520690623658", "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 0, "quoted_status_id": 972470491834388482, "truncated": true, "geo": null, "quote_count": 0, "lang": "es"} +{"reply_count": 0, "timestamp_ms": "1520690624657", "favorited": false, "in_reply_to_user_id_str": "138823948", "user": {"statuses_count": 242, "geo_enabled": true, "utc_offset": -21600, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "176661884", "notifications": null, "followers_count": 47, "url": "http://www.alambradosprotecmalla.com.mx", "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": "Central Time (US & Canada)", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "333333", "translator_type": "none", "name": "MARIO ALBERTO", "default_profile_image": false, "friends_count": 196, "verified": false, "default_profile": true, "favourites_count": 99, "id": 176661884, "profile_image_url": "http://pbs.twimg.com/profile_images/1099529471/freddie_al_piano_normal.jpg", "profile_background_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/1099529471/freddie_al_piano_normal.jpg", "profile_background_tile": false, "screen_name": "mayetasmx", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/176661884/1358092594", "created_at": "Tue Aug 10 03:10:18 +0000 2010", "contributors_enabled": false, "description": null, "location": "MEXICO", "lang": "es"}, "id_str": "972473080219136001", "entities": {"urls": [{"url": "https://t.co/xSzHDC2JT0", "indices": [115, 138], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473080219136001"}], "hashtags": [], "user_mentions": [{"name": "A", "indices": [0, 10], "id": 138823948, "screen_name": "tinogatti", "id_str": "138823948"}, {"name": "diego schwartzman", "indices": [11, 26], "id": 175533480, "screen_name": "dieschwartzman", "id_str": "175533480"}, {"name": "Roger Federer", "indices": [27, 40], "id": 1337785291, "screen_name": "rogerfederer", "id_str": "1337785291"}], "symbols": []}, "text": "@tinogatti @dieschwartzman @rogerfederer Correcto comentario..Por donde le busquen no hay deporte m\u00e1s desgastante\u2026 https://t.co/xSzHDC2JT0", "source": "Twitter for Android", "created_at": "Sat Mar 10 14:03:44 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972250191037386753, "extended_tweet": {"display_text_range": [41, 202], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "A", "indices": [0, 10], "id": 138823948, "screen_name": "tinogatti", "id_str": "138823948"}, {"name": "diego schwartzman", "indices": [11, 26], "id": 175533480, "screen_name": "dieschwartzman", "id_str": "175533480"}, {"name": "Roger Federer", "indices": [27, 40], "id": 1337785291, "screen_name": "rogerfederer", "id_str": "1337785291"}], "symbols": []}, "full_text": "@tinogatti @dieschwartzman @rogerfederer Correcto comentario..Por donde le busquen no hay deporte m\u00e1s desgastante y exigido que el tenis y ser 302 semanas 1 del mundo solo el nadie m\u00e1s quieren debatir?"}, "in_reply_to_status_id_str": "972250191037386753", "in_reply_to_user_id": 138823948, "is_quote_status": false, "filter_level": "low", "id": 972473080219136001, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "tinogatti", "display_text_range": [41, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "es"} +{"reply_count": 0, "timestamp_ms": "1520690623666", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 5641, "geo_enabled": true, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "2177301697", "notifications": null, "followers_count": 445, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 8, "profile_text_color": "333333", "translator_type": "none", "name": "Maurice Paez", "default_profile_image": false, "friends_count": 1008, "verified": false, "default_profile": true, "favourites_count": 39046, "id": 2177301697, "profile_image_url": "http://pbs.twimg.com/profile_images/822840449262112768/V6XKnfld_normal.jpg", "profile_background_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/822840449262112768/V6XKnfld_normal.jpg", "profile_background_tile": false, "screen_name": "maurice_paez", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/2177301697/1492129184", "created_at": "Wed Nov 06 03:57:48 +0000 2013", "contributors_enabled": false, "description": "US Army Retired Vet / NJ / \u2764\ufe0f duck \ud83e\udd86 hunting, ice fishing, golf, motorcross, NYG, NYY, NYR, G'Town, CC hockey, NRA DU / Colombia \ud83c\udde8\ud83c\uddf4", "location": "Fountain, CO", "lang": "en"}, "id_str": "972473076062371840", "entities": {"urls": [{"url": "https://t.co/oQWdrA7Zhd", "indices": [116, 139], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473076062371840"}], "hashtags": [], "user_mentions": [{"name": "CMoore News\u00ae", "indices": [76, 88], "id": 2768710062, "screen_name": "CMoore_News", "id_str": "2768710062"}, {"name": "CC Hockey Nation", "indices": [89, 102], "id": 846624257463349248, "screen_name": "CCHockeyNews", "id_str": "846624257463349248"}, {"name": "CC Hockey", "indices": [103, 114], "id": 2792829966, "screen_name": "CC_Hockey1", "id_str": "2792829966"}], "symbols": []}, "text": "Enough said! Quarterfinals Game 2 tonight I\u2019ll be there tonight can\u2019t wait. @CMoore_News @CCHockeyNews @CC_Hockey1\u2026 https://t.co/oQWdrA7Zhd", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 14:03:43 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"extended_entities": {"media": [{"url": "https://t.co/V1BkH2VjIE", "id_str": "972473066671321088", "display_url": "pic.twitter.com/V1BkH2VjIE", "media_url_https": "https://pbs.twimg.com/media/DX7rGgyUMAAq4rx.jpg", "type": "photo", "indices": [139, 162], "id": 972473066671321088, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 900, "h": 900}, "large": {"resize": "fit", "w": 900, "h": 900}, "small": {"resize": "fit", "w": 680, "h": 680}}, "media_url": "http://pbs.twimg.com/media/DX7rGgyUMAAq4rx.jpg", "expanded_url": "https://twitter.com/maurice_paez/status/972473076062371840/photo/1"}]}, "display_text_range": [0, 138], "entities": {"urls": [], "media": [{"url": "https://t.co/V1BkH2VjIE", "id_str": "972473066671321088", "display_url": "pic.twitter.com/V1BkH2VjIE", "media_url_https": "https://pbs.twimg.com/media/DX7rGgyUMAAq4rx.jpg", "type": "photo", "indices": [139, 162], "id": 972473066671321088, "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 900, "h": 900}, "large": {"resize": "fit", "w": 900, "h": 900}, "small": {"resize": "fit", "w": 680, "h": 680}}, "media_url": "http://pbs.twimg.com/media/DX7rGgyUMAAq4rx.jpg", "expanded_url": "https://twitter.com/maurice_paez/status/972473076062371840/photo/1"}], "hashtags": [], "user_mentions": [{"name": "CMoore News\u00ae", "indices": [76, 88], "id": 2768710062, "screen_name": "CMoore_News", "id_str": "2768710062"}, {"name": "CC Hockey Nation", "indices": [89, 102], "id": 846624257463349248, "screen_name": "CCHockeyNews", "id_str": "846624257463349248"}, {"name": "CC Hockey", "indices": [103, 114], "id": 2792829966, "screen_name": "CC_Hockey1", "id_str": "2792829966"}, {"name": "NCAA Ice Hockey", "indices": [115, 129], "id": 204810045, "screen_name": "NCAAIceHockey", "id_str": "204810045"}, {"name": "The NCHC", "indices": [130, 138], "id": 331892372, "screen_name": "TheNCHC", "id_str": "331892372"}], "symbols": []}, "full_text": "Enough said! Quarterfinals Game 2 tonight I\u2019ll be there tonight can\u2019t wait. @CMoore_News @CCHockeyNews @CC_Hockey1 @NCAAIceHockey @TheNCHC https://t.co/V1BkH2VjIE"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473076062371840, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "display_text_range": [0, 140], "possibly_sensitive": false, "favorite_count": 0, "place": {"url": "https://api.twitter.com/1.1/geo/id/179da553bdfd76d6.json", "place_type": "city", "attributes": {}, "name": "Fountain", "country_code": "US", "full_name": "Fountain, CO", "id": "179da553bdfd76d6", "country": "United States", "bounding_box": {"coordinates": [[[-104.747972, 38.663766], [-104.747972, 38.74665], [-104.638373, 38.74665], [-104.638373, 38.663766]]], "type": "Polygon"}}, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690625661", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 3455, "geo_enabled": true, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "2844142867", "notifications": null, "followers_count": 304, "url": "http://www.cgbdswimming.org", "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 3, "profile_text_color": "333333", "translator_type": "none", "name": "CGBD SWIMMING", "default_profile_image": false, "friends_count": 157, "verified": false, "default_profile": true, "favourites_count": 859, "id": 2844142867, "profile_image_url": "http://pbs.twimg.com/profile_images/813804747627053056/0enQ8bT7_normal.jpg", "profile_background_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/813804747627053056/0enQ8bT7_normal.jpg", "profile_background_tile": false, "screen_name": "CGBD_SwimTeam", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/2844142867/1457894351", "created_at": "Tue Oct 07 18:20:55 +0000 2014", "contributors_enabled": false, "description": "Coast Guard Blue Dolphin swim team is a USA swimming level 3 \ud83e\udd49medal club based in SE VA. CGBD is Integrity, Excellence, Achievement, Fun! IG: @cgbdswimming", "location": "757 ", "lang": "en"}, "id_str": "972473084430225408", "entities": {"urls": [{"url": "https://t.co/gNY72ZOxAG", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473084430225408"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "13-14 girls started 200 Fly prelims off to a great start! Four swimmers coming back for finals tonight: I Marstella\u2026 https://t.co/gNY72ZOxAG", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 14:03:45 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 237], "entities": {"urls": [], "hashtags": [{"indices": [219, 230], "text": "CGBDStrong"}, {"indices": [231, 237], "text": "AGC18"}], "user_mentions": [], "symbols": []}, "full_text": "13-14 girls started 200 Fly prelims off to a great start! Four swimmers coming back for finals tonight: I Marstellar coming back in the first seed, L Gaffney coming back 4th, B Denny 6th & BL Clark coming back 9th! #CGBDStrong #AGC18"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473084430225408, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690626665", "favorited": false, "in_reply_to_user_id_str": "2971014432", "user": {"statuses_count": 3920, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "725289204322684928", "notifications": null, "followers_count": 135, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "333333", "translator_type": "none", "name": "ArzXnic #ThiccArmy", "default_profile_image": false, "friends_count": 358, "verified": false, "default_profile": true, "favourites_count": 5575, "id": 725289204322684928, "profile_image_url": "http://pbs.twimg.com/profile_images/961364577505099776/Zrfce8Qg_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/961364577505099776/Zrfce8Qg_normal.jpg", "profile_background_tile": false, "screen_name": "RealArz", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/725289204322684928/1516408404", "created_at": "Wed Apr 27 11:43:16 +0000 2016", "contributors_enabled": false, "description": "Giveaway retweeter and gamer. Trilingual asshole on the internet. #ThiccArmy", "location": "Retweet my pinned", "lang": "en"}, "id_str": "972473088641179648", "entities": {"urls": [{"url": "https://t.co/5wt54pEvCy", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473088641179648"}], "hashtags": [], "user_mentions": [{"name": "Omer", "indices": [0, 10], "id": 2971014432, "screen_name": "OmerPlayz", "id_str": "2971014432"}, {"name": "Panda.Gives\ud83d\udc3c{.3k}#SlinkGang", "indices": [11, 27], "id": 741498996875624448, "screen_name": "ShazamBam_Chikn", "id_str": "741498996875624448"}], "symbols": []}, "text": "@OmerPlayz @ShazamBam_Chikn I was about to guess before you lift up the paper I was like *omg genius looking at stu\u2026 https://t.co/5wt54pEvCy", "source": "Twitter for Android", "created_at": "Sat Mar 10 14:03:46 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972103337075249153, "extended_tweet": {"display_text_range": [28, 253], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "Omer", "indices": [0, 10], "id": 2971014432, "screen_name": "OmerPlayz", "id_str": "2971014432"}, {"name": "Panda.Gives\ud83d\udc3c{.3k}#SlinkGang", "indices": [11, 27], "id": 741498996875624448, "screen_name": "ShazamBam_Chikn", "id_str": "741498996875624448"}], "symbols": []}, "full_text": "@OmerPlayz @ShazamBam_Chikn I was about to guess before you lift up the paper I was like *omg genius looking at stuff and analyzing stuff I'm so good I should probably replace Sherlock Holmes* then u lift up the paper to reveal those 'well drawn' things"}, "in_reply_to_status_id_str": "972103337075249153", "in_reply_to_user_id": 2971014432, "is_quote_status": false, "filter_level": "low", "id": 972473088641179648, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "OmerPlayz", "display_text_range": [28, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690626660", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 1928, "geo_enabled": false, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "4880703046", "notifications": null, "followers_count": 28, "url": null, "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "333333", "translator_type": "none", "name": "AF", "default_profile_image": false, "friends_count": 54, "verified": false, "default_profile": true, "favourites_count": 517, "id": 4880703046, "profile_image_url": "http://pbs.twimg.com/profile_images/972300094119723008/ZyUQtijI_normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/972300094119723008/ZyUQtijI_normal.jpg", "profile_background_tile": false, "screen_name": "amelfadilah77", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/4880703046/1510964635", "created_at": "Sat Feb 06 08:07:49 +0000 2016", "contributors_enabled": false, "description": "\u201cAllah punya banyak cara jika sudah waktunya, karenanya bersabarlah.\u201d", "location": "Depok", "lang": "id"}, "id_str": "972473088620216321", "entities": {"urls": [{"url": "https://t.co/LvF7KrVzAJ", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473088620216321"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "badan lelah, ngantuk juga bela belain malem mingguan ketemu pacar.\ngiliran di ajak ke pengajian mah jawabannya mend\u2026 https://t.co/LvF7KrVzAJ", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 14:03:46 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 154], "entities": {"urls": [], "hashtags": [], "user_mentions": [], "symbols": []}, "full_text": "badan lelah, ngantuk juga bela belain malem mingguan ketemu pacar.\ngiliran di ajak ke pengajian mah jawabannya mendingan tidur aja. \n\nAstagfirullahaladzim"}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473088620216321, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "in"} +{"reply_count": 0, "timestamp_ms": "1520690627660", "favorited": false, "in_reply_to_user_id_str": "1556903528", "user": {"statuses_count": 61543, "geo_enabled": true, "utc_offset": 10800, "profile_sidebar_border_color": "000000", "profile_link_color": "4A913C", "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/641700548664647680/zgI1fmxt.png", "id_str": "1556903528", "notifications": null, "followers_count": 1837, "url": null, "profile_sidebar_fill_color": "000000", "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/641700548664647680/zgI1fmxt.png", "follow_request_sent": null, "time_zone": "Baghdad", "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 19, "profile_text_color": "000000", "translator_type": "none", "name": "P\u00b5\u043c\u00ce R\u00aa\u03b7\u22a5z", "default_profile_image": false, "friends_count": 460, "verified": false, "default_profile": false, "favourites_count": 59691, "id": 1556903528, "profile_image_url": "http://pbs.twimg.com/profile_images/963539595550953478/ifZtoMmS_normal.jpg", "profile_background_color": "022330", "profile_image_url_https": "https://pbs.twimg.com/profile_images/963539595550953478/ifZtoMmS_normal.jpg", "profile_background_tile": false, "screen_name": "Mr_Pomerantz", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/1556903528/1513468681", "created_at": "Sun Jun 30 01:13:49 +0000 2013", "contributors_enabled": false, "description": "\u05e6\u05e8\u05ea \u05e8\u05d1\u05d9\u05dd \u05d7\u05e6\u05d9\u05dc \u05d6\u05d4 \u05d8\u05e2\u05d9\u05dd", "location": "Tel Aviv", "lang": "he"}, "id_str": "972473092814589952", "entities": {"urls": [{"url": "https://t.co/6w8fYrZNHH", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473092814589952"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "\u05d9\u05e9\u05e8 \u05e9\u05dc\u05d7\u05d5 \u05dc\u05d9 \u05d4\u05e4\u05e0\u05d9\u05d4 \u05dc\u05e8\u05d5\u05e4\u05d0 \u05e2\u05d9\u05e0\u05d9\u05d9\u05dd \u05d1\u05e1\u05d5\u05e8\u05d5\u05e7\u05d4. \u05d1\u05d0\u05de\u05ea \u05e9\u05d4\u05d3\u05d1\u05e8\u05d9\u05dd \u05d4\u05d0\u05dc\u05d4 \u05d4\u05dd \u05db\u05de\u05d5 \u05e0\u05e6\u05d7\u05d5\u05df \u05e2\u05e0\u05e7 \u05e2\u05dc \u05d4\u05de\u05e2\u05e8\u05db\u05ea \u05d1\u05e9\u05d1\u05d9\u05dc\u05da. \u05db\u05de\u05d5 \u05dc\u05d1\u05e8\u05d5\u05d7 \u05de\u05d4\u05db\u05dc\u05d0 \u05d0\u05e9\u05db\u05e8\u05d4.\u2026 https://t.co/6w8fYrZNHH", "source": "Twitter for Android", "created_at": "Sat Mar 10 14:03:47 +0000 2018", "retweeted": false, "in_reply_to_status_id": 972473090511917056, "extended_tweet": {"display_text_range": [0, 274], "entities": {"urls": [], "hashtags": [], "user_mentions": [], "symbols": []}, "full_text": "\u05d9\u05e9\u05e8 \u05e9\u05dc\u05d7\u05d5 \u05dc\u05d9 \u05d4\u05e4\u05e0\u05d9\u05d4 \u05dc\u05e8\u05d5\u05e4\u05d0 \u05e2\u05d9\u05e0\u05d9\u05d9\u05dd \u05d1\u05e1\u05d5\u05e8\u05d5\u05e7\u05d4. \u05d1\u05d0\u05de\u05ea \u05e9\u05d4\u05d3\u05d1\u05e8\u05d9\u05dd \u05d4\u05d0\u05dc\u05d4 \u05d4\u05dd \u05db\u05de\u05d5 \u05e0\u05e6\u05d7\u05d5\u05df \u05e2\u05e0\u05e7 \u05e2\u05dc \u05d4\u05de\u05e2\u05e8\u05db\u05ea \u05d1\u05e9\u05d1\u05d9\u05dc\u05da. \u05db\u05de\u05d5 \u05dc\u05d1\u05e8\u05d5\u05d7 \u05de\u05d4\u05db\u05dc\u05d0 \u05d0\u05e9\u05db\u05e8\u05d4. \u05d4\u05d2\u05e2\u05ea\u05d9 \u05dc\u05e1\u05d5\u05e8\u05d5\u05e7\u05d4 \u05d5\u05d0\u05d1\u05d0 \u05e9\u05dc\u05d9 \u05e4\u05d2\u05e9 \u05d0\u05d5\u05ea\u05d9 \u05e9\u05dd \u05db\u05d9 \u05d4\u05d5\u05d0 \u05d0\u05d1\u05d0 \u05db\u05d6\u05d4. \u05d0\u05dd \u05d4\u05d5\u05d0 \u05dc\u05d0 \u05d4\u05d9\u05d4 \u05de\u05d2\u05d9\u05e2 \u05db\u05e0\u05e8\u05d0\u05d4 \u05e9\u05dc\u05d0 \u05d4\u05d9\u05d5 \u05e0\u05d5\u05ea\u05e0\u05d9\u05dd \u05dc\u05d9 \u05d2\u05d9\u05de\u05dc\u05d9\u05dd \u05d0\u05e4\u05d9\u05dc\u05d5. \u05e0\u05ea\u05e0\u05d5 \u05dc\u05d9 3 \u05d2\u05d9\u05de\u05dc\u05d9\u05dd \u05d1\u05e1\u05d5\u05e3 \u05e9\u05d6\u05d4 \u05d0\u05d7\u05dc\u05d4 \u05d0\u05d1\u05dc \u05e8\u05e6\u05d9\u05ea\u05d9 \u05dc\u05e1\u05d7\u05d5\u05d8 \u05e2\u05d5\u05d3"}, "in_reply_to_status_id_str": "972473090511917056", "in_reply_to_user_id": 1556903528, "is_quote_status": false, "filter_level": "low", "id": 972473092814589952, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "Mr_Pomerantz", "contributors": null, "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "iw"} +{"reply_count": 0, "timestamp_ms": "1520690627660", "favorited": false, "in_reply_to_user_id_str": "35474809", "user": {"statuses_count": 729, "geo_enabled": false, "utc_offset": -18000, "profile_sidebar_border_color": "000000", "profile_link_color": "A9434C", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "id_str": "275118844", "notifications": null, "followers_count": 38, "url": "http://www.bodamer.com", "profile_sidebar_fill_color": "000000", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "follow_request_sent": null, "time_zone": "Eastern Time (US & Canada)", "profile_use_background_image": false, "protected": false, "following": null, "listed_count": 0, "profile_text_color": "000000", "translator_type": "none", "name": "Albert Bodamer", "default_profile_image": false, "friends_count": 64, "verified": false, "default_profile": false, "favourites_count": 282, "id": 275118844, "profile_image_url": "http://pbs.twimg.com/profile_images/1294939880/AB_normal.jpg", "profile_background_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/1294939880/AB_normal.jpg", "profile_background_tile": false, "screen_name": "AlbertBodamer", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/275118844/1476294177", "created_at": "Thu Mar 31 17:23:50 +0000 2011", "contributors_enabled": false, "description": "I tweet my barbaric YAWP to the cellphones of the world.", "location": "Atlanta, GA", "lang": "en"}, "id_str": "972473092814581760", "entities": {"urls": [{"url": "https://t.co/NVYuB8JSnY", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473092814581760"}], "hashtags": [], "user_mentions": [{"name": "Peggy Noonan", "indices": [0, 15], "id": 35474809, "screen_name": "Peggynoonannyc", "id_str": "35474809"}, {"name": "WSJ Editorial Page", "indices": [16, 27], "id": 7228682, "screen_name": "WSJopinion", "id_str": "7228682"}], "symbols": []}, "text": "@Peggynoonannyc @WSJopinion You have your anecdotes, I have mine. Everybody I know who voted Trump, including the m\u2026 https://t.co/NVYuB8JSnY", "source": "Twitter for Android", "created_at": "Sat Mar 10 14:03:47 +0000 2018", "retweeted": false, "in_reply_to_status_id": 971906263029297152, "extended_tweet": {"display_text_range": [28, 195], "entities": {"urls": [], "hashtags": [], "user_mentions": [{"name": "Peggy Noonan", "indices": [0, 15], "id": 35474809, "screen_name": "Peggynoonannyc", "id_str": "35474809"}, {"name": "WSJ Editorial Page", "indices": [16, 27], "id": 7228682, "screen_name": "WSJopinion", "id_str": "7228682"}], "symbols": []}, "full_text": "@Peggynoonannyc @WSJopinion You have your anecdotes, I have mine. Everybody I know who voted Trump, including the many who voted defensively--anti-Clinton--are in Trump's camp now more than ever."}, "in_reply_to_status_id_str": "971906263029297152", "in_reply_to_user_id": 35474809, "is_quote_status": false, "filter_level": "low", "id": 972473092814581760, "contributors": null, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": "Peggynoonannyc", "display_text_range": [28, 140], "favorite_count": 0, "place": null, "truncated": true, "geo": null, "quote_count": 0, "lang": "en"} +{"reply_count": 0, "timestamp_ms": "1520690627658", "favorited": false, "in_reply_to_user_id_str": null, "user": {"statuses_count": 610, "geo_enabled": true, "utc_offset": null, "profile_sidebar_border_color": "C0DEED", "profile_link_color": "1DA1F2", "profile_background_image_url_https": "", "id_str": "759310377540870145", "notifications": null, "followers_count": 3505, "url": "http://www.saudisla.org", "profile_sidebar_fill_color": "DDEEF6", "profile_background_image_url": "", "follow_request_sent": null, "time_zone": null, "profile_use_background_image": true, "protected": false, "following": null, "listed_count": 4, "profile_text_color": "333333", "translator_type": "none", "name": "\u0644\u063a\u0629 \u0627\u0644\u0625\u0634\u0627\u0631\u0629", "default_profile_image": false, "friends_count": 2, "verified": false, "default_profile": true, "favourites_count": 11, "id": 759310377540870145, "profile_image_url": "http://pbs.twimg.com/profile_images/810585395708706817/Pb1P_fq__normal.jpg", "profile_background_color": "F5F8FA", "profile_image_url_https": "https://pbs.twimg.com/profile_images/810585395708706817/Pb1P_fq__normal.jpg", "profile_background_tile": false, "screen_name": "language_ksa", "is_translator": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/759310377540870145/1494783930", "created_at": "Sat Jul 30 08:51:16 +0000 2016", "contributors_enabled": false, "description": "\u062c\u0645\u0639\u064a\u0629 \u0645\u062a\u0631\u062c\u0645\u064a \u0644\u063a\u0629 \u0627\u0644\u0625\u0634\u0627\u0631\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u064a\u0646 \u062c\u0645\u0639\u064a\u0629 \u0623\u0647\u0644\u064a\u0629 \u0645\u0647\u0646\u064a\u0629 \u062a\u0623\u0633\u0633\u062a \u0628\u0642\u0631\u0627\u0631 \u0645\u0639\u0627\u0644\u064a \u0648\u0632\u064a\u0631 \u0627\u0644\u0639\u0645\u0644 \u0648\u0627\u0644\u062a\u0646\u0645\u064a\u0629 \u0628\u0631\u0642\u0645 1002", "location": "\u0627\u0644\u0631\u064a\u0627\u0636, \u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629", "lang": "ar"}, "id_str": "972473092806148097", "entities": {"urls": [{"url": "https://t.co/VYIjemMtIQ", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026", "expanded_url": "https://twitter.com/i/web/status/972473092806148097"}], "hashtags": [], "user_mentions": [], "symbols": []}, "text": "\u062a\u0645 \u0625\u063a\u0644\u0627\u0642 \u0627\u0644\u062a\u0633\u062c\u064a\u0644 \u0641\u064a \u0628\u0631\u0646\u0627\u0645\u062c \u0627\u0644\u0625\u0628\u062a\u0639\u0627\u062b-\u0645\u062a\u0631\u062c\u0645\u064a \u0644\u063a\u0629 \u0627\u0644\u0625\u0634\u0627\u0631\u0629 \u0648\u0633\u064a\u0642\u0648\u0645 \u0627\u0644\u0641\u0631\u064a\u0642 \u0627\u0644\u0645\u062e\u062a\u0635 \u0628\u0645\u0639\u0627\u0644\u062c\u0629 \u0627\u0644\u0637\u0644\u0628\u0627\u062a \u0648\u0627\u0644\u0631\u062f \u0639\u0644\u0649 \u0627\u0644\u0645\u062a\u0642\u062f\u0645\u064a\u0646 \u0627\u0644\u0645\u2026 https://t.co/VYIjemMtIQ", "source": "Twitter for iPhone", "created_at": "Sat Mar 10 14:03:47 +0000 2018", "retweeted": false, "in_reply_to_status_id": null, "extended_tweet": {"display_text_range": [0, 202], "entities": {"urls": [], "hashtags": [], "user_mentions": [], "symbols": []}, "full_text": "\u062a\u0645 \u0625\u063a\u0644\u0627\u0642 \u0627\u0644\u062a\u0633\u062c\u064a\u0644 \u0641\u064a \u0628\u0631\u0646\u0627\u0645\u062c \u0627\u0644\u0625\u0628\u062a\u0639\u0627\u062b-\u0645\u062a\u0631\u062c\u0645\u064a \u0644\u063a\u0629 \u0627\u0644\u0625\u0634\u0627\u0631\u0629 \u0648\u0633\u064a\u0642\u0648\u0645 \u0627\u0644\u0641\u0631\u064a\u0642 \u0627\u0644\u0645\u062e\u062a\u0635 \u0628\u0645\u0639\u0627\u0644\u062c\u0629 \u0627\u0644\u0637\u0644\u0628\u0627\u062a \u0648\u0627\u0644\u0631\u062f \u0639\u0644\u0649 \u0627\u0644\u0645\u062a\u0642\u062f\u0645\u064a\u0646 \u0627\u0644\u0645\u0642\u0628\u0648\u0644\u064a\u0646 \u0645\u0628\u062f\u0626\u064a\u0627\u064b \u0641\u064a \u0627\u0644\u0628\u0631\u0646\u0627\u0645\u062c \u0644\u063a\u0631\u0636 \u0645\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u062f\u062e\u0644\u0629 \u0648\u062a\u062d\u062f\u064a\u062f \u0645\u0648\u0639\u062f \u0644\u0644\u0645\u0642\u0627\u0628\u0644\u0629 \u0627\u0644\u0634\u062e\u0635\u064a\u0629 .."}, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "is_quote_status": false, "filter_level": "low", "id": 972473092806148097, "retweet_count": 0, "coordinates": null, "in_reply_to_screen_name": null, "contributors": null, "favorite_count": 0, "place": {"url": "https://api.twitter.com/1.1/geo/id/01da545b582fc86b.json", "place_type": "admin", "attributes": {}, "name": "\u0627\u0644\u0631\u064a\u0627\u0636", "country_code": "SA", "full_name": "\u0627\u0644\u0631\u064a\u0627\u0636, \u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629", "id": "01da545b582fc86b", "country": "\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629", "bounding_box": {"coordinates": [[[42.010156, 19.471337], [42.010156, 27.574819], [48.217206, 27.574819], [48.217206, 19.471337]]], "type": "Polygon"}}, "truncated": true, "geo": null, "quote_count": 0, "lang": "ar"} diff --git a/testdata/streaming/streaming_extended_tweet.json b/testdata/streaming/streaming_extended_tweet.json new file mode 100644 index 00000000..e3a51390 --- /dev/null +++ b/testdata/streaming/streaming_extended_tweet.json @@ -0,0 +1 @@ +{"contributors": null, "place": null, "coordinates": null, "source": "Doesnothaveanameyet", "possibly_sensitive": false, "id": 971726741583605760, "text": "HIV_AIDS_BiojQuery Mobile Web Development Essentials, Second Edition: https://t.co/r78h6xfAby Quantum AI Big/Small/\u2026 https://t.co/ZPJrpMvcZG", "favorite_count": 0, "reply_count": 0, "is_quote_status": false, "in_reply_to_status_id_str": null, "filter_level": "low", "favorited": false, "retweeted": false, "created_at": "Thu Mar 08 12:38:03 +0000 2018", "id_str": "971726741583605760", "entities": {"user_mentions": [], "urls": [{"expanded_url": "http://www.amazon.com/gp/product/1782167897/ref=as_li_tf_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1782167897&linkCode=as2&tag=hardwaresoftw-20", "url": "https://t.co/r78h6xfAby", "indices": [70, 93], "display_url": "amazon.com/gp/product/178\u2026"}, {"expanded_url": "https://twitter.com/i/web/status/971726741583605760", "url": "https://t.co/ZPJrpMvcZG", "indices": [117, 140], "display_url": "twitter.com/i/web/status/9\u2026"}], "symbols": [], "hashtags": []}, "extended_tweet": {"entities": {"user_mentions": [], "urls": [{"expanded_url": "http://www.amazon.com/gp/product/1782167897/ref=as_li_tf_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1782167897&linkCode=as2&tag=hardwaresoftw-20", "url": "https://t.co/r78h6xfAby", "indices": [70, 93], "display_url": "amazon.com/gp/product/178\u2026"}, {"expanded_url": "http://hwswworld.com/index.php?route=product/category&path=13", "url": "https://t.co/cnCBNJvu6T", "indices": [184, 207], "display_url": "hwswworld.com/index.php?rout\u2026"}], "symbols": [], "hashtags": []}, "full_text": "HIV_AIDS_BiojQuery Mobile Web Development Essentials, Second Edition: https://t.co/r78h6xfAby Quantum AI Big/Small/0 Data Cloud/Fog Computing OutLook from ClouData & Multiverse - https://t.co/cnCBNJvu6T", "display_text_range": [0, 207]}, "retweet_count": 0, "user": {"following": null, "time_zone": "Arizona", "statuses_count": 3208936, "profile_background_color": "000000", "location": "San Francisco, CA", "profile_use_background_image": false, "listed_count": 622, "profile_sidebar_border_color": "000000", "url": "https://www.hwswworld.com/index.php?route=product/category&path=139", "protected": false, "contributors_enabled": false, "translator_type": "none", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "id": 2319610428, "is_translator": false, "name": "AIBigDataCloudIoTBot", "geo_enabled": false, "screen_name": "ClouDatAI", "notifications": null, "profile_banner_url": "https://pbs.twimg.com/profile_banners/2319610428/1494029092", "profile_link_color": "9266CC", "follow_request_sent": null, "description": "Global Weekly PB-Scale 40-Node 2TB AI Deep Learning Big Data Cloud Boot Camp - We Fly to Your City in Serving You Once You Make an Order - train@hwswworld.com", "id_str": "2319610428", "followers_count": 1830, "lang": "en", "created_at": "Thu Jan 30 21:58:33 +0000 2014", "profile_background_tile": false, "friends_count": 0, "verified": false, "profile_sidebar_fill_color": "000000", "favourites_count": 0, "utc_offset": -25200, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "default_profile": false, "profile_image_url_https": "https://pbs.twimg.com/profile_images/853471626792378368/rVamVryI_normal.jpg", "profile_text_color": "000000", "default_profile_image": false, "profile_image_url": "http://pbs.twimg.com/profile_images/853471626792378368/rVamVryI_normal.jpg"}, "in_reply_to_status_id": null, "geo": null, "truncated": true, "in_reply_to_user_id_str": null, "in_reply_to_screen_name": null, "quote_count": 0, "timestamp_ms": "1520512683660", "lang": "en", "in_reply_to_user_id": null} \ No newline at end of file diff --git a/tests/test_streaming.py b/tests/test_streaming.py new file mode 100644 index 00000000..ed9864f5 --- /dev/null +++ b/tests/test_streaming.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals, print_function + +import json +import unittest + +import twitter + + +def test_streaming_extended_tweet(): + with open('testdata/streaming/streaming_extended_tweet.json') as f: + tweet = twitter.Status.NewFromJsonDict(json.loads(f.read())) + + assert isinstance(tweet, twitter.Status) + assert tweet.text == "HIV_AIDS_BiojQuery Mobile Web Development Essentials, Second Edition: https://t.co/r78h6xfAby Quantum AI Big/Small/… https://t.co/ZPJrpMvcZG" + assert tweet.truncated + assert tweet.full_text == 'HIV_AIDS_BiojQuery Mobile Web Development Essentials, Second Edition: https://t.co/r78h6xfAby Quantum AI Big/Small/0 Data Cloud/Fog Computing OutLook from ClouData & Multiverse - https://t.co/cnCBNJvu6T' + + +def test_streaming_extended_tweet_media(): + with open('testdata/streaming/lines.json') as f: + tweets = f.readlines() + + for tweet in tweets: + status = twitter.Status.NewFromJsonDict(json.loads(tweet)) + assert isinstance(status, twitter.Status) + assert status.full_text diff --git a/twitter/models.py b/twitter/models.py index d722a0bb..a79515df 100644 --- a/twitter/models.py +++ b/twitter/models.py @@ -499,6 +499,11 @@ def NewFromJsonDict(cls, data, **kwargs): user = None user_mentions = None + # for loading extended tweets from the streaming API. + if 'extended_tweet' in data: + for k, v in data['extended_tweet'].items(): + data[k] = v + if 'user' in data: user = User.NewFromJsonDict(data['user']) if 'retweeted_status' in data: From 41be59e29340a9768c4d39bcf254c0a8bc383872 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sat, 10 Mar 2018 18:27:02 -0500 Subject: [PATCH 098/177] bump version and update changelog for 3.4.1 --- doc/changelog.rst | 13 +++++++++++++ doc/conf.py | 4 ++-- twitter/__init__.py | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/doc/changelog.rst b/doc/changelog.rst index 91f4145c..ce9f2cda 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -1,6 +1,19 @@ Changelog --------- +Version 3.4.1 +============= + +Bugfixes: + +* Fix an issue where :py:func:`calc_expected_status_length` was failing for python 2 due to a failure to convert a bytes string to unicode. `Github issue #546 `_. + +* Documentation fix for :py:func:`twitter.api.Api.UsersLookup`. UsersLookup can take a string or a list and properly parses both of them now. Github issues `#535 `_ and `#549 `_. + +* Properly decode response content for :py:func:`twitter.twitter_utils.http_to_file`. `Github issue #521 `_. + +* Fix an issue with loading extended_tweet entities from Streaming API where tweets would be truncated when converting to a :py:class:`twitter.models.Status`. Github issues `#491 `_ and `#506 `_. + Version 3.4 =========== diff --git a/doc/conf.py b/doc/conf.py index 126ab64e..41a6cae8 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -57,9 +57,9 @@ # built documents. # # The short X.Y version. -version = '3.4' +version = '3.4.1' # The full version, including alpha/beta/rc tags. -release = '3.4' +release = '3.4.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/twitter/__init__.py b/twitter/__init__.py index 2073370c..24cec746 100644 --- a/twitter/__init__.py +++ b/twitter/__init__.py @@ -23,7 +23,7 @@ __email__ = 'python-twitter@googlegroups.com' __copyright__ = 'Copyright (c) 2007-2016 The Python-Twitter Developers' __license__ = 'Apache License 2.0' -__version__ = '3.4' +__version__ = '3.4.1' __url__ = 'https://github.com/bear/python-twitter' __download_url__ = 'https://pypi.python.org/pypi/python-twitter' __description__ = 'A Python wrapper around the Twitter API' From 1bb2ea0cc5028f52a75a938476749e0a052001cc Mon Sep 17 00:00:00 2001 From: Tomoya Matsumoto Date: Tue, 13 Mar 2018 21:49:45 +0900 Subject: [PATCH 099/177] Fix typo Fix typo in docstring of Api --- twitter/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/api.py b/twitter/api.py index 9ba26acf..f0541b85 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -126,7 +126,7 @@ class Api(object): >>> api.GetUserTimeline(user) >>> api.GetHomeTimeline() >>> api.GetStatus(status_id) - >>> def GetStatuses(status_ids) + >>> api.GetStatuses(status_ids) >>> api.DestroyStatus(status_id) >>> api.GetFriends(user) >>> api.GetFollowers() From dc9780ae8f6cf26a61a2bfd7feb97ec68b366580 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sat, 17 Mar 2018 19:38:03 -0400 Subject: [PATCH 100/177] fix typo in changelog --- doc/changelog.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/changelog.rst b/doc/changelog.rst index ce9f2cda..e3aec468 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -6,7 +6,7 @@ Version 3.4.1 Bugfixes: -* Fix an issue where :py:func:`calc_expected_status_length` was failing for python 2 due to a failure to convert a bytes string to unicode. `Github issue #546 `_. +* Fix an issue where :py:func:`twitter.twitter_utils.calc_expected_status_length` was failing for python 2 due to a failure to convert a bytes string to unicode. `Github issue #546 `_. * Documentation fix for :py:func:`twitter.api.Api.UsersLookup`. UsersLookup can take a string or a list and properly parses both of them now. Github issues `#535 `_ and `#549 `_. From 72123abc8df48ba8e1b274a97ef1a911bfedc4de Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sat, 17 Mar 2018 20:01:47 -0400 Subject: [PATCH 101/177] update tests for http_to_file to not require internet access uses responses to mock a response of a JPG file. --- tests/test_twitter_utils.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/test_twitter_utils.py b/tests/test_twitter_utils.py index 5ad3cff5..9e4934d8 100644 --- a/tests/test_twitter_utils.py +++ b/tests/test_twitter_utils.py @@ -4,6 +4,8 @@ import sys import unittest +import responses + import twitter from twitter.twitter_utils import ( calc_expected_status_length, @@ -27,7 +29,14 @@ def setUp(self): sleep_on_rate_limit=False) self.base_url = 'https://api.twitter.com/1.1' + @responses.activate def test_parse_media_file_http(self): + with open('testdata/168NQ.jpg', 'rb') as f: + img_data = f.read() + responses.add( + responses.GET, + url='https://raw.githubusercontent.com/bear/python-twitter/master/testdata/168NQ.jpg', + body=img_data) data_file, filename, file_size, media_type = parse_media_file( 'https://raw.githubusercontent.com/bear/python-twitter/master/testdata/168NQ.jpg') self.assertTrue(hasattr(data_file, 'read')) @@ -35,7 +44,14 @@ def test_parse_media_file_http(self): self.assertEqual(file_size, 44772) self.assertEqual(media_type, 'image/jpeg') + @responses.activate def test_parse_media_file_http_with_query_strings(self): + with open('testdata/168NQ.jpg', 'rb') as f: + img_data = f.read() + responses.add( + responses.GET, + url='https://raw.githubusercontent.com/bear/python-twitter/master/testdata/168NQ.jpg', + body=img_data) data_file, filename, file_size, media_type = parse_media_file( 'https://raw.githubusercontent.com/bear/python-twitter/master/testdata/168NQ.jpg?query=true') self.assertTrue(hasattr(data_file, 'read')) From 177a67e48110c6507e422aabe68ab3f7f06fb80a Mon Sep 17 00:00:00 2001 From: Rikhav Mamania Date: Mon, 9 Apr 2018 19:36:12 +0530 Subject: [PATCH 102/177] api - ssl certfication verification Added verify_ssl and cert_ssl parameters to the twitter.Api - these mirror the verify and cert parameters from requests.request --- twitter/api.py | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index f0541b85..bb4091df 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -162,7 +162,9 @@ def __init__(self, timeout=None, sleep_on_rate_limit=False, tweet_mode='compat', - proxies=None): + proxies=None, + verify_ssl=None, + cert_ssl=None): """Instantiate a new twitter.Api object. Args: @@ -216,6 +218,13 @@ def __init__(self, proxies (dict, optional): A dictionary of proxies for the request to pass through, if not specified allows requests lib to use environmental variables for proxy if any. + verify_ssl (optional): + Either a boolean, in which case it controls whether we verify + the server's TLS certificate, or a string, in which case it must be a path + to a CA bundle to use. Defaults to ``True``. + cert_ssl (optional): + If String, path to ssl client cert file (.pem). + If Tuple, ('cert', 'key') pair. """ # check to see if the library is running on a Google App Engine instance @@ -247,6 +256,8 @@ def __init__(self, self.sleep_on_rate_limit = sleep_on_rate_limit self.tweet_mode = tweet_mode self.proxies = proxies + self.verify_ssl = verify_ssl + self.cert_ssl = cert_ssl if base_url is None: self.base_url = 'https://api.twitter.com/1.1' @@ -4913,7 +4924,9 @@ def _RequestChunkedUpload(self, url, headers, data): data=data, auth=self.__auth, timeout=self._timeout, - proxies=self.proxies + proxies=self.proxies, + verify=self.verify_ssl, + cert=self.cert_ssl ) except requests.RequestException as e: raise TwitterError(str(e)) @@ -4954,20 +4967,20 @@ def _RequestUrl(self, url, verb, data=None, json=None, enforce_auth=True): if data: if 'media_ids' in data: url = self._BuildUrl(url, extra_params={'media_ids': data['media_ids']}) - resp = requests.post(url, data=data, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) + resp = requests.post(url, data=data, auth=self.__auth, timeout=self._timeout, proxies=self.proxies, verify=self.verify_ssl, cert=self.cert_ssl) elif 'media' in data: - resp = requests.post(url, files=data, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) + resp = requests.post(url, files=data, auth=self.__auth, timeout=self._timeout, proxies=self.proxies, verify=self.verify_ssl, cert=self.cert_ssl) else: - resp = requests.post(url, data=data, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) + resp = requests.post(url, data=data, auth=self.__auth, timeout=self._timeout, proxies=self.proxies, verify=self.verify_ssl, cert=self.cert_ssl) elif json: - resp = requests.post(url, json=json, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) + resp = requests.post(url, json=json, auth=self.__auth, timeout=self._timeout, proxies=self.proxies, verify=self.verify_ssl, cert=self.cert_ssl) else: resp = 0 # POST request, but without data or json elif verb == 'GET': data['tweet_mode'] = self.tweet_mode url = self._BuildUrl(url, extra_params=data) - resp = requests.get(url, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) + resp = requests.get(url, auth=self.__auth, timeout=self._timeout, proxies=self.proxies, verify=self.verify_ssl, cert=self.cert_ssl) else: resp = 0 # if not a POST or GET request @@ -5002,14 +5015,17 @@ def _RequestStream(self, url, verb, data=None, session=None): return session.post(url, data=data, stream=True, auth=self.__auth, timeout=self._timeout, - proxies=self.proxies) + proxies=self.proxies, + verify=self.verify_ssl, + cert=self.cert_ssl) except requests.RequestException as e: raise TwitterError(str(e)) if verb == 'GET': url = self._BuildUrl(url, extra_params=data) try: return session.get(url, stream=True, auth=self.__auth, - timeout=self._timeout, proxies=self.proxies) + timeout=self._timeout, proxies=self.proxies, + verify=self.verify_ssl, cert=self.cert_ssl) except requests.RequestException as e: raise TwitterError(str(e)) return 0 # if not a POST or GET request From 88fff545da6064f974a9b4b663ea28d0ba32fda1 Mon Sep 17 00:00:00 2001 From: Rikhav Mamania Date: Mon, 9 Apr 2018 19:39:52 +0530 Subject: [PATCH 103/177] api - ssl certificate verification included parameters in twitter.Api to mirror requests.request verify and cert parameters --- twitter/api.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index bb4091df..861cda6b 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -163,8 +163,8 @@ def __init__(self, sleep_on_rate_limit=False, tweet_mode='compat', proxies=None, - verify_ssl=None, - cert_ssl=None): + verify_ssl=None, + cert_ssl=None): """Instantiate a new twitter.Api object. Args: @@ -218,8 +218,8 @@ def __init__(self, proxies (dict, optional): A dictionary of proxies for the request to pass through, if not specified allows requests lib to use environmental variables for proxy if any. - verify_ssl (optional): - Either a boolean, in which case it controls whether we verify + verify_ssl (optional): + Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use. Defaults to ``True``. cert_ssl (optional): @@ -4926,7 +4926,7 @@ def _RequestChunkedUpload(self, url, headers, data): timeout=self._timeout, proxies=self.proxies, verify=self.verify_ssl, - cert=self.cert_ssl + cert=self.cert_ssl ) except requests.RequestException as e: raise TwitterError(str(e)) From eed985f1cb5cd3dadfbd42732bb02c319a4f4653 Mon Sep 17 00:00:00 2001 From: Thorsten Schwander Date: Tue, 8 May 2018 18:21:11 -0600 Subject: [PATCH 104/177] fix typo in dict passed to TwitterError Signed-off-by: Thorsten Schwander --- twitter/api.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index f0541b85..dfabb046 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -2,7 +2,7 @@ # # -# Copyright 2007-2016 The Python-Twitter Developers +# Copyright 2007-2016, 2018 The Python-Twitter Developers # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -4882,7 +4882,7 @@ def _ParseAndCheckTwitter(self, json_data): raise TwitterError({'message': "Exceeded connection limit for user"}) if "Error 401 Unauthorized" in json_data: raise TwitterError({'message': "Unauthorized"}) - raise TwitterError({'Unknown error: {0}'.format(json_data)}) + raise TwitterError({'Unknown error': '{0}'.format(json_data)}) self._CheckForTwitterError(data) return data From 6163a2115fc2a0c266a8167df57fad960a566514 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Fri, 18 May 2018 15:33:46 -0400 Subject: [PATCH 105/177] bump supported versions: 2.7.15 3.6.5 pypy-5.7.1 pypy3.5-6.0.0 --- Makefile | 12 ++++++------ setup.cfg | 2 +- twitter/parse_tweet.py | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index d9a47f53..6b9ce69d 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,4 @@ +SUPPORTED_VERSIONS = 2.7.15 3.6.5 pypy-5.7.1 pypy3.5-6.0.0 help: @echo " env install all production dependencies" @@ -12,13 +13,12 @@ env: pip install -Ur requirements.txt pyenv: - pyenv install -s 2.7.11 - pyenv install -s 3.6.1 - pyenv install -s pypy-5.3.1 - # pyenv install -s pypy3-2.4.0 - pyenv local 2.7.11 3.6.1 pypy-5.3.1 # pypy3-2.4.0 + for version in $(SUPPORTED_VERSIONS) ; do \ + pyenv install -s $$version; \ + done + pyenv local $(SUPPORTED_VERSIONS) -dev: env pyenv +dev: pyenv env pip install -Ur requirements.testing.txt info: diff --git a/setup.cfg b/setup.cfg index 1949d5c6..ffcde717 100644 --- a/setup.cfg +++ b/setup.cfg @@ -13,6 +13,6 @@ ignore = [flake8] ignore = E111,E124,E126,E221,E501 -[pep8] +[pycodestyle] ignore = E111,E124,E126,E221,E501 max-line-length = 100 diff --git a/twitter/parse_tweet.py b/twitter/parse_tweet.py index c662016e..70e1c7ef 100644 --- a/twitter/parse_tweet.py +++ b/twitter/parse_tweet.py @@ -96,5 +96,5 @@ def getHashtags(tweet): @staticmethod def getURLs(tweet): - """ URL : [http://]?[\w\.?/]+""" + r""" URL : [http://]?[\w\.?/]+""" return re.findall(ParseTweet.regexp["URL"], tweet) From 5cf614358351f1a7178dd308658310dece6616f4 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Fri, 18 May 2018 15:45:24 -0400 Subject: [PATCH 106/177] update makefile to update circleci to latest definitions --- Makefile | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 6b9ce69d..b91397cd 100644 --- a/Makefile +++ b/Makefile @@ -13,6 +13,7 @@ env: pip install -Ur requirements.txt pyenv: + pyenv update for version in $(SUPPORTED_VERSIONS) ; do \ pyenv install -s $$version; \ done @@ -50,7 +51,10 @@ coverage: clean coverage html coverage report -ci: pyenv tox +update-pyenv: + cd /opt/circleci/.pyenv/plugins/python-build/../.. && git pull && cd - + +ci: update-pyenv pyenv tox CODECOV_TOKEN=`cat .codecov-token` codecov build: clean @@ -59,9 +63,9 @@ build: clean python setup.py bdist_wheel upload: clean - pyenv 2.7.11 + pyenv 2.7.15 python setup.py sdist upload python setup.py bdist_wheel upload - pyenv 3.6.1 + pyenv 3.6.5 python setup.py bdist_wheel upload - pyenv local 2.7.11 3.6.1 pypy-5.3.1 + pyenv local $(SUPPORTED_VERSIONS) From 0e03ada846b63adf54313687cc5cffabaaff4fb8 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Fri, 18 May 2018 15:48:33 -0400 Subject: [PATCH 107/177] fix pyenv error in CI --- Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile b/Makefile index b91397cd..1fcdaec5 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,6 @@ env: pip install -Ur requirements.txt pyenv: - pyenv update for version in $(SUPPORTED_VERSIONS) ; do \ pyenv install -s $$version; \ done From 9863990cc7412bb9908c6a00b222393f6b2eec5f Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Fri, 18 May 2018 15:52:48 -0400 Subject: [PATCH 108/177] update CI dependency integration --- Makefile | 2 +- circle.yml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 1fcdaec5..40b8677b 100644 --- a/Makefile +++ b/Makefile @@ -53,7 +53,7 @@ coverage: clean update-pyenv: cd /opt/circleci/.pyenv/plugins/python-build/../.. && git pull && cd - -ci: update-pyenv pyenv tox +ci: update-pyenv pyenv dev tox CODECOV_TOKEN=`cat .codecov-token` codecov build: clean diff --git a/circle.yml b/circle.yml index 3c318ad5..e45f625b 100644 --- a/circle.yml +++ b/circle.yml @@ -1,7 +1,6 @@ dependencies: override: - pip install -U pip - - make dev test: pre: From b10baa882635f2c86d444eaa9a7528de47f55c74 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Thu, 7 Jun 2018 13:29:39 -0400 Subject: [PATCH 109/177] bump version --- doc/changelog.rst | 7 +++++++ doc/conf.py | 4 ++-- twitter/__init__.py | 9 ++++----- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/doc/changelog.rst b/doc/changelog.rst index e3aec468..18050c6e 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -1,6 +1,13 @@ Changelog --------- +Version 3.4.2 +============= + +Bugfixes: + +* Allow upload of GIFs with size up to 15mb. See `#538 `_ + Version 3.4.1 ============= diff --git a/doc/conf.py b/doc/conf.py index 41a6cae8..2121447d 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -57,9 +57,9 @@ # built documents. # # The short X.Y version. -version = '3.4.1' +version = '3.4' # The full version, including alpha/beta/rc tags. -release = '3.4.1' +release = '3.4.2' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/twitter/__init__.py b/twitter/__init__.py index 24cec746..c6e433f8 100644 --- a/twitter/__init__.py +++ b/twitter/__init__.py @@ -1,8 +1,7 @@ #!/usr/bin/env python +# -*- coding: utf-8 -*- # -# vim: sw=2 ts=2 sts=2 -# -# Copyright 2007 The Python-Twitter Developers +# Copyright 2007-2018 The Python-Twitter Developers # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,14 +15,14 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""A library that provides a Python interface to the Twitter API""" +"""A library that provides a Python interface to the Twitter API.""" from __future__ import absolute_import __author__ = 'The Python-Twitter Developers' __email__ = 'python-twitter@googlegroups.com' __copyright__ = 'Copyright (c) 2007-2016 The Python-Twitter Developers' __license__ = 'Apache License 2.0' -__version__ = '3.4.1' +__version__ = '3.4.2' __url__ = 'https://github.com/bear/python-twitter' __download_url__ = 'https://pypi.python.org/pypi/python-twitter' __description__ = 'A Python wrapper around the Twitter API' From e17af0e67b7270ae448908ad44235d03562509eb Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sat, 9 Jun 2018 07:51:34 -0400 Subject: [PATCH 110/177] add ensure_ascii param to AsJsonString method for models close issue #527 --- twitter/models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/twitter/models.py b/twitter/models.py index a79515df..82dc3ada 100644 --- a/twitter/models.py +++ b/twitter/models.py @@ -35,10 +35,10 @@ def __hash__(self): raise TypeError('unhashable type: {} (no id attribute)' .format(type(self))) - def AsJsonString(self): + def AsJsonString(self, ensure_ascii=True): """ Returns the TwitterModel as a JSON string based on key/value pairs returned from the AsDict() method. """ - return json.dumps(self.AsDict(), sort_keys=True) + return json.dumps(self.AsDict(), ensure_ascii=ensure_ascii, sort_keys=True) def AsDict(self): """ Create a dictionary representation of the object. Please see inline From b2af803a8354cadcc646fe6507fb744d828ff693 Mon Sep 17 00:00:00 2001 From: Manuel Lamelas Date: Tue, 19 Jun 2018 16:26:03 +0200 Subject: [PATCH 111/177] Deleted uncomfortable print This line print the parameters when you call UsersLookup. It shouldn't be there --- twitter/api.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index b287fb03..94bbbbc1 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -2823,8 +2823,6 @@ def UsersLookup(self, if len(uids) > 100: raise TwitterError("No more than 100 users may be requested per request.") - print(parameters) - resp = self._RequestUrl(url, 'GET', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) From 2e6c6a034dbb58140a3b219b12c39909e50aa038 Mon Sep 17 00:00:00 2001 From: Louis Sautier Date: Tue, 19 Jun 2018 21:48:57 +0200 Subject: [PATCH 112/177] Include doc, examples and tests in source distributions --- MANIFEST.in | 1 + 1 file changed, 1 insertion(+) diff --git a/MANIFEST.in b/MANIFEST.in index a04a897d..ca78efe0 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -5,3 +5,4 @@ include NOTICE include *.rst include requirements.txt prune .DS_Store +graft doc examples testdata tests From f4d9161adb44b1fab7a6d88de00b4ddcf196fd55 Mon Sep 17 00:00:00 2001 From: Louis Sautier Date: Tue, 19 Jun 2018 22:18:15 +0200 Subject: [PATCH 113/177] Remove unnecessary pytest-runner from install_requires --- setup.py | 1 - 1 file changed, 1 deletion(-) diff --git a/setup.py b/setup.py index 99635fee..dece197e 100755 --- a/setup.py +++ b/setup.py @@ -57,7 +57,6 @@ def extract_metaitem(meta): packages=find_packages(exclude=('tests', 'docs')), platforms=['Any'], install_requires=['future', 'requests', 'requests-oauthlib'], - setup_requires=['pytest-runner'], tests_require=['pytest'], keywords='twitter api', classifiers=[ From 15d703f3ce8a987399cdbe781dcc47c244605b19 Mon Sep 17 00:00:00 2001 From: tuftedocelot Date: Wed, 4 Jul 2018 17:05:43 -0500 Subject: [PATCH 114/177] Add support for the Geo API and Place models --- tests/test_place.py | 141 ++++++++++++++++++++++++++++++++++++++++++++ twitter/__init__.py | 1 + twitter/api.py | 7 +++ twitter/models.py | 32 ++++++++++ 4 files changed, 181 insertions(+) create mode 100644 tests/test_place.py diff --git a/tests/test_place.py b/tests/test_place.py new file mode 100644 index 00000000..fb343517 --- /dev/null +++ b/tests/test_place.py @@ -0,0 +1,141 @@ +import twitter +import json +import sys +import unittest + + +class PlaceTest(unittest.TestCase): + SAMPLE_JSON = '''{"id": "df51dec6f4ee2b2c", "url": "https://api.twitter.com/1.1/geo/id/df51dec6f4ee2b2c.json", "place_type": "neighborhood", "name": "Presidio", "full_name": "Presidio, San Francisco", "country_code": "US", "country": "United States", "contained_within": [{"id": "5a110d312052166f", "url": "https://api.twitter.com/1.1/geo/id/5a110d312052166f.json", "place_type": "city", "name": "San Francisco", "full_name": "San Francisco, CA", "country_code": "US", "country": "United States", "centroid": [-122.4461400159226, 37.759828999999996], "bounding_box": {"type": "Polygon", "coordinates": [[[-122.514926, 37.708075], [-122.514926, 37.833238], [-122.357031, 37.833238], [-122.357031, 37.708075], [-122.514926, 37.708075]]]}, "attributes": {}}], "geometry": null, "polylines": [], "centroid": [-122.46598425785236, 37.79989625], "bounding_box": {"type": "Polygon", "coordinates": [[[-122.4891333, 37.786925], [-122.4891333, 37.8128675], [-122.446306, 37.8128675], [-122.446306, 37.786925], [-122.4891333, 37.786925]]]}, "attributes": {"geotagCount": "6", "162834:id": "2202"}}''' + + def _GetSampleContainedPlace(self): + return twitter.Place(id='5a110d312052166f', + url='https://api.twitter.com/1.1/geo/id/5a110d312052166f.json', + place_type='city', + name='San Franciso', + full_name='San Francisco, CA', + country_code='US', + country='United States', + centroid=[-122.4461400159226, + 37.759828999999996], + bounding_box=dict( + type='Polygon', + coordinates=[ + [ + [-122.514926, 37.708075], + [-122.514926, 37.833238], + [-122.357031, 37.833238], + [-122.357031, 37.708075], + [-122.514926, 37.708075] + ] + ], + attributes=dict() + ) + ) + + def _GetSamplePlace(self): + return twitter.Place(id='df51dec6f4ee2b2c', + url='https://api.twitter.com/1.1/geo/id/df51dec6f4ee2b2c.json', + place_type='neighborhood', + name='Presidio', + full_name='Presidio, San Francisco', + country_code='US', + country='United States', + contained_within=[ + self._GetSampleContainedPlace() + ], + geometry='null', + polylines=[], + centroid=[-122.46598425785236, 37.79989625], + bounding_box=dict( + type='Polygon', + coordinates=[ + [ + [-122.4891333, 37.786925], + [-122.4891333, 37.8128675], + [-122.446306, 37.8128675], + [-122.446306, 37.786925], + [-122.4891333, 37.786925] + ] + ] + ), + attributes={ + 'geotagCount': '6', + '162834:id': '2202' + } + ) + + def testProperties(self): + '''Test all of the twitter.Place properties''' + place = twitter.Place() + place.id = 'df51dec6f4ee2b2c' + self.assertEqual('df51dec6f4ee2b2c', place.id) + place.name = 'Presidio' + self.assertEqual('Presidio', place.name) + place.full_name = 'Presidio, San Francisco' + self.assertEqual('Presidio, San Francisco', place.full_name) + place.country_code = 'US' + self.assertEqual('US', place.country_code) + place.country = 'United States' + self.assertEqual('United States', place.country) + place.url = 'https://api.twitter.com/1.1/geo/id/df51dec6f4ee2b2c.json' + self.assertEqual('https://api.twitter.com/1.1/geo/id/df51dec6f4ee2b2c.json', place.url) + place.contained_within = [self._GetSampleContainedPlace()] + self.assertEqual('5a110d312052166f', place.contained_within[0].id) + + @unittest.skipIf(sys.version_info.major >= 3, "skipped until fix found for v3 python") + def testAsJsonString(self): + '''Test the twitter.Place AsJsonString method''' + self.assertEqual(PlaceTest.SAMPLE_JSON, + self._GetSamplePlace().AsJsonString()) + + def testAsDict(self): + '''Test the twitter.Place AsDict method''' + place = self._GetSamplePlace() + data = place.AsDict() + self.assertEqual('df51dec6f4ee2b2c', data['id']) + self.assertEqual('Presidio', data['name']) + self.assertEqual('Presidio, San Francisco', data['full_name']) + self.assertEqual('US', data['country_code']) + self.assertEqual('United States', data['country']) + self.assertEqual('https://api.twitter.com/1.1/geo/id/df51dec6f4ee2b2c.json', data['url']) + + def testEq(self): + '''Test the twitter.Place __eq__ method''' + place = twitter.Place() + place.id = 'df51dec6f4ee2b2c' + place.name = 'Presidio' + place.full_name = 'Presidio, San Francisco' + place.country_code = 'US' + place.country = 'United States' + place.url = 'https://api.twitter.com/1.1/geo/id/df51dec6f4ee2b2c.json' + place.place_type = 'neighborhood' + place.centroid = [-122.4461400159226, 37.759828999999996] + place.geometry = 'null' + place.polylines = [] + place.bounding_box = dict(type='Polygon', + coordinates=[ + [ + [-122.4891333, 37.786925], + [-122.4891333, 37.8128675], + [-122.446306, 37.8128675], + [-122.446306, 37.786925], + [-122.4891333, 37.786925] + ] + ] + ) + place.attributes = { + 'geotagCount': '6', + '162834:id': '2202' + } + self.assertEqual(place, self._GetSamplePlace()) + + def testHash(self): + '''Test the twitter.Place __hash__ method''' + place = self._GetSamplePlace() + self.assertEqual(hash(place), hash(place.id)) + + def testNewFromJsonDict(self): + '''Test the twitter.Status NewFromJsonDict method''' + data = json.loads(PlaceTest.SAMPLE_JSON) + place = twitter.Place.NewFromJsonDict(data) + self.assertEqual(self._GetSamplePlace(), place) diff --git a/twitter/__init__.py b/twitter/__init__.py index c6e433f8..96b058bd 100644 --- a/twitter/__init__.py +++ b/twitter/__init__.py @@ -45,6 +45,7 @@ Hashtag, # noqa List, # noqa Media, # noqa + Place, # noga Trend, # noqa Url, # noqa User, # noqa diff --git a/twitter/api.py b/twitter/api.py index 94bbbbc1..33290ff8 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -49,6 +49,7 @@ Category, DirectMessage, List, + Place, Status, Trend, User, @@ -4648,6 +4649,12 @@ def GetUserStream(self, elif include_keepalive: yield None + def GetPlace(self, id): + url = '{}/geo/id/{}.json'.format(self.base_url, id) + resp = self._RequestUrl(url, 'GET') + data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) + return Place.NewFromJsonDict(data) + def VerifyCredentials(self, include_entities=None, skip_status=None, include_email=None): """Returns a twitter.User instance if the authenticating user is valid. diff --git a/twitter/models.py b/twitter/models.py index 82dc3ada..1dfda872 100644 --- a/twitter/models.py +++ b/twitter/models.py @@ -537,3 +537,35 @@ def NewFromJsonDict(cls, data, **kwargs): urls=urls, user=user, user_mentions=user_mentions) + + +class Place(TwitterModel): + """A class representing the Place structure used by the twitter API.""" + + def __init__(self, **kwargs): + self.param_defaults = { + 'id': None, + 'url': None, + 'place_type': None, + 'name': None, + 'full_name': None, + 'country_code': None, + 'country': None, + 'bounding_box': None, + 'attributes': None + } + + for (param, default) in self.param_defaults.items(): + setattr(self, param, kwargs.get(param, default)) + + def __repr__(self): + """ A string representation of this twitter.Place instance. + The return value is the ID of status, username and datetime. + + Returns: + string: A string representation of this twitter.Placeinstance with + the ID of status, name, and country. + """ + return "Place(ID={0}, Name={1}, Country={2})".format(self.id, + self.name, + self.country) From ccc4cb47b19e3176351e3085ff8098beed56c756 Mon Sep 17 00:00:00 2001 From: tuftedocelot Date: Thu, 5 Jul 2018 15:30:54 -0500 Subject: [PATCH 115/177] Link Place model to Status --- tests/test_status.py | 25 +++++++++++++++++++++++++ twitter/models.py | 6 +++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/tests/test_status.py b/tests/test_status.py index 475ac154..4ddfe122 100644 --- a/tests/test_status.py +++ b/tests/test_status.py @@ -26,6 +26,29 @@ def _GetSampleStatus(self): text=u'A légpárnás hajóm tele van angolnákkal.', user=self._GetSampleUser()) + def _GetSamplePlace(self): + return twitter.Place( + id='07d9db48bc083000', + url='https://api.twitter.com/1.1/geo/id/07d9db48bc083000.json', + place_type='poi', + name='McIntosh Lake', + full_name='McIntosh Lake', + country_code='US', + country='United States', + bounding_box=dict( + type='Polygon', + coordinates=[ + [ + [-105.14544, 40.192138], + [-105.14544, 40.192138], + [-105.14544, 40.192138], + [-105.14544, 40.192138] + ] + ] + ), + attributes={} + ) + def testInit(self): '''Test the twitter.Status constructor''' twitter.Status(created_at='Fri Jan 26 23:17:14 +0000 2007', @@ -43,7 +66,9 @@ def testProperties(self): self.assertEqual('Fri Jan 26 23:17:14 +0000 2007', status.created_at) self.assertEqual(created_at, status.created_at_in_seconds) status.user = self._GetSampleUser() + status.place = self._GetSamplePlace() self.assertEqual(718443, status.user.id) + self.assertEqual('07d9db48bc083000', status.place.id) @unittest.skipIf(sys.version_info.major >= 3, "skipped until fix found for v3 python") def testAsJsonString(self): diff --git a/twitter/models.py b/twitter/models.py index 1dfda872..88d7b01c 100644 --- a/twitter/models.py +++ b/twitter/models.py @@ -498,6 +498,7 @@ def NewFromJsonDict(cls, data, **kwargs): urls = None user = None user_mentions = None + place = None # for loading extended tweets from the streaming API. if 'extended_tweet' in data: @@ -512,6 +513,8 @@ def NewFromJsonDict(cls, data, **kwargs): current_user_retweet = data['current_user_retweet']['id'] if 'quoted_status' in data: quoted_status = Status.NewFromJsonDict(data.get('quoted_status')) + if 'place' in data and data['place'] is not None: + place = Place.NewFromJsonDict(data['place']) if 'entities' in data: if 'urls' in data['entities']: @@ -536,7 +539,8 @@ def NewFromJsonDict(cls, data, **kwargs): retweeted_status=retweeted_status, urls=urls, user=user, - user_mentions=user_mentions) + user_mentions=user_mentions, + place=place) class Place(TwitterModel): From ba6d269feea77689a2890e79a873eaa7176c8e59 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Fri, 6 Jul 2018 11:16:48 -0400 Subject: [PATCH 116/177] update get_access_token to work with py2/py3 --- get_access_token.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/get_access_token.py b/get_access_token.py index d3010fe6..f6ec0973 100755 --- a/get_access_token.py +++ b/get_access_token.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# -*- coding: utf-8 -*- # # Copyright 2007-2013 The Python-Twitter Developers # @@ -18,6 +19,11 @@ from requests_oauthlib import OAuth1Session import webbrowser +import sys + +if sys.version_info.major < 3: + input = raw_input + REQUEST_TOKEN_URL = 'https://api.twitter.com/oauth/request_token' ACCESS_TOKEN_URL = 'https://api.twitter.com/oauth/access_token' AUTHORIZATION_URL = 'https://api.twitter.com/oauth/authorize' @@ -29,10 +35,7 @@ def get_access_token(consumer_key, consumer_secret): print('\nRequesting temp token from Twitter...\n') - try: - resp = oauth_client.fetch_request_token(REQUEST_TOKEN_URL) - except ValueError as e: - raise 'Invalid response from Twitter requesting temp token: {0}'.format(e) + resp = oauth_client.fetch_request_token(REQUEST_TOKEN_URL) url = oauth_client.authorization_url(AUTHORIZATION_URL) From 96ccf1f7301f2ad95cbc632a95588ef81a156cd4 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Mon, 9 Jul 2018 19:08:58 -0400 Subject: [PATCH 117/177] Update README.rst --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index a735cfab..1a6246a7 100644 --- a/README.rst +++ b/README.rst @@ -34,7 +34,7 @@ Introduction This library provides a pure Python interface for the `Twitter API `_. It works with Python versions from 2.7+ and Python 3. -`Twitter `_ provides a service that allows people to connect via the web, IM, and SMS. Twitter exposes a `web services API `_ and this library is intended to make it even easier for Python programmers to use. +`Twitter `_ provides a service that allows people to connect via the web, IM, and SMS. Twitter exposes a `web services API `_ and this library is intended to make it even easier for Python programmers to use. ========== Installing From 64525804ea43044e876d767e8d2913c6df4c238a Mon Sep 17 00:00:00 2001 From: Eugene Tan Date: Thu, 16 Aug 2018 00:38:56 +0800 Subject: [PATCH 118/177] migrate api.PostDirectMessage to new twitter api --- .gitignore | 1 + testdata/post_post_direct_message.json | 23 ++++++++++++- tests/test_api_30.py | 10 ++---- tests/test_models.py | 22 ------------ twitter/api.py | 46 ++++++++++++++++---------- twitter/models.py | 10 +----- 6 files changed, 55 insertions(+), 57 deletions(-) mode change 100644 => 100755 twitter/api.py diff --git a/.gitignore b/.gitignore index cba5cd9e..7ef3b53c 100644 --- a/.gitignore +++ b/.gitignore @@ -34,6 +34,7 @@ htmlcov nosetests.xml htmlcov coverage.xml +.hypothesis # PyCharm data .idea diff --git a/testdata/post_post_direct_message.json b/testdata/post_post_direct_message.json index 9735f6f9..6f32e2c1 100644 --- a/testdata/post_post_direct_message.json +++ b/testdata/post_post_direct_message.json @@ -1 +1,22 @@ -{"id":761517675243679747,"id_str":"761517675243679747","text":"test message","sender":{"id":4012966701,"id_str":"4012966701","name":"notinourselves","screen_name":"notinourselves","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":true,"followers_count":1,"friends_count":2,"listed_count":1,"created_at":"Wed Oct 21 23:53:04 +0000 2015","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":true,"verified":false,"statuses_count":83,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","profile_background_image_url":"http:\/\/pbs.twimg.com\/profile_background_images\/736320724164448256\/LgaAQoav.jpg","profile_background_image_url_https":"https:\/\/pbs.twimg.com\/profile_background_images\/736320724164448256\/LgaAQoav.jpg","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_2_normal.png","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/4012966701\/1453123196","profile_link_color":"000000","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":true,"has_extended_profile":false,"default_profile":false,"default_profile_image":true,"following":false,"follow_request_sent":false,"notifications":false},"sender_id":4012966701,"sender_id_str":"4012966701","sender_screen_name":"notinourselves","recipient":{"id":372018022,"id_str":"372018022","name":"jeremy","screen_name":"__jcbl__","location":"not a very good kingdom tbh","description":"my kingdom for a microwave that doesn't beep","url":"http:\/\/t.co\/wtg3XzqQTX","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/wtg3XzqQTX","expanded_url":"http:\/\/iseverythingstilltheworst.com","display_url":"iseverythingstilltheworst.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":79,"friends_count":423,"listed_count":8,"created_at":"Sun Sep 11 23:49:28 +0000 2011","favourites_count":2696,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":587,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/755782670572027904\/L5YRsZAY_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/755782670572027904\/L5YRsZAY_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/372018022\/1469027675","profile_link_color":"EE3355","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"recipient_id":372018022,"recipient_id_str":"372018022","recipient_screen_name":"__jcbl__","created_at":"Fri Aug 05 11:02:16 +0000 2016","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}} \ No newline at end of file +{ + "event": { + "created_timestamp": "1534347829024", + "message_create": { + "message_data": { + "text": "test message", + "entities": { + "symbols": [], + "user_mentions": [], + "hashtags": [], + "urls": [] + } + }, + "sender_id": "4012966701", + "target": { + "recipient_id": "372018022" + } + }, + "type": "message_create", + "id": "761517675243679747" + } +} diff --git a/tests/test_api_30.py b/tests/test_api_30.py index c12b0662..7dfd7126 100644 --- a/tests/test_api_30.py +++ b/tests/test_api_30.py @@ -1643,16 +1643,10 @@ def testPostDirectMessage(self): status=200) resp = self.api.PostDirectMessage(text="test message", user_id=372018022) self.assertEqual(resp.text, "test message") - - resp = self.api.PostDirectMessage(text="test message", screen_name="__jcbl__") - self.assertEqual(resp.sender_id, 4012966701) - self.assertEqual(resp.recipient_id, 372018022) + self.assertEqual(resp.sender_id, "4012966701") + self.assertEqual(resp.recipient_id, "372018022") self.assertTrue(resp._json) - self.assertRaises( - twitter.TwitterError, - lambda: self.api.PostDirectMessage(text="test message")) - @responses.activate def testDestroyDirectMessage(self): with open('testdata/post_destroy_direct_message.json') as f: diff --git a/tests/test_models.py b/tests/test_models.py index fe7b6716..ed56fb47 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -58,28 +58,6 @@ def test_direct_message(self): self.assertTrue(dm.AsJsonString()) self.assertTrue(dm.AsDict()) - def test_direct_message_sender_is_user_model(self): - """Test that each Direct Message object contains a fully hydrated - twitter.models.User object for both ``dm.sender`` & ``dm.recipient``.""" - dm = twitter.DirectMessage.NewFromJsonDict(self.DIRECT_MESSAGE_SAMPLE_JSON) - - self.assertTrue(isinstance(dm.sender, twitter.models.User)) - self.assertEqual(dm.sender.id, 372018022) - - # Let's make sure this doesn't break the construction of the DM object. - self.assertEqual(dm.id, 678629245946433539) - - def test_direct_message_recipient_is_user_model(self): - """Test that each Direct Message object contains a fully hydrated - twitter.models.User object for both ``dm.sender`` & ``dm.recipient``.""" - dm = twitter.DirectMessage.NewFromJsonDict(self.DIRECT_MESSAGE_SAMPLE_JSON) - - self.assertTrue(isinstance(dm.recipient, twitter.models.User)) - self.assertEqual(dm.recipient.id, 4012966701) - - # Same as above. - self.assertEqual(dm.id, 678629245946433539) - def test_hashtag(self): """ Test twitter.Hashtag object """ ht = twitter.Hashtag.NewFromJsonDict(self.HASHTAG_SAMPLE_JSON) diff --git a/twitter/api.py b/twitter/api.py old mode 100644 new mode 100755 index 94bbbbc1..4c462e35 --- a/twitter/api.py +++ b/twitter/api.py @@ -2997,38 +2997,50 @@ def GetSentDirectMessages(self, def PostDirectMessage(self, text, - user_id=None, - screen_name=None, + user_id, return_json=False): """Post a twitter direct message from the authenticated user. Args: text: The message text to be posted. user_id: - The ID of the user who should receive the direct message. [Optional] - screen_name: - The screen name of the user who should receive the direct message. [Optional] + The ID of the user who should receive the direct message. return_json (bool, optional): - If True JSON data will be returned, instead of twitter.User + If True JSON data will be returned, instead of twitter.DirectMessage Returns: A twitter.DirectMessage instance representing the message posted """ - url = '%s/direct_messages/new.json' % self.base_url - data = {'text': text} - if user_id: - data['user_id'] = user_id - elif screen_name: - data['screen_name'] = screen_name - else: - raise TwitterError({'message': "Specify at least one of user_id or screen_name."}) + url = '%s/direct_messages/events/new.json' % self.base_url + + event = { + 'event': { + 'type': 'message_create', + 'message_create': { + 'target': { + 'recipient_id': user_id, + }, + 'message_data': { + 'text': text + } + } + } + } - resp = self._RequestUrl(url, 'POST', data=data) - data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) + resp = self._RequestUrl(url, 'POST', json=event) + data = resp.json() if return_json: return data else: - return DirectMessage.NewFromJsonDict(data) + dm = DirectMessage( + created_at=data['event']['created_timestamp'], + id=data['event']['id'], + recipient_id=data['event']['message_create']['target']['recipient_id'], + sender_id=data['event']['message_create']['sender_id'], + text=data['event']['message_create']['message_data']['text'], + ) + dm._json = data + return dm def DestroyDirectMessage(self, message_id, include_entities=True, return_json=False): """Destroys the direct message specified in the required ID parameter. diff --git a/twitter/models.py b/twitter/models.py index 82dc3ada..e8974ebe 100644 --- a/twitter/models.py +++ b/twitter/models.py @@ -185,21 +185,13 @@ def __init__(self, **kwargs): self.param_defaults = { 'created_at': None, 'id': None, - 'recipient': None, 'recipient_id': None, - 'recipient_screen_name': None, - 'sender': None, 'sender_id': None, - 'sender_screen_name': None, 'text': None, } for (param, default) in self.param_defaults.items(): setattr(self, param, kwargs.get(param, default)) - if 'sender' in kwargs: - self.sender = User.NewFromJsonDict(kwargs.get('sender', None)) - if 'recipient' in kwargs: - self.recipient = User.NewFromJsonDict(kwargs.get('recipient', None)) def __repr__(self): if self.text and len(self.text) > 140: @@ -208,7 +200,7 @@ def __repr__(self): text = self.text return "DirectMessage(ID={dm_id}, Sender={sender}, Created={time}, Text='{text!r}')".format( dm_id=self.id, - sender=self.sender_screen_name, + sender=self.sender_id, time=self.created_at, text=text) From eb4687923e983e00858ea5828cb90aea079aee70 Mon Sep 17 00:00:00 2001 From: "bear (Mike Taylor)" Date: Sat, 29 Sep 2018 19:48:25 -0400 Subject: [PATCH 119/177] fix test assert for sender_screen_name --- tests/test_direct_messages.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/test_direct_messages.py b/tests/test_direct_messages.py index 4f60e0d7..348ea525 100644 --- a/tests/test_direct_messages.py +++ b/tests/test_direct_messages.py @@ -56,14 +56,13 @@ def test_get_sent_direct_messages(): assert isinstance(resp, list) assert isinstance(direct_message, twitter.DirectMessage) assert direct_message.id == 678629283007303683 - assert [dm.sender_screen_name == 'notinourselves' for dm in resp] @responses.activate def test_post_direct_message(): with open('testdata/direct_messages/post_post_direct_message.json', 'r') as f: responses.add(POST, DEFAULT_URL, body=f.read()) - resp = api.PostDirectMessage(screen_name='TheGIFingBot', + resp = api.PostDirectMessage(user_id='372018022', text='https://t.co/L4MIplKUwR') assert isinstance(resp, twitter.DirectMessage) assert resp.text == 'https://t.co/L4MIplKUwR' From 61b8c6325e272290bcdbf92d7dbb09d3478b3748 Mon Sep 17 00:00:00 2001 From: "bear (Mike Taylor)" Date: Sat, 29 Sep 2018 19:49:24 -0400 Subject: [PATCH 120/177] allow user_id to be filled if optional screen_name is included --- twitter/api.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/twitter/api.py b/twitter/api.py index 4c462e35..15a778f1 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -2997,7 +2997,8 @@ def GetSentDirectMessages(self, def PostDirectMessage(self, text, - user_id, + user_id=None, + screen_name=None, return_json=False): """Post a twitter direct message from the authenticated user. @@ -3012,6 +3013,11 @@ def PostDirectMessage(self, """ url = '%s/direct_messages/events/new.json' % self.base_url + # Hack to allow some sort of backwards compatibility with older versions + # part of the fix for Issue #587 + if user_id is None and screen_name is not None: + user_id = self.GetUser(screen_name=screen_name).id + event = { 'event': { 'type': 'message_create', From 8b65eed05a0d700a34069aa62bb9ea92684e01ee Mon Sep 17 00:00:00 2001 From: "bear (Mike Taylor)" Date: Sat, 29 Sep 2018 19:51:23 -0400 Subject: [PATCH 121/177] bump version to 2.5 --- twitter/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/__init__.py b/twitter/__init__.py index c6e433f8..b4836243 100644 --- a/twitter/__init__.py +++ b/twitter/__init__.py @@ -22,7 +22,7 @@ __email__ = 'python-twitter@googlegroups.com' __copyright__ = 'Copyright (c) 2007-2016 The Python-Twitter Developers' __license__ = 'Apache License 2.0' -__version__ = '3.4.2' +__version__ = '3.5' __url__ = 'https://github.com/bear/python-twitter' __download_url__ = 'https://pypi.python.org/pypi/python-twitter' __description__ = 'A Python wrapper around the Twitter API' From f7eb83d9dca3ba0ee93e629ba5322732f99a3a30 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sun, 30 Sep 2018 09:23:40 -0400 Subject: [PATCH 122/177] fix test for PostDirectMessage endpoint with new data --- testdata/direct_messages/post_post_direct_message.json | 2 +- tests/test_direct_messages.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/testdata/direct_messages/post_post_direct_message.json b/testdata/direct_messages/post_post_direct_message.json index c4c2d59f..9e861211 100644 --- a/testdata/direct_messages/post_post_direct_message.json +++ b/testdata/direct_messages/post_post_direct_message.json @@ -1 +1 @@ -{"sender_id_str": "372018022", "entities": {"urls": [{"expanded_url": "https://twitter.com/CamilleStein/status/854322543364382720", "indices": [0, 23], "url": "https://t.co/L4MIplKUwR", "display_url": "twitter.com/CamilleStein/s\u2026"}], "symbols": [], "hashtags": [], "user_mentions": []}, "recipient_id": 3206731269, "text": "https://t.co/L4MIplKUwR", "id_str": "855194351294656515", "sender_id": 372018022, "id": 855194351294656515, "created_at": "Thu Apr 20 22:59:56 +0000 2017", "recipient_id_str": "3206731269", "recipient": {"is_translation_enabled": false, "following": true, "name": "The GIFing Bot", "profile_image_url": "http://pbs.twimg.com/profile_images/592359786659880960/IwQsKZ7b_normal.png", "profile_sidebar_border_color": "000000", "followers_count": 84, "created_at": "Sat Apr 25 16:31:07 +0000 2015", "profile_link_color": "02B400", "is_translator": false, "id": 3206731269, "profile_sidebar_fill_color": "000000", "has_extended_profile": false, "profile_background_tile": false, "profile_use_background_image": false, "default_profile_image": false, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "lang": "en", "verified": false, "favourites_count": 0, "protected": false, "notifications": false, "friends_count": 100, "listed_count": 7, "location": "", "statuses_count": 19, "entities": {"url": {"urls": [{"expanded_url": "http://iseverythingstilltheworst.com/projects/the-gifing-bot/", "indices": [0, 23], "url": "https://t.co/BTsv2OJnqv", "display_url": "iseverythingstilltheworst.com/projects/the-g\u2026"}]}, "description": {"urls": []}}, "url": "https://t.co/BTsv2OJnqv", "utc_offset": null, "time_zone": null, "profile_background_color": "000000", "id_str": "3206731269", "description": "DM me a tweet with a GIF in it and I'll make it into an actual GIF!!", "follow_request_sent": false, "screen_name": "TheGIFingBot", "profile_text_color": "000000", "translator_type": "none", "profile_image_url_https": "https://pbs.twimg.com/profile_images/592359786659880960/IwQsKZ7b_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "contributors_enabled": false, "default_profile": false, "geo_enabled": false}, "sender": {"is_translation_enabled": false, "following": false, "name": "Jeremy", "profile_image_url": "http://pbs.twimg.com/profile_images/800076020741246976/fMpwMcBJ_normal.jpg", "profile_sidebar_border_color": "000000", "followers_count": 142, "created_at": "Sun Sep 11 23:49:28 +0000 2011", "profile_link_color": "EE3355", "is_translator": false, "id": 372018022, "profile_sidebar_fill_color": "000000", "has_extended_profile": false, "profile_background_tile": false, "profile_use_background_image": false, "default_profile_image": false, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "lang": "en", "verified": false, "favourites_count": 7546, "protected": false, "notifications": false, "friends_count": 593, "listed_count": 11, "location": "philly", "statuses_count": 1785, "entities": {"url": {"urls": [{"expanded_url": "http://iseverythingstilltheworst.com", "indices": [0, 23], "url": "https://t.co/wtg3XyREnj", "display_url": "iseverythingstilltheworst.com"}]}, "description": {"urls": []}}, "url": "https://t.co/wtg3XyREnj", "utc_offset": -14400, "time_zone": "Eastern Time (US & Canada)", "profile_background_color": "FFFFFF", "id_str": "372018022", "description": "these people have addresses | #botally", "follow_request_sent": false, "screen_name": "__jcbl__", "profile_text_color": "000000", "translator_type": "none", "profile_image_url_https": "https://pbs.twimg.com/profile_images/800076020741246976/fMpwMcBJ_normal.jpg", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "profile_banner_url": "https://pbs.twimg.com/profile_banners/372018022/1475799101", "contributors_enabled": false, "default_profile": false, "geo_enabled": false}, "sender_screen_name": "__jcbl__", "recipient_screen_name": "TheGIFingBot"} \ No newline at end of file +{"event": {"type": "message_create", "id": "1046388258840748037", "created_timestamp": "1538313376518", "message_create": {"target": {"recipient_id": "372018022"}, "sender_id": "372018022", "message_data": {"text": "hello", "entities": {"hashtags": [], "symbols": [], "user_mentions": [], "urls": []}}}}} \ No newline at end of file diff --git a/tests/test_direct_messages.py b/tests/test_direct_messages.py index 348ea525..fa9108c6 100644 --- a/tests/test_direct_messages.py +++ b/tests/test_direct_messages.py @@ -63,9 +63,9 @@ def test_post_direct_message(): with open('testdata/direct_messages/post_post_direct_message.json', 'r') as f: responses.add(POST, DEFAULT_URL, body=f.read()) resp = api.PostDirectMessage(user_id='372018022', - text='https://t.co/L4MIplKUwR') + text='hello') assert isinstance(resp, twitter.DirectMessage) - assert resp.text == 'https://t.co/L4MIplKUwR' + assert resp.text == 'hello' @responses.activate From d373eb901a2bcc7e16d06c5b9eb3ad08f656c955 Mon Sep 17 00:00:00 2001 From: AnSq Date: Sun, 14 Oct 2018 07:09:41 -0700 Subject: [PATCH 123/177] use a requests.Session to speed up most network operations --- twitter/api.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 15a778f1..a823fc38 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -292,6 +292,8 @@ def __init__(self, requests_log.setLevel(logging.DEBUG) requests_log.propagate = True + self._session = requests.Session() + @staticmethod def GetAppOnlyAuthToken(consumer_key, consumer_secret): """ @@ -4974,20 +4976,20 @@ def _RequestUrl(self, url, verb, data=None, json=None, enforce_auth=True): if data: if 'media_ids' in data: url = self._BuildUrl(url, extra_params={'media_ids': data['media_ids']}) - resp = requests.post(url, data=data, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) + resp = self._session.post(url, data=data, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) elif 'media' in data: - resp = requests.post(url, files=data, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) + resp = self._session.post(url, files=data, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) else: - resp = requests.post(url, data=data, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) + resp = self._session.post(url, data=data, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) elif json: - resp = requests.post(url, json=json, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) + resp = self._session.post(url, json=json, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) else: resp = 0 # POST request, but without data or json elif verb == 'GET': data['tweet_mode'] = self.tweet_mode url = self._BuildUrl(url, extra_params=data) - resp = requests.get(url, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) + resp = self._session.get(url, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) else: resp = 0 # if not a POST or GET request From be3f1b422d063a676a1ecc91c2ed13fe21c39927 Mon Sep 17 00:00:00 2001 From: tuftedocelot Date: Sun, 14 Oct 2018 14:50:37 -0500 Subject: [PATCH 124/177] Add initial tests of status and Place API usage For now, Place models are only accessible via a Status. Querying the API for Places is to come later --- testdata/get_status_with_place.json | 185 ++++++++++++++++++++++++++++ tests/test_status_place.py | 45 +++++++ 2 files changed, 230 insertions(+) create mode 100644 testdata/get_status_with_place.json create mode 100644 tests/test_status_place.py diff --git a/testdata/get_status_with_place.json b/testdata/get_status_with_place.json new file mode 100644 index 00000000..f4c82bc6 --- /dev/null +++ b/testdata/get_status_with_place.json @@ -0,0 +1,185 @@ +{ + "created_at": "Sat Oct 13 20:15:27 +0000 2018", + "hashtags": [], + "id": 1051204790334746624, + "id_str": "1051204790334746624", + "lang": "en", + "place": { + "attributes": {}, + "bounding_box": { + "coordinates": [ + [ + [ + -87.940033, + 41.644102 + ], + [ + -87.523993, + 41.644102 + ], + [ + -87.523993, + 42.0230669 + ], + [ + -87.940033, + 42.0230669 + ] + ] + ], + "type": "Polygon" + }, + "contained_within": [], + "country": "United States", + "country_code": "US", + "full_name": "Chicago, IL", + "id": "1d9a5370a355ab0c", + "name": "Chicago", + "place_type": "city", + "url": "https://api.twitter.com/1.1/geo/id/1d9a5370a355ab0c.json" + }, + "quoted_status": { + "created_at": "Fri Oct 12 20:38:11 +0000 2018", + "favorite_count": 24161, + "hashtags": [], + "id": 1050848124036685824, + "id_str": "1050848124036685824", + "lang": "en", + "media": [ + { + "display_url": "pic.twitter.com/7BhtdUPIQD", + "expanded_url": "https://twitter.com/fazopri/status/1049144383457677317/video/1", + "id": 1049144139172855808, + "media_url": "http://pbs.twimg.com/ext_tw_video_thumb/1049144139172855808/pu/img/WaU8axg3hOI425zK.jpg", + "media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/1049144139172855808/pu/img/WaU8axg3hOI425zK.jpg", + "sizes": { + "large": { + "h": 720, + "resize": "fit", + "w": 720 + }, + "medium": { + "h": 720, + "resize": "fit", + "w": 720 + }, + "small": { + "h": 680, + "resize": "fit", + "w": 680 + }, + "thumb": { + "h": 150, + "resize": "crop", + "w": 150 + } + }, + "type": "video", + "url": "https://t.co/7BhtdUPIQD", + "video_info": { + "aspect_ratio": [ + 1, + 1 + ], + "duration_millis": 26153, + "variants": [ + { + "content_type": "application/x-mpegURL", + "url": "https://video.twimg.com/ext_tw_video/1049144139172855808/pu/pl/TQ2FvESC2EWTKpxR.m3u8?tag=5" + }, + { + "bitrate": 256000, + "content_type": "video/mp4", + "url": "https://video.twimg.com/ext_tw_video/1049144139172855808/pu/vid/240x240/7O7a4ritrh587trx.mp4?tag=5" + }, + { + "bitrate": 832000, + "content_type": "video/mp4", + "url": "https://video.twimg.com/ext_tw_video/1049144139172855808/pu/vid/480x480/BXTtsb-hW9DvNJFR.mp4?tag=5" + }, + { + "bitrate": 1280000, + "content_type": "video/mp4", + "url": "https://video.twimg.com/ext_tw_video/1049144139172855808/pu/vid/720x720/_Xb-Q1NmNlv-hY-x.mp4?tag=5" + } + ] + } + } + ], + "possibly_sensitive": true, + "retweet_count": 9042, + "source": "Twitter for iPhone", + "text": "Swallowing when you have a sore throat then remembering how you used to swallow painlessly\n\n https://t.co/7BhtdUPIQD", + "urls": [], + "user": { + "created_at": "Wed Dec 01 19:30:08 +0000 2010", + "description": "Artist |bookings/beats: supermanage17@gmail.com", + "favourites_count": 15056, + "followers_count": 2680, + "friends_count": 1566, + "geo_enabled": true, + "id": 221843085, + "id_str": "221843085", + "lang": "en", + "listed_count": 40, + "location": "The Mountains", + "name": "O\u2019dack Black", + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": true, + "profile_banner_url": "https://pbs.twimg.com/profile_banners/221843085/1530302259", + "profile_image_url": "http://pbs.twimg.com/profile_images/1036223132032483328/qu1sNzYk_normal.jpg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/1036223132032483328/qu1sNzYk_normal.jpg", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "D633D6", + "profile_use_background_image": true, + "screen_name": "iamodeal", + "statuses_count": 15429, + "url": "https://t.co/RWx3Olu79R" + }, + "user_mentions": [] + }, + "quoted_status_id": 1050848124036685824, + "quoted_status_id_str": "1050848124036685824", + "source": "Twitter for iPhone", + "text": "OXJKDS ME LAST NIGHT https://t.co/yyFEAn8ZM8", + "urls": [ + { + "expanded_url": "https://twitter.com/iamodeal/status/1050848124036685824", + "url": "https://t.co/yyFEAn8ZM8" + } + ], + "user": { + "created_at": "Tue Feb 05 01:30:25 +0000 2013", + "description": "I wish everyone was a lil nicer to each other. photographer. 19 years old. business: haley.paolini@icloud.com", + "favourites_count": 86250, + "followers_count": 15571, + "friends_count": 707, + "geo_enabled": true, + "id": 1149579998, + "id_str": "1149579998", + "lang": "en", + "listed_count": 270, + "location": "Chicago, IL, USA", + "name": "haley", + "profile_background_color": "FFFFFF", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": true, + "profile_banner_url": "https://pbs.twimg.com/profile_banners/1149579998/1538861179", + "profile_image_url": "http://pbs.twimg.com/profile_images/1048685903886147591/LW8shQOq_normal.jpg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/1048685903886147591/LW8shQOq_normal.jpg", + "profile_link_color": "664479", + "profile_sidebar_border_color": "FFFFFF", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "0084B4", + "profile_use_background_image": true, + "screen_name": "haleypaolini", + "statuses_count": 194551, + "url": "https://t.co/qlr16Jh9XJ" + }, + "user_mentions": [] +} \ No newline at end of file diff --git a/tests/test_status_place.py b/tests/test_status_place.py new file mode 100644 index 00000000..fd485ae1 --- /dev/null +++ b/tests/test_status_place.py @@ -0,0 +1,45 @@ +import unittest +import re +import sys +import twitter +import responses +from responses import GET + +DEFAULT_URL = re.compile(r'https?://.*\.twitter.com/1\.1/.*') + + +class ErrNull(object): + """ Suppress output of tests while writing to stdout or stderr. This just + takes in data and does nothing with it. + """ + + def write(self, data): + pass + + +class ApiPlaceTest(unittest.TestCase): + def setUp(self): + self.api = twitter.Api( + consumer_key='test', + consumer_secret='test', + access_token_key='test', + access_token_secret='test' + ) + self.base_url = 'https://api.twitter.com/1.1' + self._stderr = sys.stderr + sys.stderr = ErrNull() + + def tearDown(self): + sys.stderr = self._stderr + pass + + @responses.activate + def testGetStatusWithPlace(self): + with open('testdata/get_status_with_place.json') as f: + resp_data = f.read() + responses.add(GET, DEFAULT_URL, body=resp_data) + + resp = self.api.GetStatus(1051204790334746624) + self.assertTrue(isinstance(resp, twitter.Status)) + self.assertTrue(isinstance(resp.place, twitter.Place)) + self.assertEqual(resp.id, 1051204790334746624) From a38ac1d6601f19bc99da9c2fe0f606397f2bfe2f Mon Sep 17 00:00:00 2001 From: tuftedocelot Date: Sun, 14 Oct 2018 15:56:50 -0500 Subject: [PATCH 125/177] Add testing of using a Place when posting a new update --- testdata/post_update_with_place.json | 59 ++++++++++++++++++++++++++++ tests/test_status_place.py | 11 +++++- 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 testdata/post_update_with_place.json diff --git a/testdata/post_update_with_place.json b/testdata/post_update_with_place.json new file mode 100644 index 00000000..ee3369cd --- /dev/null +++ b/testdata/post_update_with_place.json @@ -0,0 +1,59 @@ +{ + "created_at": "Sun Oct 14 20:44:37 +0000 2018", + "hashtags": [], + "id": 1051574521818435584, + "id_str": "1051574521818435584", + "lang": "en", + "place": { + "bounding_box": { + "coordinates": [ + [ + [ + -105.14544044849526, + 40.19213775503984 + ], + [ + -105.14544044849526, + 40.19213775503984 + ], + [ + -105.14544044849526, + 40.19213775503984 + ], + [ + -105.14544044849526, + 40.19213775503984 + ] + ] + ], + "type": "Polygon" + }, + "full_name": "McIntosh Lake", + "id": "07d9db48bc083000", + "name": "McIntosh Lake", + "place_type": "poi", + "url": "https://api.twitter.com/1.1/geo/id/07d9db48bc083000.json" + }, + "urls": [], + "user": { + "created_at": "Sat May 26 17:34:57 +0000 2018", + "default_profile": true, + "default_profile_image": true, + "geo_enabled": true, + "id": 1000430098892378113, + "id_str": "1000430098892378113", + "lang": "en", + "name": "DECKSET", + "profile_background_color": "F5F8FA", + "profile_image_url": "http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png", + "profile_image_url_https": "https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png", + "profile_link_color": "1DA1F2", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "screen_name": "DECKSET1", + "statuses_count": 1 + }, + "user_mentions": [] +} \ No newline at end of file diff --git a/tests/test_status_place.py b/tests/test_status_place.py index fd485ae1..628bc229 100644 --- a/tests/test_status_place.py +++ b/tests/test_status_place.py @@ -3,7 +3,7 @@ import sys import twitter import responses -from responses import GET +from responses import GET, POST DEFAULT_URL = re.compile(r'https?://.*\.twitter.com/1\.1/.*') @@ -43,3 +43,12 @@ def testGetStatusWithPlace(self): self.assertTrue(isinstance(resp, twitter.Status)) self.assertTrue(isinstance(resp.place, twitter.Place)) self.assertEqual(resp.id, 1051204790334746624) + + @responses.activate + def testPostUpdateWithPlace(self): + with open('testdata/post_update_with_place.json') as f: + resp_data = f.read() + responses.add(POST, DEFAULT_URL, body=resp_data, status=200) + + post = self.api.PostUpdate('test place', place_id='07d9db48bc083000') + self.assertEqual(post.place.id, '07d9db48bc083000') From 98ef62f68b04bfdee8cb4df2db8b81933f390ccf Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sat, 3 Nov 2018 09:26:57 -0400 Subject: [PATCH 126/177] fix issue #584 --- twitter/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/api.py b/twitter/api.py index a823fc38..fe1f6e54 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -4994,7 +4994,7 @@ def _RequestUrl(self, url, verb, data=None, json=None, enforce_auth=True): else: resp = 0 # if not a POST or GET request - if url and self.rate_limit: + if url and self.rate_limit and resp: limit = resp.headers.get('x-rate-limit-limit', 0) remaining = resp.headers.get('x-rate-limit-remaining', 0) reset = resp.headers.get('x-rate-limit-reset', 0) From a51b4c25e6b3861270a71d7b1a56a3f1f4bc69da Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Sat, 3 Nov 2018 20:25:10 -0400 Subject: [PATCH 127/177] update circleci stuff for version 2.0 --- .circleci/config.yml | 20 ++++++++++++++++++++ .circleci/images/Dockerfile | 21 +++++++++++++++++++++ circle.yml | 11 ----------- tox.ini | 2 +- 4 files changed, 42 insertions(+), 12 deletions(-) create mode 100644 .circleci/config.yml create mode 100644 .circleci/images/Dockerfile delete mode 100644 circle.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..eb59bbc7 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,20 @@ +version: 2 +jobs: + build: + working_directory: ~/repo + docker: + - image: jeremylow/python-twitter + steps: + - checkout + - run: sudo chown -R circleci:circleci ~/repo + - run: + name: set up pyenv + command: pyenv local 2.7.15 3.7.1 pypy-5.7.1 pypy3.5-6.0.0 + - run: + name: install deps + command: pip install -r requirements.testing.txt + - run: + name: run tests + command: | + export PATH=/home/circleci/.local/bin:$PATH + make tox diff --git a/.circleci/images/Dockerfile b/.circleci/images/Dockerfile new file mode 100644 index 00000000..04d96343 --- /dev/null +++ b/.circleci/images/Dockerfile @@ -0,0 +1,21 @@ +# We could use a smaller image, but this ensures that everything CircleCI needs +# is installed already. +FROM circleci/python:3.6 +MAINTAINER Jeremy Low + +# These are the version of python currently supported. +ENV SUPPORTED_VERSIONS="2.7.15 3.7.1 pypy-5.7.1 pypy3.5-6.0.0" +ENV PYENV_ROOT /home/circleci/.pyenv +ENV PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH + +# Get and install pyenv. +RUN curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash + +# pyenv installer doesn't set these for us. +RUN echo "export PATH=${PYENV_ROOT}/bin:$$PATH \n\ +eval '\$(pyenv init -)' \n\ +eval '\$(pyenv virtualenv-init -)'" >> ~/.bashrc +RUN pyenv update + +# Install each supported version into the container. +RUN for i in $SUPPORTED_VERSIONS; do pyenv install "$i"; done diff --git a/circle.yml b/circle.yml deleted file mode 100644 index e45f625b..00000000 --- a/circle.yml +++ /dev/null @@ -1,11 +0,0 @@ -dependencies: - override: - - pip install -U pip - -test: - pre: - - make info - - uname -a - - lsb_release -a - override: - - make ci diff --git a/tox.ini b/tox.ini index c072ade8..a98acd94 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = clean,py27,py36,pypy,pypy3,codestyle,coverage +envlist = clean,py27,py37,pypy,pypy3,codestyle,coverage skip_missing_interpreters = True [testenv] From 254e9ece107c4acff07d80712e7ec05da908cf69 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Wed, 23 May 2018 18:01:34 -0400 Subject: [PATCH 128/177] add doc strings to get_access_token script --- get_access_token.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/get_access_token.py b/get_access_token.py index f6ec0973..84845c11 100755 --- a/get_access_token.py +++ b/get_access_token.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- # -# Copyright 2007-2013 The Python-Twitter Developers +# Copyright 2007-2018 The Python-Twitter Developers # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,6 +14,8 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +"""Utility to get your access tokens.""" + from __future__ import print_function from requests_oauthlib import OAuth1Session @@ -31,6 +33,17 @@ def get_access_token(consumer_key, consumer_secret): + """Get an access token for a given consumer key and secret. + + Args: + consumer_key (str): + Your application consumer key. + consumer_secret (str): + Your application consumer secret. + + Returns: + (None) Prints to command line. + """ oauth_client = OAuth1Session(consumer_key, client_secret=consumer_secret, callback_uri='oob') print('\nRequesting temp token from Twitter...\n') @@ -71,6 +84,7 @@ def get_access_token(consumer_key, consumer_secret): def main(): + """Run script to get access token and secret for given app.""" consumer_key = input('Enter your consumer key: ') consumer_secret = input('Enter your consumer secret: ') get_access_token(consumer_key, consumer_secret) From 24dfe8f2fe66f520428430a6092a091b3e7080a3 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Wed, 23 May 2018 18:14:10 -0400 Subject: [PATCH 129/177] add/fix inline documentation for utilites --- twitter/twitter_utils.py | 44 ++++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/twitter/twitter_utils.py b/twitter/twitter_utils.py index b402ae63..3bd5d411 100644 --- a/twitter/twitter_utils.py +++ b/twitter/twitter_utils.py @@ -1,4 +1,5 @@ -# encoding: utf-8 +# -*- coding: utf-8 -*- +"""Collection of utilities for use in API calls, functions.""" from __future__ import unicode_literals import mimetypes @@ -18,7 +19,7 @@ import twitter if sys.version_info < (3,): - range = xrange + range = xrange # noqa if sys.version_info > (3,): unicode = str @@ -169,8 +170,9 @@ def calc_expected_status_length(status, short_url_length=23): - """ Calculates the length of a tweet, taking into account Twitter's - replacement of URLs with https://t.co links. + """Calculate the length of a tweet. + + Takes into account Twitter's replacement of URLs with https://t.co links. Args: status: text of the status message to be posted. @@ -178,7 +180,6 @@ def calc_expected_status_length(status, short_url_length=23): Returns: Expected length of the status message as an integer. - """ status_length = 0 if isinstance(status, bytes): @@ -197,7 +198,7 @@ def calc_expected_status_length(status, short_url_length=23): def is_url(text): - """ Checks to see if a bit of text is a URL. + """Check to see if a bit of text is a URL. Args: text: text to check. @@ -209,6 +210,14 @@ def is_url(text): def http_to_file(http): + """Turn a URL into a file-like object. + + Args: + http (str): URL of the file to download. + + Returns: + File-like object of downloaded URL. + """ data_file = NamedTemporaryFile() req = requests.get(http, stream=True) for chunk in req.iter_content(chunk_size=1024 * 1024): @@ -217,8 +226,7 @@ def http_to_file(http): def parse_media_file(passed_media, async_upload=False): - """ Parses a media file and attempts to return a file-like object and - information about the media file. + """Parse a media file and attempts to return a file-like object and information about the media file. Args: passed_media: media file which to parse. @@ -282,9 +290,11 @@ def parse_media_file(passed_media, async_upload=False): def enf_type(field, _type, val): - """ Checks to see if a given val for a field (i.e., the name of the field) - is of the proper _type. If it is not, raises a TwitterError with a brief - explanation. + """Enforce type checking on variable. + + Check to see if a given val for a field (i.e., the name + of the field) is of the proper _type. If it is not, + raise a TwitterError with a brief explanation. Args: field: @@ -307,6 +317,18 @@ def enf_type(field, _type, val): def parse_arg_list(args, attr): + """Parse a set of args for list functions. + + Convenience/DRY function. + + Args: + args (str, twitter.User, list, tuple): set of arguments to + pass to API. + attr (str): The attribute to be extracted from each arg. + + Returns: + (str) A string representing the concatenated arguments. + """ out = [] if isinstance(args, (str, unicode)): out.append(args) From 4ad779c172387fe778f565955226864d2a831b6a Mon Sep 17 00:00:00 2001 From: Lydia Ralph Date: Sat, 10 Nov 2018 17:09:07 +0000 Subject: [PATCH 130/177] Enable post direct message with media attached --- testdata/media/happy.jpg | Bin 0 -> 3032 bytes tests/test_direct_messages.py | 12 ++++++++++++ twitter/api.py | 36 +++++++++++++++++++++++++++++----- 3 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 testdata/media/happy.jpg diff --git a/testdata/media/happy.jpg b/testdata/media/happy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e6a80f42839f0b5ab5010a04a20c5465aa1592d8 GIT binary patch literal 3032 zcmbW3c|6oxAIE=V7PBZbmKlQ#hKNgcC0kjdLMXzu%aSDfzQi@Qk&H~GM3xYeJ?q#d z6;h_uz0BxZvrK5F=USd|?|nVb>-GHgJkRI6zUOsb=X}5CocB5B^?jYa4|_8J`i!Z$ zDF6Zi0EkL3b%IDk2DkROf4 zppkq6f&yqkZX3Nn31~kO41se4(I^Cp+xtIiuN%O?0c*es43Y+TFd#4nwAT+1xch{H z{uJ=HKs;aw6vhijAW>Y0CN#jqU7H62hC(3_u6G=F9Drb;0#d3cVS?7~ywX8JYBzEo z!HK8pdW3Dp*Jac_f|C$PEKUS3DtlN?{)mExrk3`x<2pvhCZ?y&%+J_fxM*j8$-&Xn z>$10xuiurB(6I1`$f)S#Us6b^Y3Ui1+}nB7J9qEp7nhWlJua`Pd{W=g*wozeytS>j zuYX{0=*95Mw-fK)PtrepoMJF%zx+Nozp%K(`nIvT^_|W6@sE8j5CHxQi(CH%_8(jr zE*B4kd!)SkTp*qZu7NQSsFW&9;G{LLdyt^C+6}nSshmf3JqV(@&APBh@Hi4Hqrs46 z?W6rk_TPae{awW{HoN8utgzVE0X9mthFsp)U7e_CL~eI<1-mfuMyo+1S9&<&B1IU z-ZnrdfLM3vh%KXVz!g=O+f5S>Q(Qm`q*X?kfFNQAYoPs!Y|kJfMydpr?! zR0czCxWu?CIq(!ITiq>DV`4XFw&|MXFeuvyn_r8|5jv z6y1I6B;;Z~z|dEUq&bW=zBcIHMNy7&&Tc!0hIXQdMRJrZ2cy=?EJ=!y7r#i(ocLkw zrBU@TwO0Z&9?M_k#ECdbGHLmxgK}1bWWMT?lR2XMmXL4m748#p&EanDR2CE z%uoWlte@&AI51OyNqfNq$i4F>Z%JH!Re5c;b;9xy6^UlpF4S`Jmd&3}4(&8dv-_m_ZttpSI|V$ZO< zE!0NrIIXko{QO3hX5$V+3d0&~+3+>h9)XUhRh`-@HdUPwnCCuLjMRbbR0I6B5+N%d z$7vht*U_ak!kF*VRL>O&3e`R17rNmf=J}+VZcA2?0oN2~$b(-phzwl+eG6$>bfn_Y z9W~ifPkp;QCT!zy=%Er4%jlW7d}~(f(NJh~S@5(_tdPERtRB4sf9OMf+q>#tuLg!E zO=?%BHnp8g-ssaYQFtJ(amB9?8G9|BxP5G$o#owtwRbEd2gdn4xPRjP59NSt*Zd&1EL^E%j7o4?zB_QT7}F#w{f^GgDn;OgzsfnbR_~>$ zCCGV1PHD4X5t+v|d<@~H_({Hqe=gN>qPA&d*+R@@VpUUY#ngA@>em%_zsIflrYP~C z!J>wCb$KL6<`z)9@QD$Sov}$HxnL%Aqk`G`ha1PLB`3Y3jB8}SITe3a4eHC43~BEQ zG0Ec#T)Y&^q?0igR&aP&S3N{h3DiuIbxI>%byNGfk&lSd}<{vb03VE8~uB;0((371n){waM0vHe zqy$?EXn-zwD^UO$pbR1lA*Ti2q1hscq#zOD**DqPP=Cf;=<8pJWhVZ zDH(33@4lh8{W=InG@ZEPpE+a`^6h^5Wd*hCa6I$bwqZGw)?Z}>H%gC{or$T?bPhL> zDxpoH*BYMb7k~cRe*3y{(hIL-Y5J4%AQ%6tg(-U9fh&8!;6wQMYEvNpQoZIRjZvj( zs~d5yyQ|EtG|{e#!%a`5YlKylkvoJ+cQ!&H=geS_UJZ| zp)~|EQO`1Cqk#B5og-CkHd)0|H=YReRFIk2x_2`#4u8Bm#;Hzx_yM6K`O)Un$)Wyu ziT6tR8|Ubu%k80J`InR_#^87L6jeh}4f{hiv6neUjHa9pBbHUKs9U;2;Y#$cjmChQ zC4R`wzaV>dH-~==_mKI zF-}gtRC%{_;DWIU=%V5NKMo00G79+?;t!71=xQ?Bp$!vXZ&zEd`H4_HMv3i|Z)U5n z)`--IaBq)S{RL;_i+D2rGJd|D>OJ7g>E=Bk+I0u&&&p-ew{N!4wuTcnAB%GHXD7`) W;Rl~DZEH$rM}(Ug Date: Mon, 12 Nov 2018 16:35:44 +0000 Subject: [PATCH 131/177] Updated variable names to be generic media type --- twitter/api.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 02cb6891..2c6437ce 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -3031,11 +3031,11 @@ def PostDirectMessage(self, } if media_file_path is not None: try: - image = open(media_file_path, 'rb') + media = open(media_file_path, 'rb') except IOError: - raise TwitterError({'message': 'Image file could not be opened.'}) + raise TwitterError({'message': 'Media file could not be opened.'}) - response_media_id = self.UploadMediaChunked(media=image, media_category=media_type) + response_media_id = self.UploadMediaChunked(media=media, media_category=media_type) # With media message_data_value = { From b670be35c4dd9eadd16ceb686fc93b780199b866 Mon Sep 17 00:00:00 2001 From: skillyamamoto <45992480+skillyamamoto@users.noreply.github.com> Date: Wed, 19 Dec 2018 18:15:28 +0900 Subject: [PATCH 132/177] Fixed 'additional_owner' does not work properly 'TwitterApi' requires a comma-separated string, but passed an array. https://developer.twitter.com/en/docs/media/upload-media/api-reference/post-media-upload-init --- twitter/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/api.py b/twitter/api.py index 2c6437ce..48f75873 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -1278,7 +1278,7 @@ def _UploadMediaChunkedInit(self, if additional_owners and len(additional_owners) > 100: raise TwitterError({'message': 'Maximum of 100 additional owners may be specified for a Media object'}) if additional_owners: - parameters['additional_owners'] = additional_owners + parameters['additional_owners'] = ','.join(map(str,additional_owners)) if media_category: parameters['media_category'] = media_category From 8645f657745ea7f4a42a9615869efec5ef016414 Mon Sep 17 00:00:00 2001 From: Bas van Gaalen Date: Tue, 25 Dec 2018 12:23:07 +0100 Subject: [PATCH 133/177] Added _ParseAndCheckTwitter to PostDirectMessage API call --- twitter/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/api.py b/twitter/api.py index 48f75873..08d5337c 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -3061,7 +3061,7 @@ def PostDirectMessage(self, } resp = self._RequestUrl(url, 'POST', json=event) - data = resp.json() + data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) if return_json: return data From 188997834fba9660f53441e632cfa73239858bb0 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Mon, 31 Dec 2018 10:06:18 -0500 Subject: [PATCH 134/177] fix error in DM tests. update pep8 section for linter --- Makefile | 3 ++- setup.cfg | 2 +- tests/test_direct_messages.py | 28 +++++++++++----------------- twitter/api.py | 2 +- 4 files changed, 15 insertions(+), 20 deletions(-) diff --git a/Makefile b/Makefile index 40b8677b..76039c40 100644 --- a/Makefile +++ b/Makefile @@ -40,7 +40,8 @@ lint: pycodestyle --config={toxinidir}/setup.cfg twitter tests test: lint - python setup.py test + pytest -s + #python setup.py test tox: clean tox diff --git a/setup.cfg b/setup.cfg index ffcde717..1949d5c6 100644 --- a/setup.cfg +++ b/setup.cfg @@ -13,6 +13,6 @@ ignore = [flake8] ignore = E111,E124,E126,E221,E501 -[pycodestyle] +[pep8] ignore = E111,E124,E126,E221,E501 max-line-length = 100 diff --git a/tests/test_direct_messages.py b/tests/test_direct_messages.py index 4e0d5721..a477a16a 100644 --- a/tests/test_direct_messages.py +++ b/tests/test_direct_messages.py @@ -3,24 +3,15 @@ from __future__ import unicode_literals, print_function -import json -import os import re -import sys -from tempfile import NamedTemporaryFile -import unittest -try: - from unittest.mock import patch -except ImportError: - from mock import patch -import warnings import twitter import responses from responses import GET, POST -DEFAULT_URL = re.compile(r'https?://.*\.twitter.com/1\.1/.*') +DEFAULT_BASE_URL = re.compile(r'https?://api\.twitter.com/1\.1/.*') +DEFAULT_UPLOAD_URL = re.compile(r'https?://upload\.twitter.com/1\.1/.*') global api api = twitter.Api('test', 'test', 'test', 'test', tweet_mode='extended') @@ -30,7 +21,7 @@ def test_get_direct_messages(): with open('testdata/direct_messages/get_direct_messages.json') as f: resp_data = f.read() - responses.add(GET, DEFAULT_URL, body=resp_data) + responses.add(GET, DEFAULT_BASE_URL, body=resp_data) resp = api.GetDirectMessages(count=1, page=1) direct_message = resp[0] @@ -49,7 +40,7 @@ def test_get_direct_messages(): def test_get_sent_direct_messages(): with open('testdata/direct_messages/get_sent_direct_messages.json') as f: resp_data = f.read() - responses.add(GET, DEFAULT_URL, body=resp_data) + responses.add(GET, DEFAULT_BASE_URL, body=resp_data) resp = api.GetSentDirectMessages(count=1, page=1) direct_message = resp[0] @@ -61,7 +52,7 @@ def test_get_sent_direct_messages(): @responses.activate def test_post_direct_message(): with open('testdata/direct_messages/post_post_direct_message.json', 'r') as f: - responses.add(POST, DEFAULT_URL, body=f.read()) + responses.add(POST, DEFAULT_BASE_URL, body=f.read()) resp = api.PostDirectMessage(user_id='372018022', text='hello') assert isinstance(resp, twitter.DirectMessage) @@ -71,10 +62,13 @@ def test_post_direct_message(): @responses.activate def test_post_direct_message_with_media(): with open('testdata/direct_messages/post_post_direct_message.json', 'r') as f: - responses.add(POST, DEFAULT_URL, body=f.read()) + responses.add(POST, DEFAULT_BASE_URL, body=f.read()) + with open('testdata/post_upload_chunked_INIT.json') as f: + responses.add(POST, DEFAULT_UPLOAD_URL, body=f.read()) + resp = api.PostDirectMessage(user_id='372018022', text='hello', - media_file_path='testdata/media/happy.png', + media_file_path='testdata/media/happy.jpg', media_type='dm_image') assert isinstance(resp, twitter.DirectMessage) assert resp.text == 'hello' @@ -83,7 +77,7 @@ def test_post_direct_message_with_media(): @responses.activate def test_destroy_direct_message(): with open('testdata/direct_messages/post_destroy_direct_message.json', 'r') as f: - responses.add(POST, DEFAULT_URL, body=f.read()) + responses.add(POST, DEFAULT_BASE_URL, body=f.read()) resp = api.DestroyDirectMessage(message_id=855194351294656515) assert isinstance(resp, twitter.DirectMessage) diff --git a/twitter/api.py b/twitter/api.py index 08d5337c..6c1348da 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -1278,7 +1278,7 @@ def _UploadMediaChunkedInit(self, if additional_owners and len(additional_owners) > 100: raise TwitterError({'message': 'Maximum of 100 additional owners may be specified for a Media object'}) if additional_owners: - parameters['additional_owners'] = ','.join(map(str,additional_owners)) + parameters['additional_owners'] = ','.join(map(str, additional_owners)) if media_category: parameters['media_category'] = media_category From 090ff41234c5629391b0615e9bce56bc9d76a8e8 Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Mon, 31 Dec 2018 14:44:25 -0500 Subject: [PATCH 135/177] add example for getting user timeline --- examples/get_all_user_tweets.py | 55 +++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 examples/get_all_user_tweets.py diff --git a/examples/get_all_user_tweets.py b/examples/get_all_user_tweets.py new file mode 100644 index 00000000..96524250 --- /dev/null +++ b/examples/get_all_user_tweets.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +""" +Downloads all tweets from a given user. + +Uses twitter.Api.GetUserTimeline to retreive the last 3,200 tweets from a user. +Twitter doesn't allow retreiving more tweets than this through the API, so we get +as many as possible. + +t.py should contain the imported variables. +""" + +from __future__ import print_function + +import json +import sys + +import twitter +from t import ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET, CONSUMER_KEY, CONSUMER_SECRET + + +def get_tweets(api=None, screen_name=None): + timeline = api.GetUserTimeline(screen_name=screen_name, count=200) + earliest_tweet = min(timeline, key=lambda x: x.id).id + print("getting tweets before:", earliest_tweet) + + while True: + tweets = api.GetUserTimeline( + screen_name=screen_name, max_id=earliest_tweet, count=200 + ) + new_earliest = min(tweets, key=lambda x: x.id).id + + if not tweets or new_earliest == earliest_tweet: + break + else: + earliest_tweet = new_earliest + print("getting tweets before:", earliest_tweet) + timeline += tweets + + return timeline + + +if __name__ == "__main__": + api = twitter.Api( + CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET + ) + screen_name = sys.argv[1] + print(screen_name) + timeline = get_tweets(api=api, screen_name=screen_name) + + with open('examples/timeline.json', 'w+') as f: + for tweet in timeline: + f.write(json.dumps(tweet._json)) + f.write('\n') From 95c3cd5aa82986393fa36493d9a84024d8bd6ea5 Mon Sep 17 00:00:00 2001 From: Nicholas Buse Date: Thu, 3 Jan 2019 06:56:01 -0600 Subject: [PATCH 136/177] Add Report Spam endpoint to the API https://developer.twitter.com/en/docs/accounts-and-users/mute-block-report-users/api-reference/post-users-report_spam --- twitter/api.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/twitter/api.py b/twitter/api.py index 6c1348da..b1268bcf 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -2073,6 +2073,41 @@ def _BlockMute(self, return User.NewFromJsonDict(data) + def ReportSpam(self, + user_id=None, + screen_name=None, + perform_block=True): + """Report a user as spam on behalf of the authenticated user. + + Args: + user_id (int, optional) + The numerical ID of the user to report. + screen_name (str, optional): + The screen name of the user to report. + perform_block (bool, optional): + Addionally perform a block of reported users. Defaults to True. + Returns: + twitter.User: twitter.User object representing the blocked/muted user. + """ + + url = '%s/users/report_spam.json' % (self.base_url) + post_data = {} + + if user_id: + post_data['user_id'] = enf_type('user_id', int, user_id) + elif screen_name: + post_data['screen_name'] = screen_name + else: + raise TwitterError("You must specify either a user_id or screen_name") + + if perform_block: + post_data['perform_block'] = enf_type('perform_block', bool, perform_block) + + resp = self._RequestUrl(url, 'POST', data=post_data) + data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) + + return User.NewFromJsonDict(data) + def CreateBlock(self, user_id=None, screen_name=None, From db1fbc6341a891ee5a2d6c97ebd577393630c796 Mon Sep 17 00:00:00 2001 From: lpmi-13 Date: Sat, 16 Feb 2019 05:49:24 +0000 Subject: [PATCH 137/177] fix simple typos --- README.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 1a6246a7..6e7931a3 100644 --- a/README.rst +++ b/README.rst @@ -143,7 +143,7 @@ API The API is exposed via the ``twitter.Api`` class. -The python-twitter requires the use of OAuth keys for nearly all operations. As of Twitter's API v1.1, authentication is required for most, if not all, endpoints. Therefore, you will need to register an app with Twitter in order to use this library. Please see the "Getting Started" guide on https://python-twitter.readthedocs.io for a more information. +The python-twitter requires the use of OAuth keys for nearly all operations. As of Twitter's API v1.1, authentication is required for most, if not all, endpoints. Therefore, you will need to register an app with Twitter in order to use this library. Please see the "Getting Started" guide on https://python-twitter.readthedocs.io for more information. To generate an Access Token you have to pick what type of access your application requires and then do one of the following: @@ -173,7 +173,7 @@ To fetch a single user's public status messages, where ``user`` is a Twitter use >>> statuses = api.GetUserTimeline(screen_name=user) >>> print([s.text for s in statuses]) -To fetch a list a user's friends:: +To fetch a list of a user's friends:: >>> users = api.GetFriends() >>> print([u.name for u in users]) @@ -220,7 +220,7 @@ Please visit `the google group `_ Contributors ------------ -Originally two libraries by DeWitt Clinton and Mike Taylor which was then merged into python-twitter. +Originally two libraries by DeWitt Clinton and Mike Taylor which were then merged into python-twitter. Now it's a full-on open source project with many contributors over time. See AUTHORS.rst for the complete list. From 0d51325049edf8801beac79503de0db192091f10 Mon Sep 17 00:00:00 2001 From: Fitblip Date: Thu, 21 Feb 2019 16:46:48 -0500 Subject: [PATCH 138/177] Fix typing issue in `Api._ParseAndCheckTwitter` Right now whenever the twitter API returns an un-parsable response that isn't explicitly known/handled, the TwitterException sets the message parameter to a `set` type, not a `dict` type or a `str` type (which is used in some cases elsewhere). This is causing errors for me as I'm inspecting this exception for graceful error handling, and received a `set` much to my surprise! Looks to me like a copy/paste bug. I'd like to have it be a `dict`, but if you think a `str` is more appropriate that works too! Thanks for the great library :) --- twitter/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/api.py b/twitter/api.py index b1268bcf..b01a6272 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -4965,7 +4965,7 @@ def _ParseAndCheckTwitter(self, json_data): raise TwitterError({'message': "Exceeded connection limit for user"}) if "Error 401 Unauthorized" in json_data: raise TwitterError({'message': "Unauthorized"}) - raise TwitterError({'Unknown error': '{0}'.format(json_data)}) + raise TwitterError({'message': 'Unknown error': '{0}'.format(json_data)}) self._CheckForTwitterError(data) return data From 47bfb54f0413b14248692d2dcab323914eab354b Mon Sep 17 00:00:00 2001 From: Anthony Munoz Date: Tue, 5 Mar 2019 12:55:05 -0500 Subject: [PATCH 139/177] fix documentation typo and search parameters problem --- twitter/api.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index b1268bcf..53565911 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -451,7 +451,7 @@ def GetSearch(self, >>> # or: >>> api.GetSearch(geocode=("37.781157", "-122.398720", "1mi")) count (int, optional): - Number of results to return. Default is 15 and maxmimum that + Number of results to return. Default is 15 and maximum that Twitter returns is 100 irrespective of what you type in. lang (str, optional): Language for results as ISO 639-1 code. Default is None @@ -523,7 +523,7 @@ def GetSearch(self, url = "{url}?{raw_query}".format( url=url, raw_query=raw_query) - resp = self._RequestUrl(url, 'GET') + resp = self._RequestUrl(url, 'GET', data=parameters) else: resp = self._RequestUrl(url, 'GET', data=parameters) From 4711cd47935f1b85ca074c95eb09555f0e373025 Mon Sep 17 00:00:00 2001 From: Geoff Boeing Date: Sat, 9 Mar 2019 14:18:17 -0500 Subject: [PATCH 140/177] Update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d539fa58..c0557ba5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ future requests -requests_oauthlib +requests-oauthlib From b2319f757d9335903f523c302016ced124c4d4d6 Mon Sep 17 00:00:00 2001 From: Geoff Boeing Date: Sat, 9 Mar 2019 14:18:38 -0500 Subject: [PATCH 141/177] Update requirements.testing.txt --- requirements.testing.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.testing.txt b/requirements.testing.txt index a4a493ed..a71efed5 100644 --- a/requirements.testing.txt +++ b/requirements.testing.txt @@ -1,6 +1,6 @@ future requests -requests_oauthlib +requests-oauthlib responses pytest From 41253ba3d6e6df4186531183f74d69860f8ce096 Mon Sep 17 00:00:00 2001 From: sharkykh Date: Thu, 2 May 2019 00:35:44 +0300 Subject: [PATCH 142/177] Fix deprecation warnings - UserWarning: [pep8] section is deprecated. Use [pycodestyle]. - DeprecationWarning: Please use assertTrue instead. --- setup.cfg | 2 +- tests/test_filecache.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/setup.cfg b/setup.cfg index 1949d5c6..ffcde717 100644 --- a/setup.cfg +++ b/setup.cfg @@ -13,6 +13,6 @@ ignore = [flake8] ignore = E111,E124,E126,E221,E501 -[pep8] +[pycodestyle] ignore = E111,E124,E126,E221,E501 max-line-length = 100 diff --git a/tests/test_filecache.py b/tests/test_filecache.py index 5e3d19c2..36d5d4a5 100644 --- a/tests/test_filecache.py +++ b/tests/test_filecache.py @@ -7,7 +7,7 @@ class FileCacheTest(unittest.TestCase): def testInit(self): """Test the twitter._FileCache constructor""" cache = twitter._FileCache() - self.assert_(cache is not None, 'cache is None') + self.assertTrue(cache is not None, 'cache is None') def testSet(self): """Test the twitter._FileCache.Set method""" @@ -38,6 +38,6 @@ def testGetCachedTime(self): cache.Set("foo", 'Hello World!') cached_time = cache.GetCachedTime("foo") delta = cached_time - now - self.assert_(delta <= 1, - 'Cached time differs from clock time by more than 1 second.') + self.assertTrue(delta <= 1, + 'Cached time differs from clock time by more than 1 second.') cache.Remove("foo") From 61257c0a61fedac5ea332b473efb2cbcf75976cd Mon Sep 17 00:00:00 2001 From: sharkykh Date: Thu, 2 May 2019 01:08:45 +0300 Subject: [PATCH 143/177] Remove `future` dependency --- requirements.docs.txt | 1 - requirements.testing.txt | 1 - requirements.txt | 1 - setup.py | 2 +- 4 files changed, 1 insertion(+), 4 deletions(-) diff --git a/requirements.docs.txt b/requirements.docs.txt index d721b239..b6ef910d 100644 --- a/requirements.docs.txt +++ b/requirements.docs.txt @@ -1,4 +1,3 @@ -future requests requests-oauthlib sphinx diff --git a/requirements.testing.txt b/requirements.testing.txt index a71efed5..56c660d0 100644 --- a/requirements.testing.txt +++ b/requirements.testing.txt @@ -1,4 +1,3 @@ -future requests requests-oauthlib responses diff --git a/requirements.txt b/requirements.txt index c0557ba5..cbbb9376 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,2 @@ -future requests requests-oauthlib diff --git a/setup.py b/setup.py index 99635fee..1a0a4120 100755 --- a/setup.py +++ b/setup.py @@ -56,7 +56,7 @@ def extract_metaitem(meta): download_url=extract_metaitem('download_url'), packages=find_packages(exclude=('tests', 'docs')), platforms=['Any'], - install_requires=['future', 'requests', 'requests-oauthlib'], + install_requires=['requests', 'requests-oauthlib'], setup_requires=['pytest-runner'], tests_require=['pytest'], keywords='twitter api', From d06a698773f5b8e520f8be954c83b2ec2ed13c8a Mon Sep 17 00:00:00 2001 From: Jeremy Low Date: Thu, 6 Jun 2019 07:13:30 -0400 Subject: [PATCH 144/177] change default tweet mode to extended --- twitter/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/api.py b/twitter/api.py index b1268bcf..f1b7fb15 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -161,7 +161,7 @@ def __init__(self, debugHTTP=False, timeout=None, sleep_on_rate_limit=False, - tweet_mode='compat', + tweet_mode='extended', proxies=None): """Instantiate a new twitter.Api object. From 0bfc7796646ca9c58f5c192155a365ac0a579196 Mon Sep 17 00:00:00 2001 From: Cristiana S Parada Date: Thu, 13 Jun 2019 11:24:27 -0300 Subject: [PATCH 145/177] new screens from twitter dev new screenshots and instructions according to current twitter dev screens. --- doc/getting_started.rst | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/doc/getting_started.rst b/doc/getting_started.rst index 40716d4f..bcc535e8 100644 --- a/doc/getting_started.rst +++ b/doc/getting_started.rst @@ -26,15 +26,21 @@ _________ Once your app is created, you'll be directed to a new page showing you some information about it. -.. image:: python-twitter-app-creation-part2.png +.. image:: python-twitter-app-creation-part2-new.png Your Keys _________ -Click on the "Keys and Access Tokens" tab on the top there, just under the green notification in the image above. +Click on the "Keys and Access Tokens" tab on the top. -.. image:: python-twitter-app-creation-part3.png +.. image:: python-twitter-app-creation-part3-new.png + + +Under the "Access token & access token secret" option, click on the "create" button to generate a new access token and token secret. + +.. image:: python-twitter-app-creation-part3-1-new.png + At this point, you can test out your application using the keys under "Your Application Tokens". The ``twitter.Api()`` object can be created as follows:: From ceb229bf330f182799c3ce9118a18e9cf30bce1a Mon Sep 17 00:00:00 2001 From: Cristiana S Parada Date: Thu, 13 Jun 2019 11:27:11 -0300 Subject: [PATCH 146/177] new screenshots new screenshots from twitter dev pages --- doc/python-twitter-app-creation-part2-new.png | Bin 0 -> 33655 bytes doc/python-twitter-app-creation-part3-1-new.png | Bin 0 -> 18861 bytes doc/python-twitter-app-creation-part3-new.png | Bin 0 -> 16921 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/python-twitter-app-creation-part2-new.png create mode 100644 doc/python-twitter-app-creation-part3-1-new.png create mode 100644 doc/python-twitter-app-creation-part3-new.png diff --git a/doc/python-twitter-app-creation-part2-new.png b/doc/python-twitter-app-creation-part2-new.png new file mode 100644 index 0000000000000000000000000000000000000000..f88e18b76e3267d3c6f933ad85dc7218b01b54ba GIT binary patch literal 33655 zcmd43XIN8f*Di{RB3)%6AR?jy3Q`mS0U-h+(nM;c21G(H(p$iV2r6xVxcTho404InBljOk1G3IjLqz4( zSBt?$xs30BKlNHOk~^3FjZ65OF*Y{#r_j|0ci+?hbYokgg`)Q@WLzH0kfWZfjZ!8g zp;QRE9{Q_a6NfX0^GY)UgJpR4m5qKpSB7^dgxHR+FCLve1zcY9o(Cqtz;N|(g!J+C z-TD9AYrW6sh|QV7Q5^Uh_BdSO%q7?8{|o|g1j+()J9=h z$8O_?MsJupy$P!iiKMA}G{e}#HqJl+@Y1nl1B_Ts;H6r7hi- zQT%(;VjyJx&-LTgiLw6rdZDLBpU$~I;gMgUKT)!#=|uH;Wr%Cp>V&rUX~P!LYr)ip zV)%~9e$!6x7iaQ};98!#B&(PUg!+-wFVUC04x-mZ9-%C|ky3(VVU+300xT%|*U!MT zReZ9&xTICG&(=P7&`$Xe!#U)(IhD$?8jK6nOrKB7k>h#cn%JeAZb^A}SVMcZ+1G5P zVg#a1BFW9uJ*`kd{h4XZkTKcY+t}%`n{eUanG;27N}#3AhtqaLev1ZgDSx3tNV>|T z@b_uLGv*tU<R+hE#5wAEbWtW=(vc`DHANw(`PLIYtUI zUktJ!R4!&OUZMp(I*m>Fh%%&zxt6k;ldSQgWw}el=kWvE+|8_=U zE^Tqwdgvd1oNSCe z9K^$4zx`R0-im=|&k-=EFLPa0QBfDXYow2|Rg3mWzn9GgGhAlpiqx$tMbvs#jAf-h zBibuDclP3!lkRi!YwMnSWsU2gKI+BJ5A=%ZcLEQ-5oda>cd6JJJ?QNKICHRt(Mfc2>d z;28$}OwfM{D?3TzleLXYyh65_ ziRYitdrkese73CG{d~9L8I`2&6I}<;LMezH(w){Ekh0JGP;B#4!3NCMfX-T&{X_j3 zu?!dg;ji2CaI-wl^R_ALVHg4VV%I~L1!G54aGvYiTaFgA(Au^rcOs^Ul3OaK9C#$q zVEv{vW3hH2N4K9VQ>lBtl=o83IRG}sBB~}PCD-%Yb>UH_0w|!A? z$+wBso>n-Gku$fZ?GAd4x}I%ZsjF078vWS73Jk8%uv31#fMBI)I}{vFM3p)JIc@{g<@REjbWQth!%irBiuRrMS!lw#J#z zzY%t0zH}y0e1Cc=+2F*k)wV0RK??I2e$!UEDYQ@}i&c&mTHPQCcW-p}h{iWl(oyr= zKA&Ay8b~Iw<=RF~FOrzA6EpA9SNyzdh^Q**@ulYN#PTVtq9JT>Iiab!XOt%^suj{_ zS|nN0?!WHB>x~;;-*X^lN;P;OEB)(M*=3a2EQmpuKQKxlL(83Xe!;$p*H%_P4~a#S z2L0SxvhjrAbfXX$Fw55?$h-QQx5YzFzMz#v1*%J=KV0Bq;YkV=vpq0I{kRp8Jo1$j z_+49_^k8DusxWE$U9ZdEr;Oq8jb&|K;1z?ehw*>O-u>HJa-WJ6%-VsY_ag;Qi9BA8 zmM7miZXNvZ*13zU1AS-yxwFaDE8To|+`IJ1O5CxoWVmxJ;`k6ej5!N{4hDvE*VX$Qm4*b2 z<(ozo6(%Q=yK!qexPu(>?B37>nFmUi@)MWc)5zeZg2usm6cl+#io$n3)NK6@$SMhh zM;~ZX$A{X_3Q#n?=Lq$EoSl%Z>Yc2wvku-jx@*`O7*aMxz-QM{#g&v1QHmrRSIAFK zYti|=JoV7N8F6(Z*vh zc2f_d#JQoMG7;|>587do$r7H;<2Du$iq(o2ZQF}rWeZ>Dm8_gEtW0&Qjdi<5@+-B( zbbXSUiNDooD+avsy&-(8$$z1qOyRDLvNpXjh0gMX7H>p*n>cinIa^Db7Z(a@b}L8T zZ?)v3dXz@+OZ7T8)2pr+zq6&@)4b?LqdHy-jFj zP)lwlty2e19uFIb(C6Jko62u9w)cDWEmLbze^?EfYWCMrU(hH;{_CZnAlc_lqlDU( zzHNO$x<$Pog?TP_h}Og&jAH*clpq~F-L)rk?i(mMi(BHJ@GzEj$X!CQ=XeG#{O*87 z_OKQ%VQw|Wf|#h@p4KLb4JpLac!!||r;p?KWCh{DK<)P}m_u*ywhDY3#xluVS)b)p zsehmlZK)%HG7{Vfy>*bWRFOj`9Im2PC^h#>JmyIY9i-j?qjtF_*nvsMhF6x$Sftq4 z8O-usYy=)aj)fIk#>~MMAOxgL%wet8e_*)v((q@gi+)-mJCSC+A-^9N@T9f*9<`u& z4lgQ?-|dNz8&OsgKY ztTd+?M@+ENl%`gpK$I&(?VtVb@)M_?k4HP#3w4K_ck6x2PdPmk!dDNmL=%(A>-wou z10ZsR;d|VegZKc?b{2IO7D!zkay@7=LVrHUF?Zwry`Btz9I}VX4&NE56xQPnGQm+y zZ5yiXA@}-dD^F#JpHN%Pm(%1z`T!mG=PgUqj$BZ`L@gxEEv4o}d#Gx|8185$?4Dbw zR{7Vtaoyr~XR2)Y!^%LFGLYdh=U6}3(Ko>ZMEWkx0}2tj%Hcm~WQKF%&vl<{(dM$$ zW%%3_S0MgU&XdPF3l%6hWTlfz`r+U2N0cd~@l2R(_wiicQE6ItePdh_c=`x0e?*uf z)hd}xCDzlS)X>dFCm212s`2MscLV13_17mDr1$kQ&n+Xbg&tBdsUE5_dqOhSv%G0(2u~A-JjxKE_i53%E;JQS)iO?HIHAmjm zF4%dRGOTU~@q-m%74|OJ%XRqBuuk!#9lAd~xr?%+D&pGtQ=>h3f2BsKwX7m*nwaLf zf_kKhbuE(M>SYOcXpBwW+7xGjE5eHOv58;cfqt!la1Nw%+;&D$S{CgMTCfZonFt!! zj2H0Ua=^vYO0zsLL3%~rm>G1#d6V7c)G%s&8QVMt9w?t4w&Bp<^5~E>w?Y4%m7K+6 zax`6XRF#x!_ZI!YlO>M7IL$#tl*q$~lg7XLy6F$#dGKc~u8#1lH(;&e7b51H^E(&G z5_M|3bMmu>u3%NjQjK~E1?h_E@Mz6BV`Vp4&0V`NF~@I=@A%8VK=8iTL~)Cb9;8eL z@`MRoO5op)vAHv9vRwY|5|E0<5cUd)?+jpzxF8J0Hw?S{j|LaKg$w{Q{;-ANWH^U!A%`N~kc3 zN`%#R$kM|()x=KnDv0uW8RJXZOJM+~Q)*!8pTahg{@m+f({2{~A34(*{LNE8MkMC0 zY2Ze9SWmq$L+vD%b{~j=RV_Rww|E$bJkyi+K3AReB1Bz3Yoea9>r;KRSZ=9QS4w<; zXi>mAJj#8lA}+9CIdB0_^4V@;6}M~0d+;KHU3j+v^PM1nOYJ#5hqYpd+wYbSfMgR3 z!zJHSx0-t}*kB~elK;W8>wuU~{%mrVfn>9Yxe3+YZcHW!G;m@kwj(U0EwZR?V}$@{ z8C3C_Z}`5k`0N}x@}f$G$`t-HW@sFj5McAom^eZSm&!y$W59GX5z8qjobr&L48^P} zbAKfMAh-&U#i1V1H5Eeh^ZgRg&9aDyKYM-6DAnZLzTUehdd>)g?OBkIlB#buf(J~c z2rv*LcckwAiYc)Gz0LXaCdxtl!UOcNvmOZ`_Ki-*>WNXNrsq28;JcwlD|lUAyC_uYXIw{5#6P z5F^!m{Uq?@|1jYBkD;l&4<|a~Pkrt#q2X2%!4M3R=byku+czs2m%@4fKE3AF9p%uc zA!lt3VA5k_`5}1Uv*H%UtSkzi2PXS}aAABxP>6(au#ff7b&G5r( zYU>kGsetOvC$GjUB7i;pkpX~oulwxLMo+soB>roQ|6lw17_%~oy!9D+H8F8}&j^^w z&B^^c`ZG8GftFP@t@Omij$)))^-+^PKn1`vZ5a zvz__s$D4X{qvSKsp8OCh57HW_ieDC1Bkc!z? zfHvu>n%gh*Vql&2&d|2vVzzya3C#W)uO(2@DNe&9iG^m@Ioi)}-F~B4;qwKD7s1IY3N`N7?NPn$5G9n9DhC&v~A6+Fr zz{w>v&3I?BoV9(Os8Uu=tcNyj>WBjQS*qH8Oo~Nr`j{{w;v!_Yfw5z3XF~F zV>dLNNqMPx_Eb!j_|GI0U+vk?#;tr(6T-h8*VR=R%_Ov&&n3vu?!0E!tLL9sD5`U_ zd&%EW1)!{PN^Pm@+Y zO&N^+Y9{UbZ+NNdVL5mrzAPkJOd}?<*AUR;xM^Sgt+9&@H--;4uD+hw+GHWtqo)UO zK@Wp|_#~UV`D+PJ%-AO>J6^J!$nKd9C7hGoGKJ=wlv^qh9jy|xm>3u;oB=s4x^ypF z5JZWDqq*6#j;gb)x|g@mIh@q(maMdZWdBVtlN#?iz&s|3Vy(Ix>q~+?izY)%kUxySnW8P_+b0g0A`|`ygxlFyAb)OOVAoSUaKRO8xMLSe9gbJs zbB%C7pDPP_OE?3g1%bv6MvL%k@53BQZ7^$#wGJ!0_HYLS2ns{MqngO2{M49XO68al z>1|?tb<+j>6+j6TwyqeRkLLE*dXVF8)TZ9Vhd z*`w4AT^Yk|G7)K7#KZ!3kO;arskwWK;dOP;ddCvuM;6$T-C^5)7h0xPMFqoH8BOK~ z3n*0*_PN{P3i$m)(fN`1A;>7#_2Ntz^)D;`NK~ENg)UbH3*Xpfw6CgC)|FuUjh#X2 z+QYMek?_-CQ;!ks*o@c^-TMUF_nIi#&MY73s~?wOW^0&b*-{uo)T4s9P3KSQfKShH zdQ-gAf2+%MFnMP@^VNIV>CPkd441$M}jCcRg01g7m(Z5T6|1eAzq9f+8^0r?A zHYNe8EDD9Cs^ZzXW@r{S-bs98s;Z=~NWga4(ew8-&UWr4t$%2IJ~2YcfhU#DgQGY! zuDq+Z56d5Yxm6$rf6Cr4TjKnz&z-{9{gAo|LtR*!aO<68l6$VUp2m_aK@I1O>CT45 zhL^V}KZ8#JdbUClGbC1FZ1px*)phCMbd}bt&CX(8>7)D7xAKGIN-Ll_Ss$Wc2}szd zA4ybEoim9GNx&J7Dbf$6mstn6xyBdch!pu^GLP!%+b^>s55O46vwady&ZwOVd9ORX zF+9&j{0{jdyN*4?+}!OlbK{WXPvx&1fxrSHpB^0vP`4JJoj_8S`GVF+cydXf{CS*2 z$=|O2=YBwyhPvL)1y+so`@u5j(0UIh{q@rFfa%Y2L*GkSz3LZ_IG1m3cO%K^>Wf@$ zWqnGd(o=s&<5ON<%c4#7V*ZASz_FJR`P4C*Th@Llg7#hi3H&*@UX*D7kue*8`Iy8{E zXsq_HXXy^$#we3n3uPDWx$DrOubH2f<%8plnE#o{Nmu_?Q=IavyHR(re!(0>%R)n* zuA5g3;8Hc2=TQaO_)+m(-pDME`Zgq!bm=?Mp3VnNw-#pb9}L{%y`U z9>|A`cUwsj(z=R&o5dI&+EZTX6E$=C>q?;eDS~l(WMTEyiI1CQf>P!9C&@vCZ@=vn zy}AdQy#`b4E|V6|E6?>9PxY2LHGn|1dcnV1vU=S>M@@hcw*hq9YxmJ8m0H6r)~H^v zCT~}yX>FOQZ0M15;=w~&ODP%V2rOb7x5n91A0)~q;0l$?aPWw>*)xf?2_w)!;@zT5 zj6dzGXgufDo6=_p#bt~)mRn&yQR%59;|xpkwEpvI=Xm2{mKopPp%%7= z!PJc&?P~mkMj&v)z^kmr`%LYpAJ-FWnd>5q%0ZD@*=jgt4x*k_e3&f7;8WZPLGH+FB1dm~Zk_$JXmH&fMBnrledC{AZ@jpT*-F zR)_HMN^MEb+rxVJOu^hw36*jJ_xBN5q64keILn6awBG5Uxyx6BwVQ*dPl7Q0Xi96^ zdXMIHO7xEa++lkuT#TDdofW@As67-r&f9dyoja3Yqdus&DWsr5iiQ<-!K{0bJ~zM; zlx%p^!JAFlK2zsZ>)Wq}Qa45&!=D9YaL)e1r=OD}-4)Zve^6gE`=X53jNQ(x;+*^G zkYHaL=C3t3!V~~BZF3v2P3J8p6mzwC5EmMBq}X=KewBCRX8NNu?6x}xa07M}H~0!e*ynxxEq z8%=CAUuxc%?w#1}{q}Td#M@TB%VNHCO~Jd)_4i4VO`HW!y6?vIH4p22`v$VxeD!)O zBrDoSv~H&-wO|eF@yT5t`^}Y-7RatI-%$BONN}k2Qa@^+NOIns{T6h7WS=F@WlKDo zpoE<(n8&&dpx!XW{}OZbOGgfsP^Te%exF+QPl@k;|BXBXhRXE;G|3jj5LU(q+$_EY zZh$L;(dGYK=I`GQ!G8^t{-?k0ZWmT!I}l1ac6bti9OmQpmt`mMdOyjlF3EfP)6wK4 z0c+Hc?u`e?+wcGj;77Xp5z;n{uCJRNX@R@BdkAJQ;-{=lWW&Idz7m#=Z-e7FY))7b zKW-AdkTkvFda)Ke<+hQNMJUv5pmmued4ZBAPSe!f2p#QG{WV5AzcFk5inh{ps{Ug3Zl7mLr*C9t6ag+CzxK()`$)G#fFhjh<{bt-j z>$yJdY;RJy9R}{M58R_PU2U~LnVeOg3T0}rmd~y}=rQvw%-%LV+3!p3|}W zc0=Pmq`}^V*p+zQp_E(YGL$+BqNl2-rYFYzZW*d`&5^W-okn+Ger-zPpwgXk;0Tq0v&-L!97nknb5QX zR>PiBC~oUa&%yrT3IG0|nlqfj6kTlrZMd(0ZL0G~j^&-(WiMo%TVWE#j_mcf;f)tA zmNci@!qT&_lPT$7g-U~9$}C~_Xn*W=KjaQ*W zDunEiW;ZY_z8nz0&*Zk9o{UFcn-onJ&pCu!+bsjY)=~!IKZAigOWctXXcZ+G+Z5Zs z$#~Z77d+cysq=>KDgMukyB>!7Bu0UY$rWN1-?Vh#8+UOkz&`#0JgrVzc_nOGN72tc zvh?xvLdW5cPznAIvvprQx;K38M_Br+%U>w-?{i)C*!&CS+ptH^kfKgz*kE^|)9KJg zThr}>V9GWJvYg$%XFel`7;3>TBNKVfN8{dtlX|%rep)Q?iv{oNZav6jP3o~Ub~6dF zjb+9@AR6patiR+m;MmnZ>R2T)YhzOQ1f_-G3rQ#DoU@=SNlb4x+<9-vDy2|UZ0$M- zE+6-pOh&g_z~;*OWKgKZ%&Q_ZqRQ%bPAx&CL7H8|ot{?|>3O+72^4hd!pw`Lg!6tH zvjujj;Ouo%$D}`ev|K?s$pja26(TKJqIB)=W%>%hUeu!kiQmzb1XH&H8Hx zb^|i~2R;2epfstu`$o-^Y?zd+s%dCdVx@kHCxX_H4`~sy@;HgH^zQ#~!rQ0T>g{xB zg;@`x9q|=WlE25Lx>Q=INdMLGNwq{ni}EaHLgcdBJm86Rj6Cc6AYA7j-&)z{VRr_w zR?T{f2&Izp(l>$M-L&fc+{9LDfUMT*QD6uuJ{4Vp78+HIUM(L^7YUfo zVpF1-G9gQsYQ1a<>YCt;0*ox8cFJNwNBbt zY6Q6;!~e1mbDo#&6vr1hgt^fNlgIbt_UI)a=Vg$&uIFk=!R1dm zS7QAO8U~06R#)&ZY&H5@Dgc_)SQ@*cV52HIs{&mt>@BsTTpJ$x zx`Nl&=_;?Q^xd3(l?QfTTlkvY*@pT8ummFgXhOJ^viW+xUjM~CO6yA^pWmB0?nY97 z^RJohKi4H!!qQw$rs6Ih%N#4v`aF|+N`c3ub)HA458@IWx^ju$&>XIv$o_(OrQ*cE zJ=HZj)q`j5`i7>`SfMZAc!b(w(w0&=pSjubHYIHh-+c0${Lg zw68_j&LF#w{+N|6RrA(6AWun*)>kmvj~N_XFz$49bY4dnS6)VD(|^yr9<)Ata`G8r zCmDBTI62;GJXW$L71l(Lmfo#Mzhe`p+*yCDIhc>f%LUnI=!`6=_G zmYCx*_EmC6f7jP&Zn7=?wVWT2G?T)fUYd5>prMFI!piiZZU6S!ivE*I5p(C=uGRMR zqhR0b+XsO_aoafHS;hG4?HsO$!N3wygX8IP5{JX~QLG}uR!T-`!Fq2mU^rLk)+RY< z`u6Se4EauKY}E@n^;U1y-V9mWjg`~XhGeO=-066BYxgWaoV)a`{+1b0VU%s$VLcCY ztulDt*NyMJD`_lftuc$2$4o%MtN$qY^yRHfMi#-%Q7-zGndEj=7#{L?dQ+yyr>jBK zC2oW(CN8|mbgtFC4F3dtxDlVenDKitS;$|&3v(yzNVR)4Wr_V2!Qc{&dYZw;`FO2s zKlae(Dv}2WMlH6cC+}2?Z+tEG}A}`|ak?h3xoAfPn{Nf)D)R<2k{1)HTw$cQ6 z2c;iQkfJ`m{(k*$Fu6$48;9m0Ag!h4L*SKx6~R+7yHbrs4#tkO{ZTSJ)jTPsBvAfI z?Z&AGM~WV)zxGPy&+LT($Bo{z8m$5%5FYRoauX~EJx`oP3*%o@*CvL<^ z#HZbvYZCXd$L>izVbTUse)~z~dXo{)>|VLxbG{I#hKcjLpQv9e_Yqc}eU$wsdsf2p zh;q-2iJGr|C_Z{JJ~6Oo5Unamj$yxqSlbgnt&wB~r%eHfuAZV2Y@KT4(Jb6#_juaZ z-TLL^(AHuz7E~-79i3U(t>T{)`OOUw`%PB^GVBZ0v^^m=h|^ zy0Uk@`uZ%H`~}1dHh+@3W$^sgZ??(HB*=0aXJG8|3PCCt?=~buR=BmBdh_5Y=0^+R z9^iic(hh03%pt_~c`)%nwHkC9FUjF(ggH$;;Fht4_NT~>&6V0CFU;uP>&!2&O%}5h zT8~T}9jNWc=*YNdB^|&I=iM5zoI1uWxn?B)cwnQF+}&@}^9GYD11)~B%x2YmE&>$~ z9vmK=F-x=SnDcCsAZbj8lqioXV?u;DP~9_9vr_%cXh*D6hp6wEXn(Q~1pw{Xu=gAt z9p2ty4L5y$p)E<51I;UOR=m6{_(W_&YFIvm^@F&x?b%=nHsR3FkKuMH=Z5DcBx)%V zXIT#YmOHvoG^u5n0&Ej%XmyAf2Lu9q)N&h+^&h2&lSYJ(0 zsNBH_J-~gFy?L=!M8i$&5XDm`cL&i?|0VQHZnlb1Y%m=X^0QcipYMt!h8lPO{!-BJQI;*GBmkfL6EkXkh|G<2>lLl zIfD_Fn%&l|DtJlyS4HCoQq3N#lWU$hW(jGYj-e~A3zxsZh^u!=x48utCpDU}@uWR; zi46LFF`yIBq1!EY9R`<%6nad}!hJb1y!KJQUll^&k{lP`>}PxtXd>q9_C5%H21^t^ znPNb0>4ij%h`EmqZ&7UCb3PgjUJzKGQ(hM>%K>r8ZJ)+-oA!2ZwE%YaIEdwdWC%S- zN}XxSSEHkYp=;jDtV^5mgX5nppeZ)LK7V93LZs)gn{TBoxY5&)@qKS4cIlF?sjqe~ zJ-9HU&o3hmO<|BzN4hwy(oJEp3X`{~a~He`r2fk&{#@Uq{JTY=OXwe0#=VQI!5-7& zTv5|$!L@<{lP6(2GC(wjNt2Y#!6gZXK?_uPINrcT5iGlKc*l}piuTD96Ia*Mx^5S=c!xZvVmMdxkW->|_`0!1RIL(nYDP)%ax508XtyBWLqNBZc! zoE08Y{9Jx*(NXe|H+s^$$#bl<=&lH{(YZ6w-ufG8qyqoVX_e>&A@QsfdP`k2DgA&? z9k!b}PYC{F@Z~@fvjnA!NtWdLn~SLX$9?a+^!#?2p1p98^}y_|;;6FmX?)qBby#%e zObWu@+TYF;0ebMXlDP~|J-9h*e#<^G;AAcs5sR?Mx4zA%sN-QoQ;aeFO{<-&ObWsE zS>?Hk(0?SmlA;xrI>s?qoEJ81rEN1-&2zf*W9aA+P@9Jg51omKvL zx+57@ys(a!S}g@Iz<$F<=SA1lUX>B)M$LYxIHjK>y?nM*pn5l)haR6Qr{s;D@+H*q zg{^MzkqH7s=4kGkArh~_>Hbv{()aZ}rLFi3dPc-NZ3(@aNCIo21C35qDpwZ8+wWCM zWg6LUXzr_8ygeAG+%IGn)29{h4wvu(M-35v&2edepafjfhimDm9uGARW%0Mk#Dr0x`vdHk*YriCSHFjxHvB*#q; zT9hG(Vn2+)x_@%Nx9g#|GWs2Vd z$E|)_wF$L;g(Orv;43D?mqYMu&WpEN4>J#g=t`;-l>>|2eIi<5Tn61_E!ZOAHK&t_ zq4YtbW)BA^_|bLveV2hoBz)T(vIfS~4z1(n@Ai;4kgP=dPAuyg^w#pO(dMPrAOmtk z*6ED^r{xVe#8pZ+bx7-%%pDSOmUn&?qT?xHt%@45iy$aA4NiR^G z&6RO&`R6eMpLqu2ACo*J*V?lX{nA4i*$sI7DR&Q|_pO7k1G?Z#ZdhA!1Z2fDVk23-S5H0E1WFkepz z+((ZE#HW(7Lf1dhHuGfmOlmjTF@s(d5w@f6 zDGl6+@cqfJC#Wmqr>UJ%OmzoIC#Zn~t^;38axgf7VL^chMfBg@Y&h!hkG^|sD z+KJA}ORp#yo@PBoemoTDi#E@pFExnmtzsRTimt}BuwDaDXvH65wrwWgB8B-ICkN4w zapVKpnVp>J=Jp8j^qg7F;fHUR`_ppPb*q})yV*$oD1w!pU#eA)N`PHo?zB4=Cr_!O zTszL;>q3k>q*ryjJjB(AQNn3iguJzQ^eY2&$Zqa@fc$|$O^!=@tW5nd8|G2yfI*7{ z(6`9^qmYIh!2D9boimN2-eL*+%XRptsTAN9fB$pyUE2+N_2i8gj!Y+yX`Ye)q)Ps) zr5FDn1z_8N%;cf~Ji{S!!wKZk@{81pl32&5Ho3(@t&fxK$3f(ji-4_}@P96_5gLNE z^(Bw|o~&MYFOKj4-sy5gNVk1c`D_^V$$4(hwb0z>CYVjfC8|75Rt^Za`7XM#teL4x zh}-HJ?n80kKP4ib2oJI=!Jdo1VykuSA$mSA*V`<#^kAOaO?z@Ys#%Je1W4IEK$ zOiJKas|%QZ%ok!k++3$$M{|o=iJRBith#xqbb=7JzV=0N#X-Y&h6TLw*!N)da#)NK z&y4}JmI=H`?IOtlHL)^mX@?gz}dg-V=>?ekWFW24oKo0g3Q7lQ+P(l7tV9Iz1iR zKbsG^egE&#rE9CuV*3JP*<$;Kaz~8}#f9)}EJ7+TuYLAosd)uCm&MuvdyZ5D48x`a z2sE`8WStd*$WCZ8dTXD#WWlF1!(?6N{%WGIgJtYlpSI4u2S1yIm&Xr-M@-YHA;N}2 z{C9%&Q_Hgt5mWG)=YGJ(ycYkPhTE3^*QP>6bK2X`HSJpc%a*0(2t!1Xkl;A5A;+EF zeMdstzy61j)b&oASLDn41GnQ)exb-e1S09L|8cSYY^b5}RuJes#qz9e+r5{k`d$$<@( zu^JxCbviyWm(_T)6Vl8JlEy?Q!kTr;m0k3HXgOMqz3_dosQwgZ>pOnWX|71VBrL2J z2>X_V>A$()p2I93)aB}ez@eY(;SfTDk@@DnHwJ>-(UiKEo$4Q}OoGzY3fY5ogD3Ba z+fN2(OXjSlT@>&tE%bFv9|!0N<t?g)k zwQyqP134>Sv#&<@6n{*wAe=(2Q`GMQT~Ox;Y-w-56=CTcdvfZEHpp| zEX(A!-uDDaN^J{x{-yA3YUWpX#f~^22|wVE&z|aqk9|l>;2_%jO4mOZ@3pUb^%BX; zF|9Ge)H&$zw3wW!$i=HyrGpil^V&Rhyw5iPHDh?_9;Lnho4wa}!=l-_S`kI<;#G@d z_Dr|fbKF#^vH=`5%J;iTDvn6W8Qb{D#4^_baJ|!3-mO}x+6M*_zI7ZX1^i{XxgGJx z0(lJxKnvIBlY}6Dnu~A5GhVd_oS7^qOFdGH`vTsxi8BNm+Bzk(o;b7hZhG_M9IgHG zLLIZU?aewjCn>JY57^Zr97z=C8x1rjeMjsJ8;C=fWi@jVUTU^dB$)+Me6h@GfASL* zX#x3Y?!~!~a;Z2nR)GGU5r_})ZEYo8R|V27-$B+WxdQU6x)QMYulqEG0oU-+5#j|r z=YpKykti2nn&1A5#rNv}nJ_C93WjiX9 zIZOt{FZ<QIJO=? z(R$zgL^eg{a;#l^J#Z8=cAnlG+te&?)~kq(m%VXx9Fo(Oi;&KKlDlxezT%^zVH9_F zRk*X6orN^IQg6L8aQ9L@Kxc!yTG%Z#1GE+nrO~&5I;HN%9&UtdTbe5^mrs}~HM_aB zqr6U3XS07iTnPFIGgJnK(x?cyAgUMO6?deLsWO4pLbsX*z`f0WB`8>48aAkoB+fta zu{3*Qq#15Ar@?PHQv)i7?{7It2k**ldGB5+-W~h;DZX*3WMFi1LN0q^_0KU%-B-z4 z>|@eW%3r1~GgZgrD7y_0)1Jtg@QMThSv_c$m1^ zpk?#s<$Ea^8tn>3_ojSebK`#{@>^(IZMCLh8l{`fU1UPLtx*ARDTV-~@eBC|9 z=T$&=DjrWmgJV1P2M)-HqoirXl^Ou%xex&ytpkJ zau;JBT4Dl!_3%*@Vg>_fmM0iI_k|*CgG#aav@y|vDt(Jd!ss1&6mU>p@DeX=I6dpo ze|kno@Igt>CCS>apSN31Ftq&wc2ry2Me{jdANBD(jR-QAs9i6cm?XxU->ZBy(Q5)4 z)xa`NME-OhB_rsyd#KFs;I&+C7Np*Nka_v5iCV-cmhl7D^7+Wk;;U~b(yKaNimR7e zj92GO3hYAk_%FIWaawowF593z^b-gp%!c+8*Bcs6V{#gsZIci8^SGb*Us?TD<4NCC zmR?U(eEMk8^34(De4rHd4k7TOy9ddlw2*jFc;JEm+_l7do50_4kN0K?HHH)Ex$74t zhkng>9#O2eQDkq#?ink5#*ZL^FZPg{&>}bD@)syG5q&W>s0A~0FW2qX(PeIkI6d>A zKp3PR`d}7?LBrLUrs4G3;^^ zhrI@IWAHlWF(3?bXBL~hecZ0h4g$UU(*j1^blzLjR~pYxL-sE52+9PxAG(<3|7bq# z)~kml$#~7FHLW}RVTnJfK@lTed8C24b#PmwBGIbomxHKrK>6bxKC$TvRZPM7Q23m~ zFW3nNn+&Vett9ol3updVS1RM6TZEFZ{uW3ZOOhFBr-vM+iX+k+_VPdP6kg&%#0>%i8So7B5#bL9>U{)8?D|Dr_kjH_*RJwq)V^u2`4v4Uny=b5erP&_3&nKM@;pc%DGs>@1(1(M$tj(0K4zw zF!-t3Ix)o;EZ}#-X$tZn=7)^&W-UOD47H}ODhqcuxAs)hZMo$2ERJgmQvl-e!)hP} z?}RJv0gA5bAZLxzqe?Rw75jO{w#Du64f5LGmsBU(VNNi$_@aw0UvJ8!lq1yU zQSK@tnVHYe?AHk{M05f2DFU131nkS)p?k*lgHNtV!$?e1lmDyy3rXXj=A({6C$%Yg z+@GM|O|B0-OE-jJp6S=>I?i>DkVfmihoquG{!|W~Che3~4pmCDI7mlumM6piJ2B?r zh_Cp7pEp}2PQ7>hm$>a|OyEuX`8SW$jZjpkgwhD%OIHkB^r!Tsz4}*98JUWYa?2Qp zlt&)2CAwiU!-u?Rqk5M0{NJ<2ER)Dc-YU{za`@h(`H8E%wTk>H@>g$)tOywKO z4|=6`$0Ghlq6HPPt?v58L7ZWa0W%yE|BpF*XZFmX)I{?xeHbABG3W~Z9sNlA8*o+x z{i}ra0{}sQm;b-0-}ny~%SNu21K6(oyjM(V zsq}g1JJZ~JcjdKG$EFVn=Z%YxLcr7y#vQJSZobhL9_wpIv~X<`pY%Q-O2|Zdvh;HR zG1~k*W{=D@U3H>un07}L4xSP@m)d3mv4grPl|AK3;c$~#1ibx5_o%;PA7HCvK1Uoo z=Tb+K34L1&An@P)Q?#JaqsXeEZJAx9>(I?>qVm~XVYart>vWi5ylhHd%5c)`WLbh0 zZnG4C!K@wgD}YOQdSNFsJntC4pFAFb@aCO`u86`ohtb}>l&guB6~3iFX1x9Omk|RQ zguRIss`MwKzCx}3Tcmic6%ZA9b+L5Dv=5$y)J|Lf$?NA|hm9%DO`K>?nDdDKgkUj6 zj`*6em3rk(ROiS!x`>t76_FgjlrI16#{oWzV1lAyx#UZUlBWlo!6GU3XSnmjDeWEb zB*81vhh-0f>0qGD;N~&A|D*c{_1)ueis!dC_bae3c^Q@c^;0SfB`(Fg#{zrP=n4?l z{2?jqmILOtyK$9J-;}^6pedH*^+Mhi*XT3p**bR5@6>YFXYWD)EzLN`6O}yNn{QRA z5!Dgpn2$Zf)KCR0>7*T?u)mg<%-0I9!!M1$h*##Ay9A8Z^APZ3&(HEe%Tg7bDYp=>3V&Oj*4*TlbN4JPqp>xQLGDp<6sMoE8HGPsmZO-m!8RO%|l3SvjdyB zN1ay+bZ^#;ZMI)7W##yJh-h3(v+^iMq}g2&H@c&9?_R1OcJuv6@YD{zeesw*@zdyz z&A}@h!zZN6V5`T^XQ6yb62WebkN5Fi;OqZm!v)&@->LK01`30e zjQKcX-FnlS0Ovry^}0ZrZ&P=0Sk6zXpZidj`sS?HSi!M};6?jr`^Zgi%V)j9V^`C2 zEOrLVqq|H*!!q0sp`=KJ>$`ZRQ#TY6nmo0 z?1N?r22UL4u7qu-Z}`+2LPNUT%CWyDVP!%KBDJaRq%?oER6o%1e-i?h9oc@u)=B-% zdtnjX1h}*Y{85v${&Qw$wn_g*Ta%l)HeuIiy1{>Gn=F%O>gMC|cI57CKP6-=bCch$n+wwy9q9u< zGBrXyU=9%G!b?E!O^W4J6M{VE+EJoCj1j-&N<#gU$@=~!zOh+?BL-s$7RPbuCk$d9 zD{lXn2mfA@$w+SYiKa|pY|+zVbs$E&2@OQ#E@79&g465nJ+~oNKPP3WlmPMIO-n&R zr?w^-YHc7|2}<@nR~Qm(`L(=o=Je!W<-JXIDTsQ%X>Ic_SMIm!TM#<_M|)o$4|U)7 z>$*yXP$8922_X_i$#Q8SOOcFiFl1kb!jNSsM1^D-YnJSWG1jq+B~;43FT_x*aF>wfO@ob%kzeeQGqIR9mu`OR;BGr!O0`+0BQHd=38(|%)Dac=lq=;%^R z*@cs2wCw_`v@hO<~BT;E!-8@Cgm|H4}5O|MLBiUR|^R4$; z!?NEOxH2N6p+Dq~5CiUZ_o*K;`5VcHs(ZYVPz?u?#P;)JgFBd%-@WwF3 zA-vS8Zzf9Tv3P*Gp_PH){MU&B&&PDxQ?c_``0ql$d=?{HVq&1UzmI^6ksIHpq$D$WB?x|VNCEG&4X(aJM3 zuMJa-O^dxywzl0dBLUYJ-pLVdmN;1WTg?kHYn)pVJEa3P?&(ra8uX$6Z;^s?KeCV5 z$G+(bqkmsIiNIc>+wd%6IXsYE)OtTXA1joXt_I|QG0}krU4Y$z#~8A%{gW%4IiUr2 z740(08(|LCC{iW5Kv>=RrZnaB`*t$8si%dRGs-MzGw#;IvV?JPCg0}hYAJD=7J9Fg zpQ7>A)BL5nEipODE43X%uZYGnz)6zt6!nH2lTgbWog!Brj4DbM)zcQAcj(!Q&xX0Z=UvjD&r(6>S{(EaE)g=aXYp3?UxE>UB{^ z*}GJHz8|GyZ;vt>DV8Xs%eOOA%}fv3P3Dgscl1pIPXOz13%#gHjDd#C2Fo(w1 zn(fA9HNe4*FNpwv+_B=0j10!Lo#^R2Q!trza_V9nJsMQGf6N&S6e#zVjB$>HxO;{7 zLw-7=vnOClCreI&amrMns;&Mx<5{F)Gx0g?V zuAkP}?xOMA-u`|WuKuR&?S1Bz;$Uj|>15Ru1mw_Q6~RN~N@JR?PE&(-?YT7euDj^3 z5KN4(dF-1lc%nDAs;Ie|_$=}ZwoZ?rRMCvG9Zc74QxRXKh;HZ`z{WBBZJt`@38|E>MM3hDlXr&b7>f$u0Ux|J2czuc@beWRbZQ zZ+qi5_QOhT$&F@6irJ7>pC2(D=`VF3q&TymI&v|bjsELDKKbU!5S=vokORPb9u<38 zbv(Y;Z!3f64LNy<`#xivdga=j&U`|2LT$J8BRXv(#0&(L#(LgRXvS51Z};2fwT#=h z0%8&d8q{?%USA1K$0*-vWvjH0!OF8HI0tfFk-c*KMTRlTDQ9lv?s;7k3sZvDOr{zA zUJ_yehk^nMrZjON!Jgy60qB;Q_Q`oA&;YKy7S&lj3iFJVlaW6fm|bjQeEo~IQ};m@S)Oum8pxt z$|!pbZfiEeKnHH2ds8e*ZH<7@G*DiHU@};5jcU}0tT~tH^)mK6;N|H@e+~R7PP-)h ztn9+9sGWl#&pO}5CuhL%J_a2DW6&?sa_;dfX8q;2A$M{!-cZr~laEb!93G;ViZ|a4 zJ+`(&&90;i_F|d(hrP@KwK`^6W^z154x{Q7%yC;d#8vk1;AnBSfd6s@0PKM@I?pB#7P5BlH9kxG}@0Gvi9>!Vn2XF8=UL09RUrkRItZOY~W-}2(v zi2}S?pGzO!yJ}%ukC*q3;Ke~env&JZ6djjVR?S-iYwlR@g;N4ih2MUdqtLwp*XcLo zT-$tqpCI31o${}cz6N-JcMHWfiODN~`oRt_yrnt_tsGByE(+f914{p2v^oZ#?(eMx z%?a}(qd7H5-?TrBZk!s9-gv0K)VqZn>75iCg#l*LS&PQhco7@QN17S&4HlhdY-Fpm z$6+qZUOIiCTpCQbW2;GX>#i(=<0zsc=Yp`j`&rkTZHm(c#aJC0AK3>K5s_y{4rm_Y zur|U&{InXh5}$35!;Fg2?V;2UZhsJtU1W}X8)Jw7_I7fimJx4YE|@TsI@nC?O?p7t zT&0y2!`Vf8IP+Z{J<21yo=wCt^vS`RwrgV@pV~f_MAUy-$QGKli7xbn)rzwdT#K5? z-lc2wrP=|o0#S&@LYUXh1sB)q7E(g4?-P-%`N4rL>6C37}i8F6HO5(aQ4;#_7O-GOn85t(7A{^%UQT zdY;cl5!$JR+d6c|z=K)x%x4>Q9tK=5h5&R>gSUedk~$|7uU)FTDZbp(u8q2k9jR5l z0lbK2uL02u_zn+G?V4FaW;#a3@)t{E)h59!U2j3mzQ-^`$_Es~9Esz={t}bC-tVF^ zCiY~*`G%Jmxt}!aZkF*GG)$5d9*;;?qoQMN{F}NaTVN6zK-W3(Y3_tbt^ZwVIzLUH52)kzg{YkY9yA2FTHmO84^hJuS~>OA%==v%m!Zx)r0qx;8meXP(Rt*+6XrIfhgLfom2 ztY1(sf!yHGf#1QRmBTB)*)=-q@RnIE(y6VuDZraQT{E}*^xVhe}(MwVgzdil`c@>#^Z9?1h| zz@xjI8uqKZmP;X(pE4(}%2v$vQOVJBjp`%X-8cI3RnM_kzf`9~x0sg_#az-J{6;tX z2suqiD~aKLG$s)~Q?ltwbqXl&*d$6~zEn<79^AL&e}EIUX&@!JSO4{0>0g>vpWU4> zKgnR$lZckG^Q&fT!@N(_mTv9x<&<^rrb12EBUaQn?yRztBo9Dp7WQ3_G&*ULeHePw zh5f(^4R@=cCB25j$FOE5s}y0Y;G`t_3fqr9>BJU)93%?%ih1 zLrhW>2vl(IKD_-m4!n;=TB@x+=5D{ef6Bu%$cG(GKd7QjXJSA6_{$pdggCNLvUKR6 z`;iae09o8OPe`hKdQKmqPB8tG7mwh6``5vAe_^*QmOBTt@?n#6Z$T%I8=k_pZQ)vO z7)=BG0hFX3>n4JEhlMvmi_MqarD*}IIcESe@PQKq5v=Q#tAR8Pbe#jJ)RsGo1!i7A z%us(yKX{$P-aZz$5MBh|CCK+5=|DZ6wtnN`=%K^Q!`D5kSO-3)*=sN|SXmCA66iY# z`znGaEZhy|LaSid#UR!`O_Xii4WD}9{JFsSXy%j3eHTujYceK&k8w7EPX%*joQ4^$ z-g;W?k9^TrqD){7DJvctmGI7qPY|O9yY&Yrn@8Q^QQJ|rqdxZ zcQGb7xe_gCZ<^(mZO74RvN^EcLa;zK>mu;XlZlkLAqDrOnBJ8h&q`>6l4g z=fmU`LnntiV@Hnb1y=P|eLme2Bmj*dkQVx%wD5(V?wuK_)q|qe;j9GCg%pQ-fj#1M?(@7k$EzTPN_E3dla(Bva&ys~D(d?j|Cop6Bl-*O zbDc8M#h%nuhIJh*tAW)Ib%SfS^8y4ntSq4hr!7rT9m&D0h=3|%uxQrgrB5t{a=j~| z?CM~)yunuafl+Ah$lIH>tC>z##*;1jCH?2iigSh^sV$y8rM#&+tKbU*GzRWEoB+e6 zP2tZwIfxLsx=y$$%Gc6ojQq)5^u}w?Va`P_xF`= z@4Mz$u2#|(fbfM;C45nN!8w*Em9>kTM?xSz3Se|SW>nrpx->mSd~ccC_ygXE8*~bR zQrK&SB}&&>lY^M6?h(qoFF*(o4K zv;x~t_e6a61n>Rf8Yt9NYI93E;VJZ~rr z6cEwSO`M$OznGJ?aayE^?h!Qu3u2q+iiT7)0bk-PhXo?-ww*zBV=KqPgvx0|#_e(y z`msRJ(I+R94E8opsLhULTd}7c&2g}1`OfU3xhRyy0kK&*y|ZO~f%bu(Vydb7AM=_% z4Bi8AN`Hyk`roEO=wr)2D^m2|gbnnA{I!C9xQ|gWLSVUD`?g zGBEV5*#W7c2uSTeMHewV_?pIHVdrLoN?H> zt5cc6>5c|!%m+Enuc8XSH%F%6Ai^;5*G{ofqwy)uxE=EcR+vIGCv$jT&PJu^!_tH+ z6-faoJ1of>3Du&mJ?XLFs!0YXQV5`i=U}ar7@J@(=zlT@8>w(Y+)oe?+E=jRa+cCs zV0Mfn&qcMMa_l=T3Ygt=n%ol+I1KB}7*?}9sBRs;MZ5%(t0jBIF2t~O-r1$^S^LfPc2F zrhr9=+R@|Y zJRcinU>(&`Qw{(>vpG-`V$Uu_o*-MF(8D=yex9;j$#aUrtL9tW!uXw0`Eew4dAB&j zs7_M%WUC&^k-IKz&Y(m?ydWe6IX9*V|BBd?Zjo8y$)cr@ga#O;SHDmtQ{#6?`o$u5 zn#B5$(rC2u=I~sCVcm6)6rvY_o0RMqq8b@2rF5gDdx>D8hsi}@+-^VeOBT$OM- zDYQ`D#YoL%X0-J*>bf*EZ)BU@-f8c0B_`Y>7b{h~o9i-0r?-26bN3L4?2$^kh&JAs z+qmvwH-z!kVG_?v#tiJpmFr!Sa?KAs-Wsv6ki094nBq1UT=3-RZD$;#W4)5#=Dz)C zg}0lfHtlNuPq$N8!kQ_Jcdb#lA(dWe0XBJ#NgNOLT70qQ>-F48Zu3!wTufhtue7ZG zNuGS`MNeLlE(~1-M=umbQ101VuA}{iN`@tl$?b|f?w5QXRC&iW_cs_3k&B*nwI`bu zm+2^5&x1b?9h~&DapzbeM*dYz{a|GN2seh&Y>iRgJ{i%t_G_;J}g z{?{^oQuFr=m24)83BxDsuu9<@@N^Ofc+Gc^K;`(@keK!h^gapHn7+e=69EQEe1%QK zp47k;X&2#WyUlbxqL2q$_|;HfQ0y6A(lMpK!hmkDq!dVBY79}$4w^@y#LuRQ4zVS+ zfj*-s)xj!JN^RD4+P#k;Ag9nKKqcye!rm3kuQ+FOz@s{is+`&4RIUdlOE}twI;P|W za+OKTDj9c_+H@A@yzdtq5^`lE_#;?wL$%VRH+L&o2Uvrajp*w{IKa=Gk->fDVrp0W z7$G^gHy*7ytH(dAFD>y*$&*shw(;)=(BQ2$^&#f|UF$l36mTv?yiPER4%O==aL@ae zEX1*Tl6f|sT1JeE8UE~bNo;RatNVoNBq(8S2Zr1J;HeK4m{PO39B4YnYz=oN~sf z$4$h*Eh+-UP$xE6rf5a0F7tu)@HH3lvK~ZBz!}aix}cZ9Fp=&0i;+6yISKd!QDbPr zx%y`PvdH1>^~c@8L`Bf<0+2u4ofO`(%hg{O)HUJIjD6@{bCyt=K{!pfR4fFtS9(ZD zjy)tc#})R2gvQY9UR{Sgv)Z(QsFRII5ah@ZMR&y~vNM6?Mn>2!AR_7TXP^nE#)Xq3 z4ch0RSJxouF7>6uH`}I=ULW|C4k1MPJgA}sh?x%|dL1RH6gpdb4Sbrfbl*k6{Y@?p z)+@?r&j2QFyb`}|)oX~jehoQ>`+zL$iOc<@$9-7wJWa2;mKj?~56*1`dtBalfcfvO zqCFO-^!Y&@Fb7<%d~dKmK(TQs3wgt2SYr6ZFlUh)iu^fVr%76IH(|aucJw7^7^ltv z=1=3w!jnx6xCtEpiII4y4Daw#_^?pv;+P3qwjLf~Qdc%i+?)`#FppKjW3i!%an;?F zw+SOXY(Vi#lWBb81^{4X?b0UiQeh*+>RBlt$>0>8oSuDSQGDcDz4AD-Ayi(0N%DKb zm79n}W5%}8?Bk}Jp)inACW(R^KH+;hjt$Y%WZ-dO2n8zP)WnQkiH#p3;LmR$yWlsKzG7&vN5+5_*F4Bs1OC~HF+1Mt<2L+C zSpq~8-`#qDd!vqsWApUm9smo%<1|Q{^u%D*W{J6DAN=U5!J8pLbjV2x#y+m-fThJ z%p>aBF?}Jer^Vhgx}Lv*&)&P2M7?9c_8t<~DnJOaznd>dvs)kqes~!K~16vJ$v?R0#7O7Rce5%`1y4Lotrfbf{mj z5~`h?UMJ*~=m`iX5GURbOEL3wvjzI=@(Tl_%Rj({(+3<;A*@!v+_q&mYEB6rRA7Q8 z;bcCa0co7z&ZP%Wg^n;;5q5GQ&%4>MIxxL zB3F@C7st54%@1tYaZ{jw5zb+TGHD~Re(7jsaeP!ah(%S`(G_$>Mb^q-!dqPfSm3o% zs6>7}s|I_03tzl3N?37ll{Xn|=aU-KoF0Jt*V-(I)&m^IcMli*n42t-d~Dqjjwz^Gxm3TQT?ZX>qQs-)QiLqUHa*Bz@4+)q~6Zp zfqiRd%u1RAVzmq)R?9yHa->=jfPp#*(@AI8x364z8Z7tahHH>vCK zE-er>kTt`acM5s$Hr;pb*71`d5W(Ik{e4|d!4?ty@8MHcYc3^zpve6ANvqZSDCwCx zB}rDifQ`<_98|v0010wrSnav)Fg1UF?O0&-s$BU&t^)CU5oVKO%4$5PRn8#?$?1xf z@`J(7)BXFXoX6iqVGp6+RtVeqXRxL#Z+_UiDipn88Lfb5c#*>;^p;OEvo%4;k-&^n zvf=KnUak^1v1&vU^`FY)?@c7V z%!LX6P`|sM5;F7>I#+bC82PYgSf5F>PHj>FTtF|I3r8Er9Y+jyPTn+BhnC0BkBd42 zSdk#vmv(DxL!+Eax4dEeAo1i{eZRuXM#RwR=gY<}=0nEWxcXU<9Ngq^BvQy~l%3=B z(#h@A$V~PFXQ`|Bt6qSz$t*xeV*>f8uwGB{*4)wLcreokDJ7-p8<}yV5`p9mBRbI#X8uNQyTELE{U%t&ahzM8L@$ zvYAa%cZvdr+ITBKd5^mvm25cGuk}M; z)}K9mz)iks4GaxpRsmI;tYv`H_8Z98yO;3N0(34--WA{S!`e*yghKpP2RJ@}s~{vs zhqr{jmvhmtYeLRX^TG#C5SkDE{_l?~;2=LK6>v3@(C<7{y9ysB`K~N?6S@Emn&LtW zxev1{hKCU%C>%(*QJuoOX9&*$VIa{+r!Is-x@?^8rW<;!GZze?tbK9)-?E{#C#ZI(qV@7=2m-F$qzV8Vv~L&Z-o z!hf{=eSc6w8>XWm`=7O-;0`DXY|1Y&%m3>xX#jmdL54`W#c&l6j$(O@luphwm(TywViahl2S=3PH;UO8-_Mfar3T&*L$iA zfAe)%n06+`?}^vsX_qmQacgPwciQpaw(#(^Y28Jy@b#?;Qr+^%!u0{VVg9QQ?UGYT zJeR`K$d*-m=CaXgiZteXhox@U^qLKhb?o^P0G{SE~L-W)DADVL><~G@^m+!v`3PL zkNYb5knbX;$|_?1#@*b_`gXA`=lEe*h3RZcUOhQ%@y4L_^427Ur=91!P4o8YkDH`{ z280W(Fy%KT?1bOI!V&64uHDeMc@Dljv&3%+(*%>w%3GY1*nVw;_?+yU z1Z;+s=bOlJLs_Tky(bmPLnIpW8wBlxd!5mBCF-IwB8xqrJW+$op|<*G3ep!idg`)0eA|UDRpChxMM5qYilN z7vC1-0fuM~t6C@<*cC@RA28M1&M>0$NwV{CZ>~^*dnHE673v^x$#By>g6rX&M+TwO`h694XFVyZ5|M@5W=f-~R=j?qrIN!&6H=|T#T zX-7^ACq@`;E-@<#AW!mQa^07dXWcUqUwn2G?2&k2f=m~d{!zX_sj^Q$j>;7^sBFI3 zrKpa~qRVN&*kpbKia07%pQiqYh`_Eq`%Z1N{_b@3dacBgt0Beavt9oVtCerRKywYd z=dGIQh_x`$+V<;R8^ME1IeuBqu+1mbC5KlXB|Dn#j!>S`8e6T?fG9#mNMEEyW7HL-=FR9fBaqm8*g)$wSyq^A8%XWTaXbK z8hxM7Tz4ec)~>IgFOxcEkaddoVzrCWq@LDW*5dP|s=GC|oWM~<@{`d4uF405?~5x; z!3q+oVOz#3)OcfhOhmHUyxEcu<_c_N4)q|L`l!+pvYY6d>t3mylxPzaxjA_rB-|R} z<_c*I*DjnOI3a58`SQ~~FKMLXv1>r0>uf#r){=R8`eu-)jO<4M| ztr<3Qcb8_gwPsv5yyvqu_Ix|M9ra+&FXWeeI&KGJNmEfUo#Nio;4g(8Q&~+UbknuP zda%r5*a4uo@RgqfzDU5W)s~{5O(2Z=vHnj>Wr^N|Zz2I~M8iIB>q4EWm8X&zrrSwm zS;v;UCdSE=Hx( zDZj+Rx*-pN^zVxMBG%YY^07yaLyr0hIm-^n^x0D!#9&MSi4M;?K0TV)O-=xmDA<6c zde7>b3@6#Sze{s$Ye=(vj_mEgy5bw;h{_Q_T-zJE*7+T5SOAN|_uBh9nXbCJsH}KO zY}ST;db%ivUg&5&6t;joG3o8Z1)Gj+Uhp{Wn{{)XM$#8p^>k19%Bp2N2K#X5@LJs+ z1|i@QlDwP5Hv{B%6l;4D>&M;WR|Z}*9aei`(lS??Cgdee1G}??=adOAbg#aZx|-?B z0tK=@51P}3$^N1QL4C%{x9C(ORoJ;w;?-1(W~p~%qWe3d|S#|4!lDeMa~<= z`khg(-)Ke%OE=CnbR+>gLi3Wv%T4L*nUW`8e6!TQCuv>Z|yhW;L_7MclvN=P4?Qe0=Tg`m#Zl=nyBVQQ?D~Imz6Qg5X}m1NLz@)Y8zwdP zQ{_|`_DQ}I+a>8UocQGz#r#Bwg^r=Eg`Sljx zRku`iSTf7fC-{ZMW&O4Xl}2xD^T#9|ni>hF?Lz}G&l3m^SO`LeZ=QH21>`Z)8GLb; ze#s8A0m2&ww;Hs-8r2vH;5G_adr_4Zvpc` zR6+N{56K}Q)2a6LwQZVt`?SsEa1>m6erS#NNuq~+@W}&^%OSXOu6pC)*X<>#ZCzHC zo1YI4v(w^7-!1_;NnA7i?7;8nr(9jfK5T!?al}l7+0gDM`z`k)hnlg@f~5s^pjxfK z&@{HZ^enac-mEF$G1zuz??oA6n*#&-beggHRcTSq`sxl4DwlLq0l!_kZuY@##Vvf~ z+@a~jOS>WG$cHvbMPq?_6`nw)DxxUt3|05KHYfopc@T~_Av|^)ban{J;;`p4Pn{Xr z)pqjRF)0E)Q@_0n>FzfRIrEO!fUgy#@z$`TYNr5JK}YQ)(099iX4^r_ zY|~$)H6GC|H-`FOP9NDyHuRvU2?bgHN)yTjVFG0jLefwrIv|`2wAGNvTYAx}PEAzz~Y{lIL#N`1;dH9C! zdGBoG7{mQ_K>o6R9Wtq?Jl(|SM0t95zLehMq>lxkJv658cl>h zp|S@8GE3+pp9y)`F(^WzdsOeh=HzgkLyIjbyhyUi_geQ9_FZSB3-PFG+Dw8_SqI6% z2DsU^E-knit}C8yNy_FGnoW@fwZ}r|&jbhpRs6n1QL+(H#M5whpb^#R4F=3onO{3I zjW@ds;01CXDaiN6ZbcLXi`DNcPpAHFMGD}kN}(ffk8ab`m@9-e@S>=QBtrIRsQ~QTZ1qx1qTBaL>HU|%JBG&ZNZ8dq zBrL@|$@^(avU@kT7iQ|YfvE8wOQUak#}N7s^K6L0-Fwn|``r&+dE%4gzo-x1-#7>U fo8hC%*51C0GF+Cqg)heG52)R_f4ktOng9O)1zteq literal 0 HcmV?d00001 diff --git a/doc/python-twitter-app-creation-part3-1-new.png b/doc/python-twitter-app-creation-part3-1-new.png new file mode 100644 index 0000000000000000000000000000000000000000..3de5bf44233d730b31dc9bdb6ab1f034adc507d8 GIT binary patch literal 18861 zcmcG$bzEG}mM_{6B!K`SSa3^l4em*>;32pZG`PEm;1(dbCAbqD8h3{fXuNT692$qd zoAWy}^XASuXYSnh-XDCL?%jLus$ErUePvaLeNdFf!XUu_fk0R??eYiMOim`uk8E zZ&i54A;Rwd*?Y8aB*9;gpCPkHS!wtAIW4NPu_fBW^8Wi#xNTiJyc%7S z?|g~!-cf(7@AK%@=+&tRJ>F)<*hRX`N2+JffJXjGF*zjwUR~c|paAb^KT?4}{^YU9 zNFdN&DE?y*$WS`>4RBnD1{LV)3@#&ZQhW6KfQM7K^;Hbze0rLATr$kCfe(zWBp8o! zYL`5AI}U~6fo|Ao!PWHU2hC@ASd@_#&#d?FufgS8B9?#Z;qJEf*O74BxtRnVm(F3V zp0y;e+v};t<+EdjGO$Rt##Z>jQLk-Qio!zJ*0jq&&WjU6+89g_DAJBrCIAj^f=^H3 zhzZ` zMPo5i#+6E>#HBEv9sRfK$ppN~K3r&;7OS0d8px=pm_Ms)IGx8y5HMx)hIbhFr0%Cf zc46NzO_r|R#I8^FE~AR0H7$brty)i@2|=E_HE4n)u2a)4ro(NO4OCq)coTyCoFz%G(!<`K+gB=1bPwkyaLttEI>LmyR(X!eT0zwKxF0Z%2X+-!S#-t zpEImEqsr?|t3v zRmFJOp9fQ&l_7KVO)94;PsIoL?%kxFDg`x(Ka_q+kITr{z#a2m*jJ&J*oJ zt(tKgj9j#|T(g7+B+-!6TEuL#7BbWcuMHB*yhFjR(-tC7(|eTd@CX zh0cI2Kio2=`)qKH-2%UOhEVWX#KPsBgHyu6{;I|6Y*v*Wm5b&AgjZEO_>6&aLs1zr z(^RC^+n`U3v=Ln@Ue~Rq9A8v^b#IUIou=t7B8V}c=iQ_OE)o*x#l>^Q08jqQ)RKzl zqqDC`C9pBf%}sX@22>K#)zg*{Hp8Q-ujqO2_KIrZQ>S6uR`5w{8}k19cO6kqA*Cp2 zuSV2jUwPPqpY@@8)7ZRqjoT)knetrq$r|QX$;NaK#y0mPD5_ObyGduX9N3%e>3CMO z6J_wdW@Z?TJw|7%f|E7)^v`Em7f+p zQYIYxutW#b?mg-W`sn$w{Q6H*84nfS?(3_)`8zfB>+fd-A^D@`iItwuh1Y+oKkc33 z_X3uCyks_`{Y6MtF#@q$gkBb)w-hjEC?P9xold zl2Pj;Vnn*C%MZ20nSPzK9hV9J{iwUq4u_@HCAfSHwdYV~GCW^F2ugtjYDY;l#Ha}l z9MZooBKZUHU=wCon46+QR2Z+m^1~(DkDAbQKa>+=ZIV*TTz zZ-^GPoA_RNuKi;34iC5}+Yo`KX{&Mm5j@&tgK4*XaF`_1Yv8n$6p8(j`KJ2T#b4+h z2$Y=sTsENWu(?gA_oYaG2|nQ<2N4DSxvJ=8M!}S4H;+LhAK6JZsau5xC1(ySG^w=t zkg0l@V^bf_=jYM&zS!TB3ci0|eD<9Z9aBS4HLQ;fM}6|F=gZh6HcxAc>(&Wl4E!uf zvnywm@d;6TJ~SiirFTK;nErrT5}NjtKP2u^Dq+rS@;>rznm%vjO)A34c&=pBqUa&~ zz*wV?tQKqmOJbpjH(OnmFGw>*iF`<|Pl5G!BZrNG=MjsRf`hvJhq;WTA*YhyxHckO zvYfx-AZ>#*KQ_$O(224Kn|da z<|=u}2!=+fxwQ`o;%UTxlPx6vYl8W#i`f6R;G$=S5wCiB$2E)(0`b=u{w>ice;kU% z=6V8Lc>cvSZ71-`FZTi$?SGo0{=rTEK~_^9#PPcn=khqOZ9QGBH@J=oNAUA+wGo-7 z)p0G~bm81@@Ey|mtjJwWD9F9M+iTrRD|bl=ey^^CJz(xrA$qyDsV8n@a(jB|v?Q34 zDqQPacVr`?e{?XgrH#CF>s{<|o?ckA3-n zr=}Tc)0K54h?3jOj2|or^&FZ!5N7Nl)vu8GYc?!66Ttgs1Gtszv^W_pXThg8W;D#M|wHC7+%7 zSF^3DwTEQ9Q8@|AC2r4K`;kD#OpMPSCl6GQT!c{GmP##X$KAP(9AsA|9W==%$=ol| zEtOiEOP46IISdSDEqW>3_CEF$`uR1<2ex##JyacZ`FY=s$t^^?YSH6JBWt(Oz1koX zdOaE;=H9fHTH)=M=dLDd%5$KPnADEZ?{~JNIl6SRLZ@KP6uelAk2!ytv~kb5dGnpmmUnTibFExt5)s3pZFCw5xzS^!)m(KgwG4d17qIN}G zGQ6|m$B&xWeKwv?nOe$c2)J{8N?^l7>^qt0)S0gWl+= z)?$iEexce%S+k;-E%MHZgQJ%{cg2--VltPCB6hC`sEhLpc$dUn6u^a+!fLczBEG~( zrjgYoIeE}VUB1DE{OpymEz>%c39i(L_!1JO;5x>p8Vf59rE%9Q=CvX-CX{)KF?JU&F zn=Wc!LSLppz2Q==_eFkcsG@gs`dX8fJLVO^e%IyLwpSN^pW%0($|C*2IP5^CZbuu{ z!kFyp7?q32IMMsiS}BQ*Vel<)v9ii>12I22pG#P;+#2J%o=99?_(2U_k0^zYsbpN` zYS}IGPeNq0Sp{4IWr@=FD8mr`imjz~svfZvsQlB3#$&S@Z%Sgs{LwoU3ZEwCX{I!C z$|Hh2;e4Va@)zHVU>!jgja+f1rZlg$`X8Vws$5v_D)C8P950{yaqgnzpH;aD8q&4X zvmw#`g`(E14qMH!{x`(f6`q_axK7hruX@|x!kRKOzcYV5MV{3$ow1EEZY8-o@j5c+ zDU&o6yRQ13B;^gBvW%?&*YR3052jS;U7T_#@`s0*Db$E9K*{k zBjwN1Ouwmh{fbDohd(`%CG!)9k@d$v!6J)V)2M^e4a3$1`$i3nb#dcA;xAS z?`Z8IgIV{`j9nKRKSkr5mmtFv0cpnHB-pK|^HcMgz6DQkFet55kd%A6_ev@-TH$>* z-w*RO5(Fh-A(TZJ;d5pUoHZTL!*12r*d-q$*u?AVcC0dkUoN3S3XdgJ9bE>E5~3#G zSPt}@%##!f{w~SFHRC;XHB~hRVbijiBScN+ikbvdvmN4+3~|KVCSE~ zz3H!*AwCp|4N-sgs%{{8sy|b+>6XA}1YiH+S+(clQ1wgG6dpGK!%;TVP9B^wwONr~ z@0Z=HHI{2bY0Ix<&+ZuT-nsV1oW`5H)~OpcP+2b=P^yyBa9TPL`%L&=ue1Wvq|>*M zTFeG7C3&sL7Sm8R6Ye%N<>F&^`L=^5q}7w1f18Y1K`(4(!hlAIHebZiYS3tju~x`O z`u#fGyW_~yTct!_zKo{c<7Awz`b{J-vX%X%bbhnn*cIV%HxQ%=L8B1njj>Rk(o$b} zi8JeNC54ri*E3p8I342d-2eeZQ%5~Xngk? z5e9*H-(hrbPYS!;SYB;}@fox-&s!3kmwvslj!FTvnDO@kFQPKW7LRjpPcBK9SSm?+ zvl0W-MgYJW8i*enYsHF~F4#y?OIX4%Z_gMT9e>n4wOo1uC$PL0Pzjp|tn*yvF{+&T zX<~O3zO2$gqW`&jDpE9r_XSBz=II-cYKyQRym@j7t2;vPgu-WBx?R6~@v4_fEK@eS z<5y4`j@|7ml*&T_@hbuCU>s}nMXZcivRsbCSu_W+KF?v7ehTB zIf~AZhRDkc{kl4Jitj*L{9{2}M=zAcs;~8l2L$5i_=e0WOSdBP^N-;?wSmt5T;4lX zRbJh;lP9z1XS@Uni}3?R)&p?1mYQdB289}Oz4{;Aq4g#?zRiuYqqeq!pKBw4Myc1e z{p4j39w{^0vSJDj?_2tSIoYytmEK!FQ0}j7pMIPrKeUab@nW1Aj4Z)RHNMR*5ffjcM%`yvxeQ>*E~!l#Zd_? z-nu-tWks`0cr$;h(yC1PC&quRu5|LR72t}Obav79+4mI;`ujWguH>OPYkkMR6punQJUl4qPT5l**g>(lKf|E=V4M=8@2NhG*|X~xC9l9ks_H!{$y1{4 zrtMXVKRwqhJ(j88)1d^{IEfF2 z_!RPfGac^qE$hg<`{I_aIgOjRvAL}d0?{D@eeH9ZmIW9&*yG&-yh?2`Vg)R-L`y?q zz;XGd@fG`&l+U1i9l>O-TEf&TpDqTEnm;ToneG!{S-Wp>O|(tU(0Up#&AK|?&EoDj zyWI>?kEZa*wn(?K6^p2)7)2BiRc7uRDnq(Yk9e@6UZGx@ZI+(4w!TZa%XB~eeR-z| zh@*6&oPKx(grU{%a1wT7m-5&bq)||SX+Vv-TB@xkFkA*`k;{L3_t^K6lJX}ysGVQ( zzY@oPz~TOrGAV%}v6{L-QNaUQUi=9CtPuSu3Vz_qW%1Nj;D$sPzPXn!v~t)_rC(n# zAU_v5t+HfDhXm@PMm6d-L9upOtoh7>$OIM*|8yL3fPczYtVwR}MEpp>R-Q(YXkmvR zqYmN>$b%A^)6{MGoBCejJC&Xns6lxt#ZXw0%^>5b)$F~#T-LLRttEBcAE`OXE(QAT zr>sHc$qGeL+-hy`l;Z6o)N}=ktj}U|ER&u4%0gw(%K--gF4nE8Jjo6*t%c9db=vr27k&E$x;_S{G6J8#lgmYid!lotb$HsZ7X}vOV>NQI zUou>(HV46}rN`=~HTDEO-;Iuf-90SyKYxNX7>yQSLCstRL5Vu>03;mL}vDJRBF}v9qb#`6J#<8fu zrialN3OCD9=t6aFO3;yq*w`a*a zAZ1-)f`!{o1ccT}Ueh9~*n3kMljsDtlr=tAlZOiE=Lf&>0+n)TZY-jeDemn`%TRH| z){iow$MwX7f+2yUGe7JK7h)lf?qfG?oaT^HibI#@H=X>=1#F(vAP$-I*)(^u$j8Pg zWYzf*wrwf6*&S}pck!&GOK~wiBl}SO*d%)I-MCVzto{MK&II~7UT_Flkk!uYqBZuIZ< zxrEm~nQAYGoCUuM<0xbhCuui5O9?tH4SS4b+cKdi4PlHB$bMVB7@c!iL0F(u59=CbRgWq<8=8^rFL=Ci?z6)p~sf%oUB*C*rD|&@ut`QU`k4w6-4y3ifdBE zfe^cuL*kw##IIik1r*wq`*x;_cnVo37q#H=Ln z!Dna+jBLZsRN!j@mbm>Q%p_8DJF%))-pD!Ug+XK9lSWf)@8;_>Nt#DyoL+22V%;Bn z)uG|#@9xBfM)>gpwBZL~=qYPkgDTmt-H)izi!)xTTp67P^Ni_W-!*tKhRX4Y?l^Zt zXKt1Y0o2|}%B^czVPKzoy0>M5YgBPRY&w5Fao^SSLNY6gyeO6N-4=2Imd?*#d; zHh;hgN3Yenx8+Gs<9gfuOqqdvtsV0w}brRcxs_bWY&TgEd-CJEW!AHDsxDRb8 z8Jab1XJa=-1V4P=QXLXX715cjzCSCeuoswvL2cM-Lsu$p3@^@oMzZov7Fl$}lE_<% zBG@w>ocj`eyoRmks1J)G%wY+}Nw?`Qjvxnf7g-`ZNh7Y?teD56TG;-E?aDoSPy(Dgm>hTA1sA8e0CAnS895*ecv~xQ_4$b}!-jT7+K3 zdsMiDe_})>#C+KCNncO3-ncZrlRs`Xx^}dm?Lp6KTQS7i%W_K1BP&8w<5K}P&))pK zL0^UjzW(i2471oRyNmy$@>i0M#3dmf9$elK9c--OG&h&MbDt1Jv^MfKtpyUaBF1@D@^9!un$Imnl985#P*581bkz^<@9%vBYi8ygtwFJW8maxcoEf}Tw$w}o-hL~`aFKHBb&MzkK-yzZ)4 zdter>I|LSOh$Elz9nqfYH{SA#(Ein(uI zD)!`56=<4e^Sd#Z=U%N`XMuq4=R+ zA=a8&)BuDShYfoV=nd(fMAUmr{%Wu598^;udc-V$|VZplN(t$9@!G1=@0_RqTJRKI2%mJu33=7@$QBsUV@T8t&=yp%9?ibx?3 zSG%lX3R{$@ zsA~7#F5l<>rx0{=VlqW(uF=`|&$zhF$6BhIP+`j`Ajtgh*Q* zmklNGYYpDf5xrvbDyNF?2*2y-4#_4>xh;K~?pGeBba^`je0=2iW%Ilm+pH!dv5j2W zaYXa4dR|sPulDTzakLo{UdAeXym_Q$<1)Kn(({K%y~KS7`jPRX0nB0*U9Bl40-@C4 zFev8wbry6ZtJ{d`$%+vGkjO9ip%ObLgxDUmswX3LbG5H=)rEE4=>!If>2~}0C9S4D5L#OVXUWSK`1~@Ota+PNs^dwL*mJ5cQr>Jq#4IIJ)FeyZG~r3 zapkKC`%Ui}*!{{nD$*?>MyIDoV01q4W=e-JreczIs6$6BoO02+Hx}?B{}UQrPa{tM znaVRduOW84X@Q;u9DihdPp8QG>;sy^9~g;n{Kt`Bz`f(suG>kGx5ywm zmj8*zFM-khEsjGg`H%qw!u?kfXht#6tEmYp?!y2Y21Y zD|L8%#{+ucS&@PUie%4y({45g6UyNGZl=w(NXI#`67kfMYir4M!ttts*QQPAxP}j3 zV@Ftdiy9sIVVF_&dgf`&Hq$J|5AdQpn;eB$zD=lFhx4|pD2T^rz0 zK^XW=OtJyKE{D{O`N`}@VkEWbJ!`vJa|kj_+tYN;iNMsknA)&nKI>DIP!m~p{ENq+ zH5|rgze;+=M_98^AL*Lgf8cl5TV@RsH+e(-nthmn>BypE1Cqm^&Ir-04i5wQI{>EI zOt@A4cHN*amMAW^{q*P=4h25NN2wjwYV9Spi|-AN-OFk3G03uQ{VsRKD-4E*xhFvW z$AQ3k5yQsd$mvNYvzre&nq&A# z$au}PMm;|fmP;5li0TuqC!P{YEiksPG0m?#vq(gyQj3@7RtcTnWl3)@ik<1vf&5Ry zwSTmHz^tM79Y!*I{x`kOpYshc&5)B>hTZT%{*V7h%2OM;5qp^59={(yO0wogjl|@8r*W1tE$Tw>0BeKk>}SKdMu?=v*WN?TL^a9>`Y>>XMMqx zJi5k0AycdZ#Lj1Gp~}u!_0{XbN_BR;YFU%KUq#w=CWK~~l$_7_y&l>UR^x^#&48jE z#$o3x3Jh^1Hv_2g$n$ucQ<648T(gEms77;W=iwO0ygx+S>jQx&{hq+E= zbySc*D7gV1*3CGb^LZd5T0t#J(buMYtCk4s9D063kp1Hqem*V+8(z8^=e3WMA~ILy z3qJD_bbm7azWBNX0@mbMWJ1MOt~VHd+B)KKM|1Ft$Di}A5Y>wy--v1lGEbn~+rYrd^wpkfihZjDrGXGu0I@o_6 zR-%(0VI*CGbYmp(0>qL2g={67qBnzTl3u&1Cw*DXe;0f8O5)A3bvEH=_DSS`fpEX! z02#YstAN}$Uc{$F0I=le`FGd{2MLmYV21Te?nK^>K(zW+ZFiP!b4$mcvWkG6CnW zgW0K45We@yhhD5cLnj5^oI)Gnm@4TzGK?~tvtij{RNf*1Ez&oL$vJ~X_ub9(NxufB zD3-^d7a_gEs3*1|Zyl?dN0L}%$b)KBOxWLiPb*}+o1w>!c=Zm)W;aj#7n!-M4{ zblqVfhf4|2={x|P&WPRJ6LGk>7+w__67h%5=!7&}n9xJwq+xx0z?i!X0JR@;-$V|V zWTi9N3D@3FMP?7Sen`D{lWP6=+ zkT#*u3Q*{iodHoeAj@y^rmZ|vP^-j0_V33w0gWCw_FmO^s~zYy&WIA%X?%w8M~~+3 zkB~s|1dPwZif>hY7=}&2CMIb9hgIHn9O{)e?BRMAh^NP5YM~%_oH;fL{@h z37j!E&1v5gL@OUa;dcOLgB{lvXO8+#2rKumB}m(t0j<#m?l>8Xhh%=;-xoNcVtJ4? z?(H_06b)~w8mq~`v=KqnEE*V_Ny$)D2wQSJ0=2Kd127mG^6tk*WkKSjbIbzq&@oTn zTUfc5{yumsDl_nIb^ZRJZ@NTwCC1N9*v+_JiH*4S&0&6&9^wogu~y-_alh*h0UXvd zNSl+cXw&DrV-3**yw&bgShN@-WDRrb%Ie(BPoW%cIsFCeKD8XLLiIxJ9Ou?Ounnw` zemjFG^tSYwo?a68tD-&;n=WaCnZ1aZPpyju=pcxVmi5CYee8-C%;)J|Z0u#~lI(h3i z*aj8K0dwzMP{JuxOHg+6^KF`zl;ecd>V^mquZ#^<#0NFnzB`t^zh8t#OL8fd&N3e8 z3$E2RP1v4A?FIgL7#=|J{z!vLqfDeAcLI+TM$0dlT;MCa&2FzqGtDJE%D``Py*Zry zed<`xKg(<$PehPEIK8rgOI+e{r?s>f>WPcG|aYA|V!owTJUm7-2RoLh9vbm-_rwj0Qz*3KB3asex7` zjmR!~Ijdf{<;pW^C2RkgYx*f8uYl{8XwvL@@$~9a-(qm`d%*6sDDgeEt7aoBqZtzP z1uu`nrCIL1QKRR1Z4-HrdWrU~DtxpR?~1rhGxNS5RlS7nMu=zNRh;^5Lf2frg;J!j zzQ?2)8pwYj$c_KyZgA&E+> z%mo7%jSI~og*!``b!2tpnc=t^Ke+>)(#(A@{Vq)#qokIMTIPY*{hdh*(il zEJg#a=yPq2mE>X?A#3mZTg`1g4YNV&?oyFp>a`9CXjsg{N#KLG2hs`%g`8nAfV zJ0tFQ52Ua2Rqr;qCpfUr(7Sos1oT_^Y5nNhSdc)YZCoCBF%k8AFJ*&&ra65yC?y>d zE7L)^PJe;xMNGMfO~u}}*}ag){SYV36qEG$F(|pT5Or>d_?~2ZM&Q@B+dU9NvWI2v zr6q*-@8p=9N)U5E_5elVO(Hvp4!l2Ghfmypf`!!`4BQR{3JZEfp1gm6?=q2m0+GWl zSy@#qeuF-CZeDZrb4!78k-}^q&L=N6VpHh=RsvM*O6{#=*C0G3=l%>H5DB;BT#@Y@ z%Th!L(|G7U1e??c2Y?ay+S=lnQqjFtpP%bf-P5!+u?3H+>+06JgLVn|uT^7JTUCe? zhV{yR+PFSRf@dH@^aTK38T)>+Fy4BzQQ$K_e|_%qluQ6O+1}5E4_I6Z--pazEqzPS zc75W8@(9#h0m%FGK(~|I`~mN=u|uTu-=Nq(E+PKsNdrJ{|9_pr`HsgbUCSw5i&@`} z2g_X9>gth}Q)UULQ=rF?M*ry3>NoGs^hcp@GZF>6y3TSp1!f@x8~R*AqUrf#0Ja7+ ziP+hzMa#Qd$J6NQEOBjYTV56Om<#x!ShL3tCfughDoMTk_WnvqW6>-oC6%AfC<_S$ zyurRh0ZOqV$MI=gm3)e-p*Gxzjw7qNVfKw8~}So zi@AAbxhh`m=VXaAOP!hdQ4zX&veZNXhlXvyGXium0`xTI?zk#cwh0Q;t?DVX4cZ#3 zLm0EXvGql1&ST1)BK2UtlhV|fl-m9%d{I?K@$Cb%ONr6<{Qxu;PXgpxWp#+e#Ut2sKPFl2lnEu^znyPu`+UBH@QSdUm?-A_ zJY8Mw#CCnNM8R7fg19>b{!j4~Y)G_Cx$_hKm1%diKfQk98KBt#4a#rJufOgX8{X~E zlipKiHFJ^Y8ywjsfS>1FkQ%vAH8@!HEIUX3jyB>WxOgc6=gmgQ4qJZ>bt0`Kg37cs z?{uNBh+w+}!==y;8P31r>{?!OV8OP(kPa=QiV-8}s*wa?GNtFFzd{ zl~tUh9)GB0%H6p)NFmk1n}l<;C`b}u_pD)-b5#c_z8m3fTnBWN4do;e)-90{MyDiA zR&^P6dQV<9*rb-%fc~$SRrlJ*_9?S{RjeY#)Gunj=eDiw@vcpd(7a%w}ZGmq$ z)1T^R4j~~K8UYE!!INJzuU=qEvkd#y;wIXi$@_(fD+<4^Y1e+w{$)pKJvO9G)2yc! zeQ?WHMK8V}PGM#F=OPM=RxvMuLx$1poOU()(hw5~cGqC-(l=%uanUkRY{H%;c9B< zS3xJ{JDH`jRz4+2WE{Cd@F9@<34>_j+UDU@K!kYE@pfo_w@VSf381WYp8<+@jR zE*Y!h2nM{|+GLrpWg8V)2d``8PSzCzAuN#7!4ZNICgUpO25^y_|Hrep1NS&y&zmcf zbd>rp^TyI}xr9P%iAvIoFnw|1ja3l4;xC_Pt9isTRz69lA7#JQi@L(@4fXpBG`K(V zX&1%la@?0txe*pzqVyeD*I5@hnZ-RX!+RTZ`pm^_1+`QG)tr_v8tkpWDW|d}M&~Gx}F)%KzEcjqWWVNEeD(GB7d@$RoWlzceTN^+c2%Uzoe+;9dptVCD`;Y#iEqDAAi;9Z#bjT?3i|4>b5xVAJLS^k# zb2E}A@{|@A+Hj*SWwRA;hkmH-CMaFbTmMJPkw-xLI^JV$ut@YDnk1h2<)Sf`!9u49 z$rWAArsMdv6If09P~u=uws}kD{$cIe!0hnYQVoLvih03UTUo=KzqzUMpUos$&92Zc z62aII+eC|s2fq}uUpCs0g_d+N>E=plqh6xf^evU<2FH-W_}(L6cTMUOWz#tYhYGEU zJ{zbvt34J>zLK@qOYVg|#2#`nxnD~XJ=s#3GoGr7Hqx4tlyrVjBt*vFY^>B>jSg6o zobj=pq+-8rqLz0}+CVz=?~lD}#78q~b|0Hq9^HY$(kd z>N>Iri&q-MtH^v^g0e2+S#2G5X!L%)sPVD57Pd-|FA%?ke6=6Jhw73(PWJ+GW-@p4 z!Dh}#lj{0h1MG7(yK`GVhuLV`e*VVh&t7vqNj?@gS8MKzq;*#C{>PQsk0Nm;PxS1h%Hj4xIm+PfJ7*7Pqgj$WAfnCT%Ryfmv4lK91G0QAm)8@WMO6+eO8AV zYtSsL!95V>TA|S(Yu7lu5<|&=N!D_(Ox~)m6rvW4AKjTZ8jS%J{e0u#AtZ^Wfr`9E z@h~kKhM#`I>H+w2DOoTXkcIos9r}vfpvy0{Dy+igAG0YI54uf`f$ z*&FP?Bu+GE&gG}C+J8ae_{!NPovaP?%^g*s)8{&1+M%eWm8~lD@iG}ug4Eufq}9N^ zI=U40vf3Uu3;%IC{a+|#6%26Zn;3F*5NHc!`hhJQJ_VGYf3ijD;_>{@dpq`3rC^Xb z4&oO11uoDY01f>Yo^3Dc@gSD2$!C%Otr7wI&vMa4>cD9)tjO-S0rcQ>iP-QDAU?Kx zOisRJ(=#bQKj#fg!KU1ic1#$>bDR&Y7q$&-D?VQ>%vxR2Z6#K%eT?P2yooRNA&QHdH0*UEQWSZJH@iDUl)>#5Q|?n`arwIe!5b5gqqcwV`h4`_`|Aqpcin?ZB%wkGnhT zY9$$)>a~yM!K$7mxw&N*H!yQ1U55RJ_|)qwL`?iwjGh-xa#44(#uNYQH}|3Biz@Zg z*Pk$z_zq^AH2F}@58VCwaIHQPb2rVGdga=NTn}JZF!0qGE9Im_KDQKWUW@5~Jc>HJ ztyC;;bc?xdOG!ktF(^MNa4YqDhrP#(C$(O_R{mlx3Exd9-}qSZF~~UAZndBX2#D!? z`|pyAvq-Qie7WEvzcX}Y>M{0bBt8Sv>pL;=cM{%+W|==Guw`E187^v6DCtnZ3<$Q8!vUdVx-Y!&C2_fBHKSoH&|~@+ammNzp_k zk+5i8{e!1U5x-%On8rBPPzE{a68V5yFfp*-Mi3W6Kd_$t_3L1gtf&Q-bOPhAb@2`> zBOR}jq;WVO@uLG0q5Y!CF0f3O@lM4(w&zmr35gd^%v>q$L)Mm$s^g~T%R84wh@n`X z+UrE@V+6;KO!HN^r+1qi^76s9B~KYoWZ4NQN_>vaLvR~mZ<(d`nPmfVrbW(Jsr1{D z8I_*-R|hwV?*%o9`yY$nomw4WTNJxSNalHLK5?m*EMp+|M)W{)bVO_V8G3 z*SgQ$4(o?4vTx!c1yn}@S!*l4WIK4dK#I0oO?yz2!+z>NCBwf{8O8_Yt3e3RxBi<{ z2kdbChx8=08zP*<(`O-~{@qJq?fqn_hoLGA)x*G`(ySmwFh!!dEf3;QT=e4fAWq?((R)LJNoL z`DtRsFYQdPG0Vr8A{*Z71h7&^C@kNh2UZ4VZH~YiQ5Sz-*f0awvx#b3)fm1%_Y0%; zyr(P~^|dO&@~+~CObg6bW1kc=Sel%PsE1EaT@YAsTgT&fF}D5%tH`{1Q?6rRxM|r&2?bN}{G>wewj@Lo!WE^=H-P8bQil&T{BWy(8tbQl$NWT`V%8-55pbibho>t0N?Zl2p# z*l&c@eb^aIpgq@-?BGw;7K)zM%4^k=ZefCKjMQWoBuLEvCGKN-J5I6-5pO>0v;zv~ z-oF6)_DPTEatPy?g5uU<8Fzi~Bi>320?YRWzBy15RoZLGCi0sMXW`Tho5 zrc>*O@=iisjjH9r{6L|lQ8$~XJ9WrXR-h7%1;wr_iDBB z_!u1wQ!(AYp_t^ii^H9H^&^&8*o1xd>$+y@HN}w~+r+ZjmPJmB`JE|d{+7^}8 zq@tyyH95o8t%!=x3h8P3_Ybw2Tw{t6BO^ANHx=1?`IoV5gMf*?LPh#FTY*GK0<}*s<2~$mUHV4`BvptT{fo1*-f?n+Hw`4v4)z(w(OCjP8A;W zeu5y&QIv7BI@N_I}WF!8Z>*z!m z(Mjp|KL)+&{D0O@a-_PGU}atp)9_>pQFAv~Nfv=`P(U1wQCDgFwQs1@-$vVKL6yQO zgm%kKXaMP)`+Yz=RZ5T?tt|@0^hrb`P+-O(_!l7iSM}om-xaz1RdUb!VdA&u$8UCK zz3=`v5$pxOUq$}j=j#Tv)Uffr{+dWVSnqxJY{rKXEh6?xcBP(aJQ$@uLAB(;aCbcle?>nJB4+mG`r$W>`n*;R#9WmVPZyJ)TI z7Fa#@=sbd9=@=mYGNASxSqxEl0W{ggh+x>n&NRz(Y~+>-@A!w*R?Wj*nE|!FxYB94 zC9ySRvmoUvO#EEyT-X-NdX-{w`>7MKKiyRv@EMrI)UvW(;~u7e^GOs*y5l>=r8{^V zHOldD3BLcZJ$8Q;JvcfkVH`hkES-Y|fvV!B2gUnF5Usqy{%gR%+L+$7sYt6jWMbAX z70-3`%B7F5HZ_Hd+KcVR&Wt8<^M`g*8-;M8X&Y>D$uyNd{HG$&VcY-kMnV+-i#Ou+ zpq`r1bu!?{zDybl1l!Hg%G_BAZ=FOyW;%#SZgfC z59%^jqIc0e?sQ~~ScTtv!q19|ms~|u<|{IxKP;_Z!D8%YC@E@%caGV;AO;f<4aBHJ z<3TpO&)~}4#5lET%K<@lL`?quv2!NA(?qx`T8VYPJBB8KD7q*C6PCiXe~lxQ zNWqyGp~Z zo@?1*mRJhT{9cidZ9PxlJ>GiZ6*pAAmo%o>Lep|}Pkc!9s^z3(;BJc08ye&D;&PX0 zV(U=s>WA3I(m{r@Uh3HmuJ1w^Fq{a(9AO5|U-A@_*YR2F3SOoB8_QGiuzV$t{Y7H6 zQ{)(*nfb{<2`D+zl z2jKS**cH6?{D$54_4}A-19-5E#>rI<2xVe?EqXQBW3)_BIPD8nkU+mkfx;h`alm^S z>&H_8w$}Pg46!?Wu zg9-WinN@{KWGXOp-tnE(A7NU{4c4hCrG)k`NAOoA z_AHd|w7B_f@^ydQOa_niwY65>WNAzK7?_9|s}py)_=*ET!5{h!IkpgpT8AQnt2aX5 zzcaqVRFTv6;^Pi0Vq6`Ki<~~lq^4YA&Uo$SYpLwD#2kWbaM!7NW$CO)K9e8fspPw0 zAi^_{r>=NSIjyMW+;HKcv^2@Rk`{X%v0(|FK5#9h$D{lEV!Hn!F}OflApB>(K0n`1 zySP6i!;E~=$}M**H>|i$lt*@+=O~O#tC!_l(R9o=d>`#eDAPoosvXQN{rax7#(-t) zGReB-ha{ZOEP-)~E9}KC5Lowu`5yh7o5aTPgp>9Tb|n*YNOI}u;5dQ~jR4F?^9O%0 zba;|I59>DVJ!_K$+jrNCFO%_JUXIf)taHp1Ivh6TwdKZhvs@#dEtPxLM!QPw zdRV5LqNWnv`*Yp%rC|yFoIu$W@Lu@34P}13#-c5%>_;fq$Ul1_Pt_Eo5GTxJ~@8tb5oNB`Ng zlJ-*RX{7OD_*-(YP7US=0P^E=F(548Pyw4RDA;6gvNUp8%l3RbCWMM(bVXq%6(&n2 zIHqEzb_%dxy$B%2Gdx6Kx(2r2`n^YSUx2jpV43U7Emhqz8VoBou6E*^d;alg_R;Jm zH&8M>9KRQ6W|8`sAzX6`Pq3@I5<68=b0VhA1YJI-m8;_66`0M|gNQS=n*;$nz z3alMLd-q)S6`tOn|5GjR*>Mlx2|ostH?)i0pWk0nGVj%EbKu&5gqqotW&!sI_I)k} z@A?CeVF5=dX*Jb`Ym5vy3F<^+Rspbr>4UHx3vIVCg!0D1WB A`2YX_ literal 0 HcmV?d00001 diff --git a/doc/python-twitter-app-creation-part3-new.png b/doc/python-twitter-app-creation-part3-new.png new file mode 100644 index 0000000000000000000000000000000000000000..739d6162f6bd1e7d86c657630a0ab09dbe661610 GIT binary patch literal 16921 zcmd732UJsSn=Xu^SZFE&A_6u*L5d)~iKui?B=nASLJutz1wrX5y-SBsLQ87^~Dd@VAksV4*7{k~)t{FfgH2oW~Otto@rcX5aN4zcEe%k)LCiK!a%#`Z;bV%8; z@&~fc4KIQp;UM1i#fuw0YJEp@;_uJ!M-!Z!>*@{tQ;!z~F90JX+gG4R!AUnCqOQ$Q zk!~cPi;|PBwAcDbmnQO0f~4yv**{d=G)`#+?$tZ;2}G_!W=S1>C4YT4r9LCp|3nIB zZ{$y$JaWLuTeqw9ruw|mH?z#>0iyW~{v>j%P3^m_Ca`*Oo;7B~|7%FVXoLWf>XZRZWkW{Y32?MlD6g zPY;<77vUCpwo?~DNiuU6E>_YWR!&i;iPmGBo2Y5DAR&5=DVc1>dN;$}SC=Ro+I=6c ziI#~AvkuZ~{$+%*gb^??P3?(;HiEWOyUa`zfp;I^vsz6tt zKyP>2M)?druG-(FWlgh0Ait<5IdLKO?(t3Ay$E(#87QXRh$l_(DV2!BaU@gFp{%}R zDbixWzr#K+H>ck|tI7U>B*NoKLMB`bdr!Yc%>I19JK^S_Pv;2WOYgG5=G&qtf3mYs z1rLVH2o&88Wv!fSk?K*APrnziAXAZ76LfeXN8esz??zL00kd=5BH-$Z)4 zCYZg^?tz6R8fz0)uotzUGfUgCcES?l%C`;wcld^u3uRXR8K~?Ao5Xpr-y}ta2Hkc8 zQ;$T6i6wnn_R#Mw%OCRoi>oww)I-0O^YZuFub|}W^=xY!LFxnK(K&nbW>c(wtx(}N zHqC%i3UBqB+j00ZFtCV@mUP8FFT_h)>H77IRN64c$en ztnr)XaOM=J-^=VPx52yKDmKr|ZFW(zw$i9K7(;#fAHoo=W@0bU5>P7nx*>$P9s7i%%DNv@%qxE4rni&laVb zKFN3ERv6%)+Tx=kC6?~6+UdW(`LcqQ5t#XOfoV`hFT9c2@1(%@?w6I&@vX?)bT;O{ zxTIYRSr2{}nTU?B&pKXc4UE6pBdwdG%$8}`lbT<7NPTbnlwkw=#s@b zl(?2Owy@2T%`}Ir^Fs&DUw?_h-vAic2e#nreVM!w2w7t5H2o*oNJ+$6t@}me*1ICg z=}ODF2@oSRwIviG-XB5J8EIKBS!BZCP8-f;7{=ZH`D1pbjtI8IgCJer8H9RRjGcU1 zqoiAR7}IcKnwTB7RtDL%t)~`})ma&)6+euG9tl~EJ5tlV#yf-Z2oA+!C7fa?SeEx* zvh@i^MKPhYi!rr()E9Z*l3n|8ueGK#)q89lvo!1ciM^1qC)s6SxYD*AEPa^tBh@#L z!%!R)Fj&Cz*dat&0k3Dzsgmnc-zi2%1!@DP`H4&6<2I)34smh*Gbv6J%}HL7r>hl= z)LCZpsOsxjcvt(#f6dlmbds zMD=MUiPLnjJvC;U^k4|8&*wHFTs5A^nT33|v)kN1-gVcEzkn{<xbLs`MKPzS2M?vO927H@lt(Tc5SY zp{18CNsnGnErR|sWMqM_=l(kk+?xTb>Y1lG+hx8Em-nqJr$pPR0ewf-@vptV86Y&T zKh+f@8PN|00+zKx=YhNDyczlrfGe5j2PcxpK*oAEh1BfBrOSXD0m#9*7ADg5zo~dr zI0Yd?EOj_t*+?Agubfb2re|p!#V4K|<6Jjtujp3KX$jYEJ;|J$+quWss5m`yP3y&w9jKA%_UMZ{T9Crl2&*}aPj@@3$hp9shGjo% znGHoa+o|4~!@7d#RuM39{+nsR6-4y@p@YbAiP7GS*&{;p58j*Hf64Tz2%@e_ z^?821zDL!rVsuA=>DEJ$r`o&L9eyHT20>a`j>-M~5AgYKU&#k*MGo-^M=rQ_SuvB5 zg(Cx`Td9v)wF>;k?;4u&4y1tx=9l%Pwu4-IsE)9EXT?G+Ij~3AV#1H`r^?-p{(*hW zPDZz@PX3gFoZF0-vFT#HR3wkXkP$w5aX3#Vk7S;c1)82!G@Ps*;-zZ!7kmc|elA%x z3k=rvM)|9A8`3Lo2}hVBLr2C7B^Xpjdho16YnQGf4%=^_t0$1(wam%&oBEP}uoQle zUm3hD!ArMT!ZSh_#WG4eIrO(7uD#yo3byBzk zxg(z8Vk`1K@>$NEIPY-bgo_z#z((v9;y{zuH|pjW$MZt2l6{gKp8?o9fLYKK&5#I{DwIrxx2 zMa;6KYoD-4P~++q>39x<93QprXn)q2f7nBHDGa=JGg@*R2IWhIt9S34#)$^2Ix z{`p9x6Cg89{aw08$r}k_nHoHjM-_)L^|!#b>thJ#nF##I1Hk`kUNJ28Ii?m7dNxou zeSh;QbkHI&S$93GV$!YK=q`%#h2REOJ0Yx)WbU__e|JxW72W*_O0;qJJxX?S4R3ZK z-}4e={7(2iM1e4=FJtZbZhrt)zvi&6^Yx~;%9jG0Z>-g3p?a#1Y5@lT)u65IKjf!O zSQa6?s5|*`MU!J+GhBPcn_1)PO>q*&GUouq=yd1-hj zJpNaF=M#=3`QTHGUbe>Cu05KPYlnfj0vNzq{^XTDh+=hkzbne5&90{xC) zQK-6}PVvfc`0{A5gj}HA&MotR_!AYJeW4b|PoE<}7sC`hy2~2HWQRv^ z>r9rP;|1*t{xCc2Y}RRW)4$%oz4JWpu>sEE%#=tOr!uSo_QPqduJV0dMds}EAsXux zPsC!&jSE*RH?1O04g^Ap!{^98OwJjLhMoUjs}P1F+dGROZtgbzP`+_uiLDpFnVZ$> z;*MKADmR%29T%fARx1vXM?BuQPG29$a*-c;uG!WT)KK4 zhjVzLHBo(cGRDwb<4s1n-@y1;#{HSr*EGtMElQ))^w#r_V)*Pul(@x8bxmV=ZFdw= z-XDC~3VY2p-1-xJb2Q_#xU_P;T3x3YZ-9_OGE{8S(KeXPRCCN`JW7236e)ujxC8)} zuZ?w-R&V3m3so1d@co=@Q&Adgm%`9rsOJ9#N`b0r5Py7}XR=tZ&X_Q&y#j4^oDMt@ zb1>R&5SEEw5}DlK-fycfTt{qNCI3@45mr&k{Jx<;%p-*%8U9wgAxUtx$|!xbaW>6% z95{Tu)j{1!UdU~?*F&vxFlCh=WrlZ;>~L0v7D1@-6l|o_3Aa_^r;cgVo8=#Vg5#7H z+K=@c`?aR1wCR<_Mnf}4p5HDW_WLQd1t1?`n)~+D1M|mDNen5;T2hXudtW{$O`EbI zyR(_A1XRO5#g@MWNfl-H4&@0P-{(Zzz*tuK+yL7+we>II1QJ^_;;Lf}vx}`hggE;z~3*3QIJ#l+DV1p!9gX_UEWOkaxfsKQt%v`=zMyq{5gi*j(QozY-0s zvgcos_EZp5PtFZ_MK`Gl)H2zm*}F3uNt6Id+GG;XML0xk#uX=A?*WSV?-2BcjNW1F zl=0X5rg^Zj-$)w!!%X>DOpQ}A)jvd*{9{zhf4a3CtIa@EZhA@i60LP~a%S+Qp6XPj ziaN5^W~zH2a>m-YIC+&2SFF{e3V5(hA@ZVftb+Fzx}bp>wP}8uW11HNYxu6}6Gf`8 z0PFGV;wQmB#i~SqBjWf+iS(f{+W{t zQ@9aw#Y9D&m$JkECg1CtlAsc9lV$P5T7`BkK4rc3y38&um#P*|k?udfOp3#fdbni{ z0^@2ch#Z1n=-m!6SCne6T;o){V>JR6Sbn`^6ezv^(~Hvh!3Z@SuzTV6Q|{3UEu}X= z^xqhwR+g|3S<$B^ZYMyQm74D&sEQpCufWlhT@pP}i(Q%g zYTh!eS{S{t4I2)9q{BosSZWEUmQ@@c!+GoLY%vF%u9ai^uMPAxXieHiRcLWDuho<_ z_keCa2$Wn`CGrhyBW9ifQ@_JJL*>Q8iY)qLiz!K69!KZLY9|gNAQ>ellmSa+;9^j(O;itbX`Ti%2$3<$RwcW`)i4_0w-gRmq=u? z?};SUcjS>psl%+C-i@9OxX)777Wi{_viV!@T6fsNOl2w4ct(ezwc+-rN1*UeEqJ)c ziOLiag^IsHOWWx(={$(4)d=JVMyPSU@9SsSUaY^5sZA0(8 z6K}Y%@H6WyY6)%hvH+b)S3GJONe~8EtTn`sw(%7V-CRI&_G;!(2idHnCLxVQ`6ClE z0|N#^?K5NaNCzhrw@ct`EZmM zsEdl*Ii#OrSees_qm6IQg#Sf%5@Sny-VK0 zw5?N9qPxD{FEBHkiyjh+dX0vwbU_lK{9o4V9^(Ab_`>qTRA$9Ugq`CRC%?XHlAJ<))PqBfn%DGK{0yr7Z&5}>`V zUOl7|q4LZzwF|SI?{zkpE+s|;q04I1ro@n^!nc8~xV3;sSomx9eUQCeyIA882CN|8 zwZAl9%Vn#kuSIWgCal3E2upQ+hU(U*pZG_!ju7CtiQ7L)9DkKZ7B)Pd56&sx4j~$wRV=P5}QVIE!q1T)HNFU1i}(6khP{%+C4se_K;R!`93-Y*S!zag-%%L zJ?l^fhDIiBcF{MOnWAo}6!A)E=e2;;#8t%*%M}*ziJH~#L3Spk*%ACr%PP1oa$kO>-NxE zVac7e05k1U`$VJ&L?M+82AV;oo6X1s8Q8{h7mXc<3W~t|!teeG?lI9t8$fg~DYk=a{4iH!_?Ap{q_6B3EBXNoi>Ys>*?+SA^ z@+CINzne0KM#6Hu$L4L=)QO_y~y&`*kR9Lm~0V$g85w2mI7HYcA7faLioMXsolEc4tpUm{?D*=C)dS zrt&1&S!yNF9l*nwm7r%~oSh5Q~R@>TcLm8WKA(0bb)E zI(MsQH}AA{-JEO-vL^P+%}786%5IZ9D7NI`AW+Bl`1?F|)@|)-f-57kH#IrtK$qYc ze*pTegZFNuwu1JbNBV~BSoAM7zB&p?kJsF2tnr#Y$x-lYEU)9!Z5UfEdpV5v-x2XW zWAJCA!}gq>q#i&Ie0NSp&u*O~yJh&mA1t=LIQpedL&N*~2yU+Zg}wx#aEHieixwp8 zA@w9`>4)uijO9IzRg^zJYt>Tk>a8@?1Nj$0qb%)giCDd4AAkK^U$>++EzA4{Rq0nd zS++0R&6yRV^o%PEg|oO6k>D6RQ$-I?e?6-TLfm*)XBn2!&U*sf0WvzzY2%=IF-a@; z#>7soAvCN%oGmaHWaIEGrCrM)0Ng+@EzK23jejz1Rx2|?*}Ro7w$XbC?b#J;TlQX? z%Z6?oHnL6p#AMgV=JX`GqQtn@k8*aTifz9$yxyr;!#_%N_CD5Gh^4oIOU3zh#9Cr@ z_Yab^-9xz+P$xh83oHtaW=@T)DVHH1!;b_H8;vLM@kMyMwvdgEZKii1T_zB#Rbi&6 z0mlkT5#OEk4)(poyb;hfe*^)oro6R;g4ug42cc^A>yBOHmoNbLS|8j0m4Hm3RChI$ z#2PlmX&c{k7lHasf7b8O_e^A1PJKDhSsoQ08b-GhTyFG3Ay!aLLwoy`6B3+I`U9zR zO(FL+Bc2=q&w0BiJ`7%X0!l)Yx4r86UK`mNdY=-^~wKge~o0?zUl}hG>gvLYs;LPx=fm zLf;*Rkhs%R^m2JJ(OTcC0%;*?oQjLqoH?&rWTSoSvS4a_vs#6?szi?ja&y?KAiF!b z>~uq3Soo`>GL2Jisv-MZ_Tq8-3eB~*PAor<;xqBi)S!42M|?ZJ@Nl%g`He6j7^ZT&nvU!;Z;-2tZD_@rq z?=!oKG)D)t{zihf6&%)Adc^bg?W)|KR=@C857%3};jkGO!)VAlTWsM^>2Oo+nt--h zROKAH*ZW{it6st(iML8nM(dj?o7H0YW47g3M*L{UBhDQ)3m6}7fAkorS$}_$MF(4xrk|4#r1c0P!|VhoR_~+K?pCqrJ<|z zQEI%(0v8w~0mht_C5p?PIzHv(KDs4nA5RIha+dZ8kh4 z7~YUUN{Js-0k;2os+y|ah*LX>TNS_|>jH}$3`_pecrY3c^EL?9a zs$6k4kdN4iP(G2SATzlc4(Qxp+@&IEHKtA6Y$tROq@7%S<)Z`E>}P}xA&8cC&J<;= zpcxFlF|ZmWx7ZMz!nhJ%;FARHkVrz9?>o`&8b`%reDF>O?#>h;~gP1&oppr_NX z?0SAyjoisJ-q!k71Ihz=l)uxu(F%K#9{pZ5pu=0cK zy?-Ws{a=H4|7q$xxUOR9bQmNowS}^Q^z<@u-`>qq0owsM=Q}1<0N=af&uixGl4wXc z2X-NWM1FC=9erRrkYDc@wCuj7DZlBhq&zwKG;4+(H%l>wu79tWYTMZwA&X6BD?y|5 z&t3!IiA3Y?D*!IF%8`>FCi7raRLY_tHubB8TFfB6<@Tm$yCdFv%OJhC?e@2IAuG{;+03=FCi zm<+S2bpdED+(|O%%3Dy?Xj`EY#ADRvAfU3u2Z5*N0(&GjLxG-6TiUNyM6UaA6}3pA zG);RXf)VILrBYf6v&bcv3KHTl3m8IaXI>+C;bxK8#uiXvY{Ud%>_-GKk6_`1qQdjMU|b0{W63@a3Pa zZ&b~aZ48;maHzWtxY{&Udj*s>LOaRT4K0Tf$$!?qYnCd-D~Qu-VHlsLXZ82ectq7# zsJlQZGzUvrK+2&3Q*ieIVAfvW3f3SW+Z&WS?trT~XVfrR=)xC~3U(^evhmi#M(yCy;O zoJTL^p~l+VfpP*0-c7GO8!;Xb)gVfal3M&#?2h9v`{@cIl0CA*{Teo;*oaB9E3PMv zNv+hD_sV&j+&p0#-8K#1wkb}l!cRnz3$oo)B8;gO<=oLULu=X|ydF4?XjV(J+UM=H z^1vy$s{sVu0HsH*udgZS7|ATBR;FH1w{3*m+kJyl11f~48B`;)T_{X0)Lc!xVo8`1 z4gh4ZY5IB}S@@4lR!L}MvhO4*JV+7s{~CJx5PtRQ)yZo>A8Hp`nA)E)^Lw)3!*=2i zfGi(=z5jCruj$%PExvaXC)5s4(4&X(ApFwnaGl|9%)sy0cO<}QK|Yjr7P380q~kN4 z8O#y09{jnhNFQ&13Upf&01Q^HG_ypj*BI_>t_ZmORjc=TQs&!LpI}M~xRw-X72XM* z0iKlJk$9s5b~#GKhef%Dp)VHs?0P?NX6S*uom&C^r~YR>KhsXlz#Q(q&JVP#K5J^^ zOteX1(lk|-pBAgkwK?qT04SvEV$GjreVs&Qcqw>{qIR{C3zQ$Y46LIVX&eul=HZ@$ zJzrY%ydVW5aqO&#WMeruLFiA)KgJNVmfG zCAy=f9Wgx2z&DprbN0&m>em{&3d0a0i!Ha_`D#1YK`m-J{h*2f!}$l;53=yexKvxP zU6@X$W;+uvPm>3YmETAP^E{cNhj$gb zWbp9k>9Dt1JU&8pyc8xUyDM@N$RE13snj~kfbLQDJH`#r-@I9U&*c64lW!9fMTb%x zqSPDu?mA|w5g2K6+278m^9jP0v56)gJ$=!@$@hBT3>L%Wr<`k2NYKhDU@7qbbog_k zgu1^j-#ayJ+hcUOiu(6QAnx46tO<~mfFZvwBXExFm#XH!gv4L`Tdo&>?gX!OooB=! zN&v!F{znLZ>z*Xj4L|@|o3nOjif5$PV@fZWJel>!lkq>3R3c?Vk?}wJzod%Yq6AJb z(yx}e3~AT8(;He-_BD~v6Q(z3WS5*-g9Wj%Nq;L}6S2(Ytg?92gW6kKqxdjMN<}lF z8pm+(7>Hscn0RnpiKAIOJPwnO6P@EqP9`my?Hq^_05>4m9`3@E!VNx9XyG8Eq6IeR zLrRq)6l7_p*fPp%;|`qKZ}sPe;Px=)t`@CXgII7NrB_*Q{A_HMbrRaqTe)I6`8M6G zB36%HbKjnRLkfYcF9w}(`6%l32xo?xG=j6W$9sg=c5OhgHC67tcBxrNO1D28{!(c$!LFkiNbfpp_N?hV5_9Vl|X{Gq^VC769kWk}P3+>EjvTiMNqcDLk-_i-ki z`z8CgT$6oeIXj~GkdXnb4)AyD=Kmp^#Pjaux>!mPFv+fpY(6JhG_s~2|54gW&;P+h zP*R@Ezcbs+hCEOxh`4^ezHa5q)D*6emWEIu5+%(PbaAL4`l_3jO$Kk0v=O4B-L6m5 z&jUyzX^*7y0(;e6w%QyG*(aNLLx^(RT?|4#&=a=`IE9BgA7;I4FR*v{*q+$*oi8#e z{XEO1!`;!(@_XrP@(9#iDR25yBY%k6^?THSro2*ft*?6d#nj=%2Cdy7U+r$l&yY zz=y$CqH;!M#01=4m+Z-GPIQ2SkEk%Ib@@VX8YxdToCbJPsPBHqnW)Eo`igty3*BiV z&{Lq~FC@Z@TsBYd@?1H-FLF`Nv_DzOUlTC&WUns)0fyF77Qv%xAJ$W6pH;7lh5j^o zQh$;_f59i@!-S25nf-|!tA4-~kiBLF>d&s>>YLdTSmSbef#4qB>EX~JIR-k?+f7b5 zp4b5n-G^_0=Qp)KZIa%_5%oO1y>oWNY4#?hHZplV%<$4~Rg_0Tb427r z=;^8#kWk$8>p{vr$K52ArTkhABANDn_5AVqc!t-dXKPUQG>sPJ& zNEVg)F2o;!YJjX=_j0x7%q5NqtQq$XIrop*#dmC{cY&zxT%TE{X|xy3L}k?1U~wcbZ&1s93lTEWm>(fG2)y9nd!T?J~oqNLahOoq_91!T$8@70bQFkoZXJ^*p8B z9cB)@#48~6IN3gD4j$0j$3wh<;X!Nxa&%2_X?Z6-DoY;#qgoiQx`x$l}{ zIW$!w%`)ln(%9Q9y~MwFH4m;14P>XR+*ctkkeNw&Z!#Xab;HQLouXJ&?eJ+v;FT40 zpn5X6Xn7Dm`DfOmKV2#cSiM_bBrsB;M7cNm`N8gPq%)nS>yjtBlDHVMHuTeZ2rblh zcmP4Z5PIdocgHGs&sMHtEp)t)r8a9o^Q-fO3P;j0`l&^opAWctvLDXguKutm;Dt~fruY?Ms$|*-9~L5V(YKLTZa!cfn)%9J2- z=ifv_`~Rog8sh3XN{co|=VfG;E}Y$4&cYxwfE;!K*%cXyPStKHf?vhXDY#LKk9Rbs z;Mj;nipG6wK;EG?FumtE{@nQ>e9PNYIVxEIm6VRlQ)b2Iy^4aYMB;)D(;4R+_$x>v z9c2Qjc7E~vlxF>`EiARZl>TlvZ*eh?)?TIQsqC`k(1@3&HX35r>d!~wWh&>xVmJ2O82`y3m=%2c7yWH!|xpH_x9`W@%|z z;PwA36ZTK}5&{U%ALPxPi&d4u)x|A!x{Iu3jWp2$E1a!F7FeMR{Azln^3+&!Ovgj>P$cR6c zIw;0guERc$)D^zvhQo%p9p|(>LlD9>8OL88*DjLXWdnkoR<|p+q<7}}KC6&@8%5X0 z+<2bZrMVfZt!0qYR^I{xEmtOM)fT_cm$sP7H7{h-4mRCNT>Es9>T~_;M|g( z55nv`uEXU&>-NiXA8F4??pUnR)EBbY8gla#)c;iJbr?PwY*^(!xTQLvAD0kcraI`Q zAZ8pAYSM+=pyjkoVkpCwpb&jjiEnD|?m%N2)E+q(P2k6@6D{T?U++vFs0zji=WcYX z_3t-W>BzW3&yhXvTOpU+!{~2RXI$UKoGnZ2RWkV!8%M{8r+f|e!Htu|4e(5nlVnQ# zrXK#p5>sG&`U-#K5UN|gfp4_WJ>fUtFJloosXRjyZTUN_k6z*9R}UQ~!oNp8_BvK> zyiD9*rlrHG+%d;EUtD!6c5J zKF_tW(ZKgt&N_i9$JFm^6h7{N6cN#232fPWA9zLO)43G(mkW=}*6dgEssOtEPItb6 zek4Da)h}+-_;z|!@T5RJepu*gZ*xdlj+uH~G}6Y5BA z1J0t%7}cts@Z#dF6P`q=;bUeNV+v#oa$0z4<~8J*^h1CEE4p1nNH}Jj#|UAHx@rGdU*p5KCi%@IMp!4je7Y(XHA1l_9Y|b=ZIjDz*h_CGf559Cq#+S=r65Fg3ux|Lpfb?g@f4NIMC*2~pL& z5we~F_u3(xRD9#+wz%8jxwjYn_+8)P%j~RrT*&w8loFplR__XGxZ*;ASv?=D=ZWj%7q>&SB>;x60jpX5623xuX{@ z`By&~Zo`&saZ@kqgo)J-kDZ}sx`Oog@rj2`G1;E!arvW6n6?AXiTO9QZSAde}{R9xQ zW%UN}XiQVIUWP_5yX;+sg6e86mF-t2x#$p>&cTp;;PSgnltzgiYs3p|SrCvB*TzwU zVHATNc(g+2RX&uP^67E1j$*V|I`2(>erAW1LS~1m3^-KOBe*r=AOFeGylIH&>2h+g zKf2`MVD9Y#sr*1KzJ3zY{fsAUQ8aToqcAi_3uX&}U&)ZwsX|wq*TDm$2}ashHs-k- zg(?)1fMaOVGhnq0kxa+-X#j)*xG>K(`7O{%4Y|#dcp9+ zwLwj^h*06Fmxxr&;pjvW;v^2R`eeb8fT4V6E~#%2d?&DB-}ljzH79e}`>o73B0(m>>aP-ftv$)E~c!qWw} ziuc;0k_R_?)9Gkz)e4kQD%LBjZ|sSmz3;(NPNptYOF58&5++}O_U|eX`Sw-97wAi6 zAMpyy7B_B3)xr{?JfY|B09E*30=^wwj8b!OFyCE7Pg)KWXP{~~QBd+dTS*TE1Ul`4 z*S`Vvnw){j{5A}^6yO%ansq~~BnbTq!@zUa(>>`*%7~lQ`ghJ! zlwSbQ{8q!?j4g2cPyP<#zZOXPJ6F)iW*n25u-Z3rwe6Y;Y{DBhZP$F*TodAUIXN(nUGS z?9!p8gk2qgZ`G_~BZmRF8^HgEj+sG5bUd%hgALtX8wp#-J>W_=_%XK=R=K#ls3} zYl=0&nql8#NgFmP2LQh^L#724o{>~a4%B1w&){fqGMI!NT_^zoXp=r}oicatzttep zjqF7ZBI$vWnn2)Wo27SIvzsDICJ_2pvR@Yh%8sf1aKi(kTeBy68vqI^A(2- zZKhoqsyp~%lq@alkz$-3^2#A|u*|uUD}8zBf%@t&4~IR=AvoUQY(m=bteVMx{Rhob zsjwuty|?m}jL^qb5vk?;jUgO($aRBtXwQ-f_<%4Na@1;(wm1|_3}!5{*9Rv9YU3+2 zkT7-aj^urwq_mi>?`zTXXEq^zK1OiX@rQ;U=$j|UsQZSK&N_v7mb_QmF^dZ#Ducmc zR}tn%rfm#yi|g-lcC1uK`eg(aC4^ar%sEvr$LY#cse9D*4Ko1UZ(kuzC?@3M;q>$- zkU+ADJZNooc%r%_YG`09tpW8$6vMS?F-j9K)|0Ltakn4Zy?h=kaiAkecVYb@?k(MJ z3*xsKZfFDR?RG+Uw3`F=J$$*b8Hq-sktDrQLrSZ9O8oPpz8>mH`zv4EE`QTt=m@4SOIJ-{CTMtmthw2y(Ckv@FO_RM!9S zGpnH)(yq`7U(m0S!Tj)F-xo|uX$BG={#D2~CuDvdBO)&C9i!PDy2c4hLWYNfInkBV zn&(Mra0DZ(e|#@T>4%D4KA29Mce z?U}*)q-~b~^euOo8XFwItHXxyY#DCn)lzT;xDpJ+cm8U*;j_`AXgh%|Ji1L=^B?4F zX;3DuXv|E0Z;X%a4xQm0FtfeBeX>0kShcTEpl@YPM*2m(w02Rzc^iPzayh(rk1+nf zRq~9Hu7hNt#^yJF& z-M>U6VYK)0lu<*R0N~_2B!7QKgE^aUewl10j{vK~r6ore4CCdQ8Pxw)gcSZJhw7G* z3(g0?=mG)Y6nu|S`Z;j_i@L@M+$m)R-2Qie36X0Hm}!<`~1mI2G|%fs Date: Mon, 17 Jun 2019 18:33:55 +0300 Subject: [PATCH 147/177] Some small updates --- twitter/api.py | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index f1b7fb15..08bd818b 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -248,20 +248,9 @@ def __init__(self, self.tweet_mode = tweet_mode self.proxies = proxies - if base_url is None: - self.base_url = 'https://api.twitter.com/1.1' - else: - self.base_url = base_url - - if stream_url is None: - self.stream_url = 'https://stream.twitter.com/1.1' - else: - self.stream_url = stream_url - - if upload_url is None: - self.upload_url = 'https://upload.twitter.com/1.1' - else: - self.upload_url = upload_url + self.base_url = base_url or 'https://api.twitter.com/1.1' + self.stream_url = stream_url or 'https://stream.twitter.com/1.1' + self.upload_url = upload_url or 'https://upload.twitter.com/1.1' self.chunk_size = chunk_size From 1fff6dc213714c0accc0fb96ec5cdc1bbf87f3b2 Mon Sep 17 00:00:00 2001 From: "Mark R. Masterson" Date: Wed, 31 Jul 2019 12:24:59 -0700 Subject: [PATCH 148/177] add external urls, base64 string options to UpdateBanner --- twitter/api.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 08bd818b..0f7141f6 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -4490,7 +4490,7 @@ def UpdateImage(self, reflected due to image processing on Twitter's side. Args: - image (str): + image (str, optional): Location of local image file to use. include_entities (bool, optional): Include the entities node in the return data. @@ -4522,14 +4522,20 @@ def UpdateImage(self, raise TwitterError({'message': "The image could not be resized or is too large."}) def UpdateBanner(self, - image, + image=False, + external_image=False, + encoded_image=False, include_entities=False, skip_status=False): """Updates the authenticated users profile banner. Args: - image: - Location of image in file system + image (str, optional): + Location of local image in file system + external_image (str, optional): + URL of image + encoded_image (str, optional): + base64 string of an image include_entities: If True, each tweet will include a node called "entities." This node offers a variety of metadata about the tweet in a @@ -4540,8 +4546,12 @@ def UpdateBanner(self, A twitter.List instance representing the list subscribed to """ url = '%s/account/update_profile_banner.json' % (self.base_url) - with open(image, 'rb') as image_file: - encoded_image = base64.b64encode(image_file.read()) + if image: + with open(image, 'rb') as image_file: + encoded_image = base64.b64encode(image_file.read()) + if external_image: + content = self._RequestUrl(external_image, 'GET').content + encoded_image = base64.b64encode(content) data = { # When updated for API v1.1 use image, not banner # https://dev.twitter.com/docs/api/1.1/post/account/update_profile_banner From 81e39e3f75f1998dfd32b08f37797f3e23e0cdb5 Mon Sep 17 00:00:00 2001 From: Charles Reid <53452777+chmreid@users.noreply.github.com> Date: Sun, 20 Oct 2019 09:14:06 -0700 Subject: [PATCH 149/177] Clarify API creation example Closes #637 --- doc/getting_started.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/getting_started.rst b/doc/getting_started.rst index bcc535e8..6dd64af6 100644 --- a/doc/getting_started.rst +++ b/doc/getting_started.rst @@ -45,10 +45,10 @@ Under the "Access token & access token secret" option, click on the "create" but At this point, you can test out your application using the keys under "Your Application Tokens". The ``twitter.Api()`` object can be created as follows:: import twitter - api = twitter.Api(consumer_key=[consumer key], - consumer_secret=[consumer secret], - access_token_key=[access token], - access_token_secret=[access token secret]) + api = twitter.Api(consumer_key=, + consumer_secret=, + access_token_key=, + access_token_secret=) Note: Make sure to enclose your keys in quotes (ie, api = twitter.Api(consumer_key='1234567', ...) and so on) or you will receive a NameError. From 27cd204e5f823fea644db3f59baf1f4f78ca6a9c Mon Sep 17 00:00:00 2001 From: Dan Pope Date: Sun, 17 Nov 2019 21:52:10 +0000 Subject: [PATCH 150/177] Fix failing tests due to updated default tweet_mode --- tests/test_api_30.py | 78 ++++++++++++++++++++-------------------- tests/test_rate_limit.py | 10 +++--- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/tests/test_api_30.py b/tests/test_api_30.py index 7dfd7126..e80ac825 100644 --- a/tests/test_api_30.py +++ b/tests/test_api_30.py @@ -133,7 +133,7 @@ def testGetHomeTimeline(self): with open('testdata/get_home_timeline.json') as f: resp_data = f.read() responses.add( - GET, 'https://api.twitter.com/1.1/statuses/home_timeline.json?tweet_mode=compat', + GET, 'https://api.twitter.com/1.1/statuses/home_timeline.json?tweet_mode=extended', body=resp_data, match_querystring=True, status=200) @@ -219,7 +219,7 @@ def testGetBlocks(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/blocks/list.json?cursor=-1&stringify_ids=False&include_entities=False&skip_status=False&tweet_mode=compat', + 'https://api.twitter.com/1.1/blocks/list.json?cursor=-1&stringify_ids=False&include_entities=False&skip_status=False&tweet_mode=extended', body=resp_data, match_querystring=True, status=200) @@ -227,7 +227,7 @@ def testGetBlocks(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/blocks/list.json?cursor=1524574483549312671&stringify_ids=False&include_entities=False&skip_status=False&tweet_mode=compat', + 'https://api.twitter.com/1.1/blocks/list.json?cursor=1524574483549312671&stringify_ids=False&include_entities=False&skip_status=False&tweet_mode=extended', body=resp_data, match_querystring=True, status=200) @@ -278,7 +278,7 @@ def testGetBlocksIDs(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/blocks/ids.json?cursor=-1&stringify_ids=False&include_entities=True&skip_status=False&tweet_mode=compat', + 'https://api.twitter.com/1.1/blocks/ids.json?cursor=-1&stringify_ids=False&include_entities=True&skip_status=False&tweet_mode=extended', body=resp_data, match_querystring=True, status=200) @@ -286,7 +286,7 @@ def testGetBlocksIDs(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/blocks/ids.json?cursor=1524566179872860311&stringify_ids=False&include_entities=True&skip_status=False&tweet_mode=compat', + 'https://api.twitter.com/1.1/blocks/ids.json?cursor=1524566179872860311&stringify_ids=False&include_entities=True&skip_status=False&tweet_mode=extended', body=resp_data, match_querystring=True, status=200) @@ -325,7 +325,7 @@ def testGetFriendIDs(self): resp_data = f.read() responses.add( GET, - 'https://api.twitter.com/1.1/friends/ids.json?count=5000&cursor=-1&stringify_ids=False&screen_name=EricHolthaus&tweet_mode=compat', + 'https://api.twitter.com/1.1/friends/ids.json?count=5000&cursor=-1&stringify_ids=False&screen_name=EricHolthaus&tweet_mode=extended', body=resp_data, match_querystring=True, status=200) @@ -335,7 +335,7 @@ def testGetFriendIDs(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/friends/ids.json?stringify_ids=False&count=5000&cursor=1417903878302254556&screen_name=EricHolthaus&tweet_mode=compat', + 'https://api.twitter.com/1.1/friends/ids.json?stringify_ids=False&count=5000&cursor=1417903878302254556&screen_name=EricHolthaus&tweet_mode=extended', body=resp_data, match_querystring=True, status=200) @@ -413,7 +413,7 @@ def testGetFriends(self): for i in range(0, 5): with open('testdata/get_friends_{0}.json'.format(i)) as f: resp_data = f.read() - endpoint = 'https://api.twitter.com/1.1/friends/list.json?count=200&tweet_mode=compat&include_user_entities=True&screen_name=codebear&skip_status=False&cursor={0}'.format(cursor) + endpoint = 'https://api.twitter.com/1.1/friends/list.json?count=200&tweet_mode=extended&include_user_entities=True&screen_name=codebear&skip_status=False&cursor={0}'.format(cursor) responses.add(GET, endpoint, body=resp_data, match_querystring=True) cursor = json.loads(resp_data)['next_cursor'] @@ -446,7 +446,7 @@ def testGetFollowersIDs(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/followers/ids.json?tweet_mode=compat&cursor=-1&stringify_ids=False&count=5000&screen_name=GirlsMakeGames', + 'https://api.twitter.com/1.1/followers/ids.json?tweet_mode=extended&cursor=-1&stringify_ids=False&count=5000&screen_name=GirlsMakeGames', body=resp_data, match_querystring=True, status=200) @@ -456,7 +456,7 @@ def testGetFollowersIDs(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/followers/ids.json?tweet_mode=compat&count=5000&screen_name=GirlsMakeGames&cursor=1482201362283529597&stringify_ids=False', + 'https://api.twitter.com/1.1/followers/ids.json?tweet_mode=extended&count=5000&screen_name=GirlsMakeGames&cursor=1482201362283529597&stringify_ids=False', body=resp_data, match_querystring=True, status=200) @@ -478,7 +478,7 @@ def testGetFollowers(self): resp_data = f.read() responses.add( responses.GET, - '{base_url}/followers/list.json?tweet_mode=compat&include_user_entities=True&count=200&screen_name=himawari8bot&skip_status=False&cursor=-1'.format( + '{base_url}/followers/list.json?tweet_mode=extended&include_user_entities=True&count=200&screen_name=himawari8bot&skip_status=False&cursor=-1'.format( base_url=self.api.base_url), body=resp_data, match_querystring=True, @@ -489,7 +489,7 @@ def testGetFollowers(self): resp_data = f.read() responses.add( responses.GET, - '{base_url}/followers/list.json?tweet_mode=compat&include_user_entities=True&skip_status=False&count=200&screen_name=himawari8bot&cursor=1516850034842747602'.format( + '{base_url}/followers/list.json?tweet_mode=extended&include_user_entities=True&skip_status=False&count=200&screen_name=himawari8bot&cursor=1516850034842747602'.format( base_url=self.api.base_url), body=resp_data, match_querystring=True, @@ -517,7 +517,7 @@ def testGetFollowerIDsPaged(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/followers/ids.json?tweet_mode=compat&count=5000&stringify_ids=False&cursor=-1&screen_name=himawari8bot', + 'https://api.twitter.com/1.1/followers/ids.json?tweet_mode=extended&count=5000&stringify_ids=False&cursor=-1&screen_name=himawari8bot', body=resp_data, match_querystring=True, status=200) @@ -533,7 +533,7 @@ def testGetFollowerIDsPaged(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/followers/ids.json?tweet_mode=compat&count=5000&stringify_ids=True&user_id=12&cursor=-1', + 'https://api.twitter.com/1.1/followers/ids.json?tweet_mode=extended&count=5000&stringify_ids=True&user_id=12&cursor=-1', body=resp_data, match_querystring=True, status=200) @@ -738,7 +738,7 @@ def testGetListsList(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/lists/list.json?tweet_mode=compat', + 'https://api.twitter.com/1.1/lists/list.json?tweet_mode=extended', body=resp_data, match_querystring=True, status=200) @@ -751,7 +751,7 @@ def testGetListsList(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/lists/list.json?tweet_mode=compat&screen_name=inky', + 'https://api.twitter.com/1.1/lists/list.json?tweet_mode=extended&screen_name=inky', body=resp_data, match_querystring=True, status=200) @@ -764,7 +764,7 @@ def testGetListsList(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/lists/list.json?tweet_mode=compat&user_id=13148', + 'https://api.twitter.com/1.1/lists/list.json?tweet_mode=extended&user_id=13148', body=resp_data, match_querystring=True, status=200) @@ -793,7 +793,7 @@ def testGetListMembers(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/lists/members.json?count=100&include_entities=False&skip_status=False&list_id=93527328&cursor=-1&tweet_mode=compat', + 'https://api.twitter.com/1.1/lists/members.json?count=100&include_entities=False&skip_status=False&list_id=93527328&cursor=-1&tweet_mode=extended', body=resp_data, match_querystring=True, status=200) @@ -802,7 +802,7 @@ def testGetListMembers(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/lists/members.json?list_id=93527328&skip_status=False&include_entities=False&count=100&tweet_mode=compat&cursor=4611686020936348428', + 'https://api.twitter.com/1.1/lists/members.json?list_id=93527328&skip_status=False&include_entities=False&count=100&tweet_mode=extended&cursor=4611686020936348428', body=resp_data, match_querystring=True, status=200) @@ -816,7 +816,7 @@ def testGetListMembersPaged(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/lists/members.json?count=100&include_entities=True&cursor=4611686020936348428&list_id=93527328&skip_status=False&tweet_mode=compat', + 'https://api.twitter.com/1.1/lists/members.json?count=100&include_entities=True&cursor=4611686020936348428&list_id=93527328&skip_status=False&tweet_mode=extended', body=resp_data, match_querystring=True, status=200) @@ -827,7 +827,7 @@ def testGetListMembersPaged(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/lists/members.json?count=100&tweet_mode=compat&cursor=4611686020936348428&list_id=93527328&skip_status=True&include_entities=False', + 'https://api.twitter.com/1.1/lists/members.json?count=100&tweet_mode=extended&cursor=4611686020936348428&list_id=93527328&skip_status=True&include_entities=False', body=resp_data, match_querystring=True, status=200) @@ -844,7 +844,7 @@ def testGetListTimeline(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/lists/statuses.json?&list_id=229581524&tweet_mode=compat', + 'https://api.twitter.com/1.1/lists/statuses.json?&list_id=229581524&tweet_mode=extended', body=resp_data, match_querystring=True, status=200) @@ -855,7 +855,7 @@ def testGetListTimeline(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/lists/statuses.json?owner_screen_name=notinourselves&slug=test&max_id=692980243339071488&tweet_mode=compat&since_id=692829211019575296', + 'https://api.twitter.com/1.1/lists/statuses.json?owner_screen_name=notinourselves&slug=test&max_id=692980243339071488&tweet_mode=extended&since_id=692829211019575296', body=resp_data, match_querystring=True, status=200) @@ -880,7 +880,7 @@ def testGetListTimeline(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/lists/statuses.json?include_rts=False&count=13&tweet_mode=compat&include_entities=False&slug=test&owner_id=4012966701', + 'https://api.twitter.com/1.1/lists/statuses.json?include_rts=False&count=13&tweet_mode=extended&include_entities=False&slug=test&owner_id=4012966701', body=resp_data, match_querystring=True, status=200) @@ -958,7 +958,7 @@ def testShowSubscription(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/lists/subscribers/show.json?tweet_mode=compat&user_id=4040207472&list_id=189643778', + 'https://api.twitter.com/1.1/lists/subscribers/show.json?tweet_mode=extended&user_id=4040207472&list_id=189643778', body=resp_data, match_querystring=True, status=200) @@ -974,7 +974,7 @@ def testShowSubscription(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/lists/subscribers/show.json?list_id=189643778&tweet_mode=compat&screen_name=__jcbl__', + 'https://api.twitter.com/1.1/lists/subscribers/show.json?list_id=189643778&tweet_mode=extended&screen_name=__jcbl__', body=resp_data, match_querystring=True, status=200) @@ -989,7 +989,7 @@ def testShowSubscription(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/lists/subscribers/show.json?include_entities=True&tweet_mode=compat&list_id=18964377&skip_status=True&screen_name=__jcbl__', + 'https://api.twitter.com/1.1/lists/subscribers/show.json?include_entities=True&tweet_mode=extended&list_id=18964377&skip_status=True&screen_name=__jcbl__', body=resp_data, match_querystring=True, status=200) @@ -1025,7 +1025,7 @@ def testGetMemberships(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/lists/memberships.json?count=20&cursor=-1&tweet_mode=compat', + 'https://api.twitter.com/1.1/lists/memberships.json?count=20&cursor=-1&tweet_mode=extended', body=resp_data, match_querystring=True, status=200) @@ -1037,7 +1037,7 @@ def testGetMemberships(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/lists/memberships.json?count=20&cursor=-1&screen_name=himawari8bot&tweet_mode=compat', + 'https://api.twitter.com/1.1/lists/memberships.json?count=20&cursor=-1&screen_name=himawari8bot&tweet_mode=extended', body=resp_data, match_querystring=True, status=200) @@ -1161,26 +1161,26 @@ def testLookupFriendship(self): responses.add( responses.GET, - 'https://api.twitter.com/1.1/friendships/lookup.json?user_id=12&tweet_mode=compat', + 'https://api.twitter.com/1.1/friendships/lookup.json?user_id=12&tweet_mode=extended', body=resp_data, match_querystring=True, status=200) responses.add( responses.GET, - 'https://api.twitter.com/1.1/friendships/lookup.json?user_id=12,6385432&tweet_mode=compat', + 'https://api.twitter.com/1.1/friendships/lookup.json?user_id=12,6385432&tweet_mode=extended', body=resp_data, match_querystring=True, status=200) responses.add( responses.GET, - 'https://api.twitter.com/1.1/friendships/lookup.json?screen_name=jack&tweet_mode=compat', + 'https://api.twitter.com/1.1/friendships/lookup.json?screen_name=jack&tweet_mode=extended', body=resp_data, match_querystring=True, status=200) responses.add( responses.GET, - 'https://api.twitter.com/1.1/friendships/lookup.json?screen_name=jack,dickc&tweet_mode=compat', + 'https://api.twitter.com/1.1/friendships/lookup.json?screen_name=jack,dickc&tweet_mode=extended', body=resp_data, match_querystring=True, status=200) @@ -1330,13 +1330,13 @@ def testGetStatusOembed(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/statuses/oembed.json?tweet_mode=compat&id=397', + 'https://api.twitter.com/1.1/statuses/oembed.json?tweet_mode=extended&id=397', body=resp_data, match_querystring=True, status=200) responses.add( responses.GET, - 'https://api.twitter.com/1.1/statuses/oembed.json?tweet_mode=compat&url=https://twitter.com/jack/statuses/397', + 'https://api.twitter.com/1.1/statuses/oembed.json?tweet_mode=extended&url=https://twitter.com/jack/statuses/397', body=resp_data, match_querystring=True, status=200) @@ -1366,7 +1366,7 @@ def testGetMutes(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/mutes/users/list.json?cursor=-1&stringify_ids=False&include_entities=True&skip_status=False&tweet_mode=compat', + 'https://api.twitter.com/1.1/mutes/users/list.json?cursor=-1&stringify_ids=False&include_entities=True&skip_status=False&tweet_mode=extended', body=resp_data, match_querystring=True, status=200) @@ -1376,7 +1376,7 @@ def testGetMutes(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/mutes/users/list.json?cursor=1535206520056388207&stringify_ids=False&include_entities=True&skip_status=False&tweet_mode=compat', + 'https://api.twitter.com/1.1/mutes/users/list.json?cursor=1535206520056388207&stringify_ids=False&include_entities=True&skip_status=False&tweet_mode=extended', body=resp_data, match_querystring=True, status=200) @@ -1391,7 +1391,7 @@ def testGetMutesIDs(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/mutes/users/ids.json?cursor=-1&stringify_ids=False&include_entities=True&skip_status=False&tweet_mode=compat', + 'https://api.twitter.com/1.1/mutes/users/ids.json?cursor=-1&stringify_ids=False&include_entities=True&skip_status=False&tweet_mode=extended', body=resp_data, match_querystring=True, status=200) @@ -1401,7 +1401,7 @@ def testGetMutesIDs(self): resp_data = f.read() responses.add( responses.GET, - 'https://api.twitter.com/1.1/mutes/users/ids.json?cursor=1535206520056565155&stringify_ids=False&include_entities=True&skip_status=False&tweet_mode=compat', + 'https://api.twitter.com/1.1/mutes/users/ids.json?cursor=1535206520056565155&stringify_ids=False&include_entities=True&skip_status=False&tweet_mode=extended', body=resp_data, match_querystring=True, status=200) diff --git a/tests/test_rate_limit.py b/tests/test_rate_limit.py index 26981630..52db1ca3 100644 --- a/tests/test_rate_limit.py +++ b/tests/test_rate_limit.py @@ -97,7 +97,7 @@ def setUp(self): with open('testdata/ratelimit.json') as f: resp_data = f.read() - url = '%s/application/rate_limit_status.json?tweet_mode=compat' % self.api.base_url + url = '%s/application/rate_limit_status.json?tweet_mode=extended' % self.api.base_url responses.add( responses.GET, url, @@ -213,12 +213,12 @@ def testLimitsViaHeadersWithSleep(self): sleep_on_rate_limit=True) # Add handler for ratelimit check - url = '%s/application/rate_limit_status.json?tweet_mode=compat' % api.base_url + url = '%s/application/rate_limit_status.json?tweet_mode=extended' % api.base_url responses.add( method=responses.GET, url=url, body='{}', match_querystring=True) # Get initial rate limit data to populate api.rate_limit object - url = "https://api.twitter.com/1.1/search/tweets.json?tweet_mode=compat&q=test&count=15&result_type=mixed" + url = "https://api.twitter.com/1.1/search/tweets.json?tweet_mode=extended&q=test&count=15&result_type=mixed" responses.add( method=responses.GET, url=url, @@ -242,14 +242,14 @@ def testLimitsViaHeadersWithSleepLimitReached(self): sleep_on_rate_limit=True) # Add handler for ratelimit check - this forces the codepath which goes through the time.sleep call - url = '%s/application/rate_limit_status.json?tweet_mode=compat' % api.base_url + url = '%s/application/rate_limit_status.json?tweet_mode=extended' % api.base_url responses.add( method=responses.GET, url=url, body='{"resources": {"search": {"/search/tweets": {"limit": 1, "remaining": 0, "reset": 1}}}}', match_querystring=True) # Get initial rate limit data to populate api.rate_limit object - url = "https://api.twitter.com/1.1/search/tweets.json?tweet_mode=compat&q=test&count=15&result_type=mixed" + url = "https://api.twitter.com/1.1/search/tweets.json?tweet_mode=extended&q=test&count=15&result_type=mixed" responses.add( method=responses.GET, url=url, From bbabc8f6d6332d7d50b5fd86e999d6865e27ebd9 Mon Sep 17 00:00:00 2001 From: Dan Pope Date: Sun, 17 Nov 2019 23:10:30 +0000 Subject: [PATCH 151/177] Allow subtitles to be uploaded as media --- testdata/subs.srt | 8 ++++++++ tests/test_twitter_utils.py | 7 +++++++ twitter/twitter_utils.py | 6 +++++- 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 testdata/subs.srt diff --git a/testdata/subs.srt b/testdata/subs.srt new file mode 100644 index 00000000..c246531e --- /dev/null +++ b/testdata/subs.srt @@ -0,0 +1,8 @@ +1 +00:00:00,000 --> 00:00:03,251 +Lorem ipsum dolor sit amet, +consectetur adipiscing elit. + +2 +00:00:03,251 --> 00:00:06,502 +Maecenas rutrum suscipit accumsan. diff --git a/tests/test_twitter_utils.py b/tests/test_twitter_utils.py index 9e4934d8..cd162bd5 100644 --- a/tests/test_twitter_utils.py +++ b/tests/test_twitter_utils.py @@ -75,6 +75,13 @@ def test_parse_media_file_fileobj(self): self.assertEqual(file_size, 44772) self.assertEqual(media_type, 'image/jpeg') + def test_parse_media_file_subtitle(self): + data_file, filename, file_size, media_type = parse_media_file('testdata/subs.srt') + self.assertTrue(hasattr(data_file, 'read')) + self.assertEqual(filename, 'subs.srt') + self.assertEqual(file_size, 157) + self.assertEqual(media_type, 'text/srt') + def test_utils_error_checking(self): with open('testdata/168NQ.jpg', 'r') as f: self.assertRaises( diff --git a/twitter/twitter_utils.py b/twitter/twitter_utils.py index 3bd5d411..a4a07a36 100644 --- a/twitter/twitter_utils.py +++ b/twitter/twitter_utils.py @@ -243,6 +243,7 @@ def parse_media_file(passed_media, async_upload=False): long_img_formats = [ 'image/gif' ] + subtitle_formats = ['text/srt'] video_formats = ['video/mp4', 'video/quicktime'] @@ -274,6 +275,9 @@ def parse_media_file(passed_media, async_upload=False): pass media_type = mimetypes.guess_type(os.path.basename(filename))[0] + # The .srt extension is not recognised by the mimetypes module. + if os.path.basename(filename).endswith('.srt'): + media_type = 'text/srt' if media_type is not None: if media_type in img_formats and file_size > 5 * 1048576: raise TwitterError({'message': 'Images must be less than 5MB.'}) @@ -283,7 +287,7 @@ def parse_media_file(passed_media, async_upload=False): raise TwitterError({'message': 'Videos must be less than 15MB.'}) elif media_type in video_formats and async_upload and file_size > 512 * 1048576: raise TwitterError({'message': 'Videos must be less than 512MB.'}) - elif media_type not in img_formats and media_type not in video_formats and media_type not in long_img_formats: + elif media_type not in img_formats + long_img_formats + subtitle_formats + video_formats: raise TwitterError({'message': 'Media type could not be determined.'}) return data_file, filename, file_size, media_type From 4913e4421f36b0c3a937786d993459f57c5474df Mon Sep 17 00:00:00 2001 From: Dan Pope Date: Sun, 24 Nov 2019 16:20:57 +0000 Subject: [PATCH 152/177] Add /media/subtitles/create and delete endpoints --- tests/test_api_30.py | 81 ++++++++++++++++++++++++++++++++++++++++++++ twitter/api.py | 75 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 156 insertions(+) diff --git a/tests/test_api_30.py b/tests/test_api_30.py index e80ac825..1cd09f49 100644 --- a/tests/test_api_30.py +++ b/tests/test_api_30.py @@ -1548,6 +1548,87 @@ def testPostUploadMediaChunkedFinalize(self): self.assertEqual(len(responses.calls), 1) self.assertTrue(resp) + @responses.activate + def testPostMediaSubtitlesCreateSuccess(self): + responses.add( + POST, + 'https://upload.twitter.com/1.1/media/subtitles/create.json', + body=b'', + status=200) + expected_body = { + 'media_id': '1234', + 'media_category': 'TweetVideo', + 'subtitle_info': { + 'subtitles': [{ + 'media_id': '5678', + 'language_code': 'en', + 'display_name': 'English' + }] + } + } + resp = self.api.PostMediaSubtitlesCreate(video_media_id=1234, + subtitle_media_id=5678, + language_code='en', + display_name='English') + + self.assertEqual(len(responses.calls), 1) + self.assertEqual(responses.calls[0].request.url, + 'https://upload.twitter.com/1.1/media/subtitles/create.json') + request_body = json.loads(responses.calls[0].request.body.decode('utf-8')) + self.assertTrue(resp) + self.assertDictEqual(expected_body, request_body) + + @responses.activate + def testPostMediaSubtitlesCreateFailure(self): + responses.add( + POST, + 'https://upload.twitter.com/1.1/media/subtitles/create.json', + body=b'{"error":"Some error happened"}', + status=400) + self.assertRaises( + twitter.TwitterError, + lambda: self.api.PostMediaSubtitlesCreate(video_media_id=1234, + subtitle_media_id=5678, + language_code='en', + display_name='English')) + + @responses.activate + def testPostMediaSubtitlesDeleteSuccess(self): + responses.add( + POST, + 'https://upload.twitter.com/1.1/media/subtitles/delete.json', + body=b'', + status=200) + expected_body = { + 'media_id': '1234', + 'media_category': 'TweetVideo', + 'subtitle_info': { + 'subtitles': [{ + 'language_code': 'en' + }] + } + } + resp = self.api.PostMediaSubtitlesDelete(video_media_id=1234, language_code='en') + + self.assertEqual(len(responses.calls), 1) + self.assertEqual(responses.calls[0].request.url, + 'https://upload.twitter.com/1.1/media/subtitles/delete.json') + request_body = json.loads(responses.calls[0].request.body.decode('utf-8')) + self.assertTrue(resp) + self.assertDictEqual(expected_body, request_body) + + @responses.activate + def testPostMediaSubtitlesDeleteFailure(self): + responses.add( + POST, + 'https://upload.twitter.com/1.1/media/subtitles/delete.json', + body=b'{"error":"Some error happened"}', + status=400) + self.assertRaises( + twitter.TwitterError, + lambda: self.api.PostMediaSubtitlesDelete(video_media_id=1234, + language_code='en')) + @responses.activate def testGetUserSuggestionCategories(self): with open('testdata/get_user_suggestion_categories.json') as f: diff --git a/twitter/api.py b/twitter/api.py index 18d5e708..62c836fd 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -1424,6 +1424,81 @@ def UploadMediaChunked(self, except KeyError: raise TwitterError('Media could not be uploaded.') + def PostMediaSubtitlesCreate(self, + video_media_id, + subtitle_media_id, + language_code, + display_name): + """Associate uploaded subtitles to an uploaded video. You can associate + subtitles to a video before or after Tweeting. + + Args: + video_media_id (int): + Media ID of the uploaded video to add the subtitles to. The + video must have been uploaded using the category 'TweetVideo'. + subtitle_media_id (int): + Media ID of the uploaded subtitle file. The subtitles myst have + been uploaded using the category 'Subtitles'. + language_code (str): + The language code that the subtitles are written in. The + language code should be a BCP47 code (e.g. 'en', 'sp') + display_name (str): + Language name (e.g. 'English', 'Spanish') + + Returns: + True if successful. Raises otherwise. + """ + url = '%s/media/subtitles/create.json' % self.upload_url + + subtitle = {} + subtitle['media_id'] = str(subtitle_media_id) + subtitle['language_code'] = language_code + subtitle['display_name'] = display_name + parameters = {} + parameters['media_id'] = str(video_media_id) + parameters['media_category'] = 'TweetVideo' + parameters['subtitle_info'] = {} + parameters['subtitle_info']['subtitles'] = [subtitle] + + resp = self._RequestUrl(url, 'POST', json=parameters) + # Response body should be blank, so only do error checking if the response is not blank. + if resp.content.decode('utf-8'): + self._ParseAndCheckTwitter(resp.content.decode('utf-8')) + + return True + + def PostMediaSubtitlesDelete(self, + video_media_id, + language_code): + """Remove subtitles from an uploaded video. + + Args: + video_media_id (int): + Media ID of the video for which the subtitles will be removed. + language_code (str): + The language code of the subtitle file that should be deleted. + The language code should be a BCP47 code (e.g. 'en', 'sp') + + Returns: + True if successful. Raises otherwise. + """ + url = '%s/media/subtitles/delete.json' % self.upload_url + + subtitle = {} + subtitle['language_code'] = language_code + parameters = {} + parameters['media_id'] = str(video_media_id) + parameters['media_category'] = 'TweetVideo' + parameters['subtitle_info'] = {} + parameters['subtitle_info']['subtitles'] = [subtitle] + + resp = self._RequestUrl(url, 'POST', json=parameters) + # Response body should be blank, so only do error checking if the response is not blank. + if resp.content.decode('utf-8'): + self._ParseAndCheckTwitter(resp.content.decode('utf-8')) + + return True + def _TweetTextWrap(self, status, char_lim=CHARACTER_LIMIT): From c94744bdd4d935da6abeb0257c60be8f8f4c9512 Mon Sep 17 00:00:00 2001 From: Dan Pope Date: Sun, 24 Nov 2019 16:32:12 +0000 Subject: [PATCH 153/177] Update documentation wording and broken link --- twitter/api.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 62c836fd..13d88799 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -1028,15 +1028,15 @@ def PostUpdate(self, attachment_url=None): """Post a twitter status message from the authenticated user. - https://dev.twitter.com/docs/api/1.1/post/statuses/update + https://developer.twitter.com/en/docs/tweets/post-and-engage/api-reference/post-statuses-update Args: status (str): The message text to be posted. Must be less than or equal to CHARACTER_LIMIT characters. media (int, str, fp, optional): - A URL, a local file, or a file-like object (something with a - read() method), or a list of any combination of the above. + A media ID, URL, local file, or file-like object (something with + a read() method), or a list of any combination of the above. media_additional_owners (list, optional): A list of user ids representing Twitter users that should be able to use the uploaded media in their tweets. If you pass a list of @@ -1398,7 +1398,7 @@ def UploadMediaChunked(self, number of additional owners is capped at 100 by Twitter. media_category: Category with which to identify media upload. Only use with Ads - API & video files. + API, video files and subtitles. Returns: media_id: From 5afb1563c79e9efe912df98e00c44ae4fdfdf710 Mon Sep 17 00:00:00 2001 From: Martin Kolman Date: Tue, 14 Jan 2020 02:20:15 +0100 Subject: [PATCH 154/177] Add documented but missing count to GetLists() The GetLists() method documents the count parameter, which is actually not available in the method signature and can't be used. Due to this, the GetLists() method is basically limited to retrieving ~300 lists at once, as the internally called GetListsPaged() method will retrieve only 20 lists at once and will hit rate limits after 15 calls in a row. So add "count" to the method signature and pass it to GetListsPaged(). Also add a note about rate limits & hint to bump "count" once they start to be hit. With this change a caller that passes say 500 as "count" (tested) can retrieve 300+ lists without unnecessarily hitting rate limits. --- twitter/api.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 13d88799..40b94857 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -4470,7 +4470,8 @@ def GetListsPaged(self, def GetLists(self, user_id=None, - screen_name=None): + screen_name=None, + count=20): """Fetch the sequence of lists for a user. If no user_id or screen_name is passed, the data returned will be for the authenticated user. @@ -4482,6 +4483,8 @@ def GetLists(self, for. [Optional] count: The amount of results to return per page. + Consider bumping this up if you are getting rate limit issues + with GetLists(), generally at > 15 * 20 = 300 lists. No more than 1000 results will ever be returned in a single page. Defaults to 20. [Optional] cursor: @@ -4500,7 +4503,8 @@ def GetLists(self, next_cursor, prev_cursor, lists = self.GetListsPaged( user_id=user_id, screen_name=screen_name, - cursor=cursor) + cursor=cursor, + count=count) result += lists if next_cursor == 0 or next_cursor == prev_cursor: break From eecccff4b2886ca00c062b4139169d0db4a64cf6 Mon Sep 17 00:00:00 2001 From: Miguel Sozinho Ramalho <19508417+msramalho@users.noreply.github.com> Date: Fri, 14 Feb 2020 15:13:12 +0000 Subject: [PATCH 155/177] fixed inconsistent naming of variable GetRetweets used to have `statusid` instead of `status_id` --- twitter/api.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 13d88799..0cbd8be9 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -1676,14 +1676,14 @@ def GetReplies(self, exclude_replies=False, include_rts=False) def GetRetweets(self, - statusid, + status_id, count=None, trim_user=False): """Returns up to 100 of the first retweets of the tweet identified - by statusid + by status_id Args: - statusid (int): + status_id (int): The ID of the tweet for which retweets should be searched for count (int, optional): The number of status messages to retrieve. @@ -1692,9 +1692,9 @@ def GetRetweets(self, otherwise the payload will contain the full user data item. Returns: - A list of twitter.Status instances, which are retweets of statusid + A list of twitter.Status instances, which are retweets of status_id """ - url = '%s/statuses/retweets/%s.json' % (self.base_url, statusid) + url = '%s/statuses/retweets/%s.json' % (self.base_url, status_id) parameters = { 'trim_user': enf_type('trim_user', bool, trim_user), } From 71a33d4e07caa3bab64d0113cd86b56b6426c30f Mon Sep 17 00:00:00 2001 From: Simon Bohnen Date: Tue, 24 Mar 2020 09:36:02 +0100 Subject: [PATCH 156/177] Update documentation for GetListMembers --- twitter/api.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 13d88799..a09b5851 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -4261,10 +4261,10 @@ def GetListMembers(self, user_timeline. Helpful for disambiguating when a valid screen name is also a user ID. skip_status (bool, optional): - If True the statuses will not be returned in the user items. + If True the statuses will not be returned in the user items. Defaults to False. include_entities (bool, optional): If False, the timeline will not contain additional metadata. - Defaults to True. + Defaults to False. Returns: list: A sequence of twitter.user.User instances, one for each From 6931e9a064c647319e6de12968dd5bee718fc913 Mon Sep 17 00:00:00 2001 From: Stephen Cowley Date: Sat, 11 Apr 2020 17:28:05 -0600 Subject: [PATCH 157/177] Update getting_started.rst --- doc/getting_started.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/getting_started.rst b/doc/getting_started.rst index 6dd64af6..b5044a18 100644 --- a/doc/getting_started.rst +++ b/doc/getting_started.rst @@ -52,6 +52,6 @@ At this point, you can test out your application using the keys under "Your Appl Note: Make sure to enclose your keys in quotes (ie, api = twitter.Api(consumer_key='1234567', ...) and so on) or you will receive a NameError. -If you are creating an application for end users/consumers, then you will want them to authorize you application, but that is outside the scope of this document. +If you are creating an application for end users/consumers, then you will want them to authorize your application, but that is outside the scope of this document. And that should be it! If you need a little more help, check out the `examples on Github `_. If you have an open source application using python-twitter, send us a link and we'll add a link to it here. From 29647e6cb2a050e9e9c4a02c865d0231e2e497fc Mon Sep 17 00:00:00 2001 From: Robert Huselius Date: Wed, 29 Apr 2020 23:44:03 +0200 Subject: [PATCH 158/177] Always add tweet_mode to API requests --- .gitignore | 6 ++++++ twitter/api.py | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 7ef3b53c..f5955911 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,9 @@ violations.flake8.txt # Built docs doc/_build/** + +# Mypy cache +**/.mypy_cache + +# VS Code +**/.vscode diff --git a/twitter/api.py b/twitter/api.py index 13d88799..986b35f5 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -5107,6 +5107,8 @@ def _RequestUrl(self, url, verb, data=None, json=None, enforce_auth=True): if not data: data = {} + data['tweet_mode'] = self.tweet_mode + if verb == 'POST': if data: if 'media_ids' in data: @@ -5122,7 +5124,6 @@ def _RequestUrl(self, url, verb, data=None, json=None, enforce_auth=True): resp = 0 # POST request, but without data or json elif verb == 'GET': - data['tweet_mode'] = self.tweet_mode url = self._BuildUrl(url, extra_params=data) resp = self._session.get(url, auth=self.__auth, timeout=self._timeout, proxies=self.proxies) From 56ce285c04bf96a1beade0275bbbfadd2c3b6275 Mon Sep 17 00:00:00 2001 From: Thomas Braccia Date: Tue, 12 May 2020 13:57:19 -0600 Subject: [PATCH 159/177] Added code to check if it is a gif and over 5MB and if so notify twitter that it is a gif so that it will be uploaded. --- twitter/api.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/twitter/api.py b/twitter/api.py index 13d88799..868d7b5b 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -1277,6 +1277,10 @@ def _UploadMediaChunkedInit(self, parameters['media_type'] = media_type parameters['total_bytes'] = file_size + # Without this GIF files over 5MB but less than 15MB will fail uploading. + if media_type == 'image/gif' and file_size > 5242880: + parameters['media_category'] = 'tweet_gif' + resp = self._RequestUrl(url, 'POST', data=parameters) data = self._ParseAndCheckTwitter(resp.content.decode('utf-8')) From fa1b12a68151fbe6df89d8739b9d3e83e318049f Mon Sep 17 00:00:00 2001 From: Armin Samii Date: Mon, 31 Aug 2020 19:41:20 -0400 Subject: [PATCH 160/177] Remove redundant PostDirectMessage it was listed twice --- twitter/api.py | 1 - 1 file changed, 1 deletion(-) diff --git a/twitter/api.py b/twitter/api.py index 13d88799..2c9a5a48 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -120,7 +120,6 @@ class Api(object): There are many other methods, including: >>> api.PostUpdates(status) - >>> api.PostDirectMessage(user, text) >>> api.GetUser(user) >>> api.GetReplies() >>> api.GetUserTimeline(user) From 913644a0030095798cc99dfbcf801bd398c335e7 Mon Sep 17 00:00:00 2001 From: BennyThink Date: Tue, 1 Dec 2020 13:10:59 +0800 Subject: [PATCH 161/177] replace mimetypes to filetype mimetypes relies on file extension, while filetype relies on file header which is more stable. --- requirements.txt | 1 + setup.py | 2 +- twitter/twitter_utils.py | 7 ++----- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/requirements.txt b/requirements.txt index cbbb9376..fc12ad28 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ requests requests-oauthlib +filetype diff --git a/setup.py b/setup.py index 1a0a4120..38062f47 100755 --- a/setup.py +++ b/setup.py @@ -56,7 +56,7 @@ def extract_metaitem(meta): download_url=extract_metaitem('download_url'), packages=find_packages(exclude=('tests', 'docs')), platforms=['Any'], - install_requires=['requests', 'requests-oauthlib'], + install_requires=['requests', 'requests-oauthlib', 'filetype'], setup_requires=['pytest-runner'], tests_require=['pytest'], keywords='twitter api', diff --git a/twitter/twitter_utils.py b/twitter/twitter_utils.py index a4a07a36..02e1ded3 100644 --- a/twitter/twitter_utils.py +++ b/twitter/twitter_utils.py @@ -2,7 +2,7 @@ """Collection of utilities for use in API calls, functions.""" from __future__ import unicode_literals -import mimetypes +import filetype import os import re import sys @@ -274,10 +274,7 @@ def parse_media_file(passed_media, async_upload=False): except Exception as e: pass - media_type = mimetypes.guess_type(os.path.basename(filename))[0] - # The .srt extension is not recognised by the mimetypes module. - if os.path.basename(filename).endswith('.srt'): - media_type = 'text/srt' + media_type = filetype.guess_mime(data_file.name) if media_type is not None: if media_type in img_formats and file_size > 5 * 1048576: raise TwitterError({'message': 'Images must be less than 5MB.'}) From dc449cc39d63a4fdb354bf9165611b49816aa50d Mon Sep 17 00:00:00 2001 From: Tim Gates Date: Thu, 24 Dec 2020 17:51:45 +1100 Subject: [PATCH 162/177] docs: fix simple typo, unsuccesful -> unsuccessful There is a small typo in twitter/api.py. Should read `unsuccessful` rather than `unsuccesful`. --- twitter/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/api.py b/twitter/api.py index 13d88799..c6e96212 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -1403,7 +1403,7 @@ def UploadMediaChunked(self, Returns: media_id: ID of the uploaded media returned by the Twitter API. Raises if - unsuccesful. + unsuccessful. """ media_id, media_fp, filename = self._UploadMediaChunkedInit(media=media, From 2b99c95677d12ec4152696bdd7b12c341895ee81 Mon Sep 17 00:00:00 2001 From: Oliver Cardoza Date: Sun, 27 Dec 2020 02:32:12 -0500 Subject: [PATCH 163/177] fixed "ambiguous error name" error blocking tests --- tests/test_api_30.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_api_30.py b/tests/test_api_30.py index 1cd09f49..d6e349e9 100644 --- a/tests/test_api_30.py +++ b/tests/test_api_30.py @@ -1017,7 +1017,7 @@ def testGetSubscriptionsSN(self): resp = self.api.GetSubscriptions(screen_name='inky') self.assertEqual(len(resp), 20) - self.assertTrue([isinstance(l, twitter.List) for l in resp]) + self.assertTrue([isinstance(lst, twitter.List) for lst in resp]) @responses.activate def testGetMemberships(self): @@ -1289,7 +1289,7 @@ def testGetStatuses(self): rsps.add(GET, DEFAULT_URL, body=resp_data) with open('testdata/get_statuses.ids.txt') as f: - status_ids = [int(l) for l in f] + status_ids = [int(line) for line in f] resp = self.api.GetStatuses(status_ids) @@ -1312,7 +1312,7 @@ def testGetStatusesMap(self): rsps.add(GET, DEFAULT_URL, body=resp_data) with open('testdata/get_statuses.ids.txt') as f: - status_ids = [int(l) for l in f] + status_ids = [int(line) for line in f] resp = self.api.GetStatuses(status_ids, map=True) From c0160881349a17fe9ae353656f42fb599a2ac692 Mon Sep 17 00:00:00 2001 From: Oliver Cardoza Date: Sun, 27 Dec 2020 02:57:24 -0500 Subject: [PATCH 164/177] Fix issue where GetListMembers would only return the first 100 members. The Twitter API appears to return the same value for `next_cursor` and `previous_cursor` even when there is another page. I've updated the test data to reflect reality. Then I added test assertions to verify pages are concatenated. Finally applied fix to ensure test passes. --- testdata/get_list_members_0.json | 2 +- tests/test_api_30.py | 6 +++++- twitter/api.py | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/testdata/get_list_members_0.json b/testdata/get_list_members_0.json index aa1488dd..651cce5c 100644 --- a/testdata/get_list_members_0.json +++ b/testdata/get_list_members_0.json @@ -1 +1 @@ -{"next_cursor": 4611686020936348428, "users": [{"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 24, "profile_image_url": "http://pbs.twimg.com/profile_images/659410881806135296/PdVxDc0W_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": null, "statuses_count": 362, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 4048395140, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 106, "friends_count": 0, "location": "", "description": "I am a bot that simulates a series of mechanical linkages (+ noise) to draw a curve 4x/day. // by @tinysubversions, inspired by @ra & @bahrami_", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/659410881806135296/PdVxDc0W_normal.png", "geo_enabled": false, "time_zone": null, "name": "Spinny Machine", "id_str": "4048395140", "entities": {"description": {"urls": []}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "extended_entities": {"media": [{"type": "animated_gif", "video_info": {"variants": [{"content_type": "video/mp4", "bitrate": 0, "url": "https://pbs.twimg.com/tweet_video/CZ9xAlyWQAAVsZk.mp4"}], "aspect_ratio": [1, 1]}, "id": 693397122595569664, "media_url": "http://pbs.twimg.com/tweet_video_thumb/CZ9xAlyWQAAVsZk.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/CZ9xAlyWQAAVsZk.png", "display_url": "pic.twitter.com/n6lbayOFFQ", "indices": [30, 53], "expanded_url": "http://twitter.com/spinnymachine/status/693397123023396864/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 360, "h": 360}, "small": {"resize": "fit", "w": 340, "h": 340}, "medium": {"resize": "fit", "w": 360, "h": 360}}, "id_str": "693397122595569664", "url": "https://t.co/n6lbayOFFQ"}]}, "truncated": false, "id": 693397123023396864, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "a casually scorched northeast https://t.co/n6lbayOFFQ", "id_str": "693397123023396864", "entities": {"media": [{"type": "photo", "id": 693397122595569664, "media_url": "http://pbs.twimg.com/tweet_video_thumb/CZ9xAlyWQAAVsZk.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/CZ9xAlyWQAAVsZk.png", "display_url": "pic.twitter.com/n6lbayOFFQ", "indices": [30, 53], "expanded_url": "http://twitter.com/spinnymachine/status/693397123023396864/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 360, "h": 360}, "small": {"resize": "fit", "w": 340, "h": 340}, "medium": {"resize": "fit", "w": 360, "h": 360}}, "id_str": "693397122595569664", "url": "https://t.co/n6lbayOFFQ"}], "hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "Spinny Machine", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 11:35:31 +0000 2016"}, "is_translator": false, "screen_name": "spinnymachine", "created_at": "Wed Oct 28 16:43:01 +0000 2015"}, {"notifications": false, "profile_use_background_image": false, "has_extended_profile": false, "listed_count": 6, "profile_image_url": "http://pbs.twimg.com/profile_images/658781950472138752/FOQCSbLg_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "https://t.co/OOS2jbeYND", "statuses_count": 135, "profile_text_color": "000000", "profile_background_tile": false, "follow_request_sent": false, "id": 4029020052, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "DBAF44", "followers_count": 23, "friends_count": 2, "location": "TV", "profile_banner_url": "https://pbs.twimg.com/profile_banners/4029020052/1445900976", "description": "I'm a bot that tweets fake Empire plots, inspired by @eveewing https://t.co/OOS2jbeYND // by @tinysubversions", "profile_sidebar_fill_color": "000000", "default_profile": false, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "000000", "is_translation_enabled": false, "profile_sidebar_border_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/658781950472138752/FOQCSbLg_normal.png", "geo_enabled": false, "time_zone": null, "name": "Empire Plots Bot", "id_str": "4029020052", "entities": {"description": {"urls": [{"display_url": "twitter.com/eveewing/statu\u2026", "indices": [63, 86], "expanded_url": "https://twitter.com/eveewing/status/658478802327183360", "url": "https://t.co/OOS2jbeYND"}]}, "url": {"urls": [{"display_url": "twitter.com/eveewing/statu\u2026", "indices": [0, 23], "expanded_url": "https://twitter.com/eveewing/status/658478802327183360", "url": "https://t.co/OOS2jbeYND"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "extended_entities": {"media": [{"type": "photo", "id": 671831157646876672, "media_url": "http://pbs.twimg.com/media/CVLS4NyU4AAshFm.png", "media_url_https": "https://pbs.twimg.com/media/CVLS4NyU4AAshFm.png", "display_url": "pic.twitter.com/EQ8oGhG502", "indices": [101, 124], "expanded_url": "http://twitter.com/EmpirePlots/status/671831157739118593/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 300, "h": 400}, "small": {"resize": "fit", "w": 300, "h": 400}, "large": {"resize": "fit", "w": 300, "h": 400}}, "id_str": "671831157646876672", "url": "https://t.co/EQ8oGhG502"}]}, "truncated": false, "id": 671831157739118593, "place": null, "favorite_count": 1, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "Jamal is stuck in a wild forest with Kene Holliday and can't find their way out (it's just a dream). https://t.co/EQ8oGhG502", "id_str": "671831157739118593", "entities": {"media": [{"type": "photo", "id": 671831157646876672, "media_url": "http://pbs.twimg.com/media/CVLS4NyU4AAshFm.png", "media_url_https": "https://pbs.twimg.com/media/CVLS4NyU4AAshFm.png", "display_url": "pic.twitter.com/EQ8oGhG502", "indices": [101, 124], "expanded_url": "http://twitter.com/EmpirePlots/status/671831157739118593/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 300, "h": 400}, "small": {"resize": "fit", "w": 300, "h": 400}, "large": {"resize": "fit", "w": 300, "h": 400}}, "id_str": "671831157646876672", "url": "https://t.co/EQ8oGhG502"}], "hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "Empire Plots Bot", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Tue Dec 01 23:20:04 +0000 2015"}, "is_translator": false, "screen_name": "EmpirePlots", "created_at": "Mon Oct 26 22:49:42 +0000 2015"}, {"notifications": false, "profile_use_background_image": false, "has_extended_profile": false, "listed_count": 25, "profile_image_url": "http://pbs.twimg.com/profile_images/652238580765462528/BQVTvFS9_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": null, "statuses_count": 346, "profile_text_color": "000000", "profile_background_tile": false, "follow_request_sent": false, "id": 3829470974, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "027F45", "followers_count": 287, "friends_count": 1, "location": "Portland, OR", "profile_banner_url": "https://pbs.twimg.com/profile_banners/3829470974/1444340849", "description": "Portland is such a weird place! We show real pics of places in Portland! ONLY IN PORTLAND as they say! // a bot by @tinysubversions, 4x daily", "profile_sidebar_fill_color": "000000", "default_profile": false, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "000000", "is_translation_enabled": false, "profile_sidebar_border_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/652238580765462528/BQVTvFS9_normal.png", "geo_enabled": false, "time_zone": null, "name": "Wow So Portland!", "id_str": "3829470974", "entities": {"description": {"urls": []}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "extended_entities": {"media": [{"type": "photo", "id": 693471873166761984, "media_url": "http://pbs.twimg.com/media/CZ-0_pXUYAAGzn4.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ-0_pXUYAAGzn4.jpg", "display_url": "pic.twitter.com/CF8JrGCQcY", "indices": [57, 80], "expanded_url": "http://twitter.com/wowsoportland/status/693471873246502912/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 600, "h": 300}, "small": {"resize": "fit", "w": 340, "h": 170}, "medium": {"resize": "fit", "w": 600, "h": 300}}, "id_str": "693471873166761984", "url": "https://t.co/CF8JrGCQcY"}]}, "truncated": false, "id": 693471873246502912, "place": null, "favorite_count": 1, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "those silly Portlanders are always up to something funny https://t.co/CF8JrGCQcY", "id_str": "693471873246502912", "entities": {"media": [{"type": "photo", "id": 693471873166761984, "media_url": "http://pbs.twimg.com/media/CZ-0_pXUYAAGzn4.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ-0_pXUYAAGzn4.jpg", "display_url": "pic.twitter.com/CF8JrGCQcY", "indices": [57, 80], "expanded_url": "http://twitter.com/wowsoportland/status/693471873246502912/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 600, "h": 300}, "small": {"resize": "fit", "w": 340, "h": 170}, "medium": {"resize": "fit", "w": 600, "h": 300}}, "id_str": "693471873166761984", "url": "https://t.co/CF8JrGCQcY"}], "hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "Wow so portland", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 16:32:33 +0000 2016"}, "is_translator": false, "screen_name": "wowsoportland", "created_at": "Thu Oct 08 21:38:27 +0000 2015"}, {"notifications": false, "profile_use_background_image": false, "has_extended_profile": false, "listed_count": 28, "profile_image_url": "http://pbs.twimg.com/profile_images/650161232540909568/yyvPEOnF_normal.jpg", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "https://t.co/8fYJI1TWEs", "statuses_count": 515, "profile_text_color": "000000", "profile_background_tile": false, "follow_request_sent": false, "id": 3765991992, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "ABB8C2", "followers_count": 331, "friends_count": 1, "location": "Mare Tranquilitatis", "profile_banner_url": "https://pbs.twimg.com/profile_banners/3765991992/1443845573", "description": "Tweeting pics from the Project Apollo Archive, four times a day. Not affiliated with the Project Apollo Archive. // a bot by @tinysubversions", "profile_sidebar_fill_color": "000000", "default_profile": false, "utc_offset": -28800, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "000000", "is_translation_enabled": false, "profile_sidebar_border_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/650161232540909568/yyvPEOnF_normal.jpg", "geo_enabled": false, "time_zone": "Pacific Time (US & Canada)", "name": "Moon Shot Bot", "id_str": "3765991992", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "flickr.com/photos/project\u2026", "indices": [0, 23], "expanded_url": "https://www.flickr.com/photos/projectapolloarchive/", "url": "https://t.co/8fYJI1TWEs"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "extended_entities": {"media": [{"type": "photo", "id": 693470001316171776, "media_url": "http://pbs.twimg.com/media/CZ-zSsLXEAAhEia.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ-zSsLXEAAhEia.jpg", "display_url": "pic.twitter.com/2j5ezW6i9G", "indices": [103, 126], "expanded_url": "http://twitter.com/moonshotbot/status/693470003249684481/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 1024, "h": 1070}, "small": {"resize": "fit", "w": 340, "h": 355}, "medium": {"resize": "fit", "w": 600, "h": 627}}, "id_str": "693470001316171776", "url": "https://t.co/2j5ezW6i9G"}]}, "truncated": false, "id": 693470003249684481, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "\ud83c\udf0c\ud83c\udf18\ud83c\udf1b\nApollo 15 Hasselblad image from film magazine 97/O - lunar orbit view\n\ud83d\ude80\ud83c\udf1a\ud83c\udf19\n https://t.co/n4WH1ZTyuZ https://t.co/2j5ezW6i9G", "id_str": "693470003249684481", "entities": {"media": [{"type": "photo", "id": 693470001316171776, "media_url": "http://pbs.twimg.com/media/CZ-zSsLXEAAhEia.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ-zSsLXEAAhEia.jpg", "display_url": "pic.twitter.com/2j5ezW6i9G", "indices": [103, 126], "expanded_url": "http://twitter.com/moonshotbot/status/693470003249684481/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 1024, "h": 1070}, "small": {"resize": "fit", "w": 340, "h": 355}, "medium": {"resize": "fit", "w": 600, "h": 627}}, "id_str": "693470001316171776", "url": "https://t.co/2j5ezW6i9G"}], "hashtags": [], "urls": [{"display_url": "flickr.com/photos/project\u2026", "indices": [79, 102], "expanded_url": "https://www.flickr.com/photos/projectapolloarchive/21831461788", "url": "https://t.co/n4WH1ZTyuZ"}], "symbols": [], "user_mentions": []}, "source": "Moon Shot Bot", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 16:25:07 +0000 2016"}, "is_translator": false, "screen_name": "moonshotbot", "created_at": "Sat Oct 03 04:03:02 +0000 2015"}, {"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 17, "profile_image_url": "http://pbs.twimg.com/profile_images/629374160993710081/q-lr9vsE_normal.jpg", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/mRUwkqVO7i", "statuses_count": 598, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 3406094211, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 133, "friends_count": 0, "location": "Not affiliated with the FBI", "description": "I tweet random pages from FOIA-requested FBI records, 4x/day. I'm a bot by @tinysubversions", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/629374160993710081/q-lr9vsE_normal.jpg", "geo_enabled": false, "time_zone": null, "name": "FBI Bot", "id_str": "3406094211", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "vault.fbi.gov", "indices": [0, 22], "expanded_url": "http://vault.fbi.gov", "url": "http://t.co/mRUwkqVO7i"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "extended_entities": {"media": [{"type": "photo", "id": 693483330080210944, "media_url": "http://pbs.twimg.com/media/CZ-_ahsWAAADnwA.png", "media_url_https": "https://pbs.twimg.com/media/CZ-_ahsWAAADnwA.png", "display_url": "pic.twitter.com/Dey5JLxCvb", "indices": [63, 86], "expanded_url": "http://twitter.com/FBIbot/status/693483330218622976/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 600, "h": 776}, "small": {"resize": "fit", "w": 340, "h": 439}, "large": {"resize": "fit", "w": 1000, "h": 1294}}, "id_str": "693483330080210944", "url": "https://t.co/Dey5JLxCvb"}]}, "truncated": false, "id": 693483330218622976, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "The FBI was watching Fred G. Randaccio https://t.co/NAkQc4FYKp https://t.co/Dey5JLxCvb", "id_str": "693483330218622976", "entities": {"media": [{"type": "photo", "id": 693483330080210944, "media_url": "http://pbs.twimg.com/media/CZ-_ahsWAAADnwA.png", "media_url_https": "https://pbs.twimg.com/media/CZ-_ahsWAAADnwA.png", "display_url": "pic.twitter.com/Dey5JLxCvb", "indices": [63, 86], "expanded_url": "http://twitter.com/FBIbot/status/693483330218622976/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 600, "h": 776}, "small": {"resize": "fit", "w": 340, "h": 439}, "large": {"resize": "fit", "w": 1000, "h": 1294}}, "id_str": "693483330080210944", "url": "https://t.co/Dey5JLxCvb"}], "hashtags": [], "urls": [{"display_url": "vault.fbi.gov/frank-randaccio", "indices": [39, 62], "expanded_url": "https://vault.fbi.gov/frank-randaccio", "url": "https://t.co/NAkQc4FYKp"}], "symbols": [], "user_mentions": []}, "source": "FBIBot", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 17:18:04 +0000 2016"}, "is_translator": false, "screen_name": "FBIbot", "created_at": "Thu Aug 06 19:28:10 +0000 2015"}, {"notifications": false, "profile_use_background_image": false, "has_extended_profile": false, "listed_count": 23, "profile_image_url": "http://pbs.twimg.com/profile_images/631231593164607488/R4hRHjBI_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/6cpr8h0hGa", "statuses_count": 664, "profile_text_color": "000000", "profile_background_tile": false, "follow_request_sent": false, "id": 3312790286, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "4A913C", "followers_count": 239, "friends_count": 0, "location": "", "description": "Animal videos sourced from @macaulaylibrary. Turn up the sound! // A bot by @tinysubversions. Not affiliated with the Macaulay Library.", "profile_sidebar_fill_color": "000000", "default_profile": false, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "000000", "is_translation_enabled": false, "profile_sidebar_border_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/631231593164607488/R4hRHjBI_normal.png", "geo_enabled": false, "time_zone": null, "name": "Animal Video Bot", "id_str": "3312790286", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "macaulaylibrary.org", "indices": [0, 22], "expanded_url": "http://macaulaylibrary.org/", "url": "http://t.co/6cpr8h0hGa"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "ro", "extended_entities": {"media": [{"type": "video", "video_info": {"variants": [{"content_type": "video/webm", "bitrate": 832000, "url": "https://video.twimg.com/ext_tw_video/693439580935094273/pu/vid/640x360/hY01KGCSXl-isZzt.webm"}, {"content_type": "video/mp4", "bitrate": 320000, "url": "https://video.twimg.com/ext_tw_video/693439580935094273/pu/vid/320x180/3NEGIMyzX2tdBm5i.mp4"}, {"content_type": "video/mp4", "bitrate": 832000, "url": "https://video.twimg.com/ext_tw_video/693439580935094273/pu/vid/640x360/hY01KGCSXl-isZzt.mp4"}, {"content_type": "application/x-mpegURL", "url": "https://video.twimg.com/ext_tw_video/693439580935094273/pu/pl/G53mlN6oslnMAWd5.m3u8"}, {"content_type": "application/dash+xml", "url": "https://video.twimg.com/ext_tw_video/693439580935094273/pu/pl/G53mlN6oslnMAWd5.mpd"}], "aspect_ratio": [16, 9], "duration_millis": 20021}, "id": 693439580935094273, "media_url": "http://pbs.twimg.com/ext_tw_video_thumb/693439580935094273/pu/img/K0BdyKh0qQc3P5_N.jpg", "media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/693439580935094273/pu/img/K0BdyKh0qQc3P5_N.jpg", "display_url": "pic.twitter.com/aaGNPmPpni", "indices": [85, 108], "expanded_url": "http://twitter.com/AnimalVidBot/status/693439595946479617/video/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 640, "h": 360}, "small": {"resize": "fit", "w": 340, "h": 191}, "medium": {"resize": "fit", "w": 600, "h": 338}}, "id_str": "693439580935094273", "url": "https://t.co/aaGNPmPpni"}]}, "truncated": false, "id": 693439595946479617, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "Maui Parrotbill\n\nPseudonestor xanthophrys\nBarksdale, Timothy https://t.co/c6n9M2Cjnv https://t.co/aaGNPmPpni", "id_str": "693439595946479617", "entities": {"media": [{"type": "photo", "id": 693439580935094273, "media_url": "http://pbs.twimg.com/ext_tw_video_thumb/693439580935094273/pu/img/K0BdyKh0qQc3P5_N.jpg", "media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/693439580935094273/pu/img/K0BdyKh0qQc3P5_N.jpg", "display_url": "pic.twitter.com/aaGNPmPpni", "indices": [85, 108], "expanded_url": "http://twitter.com/AnimalVidBot/status/693439595946479617/video/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 640, "h": 360}, "small": {"resize": "fit", "w": 340, "h": 191}, "medium": {"resize": "fit", "w": 600, "h": 338}}, "id_str": "693439580935094273", "url": "https://t.co/aaGNPmPpni"}], "hashtags": [], "urls": [{"display_url": "macaulaylibrary.org/video/428118", "indices": [61, 84], "expanded_url": "http://macaulaylibrary.org/video/428118", "url": "https://t.co/c6n9M2Cjnv"}], "symbols": [], "user_mentions": []}, "source": "Animal Video Bot", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 14:24:17 +0000 2016"}, "is_translator": false, "screen_name": "AnimalVidBot", "created_at": "Tue Aug 11 22:25:35 +0000 2015"}, {"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 10, "profile_image_url": "http://pbs.twimg.com/profile_images/624358417818238976/CfSPOEr4_normal.jpg", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/YEWmunbcFZ", "statuses_count": 4, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 3300809963, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 56, "friends_count": 0, "location": "The Most Relevant Ad Agency", "description": "The most happenin' new trends on the internet. // A bot by @tinysubversions.", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/624358417818238976/CfSPOEr4_normal.jpg", "geo_enabled": false, "time_zone": null, "name": "Trend Reportz", "id_str": "3300809963", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "slideshare.net/trendreportz", "indices": [0, 22], "expanded_url": "http://www.slideshare.net/trendreportz", "url": "http://t.co/YEWmunbcFZ"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 1, "lang": "en", "truncated": false, "id": 638389840472600576, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "NEW REPORT! Learn what steamers mean to 7-18 y/o men http://t.co/veQGWz1Lqn", "id_str": "638389840472600576", "entities": {"hashtags": [], "urls": [{"display_url": "slideshare.net/trendreportz/t\u2026", "indices": [53, 75], "expanded_url": "http://www.slideshare.net/trendreportz/trends-in-steamers", "url": "http://t.co/veQGWz1Lqn"}], "symbols": [], "user_mentions": []}, "source": "Trend Reportz", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Mon Aug 31 16:36:13 +0000 2015"}, "is_translator": false, "screen_name": "TrendReportz", "created_at": "Wed May 27 19:43:37 +0000 2015"}, {"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 14, "profile_image_url": "http://pbs.twimg.com/profile_images/585540228439498752/OPHSe1Yw_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/lrCYkDGPrm", "statuses_count": 888, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 3145355109, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 106, "friends_count": 1, "location": "The Middle East", "profile_banner_url": "https://pbs.twimg.com/profile_banners/3145355109/1428438665", "description": "Public domain photos from the Qatar Digital Library of Middle Eastern (& nearby) history. Tweets 4x/day. // bot by @tinysubversions, not affiliated with the QDL", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/585540228439498752/OPHSe1Yw_normal.png", "geo_enabled": false, "time_zone": null, "name": "Middle East History", "id_str": "3145355109", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "qdl.qa/en/search/site\u2026", "indices": [0, 22], "expanded_url": "http://www.qdl.qa/en/search/site/?f%5B0%5D=document_source%3Aarchive_source", "url": "http://t.co/lrCYkDGPrm"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "extended_entities": {"media": [{"type": "photo", "id": 693479308619300866, "media_url": "http://pbs.twimg.com/media/CZ-7wclWQAIpxlu.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ-7wclWQAIpxlu.jpg", "display_url": "pic.twitter.com/xojYCSnUZu", "indices": [72, 95], "expanded_url": "http://twitter.com/MidEastHistory/status/693479308745113600/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 1024, "h": 1024}, "small": {"resize": "fit", "w": 340, "h": 340}, "medium": {"resize": "fit", "w": 600, "h": 600}}, "id_str": "693479308619300866", "url": "https://t.co/xojYCSnUZu"}]}, "truncated": false, "id": 693479308745113600, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "'Distant View of Hormuz.' Photographer: Unknown https://t.co/hkDmSbTLgT https://t.co/xojYCSnUZu", "id_str": "693479308745113600", "entities": {"media": [{"type": "photo", "id": 693479308619300866, "media_url": "http://pbs.twimg.com/media/CZ-7wclWQAIpxlu.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ-7wclWQAIpxlu.jpg", "display_url": "pic.twitter.com/xojYCSnUZu", "indices": [72, 95], "expanded_url": "http://twitter.com/MidEastHistory/status/693479308745113600/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 1024, "h": 1024}, "small": {"resize": "fit", "w": 340, "h": 340}, "medium": {"resize": "fit", "w": 600, "h": 600}}, "id_str": "693479308619300866", "url": "https://t.co/xojYCSnUZu"}], "hashtags": [], "urls": [{"display_url": "qdl.qa//en/archive/81\u2026", "indices": [48, 71], "expanded_url": "http://www.qdl.qa//en/archive/81055/vdc_100024111424.0x00000f", "url": "https://t.co/hkDmSbTLgT"}], "symbols": [], "user_mentions": []}, "source": "Mid east history pics", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 17:02:06 +0000 2016"}, "is_translator": false, "screen_name": "MidEastHistory", "created_at": "Tue Apr 07 20:27:15 +0000 2015"}, {"notifications": false, "profile_use_background_image": false, "has_extended_profile": false, "listed_count": 99, "profile_image_url": "http://pbs.twimg.com/profile_images/584076161325473793/gufAEGJv_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/s6OmUwb6Bn", "statuses_count": 91531, "profile_text_color": "000000", "profile_background_tile": false, "follow_request_sent": false, "id": 3131670665, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "ABB8C2", "followers_count": 46186, "friends_count": 1, "location": "Hogwarts", "description": "I'm the Sorting Hat and I'm here to say / I love sorting students in a major way // a bot by @tinysubversions, follow to get sorted!", "profile_sidebar_fill_color": "000000", "default_profile": false, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 1, "profile_background_color": "000000", "is_translation_enabled": false, "profile_sidebar_border_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/584076161325473793/gufAEGJv_normal.png", "geo_enabled": false, "time_zone": null, "name": "The Sorting Hat Bot", "id_str": "3131670665", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "tinysubversions.com/notes/sorting-\u2026", "indices": [0, 22], "expanded_url": "http://tinysubversions.com/notes/sorting-bot/", "url": "http://t.co/s6OmUwb6Bn"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "truncated": false, "id": 693474779018362880, "place": null, "favorite_count": 0, "in_reply_to_status_id_str": null, "in_reply_to_user_id": 1210222826, "in_reply_to_status_id": null, "in_reply_to_screen_name": "Nyrfall", "text": "@Nyrfall The Sorting time is here at last, I know each time you send\nI've figured out that Slytherin's the right place for your blend", "id_str": "693474779018362880", "entities": {"hashtags": [], "urls": [], "symbols": [], "user_mentions": [{"indices": [0, 8], "id": 1210222826, "name": "Desi Sobrino", "screen_name": "Nyrfall", "id_str": "1210222826"}]}, "source": "The Sorting Hat Bot", "contributors": null, "favorited": false, "in_reply_to_user_id_str": "1210222826", "retweeted": false, "created_at": "Sat Jan 30 16:44:06 +0000 2016"}, "is_translator": false, "screen_name": "SortingBot", "created_at": "Fri Apr 03 19:27:31 +0000 2015"}, {"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 34, "profile_image_url": "http://pbs.twimg.com/profile_images/580173179236196352/nWsIPbqH_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/2YPE0x0Knw", "statuses_count": 1233, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 3105672877, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 424, "friends_count": 0, "location": "NYC", "profile_banner_url": "https://pbs.twimg.com/profile_banners/3105672877/1427159206", "description": "Posting random flyers from hip hop's formative years every 6 hours. Most art by Buddy Esquire and Phase 2. Full collection at link. // a bot by @tinysubversions", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/580173179236196352/nWsIPbqH_normal.png", "geo_enabled": false, "time_zone": null, "name": "Old School Flyers", "id_str": "3105672877", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "toledohiphop.org/images/old_sch\u2026", "indices": [0, 22], "expanded_url": "http://www.toledohiphop.org/images/old_school_source_code/", "url": "http://t.co/2YPE0x0Knw"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "und", "extended_entities": {"media": [{"type": "photo", "id": 693422418480742400, "media_url": "http://pbs.twimg.com/media/CZ-IBATWQAAhkZA.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ-IBATWQAAhkZA.jpg", "display_url": "pic.twitter.com/B7jv7lwB9S", "indices": [0, 23], "expanded_url": "http://twitter.com/oldschoolflyers/status/693422418929524736/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 503, "h": 646}, "small": {"resize": "fit", "w": 340, "h": 435}, "medium": {"resize": "fit", "w": 503, "h": 646}}, "id_str": "693422418480742400", "url": "https://t.co/B7jv7lwB9S"}]}, "truncated": false, "id": 693422418929524736, "place": null, "favorite_count": 1, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "https://t.co/B7jv7lwB9S", "id_str": "693422418929524736", "entities": {"media": [{"type": "photo", "id": 693422418480742400, "media_url": "http://pbs.twimg.com/media/CZ-IBATWQAAhkZA.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ-IBATWQAAhkZA.jpg", "display_url": "pic.twitter.com/B7jv7lwB9S", "indices": [0, 23], "expanded_url": "http://twitter.com/oldschoolflyers/status/693422418929524736/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 503, "h": 646}, "small": {"resize": "fit", "w": 340, "h": 435}, "medium": {"resize": "fit", "w": 503, "h": 646}}, "id_str": "693422418480742400", "url": "https://t.co/B7jv7lwB9S"}], "hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "oldschoolflyers", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 13:16:02 +0000 2016"}, "is_translator": false, "screen_name": "oldschoolflyers", "created_at": "Tue Mar 24 00:55:10 +0000 2015"}, {"notifications": false, "profile_use_background_image": false, "has_extended_profile": false, "listed_count": 41, "profile_image_url": "http://pbs.twimg.com/profile_images/561971159927771136/sEQ5u1zM_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": null, "statuses_count": 1396, "profile_text_color": "000000", "profile_background_tile": false, "follow_request_sent": false, "id": 3010688583, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "961EE4", "followers_count": 243, "friends_count": 1, "location": "", "profile_banner_url": "https://pbs.twimg.com/profile_banners/3010688583/1422819642", "description": "DAD: weird conversation joke is bae ME: ugh dad no DAD: [something unhip] // a bot by @tinysubversions", "profile_sidebar_fill_color": "000000", "default_profile": false, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "000000", "is_translation_enabled": false, "profile_sidebar_border_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/561971159927771136/sEQ5u1zM_normal.png", "geo_enabled": false, "time_zone": null, "name": "Weird Convo Bot", "id_str": "3010688583", "entities": {"description": {"urls": []}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "truncated": false, "id": 693429980093620224, "place": null, "favorite_count": 0, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "DOG: Wtf are you bae'\nME: fart. Ugh.\nDOG: so sex with me is sex vape\nME: Wtf are you skeleton'", "id_str": "693429980093620224", "entities": {"hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "WeirdConvoBot", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 13:46:05 +0000 2016"}, "is_translator": false, "screen_name": "WeirdConvoBot", "created_at": "Sun Feb 01 19:05:21 +0000 2015"}, {"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 110, "profile_image_url": "http://pbs.twimg.com/profile_images/556129692554493953/82ISdQxF_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/3gDtETAFpu", "statuses_count": 1510, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 2981339967, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 1308, "friends_count": 1, "location": "Frankfurt School", "profile_banner_url": "https://pbs.twimg.com/profile_banners/2981339967/1421426775", "description": "We love #innovation and are always thinking of the next #disruptive startup #idea! // a bot by @tinysubversions", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 1, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/556129692554493953/82ISdQxF_normal.png", "geo_enabled": false, "time_zone": null, "name": "Hottest Startups", "id_str": "2981339967", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "marxists.org/archive/index.\u2026", "indices": [0, 22], "expanded_url": "http://www.marxists.org/archive/index.htm", "url": "http://t.co/3gDtETAFpu"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "truncated": false, "id": 693477791883350016, "place": null, "favorite_count": 0, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "Startup idea: The architect thinks of the building contractor as a layman who tells him what he needs and what he can pay.", "id_str": "693477791883350016", "entities": {"hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "hottest startups", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 16:56:04 +0000 2016"}, "is_translator": false, "screen_name": "HottestStartups", "created_at": "Fri Jan 16 16:33:45 +0000 2015"}, {"notifications": false, "profile_use_background_image": false, "has_extended_profile": false, "listed_count": 40, "profile_image_url": "http://pbs.twimg.com/profile_images/549979314541039617/fZ_XDnWz_normal.jpeg", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": null, "statuses_count": 6748, "profile_text_color": "000000", "profile_background_tile": false, "follow_request_sent": false, "id": 2951486632, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "FFCC4D", "followers_count": 3155, "friends_count": 1, "location": "(bot by @tinysubversions)", "description": "We are the Academy For Annual Recognition and each year we give out the Yearly Awards. Follow (or re-follow) for your award! Warning: sometimes it's mean.", "profile_sidebar_fill_color": "000000", "default_profile": false, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 2, "profile_background_color": "000000", "is_translation_enabled": false, "profile_sidebar_border_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/549979314541039617/fZ_XDnWz_normal.jpeg", "geo_enabled": false, "time_zone": null, "name": "The Yearly Awards", "id_str": "2951486632", "entities": {"description": {"urls": []}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "extended_entities": {"media": [{"type": "animated_gif", "video_info": {"variants": [{"content_type": "video/mp4", "bitrate": 0, "url": "https://pbs.twimg.com/tweet_video/CZ-2l2fWwAEH6MB.mp4"}], "aspect_ratio": [4, 3]}, "id": 693473629036789761, "media_url": "http://pbs.twimg.com/tweet_video_thumb/CZ-2l2fWwAEH6MB.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/CZ-2l2fWwAEH6MB.png", "display_url": "pic.twitter.com/XGDD3tMJPF", "indices": [86, 109], "expanded_url": "http://twitter.com/YearlyAwards/status/693473629766598656/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 400, "h": 300}, "small": {"resize": "fit", "w": 340, "h": 255}, "large": {"resize": "fit", "w": 400, "h": 300}}, "id_str": "693473629036789761", "url": "https://t.co/XGDD3tMJPF"}]}, "truncated": false, "id": 693473629766598656, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": 4863901738, "in_reply_to_status_id": null, "in_reply_to_screen_name": "know_fast", "text": "@know_fast It's official: you're the Least Prodigiously Despondent Confidant of 2015! https://t.co/XGDD3tMJPF", "id_str": "693473629766598656", "entities": {"media": [{"type": "photo", "id": 693473629036789761, "media_url": "http://pbs.twimg.com/tweet_video_thumb/CZ-2l2fWwAEH6MB.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/CZ-2l2fWwAEH6MB.png", "display_url": "pic.twitter.com/XGDD3tMJPF", "indices": [86, 109], "expanded_url": "http://twitter.com/YearlyAwards/status/693473629766598656/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 400, "h": 300}, "small": {"resize": "fit", "w": 340, "h": 255}, "large": {"resize": "fit", "w": 400, "h": 300}}, "id_str": "693473629036789761", "url": "https://t.co/XGDD3tMJPF"}], "hashtags": [], "urls": [], "symbols": [], "user_mentions": [{"indices": [0, 10], "id": 4863901738, "name": "Know Fast", "screen_name": "know_fast", "id_str": "4863901738"}]}, "source": "The Yearly Awards", "contributors": null, "favorited": false, "in_reply_to_user_id_str": "4863901738", "retweeted": false, "created_at": "Sat Jan 30 16:39:32 +0000 2016"}, "is_translator": false, "screen_name": "YearlyAwards", "created_at": "Tue Dec 30 16:59:34 +0000 2014"}, {"notifications": false, "profile_use_background_image": false, "has_extended_profile": false, "listed_count": 20, "profile_image_url": "http://pbs.twimg.com/profile_images/512673377283080194/eFnJQJSp_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": null, "statuses_count": 1972, "profile_text_color": "000000", "profile_background_tile": false, "follow_request_sent": false, "id": 2817629347, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "ABB8C2", "followers_count": 93, "friends_count": 1, "location": "", "profile_banner_url": "https://pbs.twimg.com/profile_banners/2817629347/1411065932", "description": "Wise sayings, four times daily. by @tinysubversions", "profile_sidebar_fill_color": "000000", "default_profile": false, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "000000", "is_translation_enabled": false, "profile_sidebar_border_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/512673377283080194/eFnJQJSp_normal.png", "geo_enabled": false, "time_zone": null, "name": "Received Wisdom", "id_str": "2817629347", "entities": {"description": {"urls": []}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "truncated": false, "id": 693418402392719360, "place": null, "favorite_count": 0, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "Water is thicker than blood.", "id_str": "693418402392719360", "entities": {"hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "Received Wisdom", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 13:00:04 +0000 2016"}, "is_translator": false, "screen_name": "received_wisdom", "created_at": "Thu Sep 18 18:32:38 +0000 2014"}, {"notifications": false, "profile_use_background_image": false, "has_extended_profile": false, "listed_count": 11, "profile_image_url": "http://pbs.twimg.com/profile_images/517404591218900992/kf2iYD1f_normal.jpeg", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": null, "statuses_count": 1767, "profile_text_color": "000000", "profile_background_tile": false, "follow_request_sent": false, "id": 2798799669, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "4A913C", "followers_count": 40, "friends_count": 0, "location": "Everywhere", "profile_banner_url": "https://pbs.twimg.com/profile_banners/2798799669/1412195008", "description": "Chronicling men doing things. // A bot by @tinysubversions, Powered By Giphy", "profile_sidebar_fill_color": "000000", "default_profile": false, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "000000", "is_translation_enabled": false, "profile_sidebar_border_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/517404591218900992/kf2iYD1f_normal.jpeg", "geo_enabled": false, "time_zone": null, "name": "Men Doing Things", "id_str": "2798799669", "entities": {"description": {"urls": []}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "extended_entities": {"media": [{"type": "animated_gif", "video_info": {"variants": [{"content_type": "video/mp4", "bitrate": 0, "url": "https://pbs.twimg.com/tweet_video/CZ-WORAWQAED6It.mp4"}], "aspect_ratio": [167, 104]}, "id": 693438039465541633, "media_url": "http://pbs.twimg.com/tweet_video_thumb/CZ-WORAWQAED6It.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/CZ-WORAWQAED6It.png", "display_url": "pic.twitter.com/wsk2GyEsGh", "indices": [37, 60], "expanded_url": "http://twitter.com/MenDoing/status/693438039801073664/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 334, "h": 208}, "small": {"resize": "fit", "w": 334, "h": 208}, "large": {"resize": "fit", "w": 334, "h": 208}}, "id_str": "693438039465541633", "url": "https://t.co/wsk2GyEsGh"}]}, "truncated": false, "id": 693438039801073664, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "Men Authoring Landmarks in Manhattan https://t.co/wsk2GyEsGh", "id_str": "693438039801073664", "entities": {"media": [{"type": "photo", "id": 693438039465541633, "media_url": "http://pbs.twimg.com/tweet_video_thumb/CZ-WORAWQAED6It.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/CZ-WORAWQAED6It.png", "display_url": "pic.twitter.com/wsk2GyEsGh", "indices": [37, 60], "expanded_url": "http://twitter.com/MenDoing/status/693438039801073664/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 334, "h": 208}, "small": {"resize": "fit", "w": 334, "h": 208}, "large": {"resize": "fit", "w": 334, "h": 208}}, "id_str": "693438039465541633", "url": "https://t.co/wsk2GyEsGh"}], "hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "Men Doing Things", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 14:18:06 +0000 2016"}, "is_translator": false, "screen_name": "MenDoing", "created_at": "Wed Oct 01 19:59:55 +0000 2014"}, {"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 139, "profile_image_url": "http://pbs.twimg.com/profile_images/495988901790482432/le2-dKgs_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/r2HzjsqHTU", "statuses_count": 2157, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 2704554914, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 1172, "friends_count": 1, "location": "", "profile_banner_url": "https://pbs.twimg.com/profile_banners/2704554914/1407087962", "description": "A bot that picks a word and then draws randomly until an OCR library (http://t.co/XmDeI5TWoF) reads that word. 4x daily. Also on Tumblr. // by @tinysubversions", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/495988901790482432/le2-dKgs_normal.png", "geo_enabled": false, "time_zone": null, "name": "Reverse OCR", "id_str": "2704554914", "entities": {"description": {"urls": [{"display_url": "antimatter15.com/ocrad.js/demo.\u2026", "indices": [70, 92], "expanded_url": "http://antimatter15.com/ocrad.js/demo.html", "url": "http://t.co/XmDeI5TWoF"}]}, "url": {"urls": [{"display_url": "reverseocr.tumblr.com", "indices": [0, 22], "expanded_url": "http://reverseocr.tumblr.com", "url": "http://t.co/r2HzjsqHTU"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "und", "extended_entities": {"media": [{"type": "photo", "id": 693404391072776192, "media_url": "http://pbs.twimg.com/media/CZ93nq-WwAAdSAo.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ93nq-WwAAdSAo.jpg", "display_url": "pic.twitter.com/WbD9lkNarf", "indices": [8, 31], "expanded_url": "http://twitter.com/reverseocr/status/693404391160860673/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 600, "h": 150}, "small": {"resize": "fit", "w": 340, "h": 85}, "large": {"resize": "fit", "w": 800, "h": 200}}, "id_str": "693404391072776192", "url": "https://t.co/WbD9lkNarf"}]}, "truncated": false, "id": 693404391160860673, "place": null, "favorite_count": 2, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "larceny https://t.co/WbD9lkNarf", "id_str": "693404391160860673", "entities": {"media": [{"type": "photo", "id": 693404391072776192, "media_url": "http://pbs.twimg.com/media/CZ93nq-WwAAdSAo.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ93nq-WwAAdSAo.jpg", "display_url": "pic.twitter.com/WbD9lkNarf", "indices": [8, 31], "expanded_url": "http://twitter.com/reverseocr/status/693404391160860673/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 600, "h": 150}, "small": {"resize": "fit", "w": 340, "h": 85}, "large": {"resize": "fit", "w": 800, "h": 200}}, "id_str": "693404391072776192", "url": "https://t.co/WbD9lkNarf"}], "hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "Reverse OCR", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 12:04:24 +0000 2016"}, "is_translator": false, "screen_name": "reverseocr", "created_at": "Sun Aug 03 17:26:28 +0000 2014"}, {"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 5, "profile_image_url": "http://pbs.twimg.com/profile_images/479836451182362624/0fAtv_AN_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": null, "statuses_count": 2, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 2577963498, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 14, "friends_count": 1, "location": "", "description": "Deploying GIFs every six hours. // by @tinysubvesions", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/479836451182362624/0fAtv_AN_normal.png", "geo_enabled": false, "time_zone": null, "name": "GIF Deployer", "id_str": "2577963498", "entities": {"description": {"urls": []}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "extended_entities": {"media": [{"type": "animated_gif", "video_info": {"variants": [{"content_type": "video/mp4", "bitrate": 0, "url": "https://pbs.twimg.com/tweet_video/BqkTB2fIEAA8zCs.mp4"}], "aspect_ratio": [1, 1]}, "id": 479935757818531840, "media_url": "http://pbs.twimg.com/tweet_video_thumb/BqkTB2fIEAA8zCs.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/BqkTB2fIEAA8zCs.png", "display_url": "pic.twitter.com/WEYISUSsJR", "indices": [21, 43], "expanded_url": "http://twitter.com/gifDeployer/status/479935760033153024/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 600, "h": 600}, "small": {"resize": "fit", "w": 340, "h": 340}, "large": {"resize": "fit", "w": 612, "h": 612}}, "id_str": "479935757818531840", "url": "http://t.co/WEYISUSsJR"}]}, "truncated": false, "id": 479935760033153024, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "Vietnamese decadence http://t.co/WEYISUSsJR", "id_str": "479935760033153024", "entities": {"media": [{"type": "photo", "id": 479935757818531840, "media_url": "http://pbs.twimg.com/tweet_video_thumb/BqkTB2fIEAA8zCs.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/BqkTB2fIEAA8zCs.png", "display_url": "pic.twitter.com/WEYISUSsJR", "indices": [21, 43], "expanded_url": "http://twitter.com/gifDeployer/status/479935760033153024/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 600, "h": 600}, "small": {"resize": "fit", "w": 340, "h": 340}, "large": {"resize": "fit", "w": 612, "h": 612}}, "id_str": "479935757818531840", "url": "http://t.co/WEYISUSsJR"}], "hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "GIF Deployer", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Fri Jun 20 10:36:16 +0000 2014"}, "is_translator": false, "screen_name": "gifDeployer", "created_at": "Fri Jun 20 03:56:13 +0000 2014"}, {"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 48, "profile_image_url": "http://pbs.twimg.com/profile_images/479364877551538176/HN0wLHbt_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/XJeqwaDhQg", "statuses_count": 11970, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 2575445382, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 428, "friends_count": 1, "location": "", "description": "Generating new aesthetics every hour. Botpunk. // by @tinysubversions", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": -18000, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/479364877551538176/HN0wLHbt_normal.png", "geo_enabled": false, "time_zone": "Eastern Time (US & Canada)", "name": "Brand New Aesthetics", "id_str": "2575445382", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "brand-new-aesthetics.tumblr.com", "indices": [0, 22], "expanded_url": "http://brand-new-aesthetics.tumblr.com", "url": "http://t.co/XJeqwaDhQg"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "da", "extended_entities": {"media": [{"type": "animated_gif", "video_info": {"variants": [{"content_type": "video/mp4", "bitrate": 0, "url": "https://pbs.twimg.com/tweet_video/CX5BF-lWMAEyoPA.mp4"}], "aspect_ratio": [3, 2]}, "id": 684055764361687041, "media_url": "http://pbs.twimg.com/tweet_video_thumb/CX5BF-lWMAEyoPA.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/CX5BF-lWMAEyoPA.png", "display_url": "pic.twitter.com/d4ZGIYqyt9", "indices": [13, 36], "expanded_url": "http://twitter.com/neweraesthetics/status/684055764768522240/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 300, "h": 200}, "small": {"resize": "fit", "w": 300, "h": 200}, "large": {"resize": "fit", "w": 300, "h": 200}}, "id_str": "684055764361687041", "url": "https://t.co/d4ZGIYqyt9"}]}, "truncated": false, "id": 684055764768522240, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "SOLUTIONPUNK https://t.co/d4ZGIYqyt9", "id_str": "684055764768522240", "entities": {"media": [{"type": "photo", "id": 684055764361687041, "media_url": "http://pbs.twimg.com/tweet_video_thumb/CX5BF-lWMAEyoPA.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/CX5BF-lWMAEyoPA.png", "display_url": "pic.twitter.com/d4ZGIYqyt9", "indices": [13, 36], "expanded_url": "http://twitter.com/neweraesthetics/status/684055764768522240/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 300, "h": 200}, "small": {"resize": "fit", "w": 300, "h": 200}, "large": {"resize": "fit", "w": 300, "h": 200}}, "id_str": "684055764361687041", "url": "https://t.co/d4ZGIYqyt9"}], "hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "Brand New Aesthetics", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Mon Jan 04 16:56:18 +0000 2016"}, "is_translator": false, "screen_name": "neweraesthetics", "created_at": "Wed Jun 18 20:39:25 +0000 2014"}, {"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 12, "profile_image_url": "http://pbs.twimg.com/profile_images/479355596076892160/p_jT5KqM_normal.jpeg", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/DZYA6d8tU5", "statuses_count": 8587, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 2575407888, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 113, "friends_count": 1, "location": "Bodymore, Murdaland", "description": "This Twitter account automatically tweets GIFs of The Wire. Also a Tumblr. Updates hourly. // by @tinysubversions", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 1, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/479355596076892160/p_jT5KqM_normal.jpeg", "geo_enabled": false, "time_zone": null, "name": "Scenes from The Wire", "id_str": "2575407888", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "wirescenes.tumblr.com", "indices": [0, 22], "expanded_url": "http://wirescenes.tumblr.com/", "url": "http://t.co/DZYA6d8tU5"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "und", "extended_entities": {"media": [{"type": "animated_gif", "video_info": {"variants": [{"content_type": "video/mp4", "bitrate": 0, "url": "https://pbs.twimg.com/tweet_video/COXAcgVU8AACS4W.mp4"}], "aspect_ratio": [132, 119]}, "id": 641130117918420992, "media_url": "http://pbs.twimg.com/tweet_video_thumb/COXAcgVU8AACS4W.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/COXAcgVU8AACS4W.png", "display_url": "pic.twitter.com/XBoaB2klZq", "indices": [0, 22], "expanded_url": "http://twitter.com/wirescenes/status/641130118132314112/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 264, "h": 238}, "small": {"resize": "fit", "w": 264, "h": 238}, "medium": {"resize": "fit", "w": 264, "h": 238}}, "id_str": "641130117918420992", "url": "http://t.co/XBoaB2klZq"}]}, "truncated": false, "id": 641130118132314112, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "http://t.co/XBoaB2klZq", "id_str": "641130118132314112", "entities": {"media": [{"type": "photo", "id": 641130117918420992, "media_url": "http://pbs.twimg.com/tweet_video_thumb/COXAcgVU8AACS4W.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/COXAcgVU8AACS4W.png", "display_url": "pic.twitter.com/XBoaB2klZq", "indices": [0, 22], "expanded_url": "http://twitter.com/wirescenes/status/641130118132314112/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 264, "h": 238}, "small": {"resize": "fit", "w": 264, "h": 238}, "medium": {"resize": "fit", "w": 264, "h": 238}}, "id_str": "641130117918420992", "url": "http://t.co/XBoaB2klZq"}], "hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "Scenes from The Wire", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Tue Sep 08 06:05:06 +0000 2015"}, "is_translator": false, "screen_name": "wirescenes", "created_at": "Wed Jun 18 20:08:31 +0000 2014"}, {"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 229, "profile_image_url": "http://pbs.twimg.com/profile_images/468570294253150208/DlK5sGe2_normal.jpeg", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/qTVWPkaIgo", "statuses_count": 2026, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 2508960524, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 4176, "friends_count": 1, "location": "(not affiliated with the Met)", "description": "I am a bot that tweets a random high-res Open Access image from the Metropolitan Museum of Art, four times a day. // by @tinysubversions", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 3, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/468570294253150208/DlK5sGe2_normal.jpeg", "geo_enabled": false, "time_zone": null, "name": "Museum Bot", "id_str": "2508960524", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "metmuseum.org/about-the-muse\u2026", "indices": [0, 22], "expanded_url": "http://metmuseum.org/about-the-museum/press-room/news/2014/oasc-access", "url": "http://t.co/qTVWPkaIgo"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 3, "lang": "en", "extended_entities": {"media": [{"type": "photo", "id": 693407092623949824, "media_url": "http://pbs.twimg.com/media/CZ96E7CWQAAVYYz.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ96E7CWQAAVYYz.jpg", "display_url": "pic.twitter.com/mRktzdlEB1", "indices": [33, 56], "expanded_url": "http://twitter.com/MuseumBot/status/693407092863033344/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 1024, "h": 1247}, "small": {"resize": "fit", "w": 340, "h": 414}, "medium": {"resize": "fit", "w": 600, "h": 730}}, "id_str": "693407092623949824", "url": "https://t.co/mRktzdlEB1"}]}, "truncated": false, "id": 693407092863033344, "place": null, "favorite_count": 2, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "Nativity https://t.co/OpNseJO3oL https://t.co/mRktzdlEB1", "id_str": "693407092863033344", "entities": {"media": [{"type": "photo", "id": 693407092623949824, "media_url": "http://pbs.twimg.com/media/CZ96E7CWQAAVYYz.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ96E7CWQAAVYYz.jpg", "display_url": "pic.twitter.com/mRktzdlEB1", "indices": [33, 56], "expanded_url": "http://twitter.com/MuseumBot/status/693407092863033344/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 1024, "h": 1247}, "small": {"resize": "fit", "w": 340, "h": 414}, "medium": {"resize": "fit", "w": 600, "h": 730}}, "id_str": "693407092623949824", "url": "https://t.co/mRktzdlEB1"}], "hashtags": [], "urls": [{"display_url": "metmuseum.org/collection/the\u2026", "indices": [9, 32], "expanded_url": "http://www.metmuseum.org/collection/the-collection-online/search/462886?rpp=30&pg=1413&rndkey=20160130&ao=on&ft=*&pos=42373", "url": "https://t.co/OpNseJO3oL"}], "symbols": [], "user_mentions": []}, "source": "Museum bot", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 12:15:08 +0000 2016"}, "is_translator": false, "screen_name": "MuseumBot", "created_at": "Tue May 20 01:32:24 +0000 2014"}], "previous_cursor_str": "0", "next_cursor_str": "4611686020936348428", "previous_cursor": 0} \ No newline at end of file +{"next_cursor": 4611686020936348428, "users": [{"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 24, "profile_image_url": "http://pbs.twimg.com/profile_images/659410881806135296/PdVxDc0W_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": null, "statuses_count": 362, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 4048395140, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 106, "friends_count": 0, "location": "", "description": "I am a bot that simulates a series of mechanical linkages (+ noise) to draw a curve 4x/day. // by @tinysubversions, inspired by @ra & @bahrami_", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/659410881806135296/PdVxDc0W_normal.png", "geo_enabled": false, "time_zone": null, "name": "Spinny Machine", "id_str": "4048395140", "entities": {"description": {"urls": []}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "extended_entities": {"media": [{"type": "animated_gif", "video_info": {"variants": [{"content_type": "video/mp4", "bitrate": 0, "url": "https://pbs.twimg.com/tweet_video/CZ9xAlyWQAAVsZk.mp4"}], "aspect_ratio": [1, 1]}, "id": 693397122595569664, "media_url": "http://pbs.twimg.com/tweet_video_thumb/CZ9xAlyWQAAVsZk.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/CZ9xAlyWQAAVsZk.png", "display_url": "pic.twitter.com/n6lbayOFFQ", "indices": [30, 53], "expanded_url": "http://twitter.com/spinnymachine/status/693397123023396864/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 360, "h": 360}, "small": {"resize": "fit", "w": 340, "h": 340}, "medium": {"resize": "fit", "w": 360, "h": 360}}, "id_str": "693397122595569664", "url": "https://t.co/n6lbayOFFQ"}]}, "truncated": false, "id": 693397123023396864, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "a casually scorched northeast https://t.co/n6lbayOFFQ", "id_str": "693397123023396864", "entities": {"media": [{"type": "photo", "id": 693397122595569664, "media_url": "http://pbs.twimg.com/tweet_video_thumb/CZ9xAlyWQAAVsZk.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/CZ9xAlyWQAAVsZk.png", "display_url": "pic.twitter.com/n6lbayOFFQ", "indices": [30, 53], "expanded_url": "http://twitter.com/spinnymachine/status/693397123023396864/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 360, "h": 360}, "small": {"resize": "fit", "w": 340, "h": 340}, "medium": {"resize": "fit", "w": 360, "h": 360}}, "id_str": "693397122595569664", "url": "https://t.co/n6lbayOFFQ"}], "hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "Spinny Machine", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 11:35:31 +0000 2016"}, "is_translator": false, "screen_name": "spinnymachine", "created_at": "Wed Oct 28 16:43:01 +0000 2015"}, {"notifications": false, "profile_use_background_image": false, "has_extended_profile": false, "listed_count": 6, "profile_image_url": "http://pbs.twimg.com/profile_images/658781950472138752/FOQCSbLg_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "https://t.co/OOS2jbeYND", "statuses_count": 135, "profile_text_color": "000000", "profile_background_tile": false, "follow_request_sent": false, "id": 4029020052, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "DBAF44", "followers_count": 23, "friends_count": 2, "location": "TV", "profile_banner_url": "https://pbs.twimg.com/profile_banners/4029020052/1445900976", "description": "I'm a bot that tweets fake Empire plots, inspired by @eveewing https://t.co/OOS2jbeYND // by @tinysubversions", "profile_sidebar_fill_color": "000000", "default_profile": false, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "000000", "is_translation_enabled": false, "profile_sidebar_border_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/658781950472138752/FOQCSbLg_normal.png", "geo_enabled": false, "time_zone": null, "name": "Empire Plots Bot", "id_str": "4029020052", "entities": {"description": {"urls": [{"display_url": "twitter.com/eveewing/statu\u2026", "indices": [63, 86], "expanded_url": "https://twitter.com/eveewing/status/658478802327183360", "url": "https://t.co/OOS2jbeYND"}]}, "url": {"urls": [{"display_url": "twitter.com/eveewing/statu\u2026", "indices": [0, 23], "expanded_url": "https://twitter.com/eveewing/status/658478802327183360", "url": "https://t.co/OOS2jbeYND"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "extended_entities": {"media": [{"type": "photo", "id": 671831157646876672, "media_url": "http://pbs.twimg.com/media/CVLS4NyU4AAshFm.png", "media_url_https": "https://pbs.twimg.com/media/CVLS4NyU4AAshFm.png", "display_url": "pic.twitter.com/EQ8oGhG502", "indices": [101, 124], "expanded_url": "http://twitter.com/EmpirePlots/status/671831157739118593/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 300, "h": 400}, "small": {"resize": "fit", "w": 300, "h": 400}, "large": {"resize": "fit", "w": 300, "h": 400}}, "id_str": "671831157646876672", "url": "https://t.co/EQ8oGhG502"}]}, "truncated": false, "id": 671831157739118593, "place": null, "favorite_count": 1, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "Jamal is stuck in a wild forest with Kene Holliday and can't find their way out (it's just a dream). https://t.co/EQ8oGhG502", "id_str": "671831157739118593", "entities": {"media": [{"type": "photo", "id": 671831157646876672, "media_url": "http://pbs.twimg.com/media/CVLS4NyU4AAshFm.png", "media_url_https": "https://pbs.twimg.com/media/CVLS4NyU4AAshFm.png", "display_url": "pic.twitter.com/EQ8oGhG502", "indices": [101, 124], "expanded_url": "http://twitter.com/EmpirePlots/status/671831157739118593/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 300, "h": 400}, "small": {"resize": "fit", "w": 300, "h": 400}, "large": {"resize": "fit", "w": 300, "h": 400}}, "id_str": "671831157646876672", "url": "https://t.co/EQ8oGhG502"}], "hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "Empire Plots Bot", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Tue Dec 01 23:20:04 +0000 2015"}, "is_translator": false, "screen_name": "EmpirePlots", "created_at": "Mon Oct 26 22:49:42 +0000 2015"}, {"notifications": false, "profile_use_background_image": false, "has_extended_profile": false, "listed_count": 25, "profile_image_url": "http://pbs.twimg.com/profile_images/652238580765462528/BQVTvFS9_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": null, "statuses_count": 346, "profile_text_color": "000000", "profile_background_tile": false, "follow_request_sent": false, "id": 3829470974, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "027F45", "followers_count": 287, "friends_count": 1, "location": "Portland, OR", "profile_banner_url": "https://pbs.twimg.com/profile_banners/3829470974/1444340849", "description": "Portland is such a weird place! We show real pics of places in Portland! ONLY IN PORTLAND as they say! // a bot by @tinysubversions, 4x daily", "profile_sidebar_fill_color": "000000", "default_profile": false, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "000000", "is_translation_enabled": false, "profile_sidebar_border_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/652238580765462528/BQVTvFS9_normal.png", "geo_enabled": false, "time_zone": null, "name": "Wow So Portland!", "id_str": "3829470974", "entities": {"description": {"urls": []}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "extended_entities": {"media": [{"type": "photo", "id": 693471873166761984, "media_url": "http://pbs.twimg.com/media/CZ-0_pXUYAAGzn4.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ-0_pXUYAAGzn4.jpg", "display_url": "pic.twitter.com/CF8JrGCQcY", "indices": [57, 80], "expanded_url": "http://twitter.com/wowsoportland/status/693471873246502912/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 600, "h": 300}, "small": {"resize": "fit", "w": 340, "h": 170}, "medium": {"resize": "fit", "w": 600, "h": 300}}, "id_str": "693471873166761984", "url": "https://t.co/CF8JrGCQcY"}]}, "truncated": false, "id": 693471873246502912, "place": null, "favorite_count": 1, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "those silly Portlanders are always up to something funny https://t.co/CF8JrGCQcY", "id_str": "693471873246502912", "entities": {"media": [{"type": "photo", "id": 693471873166761984, "media_url": "http://pbs.twimg.com/media/CZ-0_pXUYAAGzn4.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ-0_pXUYAAGzn4.jpg", "display_url": "pic.twitter.com/CF8JrGCQcY", "indices": [57, 80], "expanded_url": "http://twitter.com/wowsoportland/status/693471873246502912/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 600, "h": 300}, "small": {"resize": "fit", "w": 340, "h": 170}, "medium": {"resize": "fit", "w": 600, "h": 300}}, "id_str": "693471873166761984", "url": "https://t.co/CF8JrGCQcY"}], "hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "Wow so portland", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 16:32:33 +0000 2016"}, "is_translator": false, "screen_name": "wowsoportland", "created_at": "Thu Oct 08 21:38:27 +0000 2015"}, {"notifications": false, "profile_use_background_image": false, "has_extended_profile": false, "listed_count": 28, "profile_image_url": "http://pbs.twimg.com/profile_images/650161232540909568/yyvPEOnF_normal.jpg", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "https://t.co/8fYJI1TWEs", "statuses_count": 515, "profile_text_color": "000000", "profile_background_tile": false, "follow_request_sent": false, "id": 3765991992, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "ABB8C2", "followers_count": 331, "friends_count": 1, "location": "Mare Tranquilitatis", "profile_banner_url": "https://pbs.twimg.com/profile_banners/3765991992/1443845573", "description": "Tweeting pics from the Project Apollo Archive, four times a day. Not affiliated with the Project Apollo Archive. // a bot by @tinysubversions", "profile_sidebar_fill_color": "000000", "default_profile": false, "utc_offset": -28800, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "000000", "is_translation_enabled": false, "profile_sidebar_border_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/650161232540909568/yyvPEOnF_normal.jpg", "geo_enabled": false, "time_zone": "Pacific Time (US & Canada)", "name": "Moon Shot Bot", "id_str": "3765991992", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "flickr.com/photos/project\u2026", "indices": [0, 23], "expanded_url": "https://www.flickr.com/photos/projectapolloarchive/", "url": "https://t.co/8fYJI1TWEs"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "extended_entities": {"media": [{"type": "photo", "id": 693470001316171776, "media_url": "http://pbs.twimg.com/media/CZ-zSsLXEAAhEia.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ-zSsLXEAAhEia.jpg", "display_url": "pic.twitter.com/2j5ezW6i9G", "indices": [103, 126], "expanded_url": "http://twitter.com/moonshotbot/status/693470003249684481/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 1024, "h": 1070}, "small": {"resize": "fit", "w": 340, "h": 355}, "medium": {"resize": "fit", "w": 600, "h": 627}}, "id_str": "693470001316171776", "url": "https://t.co/2j5ezW6i9G"}]}, "truncated": false, "id": 693470003249684481, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "\ud83c\udf0c\ud83c\udf18\ud83c\udf1b\nApollo 15 Hasselblad image from film magazine 97/O - lunar orbit view\n\ud83d\ude80\ud83c\udf1a\ud83c\udf19\n https://t.co/n4WH1ZTyuZ https://t.co/2j5ezW6i9G", "id_str": "693470003249684481", "entities": {"media": [{"type": "photo", "id": 693470001316171776, "media_url": "http://pbs.twimg.com/media/CZ-zSsLXEAAhEia.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ-zSsLXEAAhEia.jpg", "display_url": "pic.twitter.com/2j5ezW6i9G", "indices": [103, 126], "expanded_url": "http://twitter.com/moonshotbot/status/693470003249684481/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 1024, "h": 1070}, "small": {"resize": "fit", "w": 340, "h": 355}, "medium": {"resize": "fit", "w": 600, "h": 627}}, "id_str": "693470001316171776", "url": "https://t.co/2j5ezW6i9G"}], "hashtags": [], "urls": [{"display_url": "flickr.com/photos/project\u2026", "indices": [79, 102], "expanded_url": "https://www.flickr.com/photos/projectapolloarchive/21831461788", "url": "https://t.co/n4WH1ZTyuZ"}], "symbols": [], "user_mentions": []}, "source": "Moon Shot Bot", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 16:25:07 +0000 2016"}, "is_translator": false, "screen_name": "moonshotbot", "created_at": "Sat Oct 03 04:03:02 +0000 2015"}, {"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 17, "profile_image_url": "http://pbs.twimg.com/profile_images/629374160993710081/q-lr9vsE_normal.jpg", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/mRUwkqVO7i", "statuses_count": 598, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 3406094211, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 133, "friends_count": 0, "location": "Not affiliated with the FBI", "description": "I tweet random pages from FOIA-requested FBI records, 4x/day. I'm a bot by @tinysubversions", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/629374160993710081/q-lr9vsE_normal.jpg", "geo_enabled": false, "time_zone": null, "name": "FBI Bot", "id_str": "3406094211", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "vault.fbi.gov", "indices": [0, 22], "expanded_url": "http://vault.fbi.gov", "url": "http://t.co/mRUwkqVO7i"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "extended_entities": {"media": [{"type": "photo", "id": 693483330080210944, "media_url": "http://pbs.twimg.com/media/CZ-_ahsWAAADnwA.png", "media_url_https": "https://pbs.twimg.com/media/CZ-_ahsWAAADnwA.png", "display_url": "pic.twitter.com/Dey5JLxCvb", "indices": [63, 86], "expanded_url": "http://twitter.com/FBIbot/status/693483330218622976/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 600, "h": 776}, "small": {"resize": "fit", "w": 340, "h": 439}, "large": {"resize": "fit", "w": 1000, "h": 1294}}, "id_str": "693483330080210944", "url": "https://t.co/Dey5JLxCvb"}]}, "truncated": false, "id": 693483330218622976, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "The FBI was watching Fred G. Randaccio https://t.co/NAkQc4FYKp https://t.co/Dey5JLxCvb", "id_str": "693483330218622976", "entities": {"media": [{"type": "photo", "id": 693483330080210944, "media_url": "http://pbs.twimg.com/media/CZ-_ahsWAAADnwA.png", "media_url_https": "https://pbs.twimg.com/media/CZ-_ahsWAAADnwA.png", "display_url": "pic.twitter.com/Dey5JLxCvb", "indices": [63, 86], "expanded_url": "http://twitter.com/FBIbot/status/693483330218622976/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 600, "h": 776}, "small": {"resize": "fit", "w": 340, "h": 439}, "large": {"resize": "fit", "w": 1000, "h": 1294}}, "id_str": "693483330080210944", "url": "https://t.co/Dey5JLxCvb"}], "hashtags": [], "urls": [{"display_url": "vault.fbi.gov/frank-randaccio", "indices": [39, 62], "expanded_url": "https://vault.fbi.gov/frank-randaccio", "url": "https://t.co/NAkQc4FYKp"}], "symbols": [], "user_mentions": []}, "source": "FBIBot", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 17:18:04 +0000 2016"}, "is_translator": false, "screen_name": "FBIbot", "created_at": "Thu Aug 06 19:28:10 +0000 2015"}, {"notifications": false, "profile_use_background_image": false, "has_extended_profile": false, "listed_count": 23, "profile_image_url": "http://pbs.twimg.com/profile_images/631231593164607488/R4hRHjBI_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/6cpr8h0hGa", "statuses_count": 664, "profile_text_color": "000000", "profile_background_tile": false, "follow_request_sent": false, "id": 3312790286, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "4A913C", "followers_count": 239, "friends_count": 0, "location": "", "description": "Animal videos sourced from @macaulaylibrary. Turn up the sound! // A bot by @tinysubversions. Not affiliated with the Macaulay Library.", "profile_sidebar_fill_color": "000000", "default_profile": false, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "000000", "is_translation_enabled": false, "profile_sidebar_border_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/631231593164607488/R4hRHjBI_normal.png", "geo_enabled": false, "time_zone": null, "name": "Animal Video Bot", "id_str": "3312790286", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "macaulaylibrary.org", "indices": [0, 22], "expanded_url": "http://macaulaylibrary.org/", "url": "http://t.co/6cpr8h0hGa"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "ro", "extended_entities": {"media": [{"type": "video", "video_info": {"variants": [{"content_type": "video/webm", "bitrate": 832000, "url": "https://video.twimg.com/ext_tw_video/693439580935094273/pu/vid/640x360/hY01KGCSXl-isZzt.webm"}, {"content_type": "video/mp4", "bitrate": 320000, "url": "https://video.twimg.com/ext_tw_video/693439580935094273/pu/vid/320x180/3NEGIMyzX2tdBm5i.mp4"}, {"content_type": "video/mp4", "bitrate": 832000, "url": "https://video.twimg.com/ext_tw_video/693439580935094273/pu/vid/640x360/hY01KGCSXl-isZzt.mp4"}, {"content_type": "application/x-mpegURL", "url": "https://video.twimg.com/ext_tw_video/693439580935094273/pu/pl/G53mlN6oslnMAWd5.m3u8"}, {"content_type": "application/dash+xml", "url": "https://video.twimg.com/ext_tw_video/693439580935094273/pu/pl/G53mlN6oslnMAWd5.mpd"}], "aspect_ratio": [16, 9], "duration_millis": 20021}, "id": 693439580935094273, "media_url": "http://pbs.twimg.com/ext_tw_video_thumb/693439580935094273/pu/img/K0BdyKh0qQc3P5_N.jpg", "media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/693439580935094273/pu/img/K0BdyKh0qQc3P5_N.jpg", "display_url": "pic.twitter.com/aaGNPmPpni", "indices": [85, 108], "expanded_url": "http://twitter.com/AnimalVidBot/status/693439595946479617/video/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 640, "h": 360}, "small": {"resize": "fit", "w": 340, "h": 191}, "medium": {"resize": "fit", "w": 600, "h": 338}}, "id_str": "693439580935094273", "url": "https://t.co/aaGNPmPpni"}]}, "truncated": false, "id": 693439595946479617, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "Maui Parrotbill\n\nPseudonestor xanthophrys\nBarksdale, Timothy https://t.co/c6n9M2Cjnv https://t.co/aaGNPmPpni", "id_str": "693439595946479617", "entities": {"media": [{"type": "photo", "id": 693439580935094273, "media_url": "http://pbs.twimg.com/ext_tw_video_thumb/693439580935094273/pu/img/K0BdyKh0qQc3P5_N.jpg", "media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/693439580935094273/pu/img/K0BdyKh0qQc3P5_N.jpg", "display_url": "pic.twitter.com/aaGNPmPpni", "indices": [85, 108], "expanded_url": "http://twitter.com/AnimalVidBot/status/693439595946479617/video/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 640, "h": 360}, "small": {"resize": "fit", "w": 340, "h": 191}, "medium": {"resize": "fit", "w": 600, "h": 338}}, "id_str": "693439580935094273", "url": "https://t.co/aaGNPmPpni"}], "hashtags": [], "urls": [{"display_url": "macaulaylibrary.org/video/428118", "indices": [61, 84], "expanded_url": "http://macaulaylibrary.org/video/428118", "url": "https://t.co/c6n9M2Cjnv"}], "symbols": [], "user_mentions": []}, "source": "Animal Video Bot", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 14:24:17 +0000 2016"}, "is_translator": false, "screen_name": "AnimalVidBot", "created_at": "Tue Aug 11 22:25:35 +0000 2015"}, {"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 10, "profile_image_url": "http://pbs.twimg.com/profile_images/624358417818238976/CfSPOEr4_normal.jpg", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/YEWmunbcFZ", "statuses_count": 4, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 3300809963, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 56, "friends_count": 0, "location": "The Most Relevant Ad Agency", "description": "The most happenin' new trends on the internet. // A bot by @tinysubversions.", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/624358417818238976/CfSPOEr4_normal.jpg", "geo_enabled": false, "time_zone": null, "name": "Trend Reportz", "id_str": "3300809963", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "slideshare.net/trendreportz", "indices": [0, 22], "expanded_url": "http://www.slideshare.net/trendreportz", "url": "http://t.co/YEWmunbcFZ"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 1, "lang": "en", "truncated": false, "id": 638389840472600576, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "NEW REPORT! Learn what steamers mean to 7-18 y/o men http://t.co/veQGWz1Lqn", "id_str": "638389840472600576", "entities": {"hashtags": [], "urls": [{"display_url": "slideshare.net/trendreportz/t\u2026", "indices": [53, 75], "expanded_url": "http://www.slideshare.net/trendreportz/trends-in-steamers", "url": "http://t.co/veQGWz1Lqn"}], "symbols": [], "user_mentions": []}, "source": "Trend Reportz", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Mon Aug 31 16:36:13 +0000 2015"}, "is_translator": false, "screen_name": "TrendReportz", "created_at": "Wed May 27 19:43:37 +0000 2015"}, {"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 14, "profile_image_url": "http://pbs.twimg.com/profile_images/585540228439498752/OPHSe1Yw_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/lrCYkDGPrm", "statuses_count": 888, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 3145355109, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 106, "friends_count": 1, "location": "The Middle East", "profile_banner_url": "https://pbs.twimg.com/profile_banners/3145355109/1428438665", "description": "Public domain photos from the Qatar Digital Library of Middle Eastern (& nearby) history. Tweets 4x/day. // bot by @tinysubversions, not affiliated with the QDL", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/585540228439498752/OPHSe1Yw_normal.png", "geo_enabled": false, "time_zone": null, "name": "Middle East History", "id_str": "3145355109", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "qdl.qa/en/search/site\u2026", "indices": [0, 22], "expanded_url": "http://www.qdl.qa/en/search/site/?f%5B0%5D=document_source%3Aarchive_source", "url": "http://t.co/lrCYkDGPrm"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "extended_entities": {"media": [{"type": "photo", "id": 693479308619300866, "media_url": "http://pbs.twimg.com/media/CZ-7wclWQAIpxlu.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ-7wclWQAIpxlu.jpg", "display_url": "pic.twitter.com/xojYCSnUZu", "indices": [72, 95], "expanded_url": "http://twitter.com/MidEastHistory/status/693479308745113600/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 1024, "h": 1024}, "small": {"resize": "fit", "w": 340, "h": 340}, "medium": {"resize": "fit", "w": 600, "h": 600}}, "id_str": "693479308619300866", "url": "https://t.co/xojYCSnUZu"}]}, "truncated": false, "id": 693479308745113600, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "'Distant View of Hormuz.' Photographer: Unknown https://t.co/hkDmSbTLgT https://t.co/xojYCSnUZu", "id_str": "693479308745113600", "entities": {"media": [{"type": "photo", "id": 693479308619300866, "media_url": "http://pbs.twimg.com/media/CZ-7wclWQAIpxlu.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ-7wclWQAIpxlu.jpg", "display_url": "pic.twitter.com/xojYCSnUZu", "indices": [72, 95], "expanded_url": "http://twitter.com/MidEastHistory/status/693479308745113600/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 1024, "h": 1024}, "small": {"resize": "fit", "w": 340, "h": 340}, "medium": {"resize": "fit", "w": 600, "h": 600}}, "id_str": "693479308619300866", "url": "https://t.co/xojYCSnUZu"}], "hashtags": [], "urls": [{"display_url": "qdl.qa//en/archive/81\u2026", "indices": [48, 71], "expanded_url": "http://www.qdl.qa//en/archive/81055/vdc_100024111424.0x00000f", "url": "https://t.co/hkDmSbTLgT"}], "symbols": [], "user_mentions": []}, "source": "Mid east history pics", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 17:02:06 +0000 2016"}, "is_translator": false, "screen_name": "MidEastHistory", "created_at": "Tue Apr 07 20:27:15 +0000 2015"}, {"notifications": false, "profile_use_background_image": false, "has_extended_profile": false, "listed_count": 99, "profile_image_url": "http://pbs.twimg.com/profile_images/584076161325473793/gufAEGJv_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/s6OmUwb6Bn", "statuses_count": 91531, "profile_text_color": "000000", "profile_background_tile": false, "follow_request_sent": false, "id": 3131670665, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "ABB8C2", "followers_count": 46186, "friends_count": 1, "location": "Hogwarts", "description": "I'm the Sorting Hat and I'm here to say / I love sorting students in a major way // a bot by @tinysubversions, follow to get sorted!", "profile_sidebar_fill_color": "000000", "default_profile": false, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 1, "profile_background_color": "000000", "is_translation_enabled": false, "profile_sidebar_border_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/584076161325473793/gufAEGJv_normal.png", "geo_enabled": false, "time_zone": null, "name": "The Sorting Hat Bot", "id_str": "3131670665", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "tinysubversions.com/notes/sorting-\u2026", "indices": [0, 22], "expanded_url": "http://tinysubversions.com/notes/sorting-bot/", "url": "http://t.co/s6OmUwb6Bn"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "truncated": false, "id": 693474779018362880, "place": null, "favorite_count": 0, "in_reply_to_status_id_str": null, "in_reply_to_user_id": 1210222826, "in_reply_to_status_id": null, "in_reply_to_screen_name": "Nyrfall", "text": "@Nyrfall The Sorting time is here at last, I know each time you send\nI've figured out that Slytherin's the right place for your blend", "id_str": "693474779018362880", "entities": {"hashtags": [], "urls": [], "symbols": [], "user_mentions": [{"indices": [0, 8], "id": 1210222826, "name": "Desi Sobrino", "screen_name": "Nyrfall", "id_str": "1210222826"}]}, "source": "The Sorting Hat Bot", "contributors": null, "favorited": false, "in_reply_to_user_id_str": "1210222826", "retweeted": false, "created_at": "Sat Jan 30 16:44:06 +0000 2016"}, "is_translator": false, "screen_name": "SortingBot", "created_at": "Fri Apr 03 19:27:31 +0000 2015"}, {"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 34, "profile_image_url": "http://pbs.twimg.com/profile_images/580173179236196352/nWsIPbqH_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/2YPE0x0Knw", "statuses_count": 1233, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 3105672877, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 424, "friends_count": 0, "location": "NYC", "profile_banner_url": "https://pbs.twimg.com/profile_banners/3105672877/1427159206", "description": "Posting random flyers from hip hop's formative years every 6 hours. Most art by Buddy Esquire and Phase 2. Full collection at link. // a bot by @tinysubversions", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/580173179236196352/nWsIPbqH_normal.png", "geo_enabled": false, "time_zone": null, "name": "Old School Flyers", "id_str": "3105672877", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "toledohiphop.org/images/old_sch\u2026", "indices": [0, 22], "expanded_url": "http://www.toledohiphop.org/images/old_school_source_code/", "url": "http://t.co/2YPE0x0Knw"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "und", "extended_entities": {"media": [{"type": "photo", "id": 693422418480742400, "media_url": "http://pbs.twimg.com/media/CZ-IBATWQAAhkZA.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ-IBATWQAAhkZA.jpg", "display_url": "pic.twitter.com/B7jv7lwB9S", "indices": [0, 23], "expanded_url": "http://twitter.com/oldschoolflyers/status/693422418929524736/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 503, "h": 646}, "small": {"resize": "fit", "w": 340, "h": 435}, "medium": {"resize": "fit", "w": 503, "h": 646}}, "id_str": "693422418480742400", "url": "https://t.co/B7jv7lwB9S"}]}, "truncated": false, "id": 693422418929524736, "place": null, "favorite_count": 1, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "https://t.co/B7jv7lwB9S", "id_str": "693422418929524736", "entities": {"media": [{"type": "photo", "id": 693422418480742400, "media_url": "http://pbs.twimg.com/media/CZ-IBATWQAAhkZA.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ-IBATWQAAhkZA.jpg", "display_url": "pic.twitter.com/B7jv7lwB9S", "indices": [0, 23], "expanded_url": "http://twitter.com/oldschoolflyers/status/693422418929524736/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 503, "h": 646}, "small": {"resize": "fit", "w": 340, "h": 435}, "medium": {"resize": "fit", "w": 503, "h": 646}}, "id_str": "693422418480742400", "url": "https://t.co/B7jv7lwB9S"}], "hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "oldschoolflyers", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 13:16:02 +0000 2016"}, "is_translator": false, "screen_name": "oldschoolflyers", "created_at": "Tue Mar 24 00:55:10 +0000 2015"}, {"notifications": false, "profile_use_background_image": false, "has_extended_profile": false, "listed_count": 41, "profile_image_url": "http://pbs.twimg.com/profile_images/561971159927771136/sEQ5u1zM_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": null, "statuses_count": 1396, "profile_text_color": "000000", "profile_background_tile": false, "follow_request_sent": false, "id": 3010688583, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "961EE4", "followers_count": 243, "friends_count": 1, "location": "", "profile_banner_url": "https://pbs.twimg.com/profile_banners/3010688583/1422819642", "description": "DAD: weird conversation joke is bae ME: ugh dad no DAD: [something unhip] // a bot by @tinysubversions", "profile_sidebar_fill_color": "000000", "default_profile": false, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "000000", "is_translation_enabled": false, "profile_sidebar_border_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/561971159927771136/sEQ5u1zM_normal.png", "geo_enabled": false, "time_zone": null, "name": "Weird Convo Bot", "id_str": "3010688583", "entities": {"description": {"urls": []}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "truncated": false, "id": 693429980093620224, "place": null, "favorite_count": 0, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "DOG: Wtf are you bae'\nME: fart. Ugh.\nDOG: so sex with me is sex vape\nME: Wtf are you skeleton'", "id_str": "693429980093620224", "entities": {"hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "WeirdConvoBot", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 13:46:05 +0000 2016"}, "is_translator": false, "screen_name": "WeirdConvoBot", "created_at": "Sun Feb 01 19:05:21 +0000 2015"}, {"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 110, "profile_image_url": "http://pbs.twimg.com/profile_images/556129692554493953/82ISdQxF_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/3gDtETAFpu", "statuses_count": 1510, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 2981339967, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 1308, "friends_count": 1, "location": "Frankfurt School", "profile_banner_url": "https://pbs.twimg.com/profile_banners/2981339967/1421426775", "description": "We love #innovation and are always thinking of the next #disruptive startup #idea! // a bot by @tinysubversions", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 1, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/556129692554493953/82ISdQxF_normal.png", "geo_enabled": false, "time_zone": null, "name": "Hottest Startups", "id_str": "2981339967", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "marxists.org/archive/index.\u2026", "indices": [0, 22], "expanded_url": "http://www.marxists.org/archive/index.htm", "url": "http://t.co/3gDtETAFpu"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "truncated": false, "id": 693477791883350016, "place": null, "favorite_count": 0, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "Startup idea: The architect thinks of the building contractor as a layman who tells him what he needs and what he can pay.", "id_str": "693477791883350016", "entities": {"hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "hottest startups", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 16:56:04 +0000 2016"}, "is_translator": false, "screen_name": "HottestStartups", "created_at": "Fri Jan 16 16:33:45 +0000 2015"}, {"notifications": false, "profile_use_background_image": false, "has_extended_profile": false, "listed_count": 40, "profile_image_url": "http://pbs.twimg.com/profile_images/549979314541039617/fZ_XDnWz_normal.jpeg", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": null, "statuses_count": 6748, "profile_text_color": "000000", "profile_background_tile": false, "follow_request_sent": false, "id": 2951486632, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "FFCC4D", "followers_count": 3155, "friends_count": 1, "location": "(bot by @tinysubversions)", "description": "We are the Academy For Annual Recognition and each year we give out the Yearly Awards. Follow (or re-follow) for your award! Warning: sometimes it's mean.", "profile_sidebar_fill_color": "000000", "default_profile": false, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 2, "profile_background_color": "000000", "is_translation_enabled": false, "profile_sidebar_border_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/549979314541039617/fZ_XDnWz_normal.jpeg", "geo_enabled": false, "time_zone": null, "name": "The Yearly Awards", "id_str": "2951486632", "entities": {"description": {"urls": []}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "extended_entities": {"media": [{"type": "animated_gif", "video_info": {"variants": [{"content_type": "video/mp4", "bitrate": 0, "url": "https://pbs.twimg.com/tweet_video/CZ-2l2fWwAEH6MB.mp4"}], "aspect_ratio": [4, 3]}, "id": 693473629036789761, "media_url": "http://pbs.twimg.com/tweet_video_thumb/CZ-2l2fWwAEH6MB.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/CZ-2l2fWwAEH6MB.png", "display_url": "pic.twitter.com/XGDD3tMJPF", "indices": [86, 109], "expanded_url": "http://twitter.com/YearlyAwards/status/693473629766598656/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 400, "h": 300}, "small": {"resize": "fit", "w": 340, "h": 255}, "large": {"resize": "fit", "w": 400, "h": 300}}, "id_str": "693473629036789761", "url": "https://t.co/XGDD3tMJPF"}]}, "truncated": false, "id": 693473629766598656, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": 4863901738, "in_reply_to_status_id": null, "in_reply_to_screen_name": "know_fast", "text": "@know_fast It's official: you're the Least Prodigiously Despondent Confidant of 2015! https://t.co/XGDD3tMJPF", "id_str": "693473629766598656", "entities": {"media": [{"type": "photo", "id": 693473629036789761, "media_url": "http://pbs.twimg.com/tweet_video_thumb/CZ-2l2fWwAEH6MB.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/CZ-2l2fWwAEH6MB.png", "display_url": "pic.twitter.com/XGDD3tMJPF", "indices": [86, 109], "expanded_url": "http://twitter.com/YearlyAwards/status/693473629766598656/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 400, "h": 300}, "small": {"resize": "fit", "w": 340, "h": 255}, "large": {"resize": "fit", "w": 400, "h": 300}}, "id_str": "693473629036789761", "url": "https://t.co/XGDD3tMJPF"}], "hashtags": [], "urls": [], "symbols": [], "user_mentions": [{"indices": [0, 10], "id": 4863901738, "name": "Know Fast", "screen_name": "know_fast", "id_str": "4863901738"}]}, "source": "The Yearly Awards", "contributors": null, "favorited": false, "in_reply_to_user_id_str": "4863901738", "retweeted": false, "created_at": "Sat Jan 30 16:39:32 +0000 2016"}, "is_translator": false, "screen_name": "YearlyAwards", "created_at": "Tue Dec 30 16:59:34 +0000 2014"}, {"notifications": false, "profile_use_background_image": false, "has_extended_profile": false, "listed_count": 20, "profile_image_url": "http://pbs.twimg.com/profile_images/512673377283080194/eFnJQJSp_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": null, "statuses_count": 1972, "profile_text_color": "000000", "profile_background_tile": false, "follow_request_sent": false, "id": 2817629347, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "ABB8C2", "followers_count": 93, "friends_count": 1, "location": "", "profile_banner_url": "https://pbs.twimg.com/profile_banners/2817629347/1411065932", "description": "Wise sayings, four times daily. by @tinysubversions", "profile_sidebar_fill_color": "000000", "default_profile": false, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "000000", "is_translation_enabled": false, "profile_sidebar_border_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/512673377283080194/eFnJQJSp_normal.png", "geo_enabled": false, "time_zone": null, "name": "Received Wisdom", "id_str": "2817629347", "entities": {"description": {"urls": []}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "truncated": false, "id": 693418402392719360, "place": null, "favorite_count": 0, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "Water is thicker than blood.", "id_str": "693418402392719360", "entities": {"hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "Received Wisdom", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 13:00:04 +0000 2016"}, "is_translator": false, "screen_name": "received_wisdom", "created_at": "Thu Sep 18 18:32:38 +0000 2014"}, {"notifications": false, "profile_use_background_image": false, "has_extended_profile": false, "listed_count": 11, "profile_image_url": "http://pbs.twimg.com/profile_images/517404591218900992/kf2iYD1f_normal.jpeg", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": null, "statuses_count": 1767, "profile_text_color": "000000", "profile_background_tile": false, "follow_request_sent": false, "id": 2798799669, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "4A913C", "followers_count": 40, "friends_count": 0, "location": "Everywhere", "profile_banner_url": "https://pbs.twimg.com/profile_banners/2798799669/1412195008", "description": "Chronicling men doing things. // A bot by @tinysubversions, Powered By Giphy", "profile_sidebar_fill_color": "000000", "default_profile": false, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "000000", "is_translation_enabled": false, "profile_sidebar_border_color": "000000", "profile_image_url_https": "https://pbs.twimg.com/profile_images/517404591218900992/kf2iYD1f_normal.jpeg", "geo_enabled": false, "time_zone": null, "name": "Men Doing Things", "id_str": "2798799669", "entities": {"description": {"urls": []}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "extended_entities": {"media": [{"type": "animated_gif", "video_info": {"variants": [{"content_type": "video/mp4", "bitrate": 0, "url": "https://pbs.twimg.com/tweet_video/CZ-WORAWQAED6It.mp4"}], "aspect_ratio": [167, 104]}, "id": 693438039465541633, "media_url": "http://pbs.twimg.com/tweet_video_thumb/CZ-WORAWQAED6It.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/CZ-WORAWQAED6It.png", "display_url": "pic.twitter.com/wsk2GyEsGh", "indices": [37, 60], "expanded_url": "http://twitter.com/MenDoing/status/693438039801073664/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 334, "h": 208}, "small": {"resize": "fit", "w": 334, "h": 208}, "large": {"resize": "fit", "w": 334, "h": 208}}, "id_str": "693438039465541633", "url": "https://t.co/wsk2GyEsGh"}]}, "truncated": false, "id": 693438039801073664, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "Men Authoring Landmarks in Manhattan https://t.co/wsk2GyEsGh", "id_str": "693438039801073664", "entities": {"media": [{"type": "photo", "id": 693438039465541633, "media_url": "http://pbs.twimg.com/tweet_video_thumb/CZ-WORAWQAED6It.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/CZ-WORAWQAED6It.png", "display_url": "pic.twitter.com/wsk2GyEsGh", "indices": [37, 60], "expanded_url": "http://twitter.com/MenDoing/status/693438039801073664/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 334, "h": 208}, "small": {"resize": "fit", "w": 334, "h": 208}, "large": {"resize": "fit", "w": 334, "h": 208}}, "id_str": "693438039465541633", "url": "https://t.co/wsk2GyEsGh"}], "hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "Men Doing Things", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 14:18:06 +0000 2016"}, "is_translator": false, "screen_name": "MenDoing", "created_at": "Wed Oct 01 19:59:55 +0000 2014"}, {"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 139, "profile_image_url": "http://pbs.twimg.com/profile_images/495988901790482432/le2-dKgs_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/r2HzjsqHTU", "statuses_count": 2157, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 2704554914, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 1172, "friends_count": 1, "location": "", "profile_banner_url": "https://pbs.twimg.com/profile_banners/2704554914/1407087962", "description": "A bot that picks a word and then draws randomly until an OCR library (http://t.co/XmDeI5TWoF) reads that word. 4x daily. Also on Tumblr. // by @tinysubversions", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/495988901790482432/le2-dKgs_normal.png", "geo_enabled": false, "time_zone": null, "name": "Reverse OCR", "id_str": "2704554914", "entities": {"description": {"urls": [{"display_url": "antimatter15.com/ocrad.js/demo.\u2026", "indices": [70, 92], "expanded_url": "http://antimatter15.com/ocrad.js/demo.html", "url": "http://t.co/XmDeI5TWoF"}]}, "url": {"urls": [{"display_url": "reverseocr.tumblr.com", "indices": [0, 22], "expanded_url": "http://reverseocr.tumblr.com", "url": "http://t.co/r2HzjsqHTU"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "und", "extended_entities": {"media": [{"type": "photo", "id": 693404391072776192, "media_url": "http://pbs.twimg.com/media/CZ93nq-WwAAdSAo.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ93nq-WwAAdSAo.jpg", "display_url": "pic.twitter.com/WbD9lkNarf", "indices": [8, 31], "expanded_url": "http://twitter.com/reverseocr/status/693404391160860673/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 600, "h": 150}, "small": {"resize": "fit", "w": 340, "h": 85}, "large": {"resize": "fit", "w": 800, "h": 200}}, "id_str": "693404391072776192", "url": "https://t.co/WbD9lkNarf"}]}, "truncated": false, "id": 693404391160860673, "place": null, "favorite_count": 2, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "larceny https://t.co/WbD9lkNarf", "id_str": "693404391160860673", "entities": {"media": [{"type": "photo", "id": 693404391072776192, "media_url": "http://pbs.twimg.com/media/CZ93nq-WwAAdSAo.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ93nq-WwAAdSAo.jpg", "display_url": "pic.twitter.com/WbD9lkNarf", "indices": [8, 31], "expanded_url": "http://twitter.com/reverseocr/status/693404391160860673/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 600, "h": 150}, "small": {"resize": "fit", "w": 340, "h": 85}, "large": {"resize": "fit", "w": 800, "h": 200}}, "id_str": "693404391072776192", "url": "https://t.co/WbD9lkNarf"}], "hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "Reverse OCR", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 12:04:24 +0000 2016"}, "is_translator": false, "screen_name": "reverseocr", "created_at": "Sun Aug 03 17:26:28 +0000 2014"}, {"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 5, "profile_image_url": "http://pbs.twimg.com/profile_images/479836451182362624/0fAtv_AN_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": null, "statuses_count": 2, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 2577963498, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 14, "friends_count": 1, "location": "", "description": "Deploying GIFs every six hours. // by @tinysubvesions", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/479836451182362624/0fAtv_AN_normal.png", "geo_enabled": false, "time_zone": null, "name": "GIF Deployer", "id_str": "2577963498", "entities": {"description": {"urls": []}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "en", "extended_entities": {"media": [{"type": "animated_gif", "video_info": {"variants": [{"content_type": "video/mp4", "bitrate": 0, "url": "https://pbs.twimg.com/tweet_video/BqkTB2fIEAA8zCs.mp4"}], "aspect_ratio": [1, 1]}, "id": 479935757818531840, "media_url": "http://pbs.twimg.com/tweet_video_thumb/BqkTB2fIEAA8zCs.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/BqkTB2fIEAA8zCs.png", "display_url": "pic.twitter.com/WEYISUSsJR", "indices": [21, 43], "expanded_url": "http://twitter.com/gifDeployer/status/479935760033153024/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 600, "h": 600}, "small": {"resize": "fit", "w": 340, "h": 340}, "large": {"resize": "fit", "w": 612, "h": 612}}, "id_str": "479935757818531840", "url": "http://t.co/WEYISUSsJR"}]}, "truncated": false, "id": 479935760033153024, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "Vietnamese decadence http://t.co/WEYISUSsJR", "id_str": "479935760033153024", "entities": {"media": [{"type": "photo", "id": 479935757818531840, "media_url": "http://pbs.twimg.com/tweet_video_thumb/BqkTB2fIEAA8zCs.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/BqkTB2fIEAA8zCs.png", "display_url": "pic.twitter.com/WEYISUSsJR", "indices": [21, 43], "expanded_url": "http://twitter.com/gifDeployer/status/479935760033153024/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 600, "h": 600}, "small": {"resize": "fit", "w": 340, "h": 340}, "large": {"resize": "fit", "w": 612, "h": 612}}, "id_str": "479935757818531840", "url": "http://t.co/WEYISUSsJR"}], "hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "GIF Deployer", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Fri Jun 20 10:36:16 +0000 2014"}, "is_translator": false, "screen_name": "gifDeployer", "created_at": "Fri Jun 20 03:56:13 +0000 2014"}, {"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 48, "profile_image_url": "http://pbs.twimg.com/profile_images/479364877551538176/HN0wLHbt_normal.png", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/XJeqwaDhQg", "statuses_count": 11970, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 2575445382, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 428, "friends_count": 1, "location": "", "description": "Generating new aesthetics every hour. Botpunk. // by @tinysubversions", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": -18000, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 0, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/479364877551538176/HN0wLHbt_normal.png", "geo_enabled": false, "time_zone": "Eastern Time (US & Canada)", "name": "Brand New Aesthetics", "id_str": "2575445382", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "brand-new-aesthetics.tumblr.com", "indices": [0, 22], "expanded_url": "http://brand-new-aesthetics.tumblr.com", "url": "http://t.co/XJeqwaDhQg"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "da", "extended_entities": {"media": [{"type": "animated_gif", "video_info": {"variants": [{"content_type": "video/mp4", "bitrate": 0, "url": "https://pbs.twimg.com/tweet_video/CX5BF-lWMAEyoPA.mp4"}], "aspect_ratio": [3, 2]}, "id": 684055764361687041, "media_url": "http://pbs.twimg.com/tweet_video_thumb/CX5BF-lWMAEyoPA.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/CX5BF-lWMAEyoPA.png", "display_url": "pic.twitter.com/d4ZGIYqyt9", "indices": [13, 36], "expanded_url": "http://twitter.com/neweraesthetics/status/684055764768522240/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 300, "h": 200}, "small": {"resize": "fit", "w": 300, "h": 200}, "large": {"resize": "fit", "w": 300, "h": 200}}, "id_str": "684055764361687041", "url": "https://t.co/d4ZGIYqyt9"}]}, "truncated": false, "id": 684055764768522240, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "SOLUTIONPUNK https://t.co/d4ZGIYqyt9", "id_str": "684055764768522240", "entities": {"media": [{"type": "photo", "id": 684055764361687041, "media_url": "http://pbs.twimg.com/tweet_video_thumb/CX5BF-lWMAEyoPA.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/CX5BF-lWMAEyoPA.png", "display_url": "pic.twitter.com/d4ZGIYqyt9", "indices": [13, 36], "expanded_url": "http://twitter.com/neweraesthetics/status/684055764768522240/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "medium": {"resize": "fit", "w": 300, "h": 200}, "small": {"resize": "fit", "w": 300, "h": 200}, "large": {"resize": "fit", "w": 300, "h": 200}}, "id_str": "684055764361687041", "url": "https://t.co/d4ZGIYqyt9"}], "hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "Brand New Aesthetics", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Mon Jan 04 16:56:18 +0000 2016"}, "is_translator": false, "screen_name": "neweraesthetics", "created_at": "Wed Jun 18 20:39:25 +0000 2014"}, {"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 12, "profile_image_url": "http://pbs.twimg.com/profile_images/479355596076892160/p_jT5KqM_normal.jpeg", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/DZYA6d8tU5", "statuses_count": 8587, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 2575407888, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 113, "friends_count": 1, "location": "Bodymore, Murdaland", "description": "This Twitter account automatically tweets GIFs of The Wire. Also a Tumblr. Updates hourly. // by @tinysubversions", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 1, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/479355596076892160/p_jT5KqM_normal.jpeg", "geo_enabled": false, "time_zone": null, "name": "Scenes from The Wire", "id_str": "2575407888", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "wirescenes.tumblr.com", "indices": [0, 22], "expanded_url": "http://wirescenes.tumblr.com/", "url": "http://t.co/DZYA6d8tU5"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 0, "lang": "und", "extended_entities": {"media": [{"type": "animated_gif", "video_info": {"variants": [{"content_type": "video/mp4", "bitrate": 0, "url": "https://pbs.twimg.com/tweet_video/COXAcgVU8AACS4W.mp4"}], "aspect_ratio": [132, 119]}, "id": 641130117918420992, "media_url": "http://pbs.twimg.com/tweet_video_thumb/COXAcgVU8AACS4W.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/COXAcgVU8AACS4W.png", "display_url": "pic.twitter.com/XBoaB2klZq", "indices": [0, 22], "expanded_url": "http://twitter.com/wirescenes/status/641130118132314112/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 264, "h": 238}, "small": {"resize": "fit", "w": 264, "h": 238}, "medium": {"resize": "fit", "w": 264, "h": 238}}, "id_str": "641130117918420992", "url": "http://t.co/XBoaB2klZq"}]}, "truncated": false, "id": 641130118132314112, "place": null, "favorite_count": 0, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "http://t.co/XBoaB2klZq", "id_str": "641130118132314112", "entities": {"media": [{"type": "photo", "id": 641130117918420992, "media_url": "http://pbs.twimg.com/tweet_video_thumb/COXAcgVU8AACS4W.png", "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/COXAcgVU8AACS4W.png", "display_url": "pic.twitter.com/XBoaB2klZq", "indices": [0, 22], "expanded_url": "http://twitter.com/wirescenes/status/641130118132314112/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 264, "h": 238}, "small": {"resize": "fit", "w": 264, "h": 238}, "medium": {"resize": "fit", "w": 264, "h": 238}}, "id_str": "641130117918420992", "url": "http://t.co/XBoaB2klZq"}], "hashtags": [], "urls": [], "symbols": [], "user_mentions": []}, "source": "Scenes from The Wire", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Tue Sep 08 06:05:06 +0000 2015"}, "is_translator": false, "screen_name": "wirescenes", "created_at": "Wed Jun 18 20:08:31 +0000 2014"}, {"notifications": false, "profile_use_background_image": true, "has_extended_profile": false, "listed_count": 229, "profile_image_url": "http://pbs.twimg.com/profile_images/468570294253150208/DlK5sGe2_normal.jpeg", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "verified": false, "lang": "en", "protected": false, "url": "http://t.co/qTVWPkaIgo", "statuses_count": 2026, "profile_text_color": "333333", "profile_background_tile": false, "follow_request_sent": false, "id": 2508960524, "default_profile_image": false, "contributors_enabled": false, "following": false, "profile_link_color": "0084B4", "followers_count": 4176, "friends_count": 1, "location": "(not affiliated with the Met)", "description": "I am a bot that tweets a random high-res Open Access image from the Metropolitan Museum of Art, four times a day. // by @tinysubversions", "profile_sidebar_fill_color": "DDEEF6", "default_profile": true, "utc_offset": null, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "favourites_count": 3, "profile_background_color": "C0DEED", "is_translation_enabled": false, "profile_sidebar_border_color": "C0DEED", "profile_image_url_https": "https://pbs.twimg.com/profile_images/468570294253150208/DlK5sGe2_normal.jpeg", "geo_enabled": false, "time_zone": null, "name": "Museum Bot", "id_str": "2508960524", "entities": {"description": {"urls": []}, "url": {"urls": [{"display_url": "metmuseum.org/about-the-muse\u2026", "indices": [0, 22], "expanded_url": "http://metmuseum.org/about-the-museum/press-room/news/2014/oasc-access", "url": "http://t.co/qTVWPkaIgo"}]}}, "status": {"coordinates": null, "is_quote_status": false, "geo": null, "retweet_count": 3, "lang": "en", "extended_entities": {"media": [{"type": "photo", "id": 693407092623949824, "media_url": "http://pbs.twimg.com/media/CZ96E7CWQAAVYYz.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ96E7CWQAAVYYz.jpg", "display_url": "pic.twitter.com/mRktzdlEB1", "indices": [33, 56], "expanded_url": "http://twitter.com/MuseumBot/status/693407092863033344/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 1024, "h": 1247}, "small": {"resize": "fit", "w": 340, "h": 414}, "medium": {"resize": "fit", "w": 600, "h": 730}}, "id_str": "693407092623949824", "url": "https://t.co/mRktzdlEB1"}]}, "truncated": false, "id": 693407092863033344, "place": null, "favorite_count": 2, "possibly_sensitive": false, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_status_id": null, "in_reply_to_screen_name": null, "text": "Nativity https://t.co/OpNseJO3oL https://t.co/mRktzdlEB1", "id_str": "693407092863033344", "entities": {"media": [{"type": "photo", "id": 693407092623949824, "media_url": "http://pbs.twimg.com/media/CZ96E7CWQAAVYYz.jpg", "media_url_https": "https://pbs.twimg.com/media/CZ96E7CWQAAVYYz.jpg", "display_url": "pic.twitter.com/mRktzdlEB1", "indices": [33, 56], "expanded_url": "http://twitter.com/MuseumBot/status/693407092863033344/photo/1", "sizes": {"thumb": {"resize": "crop", "w": 150, "h": 150}, "large": {"resize": "fit", "w": 1024, "h": 1247}, "small": {"resize": "fit", "w": 340, "h": 414}, "medium": {"resize": "fit", "w": 600, "h": 730}}, "id_str": "693407092623949824", "url": "https://t.co/mRktzdlEB1"}], "hashtags": [], "urls": [{"display_url": "metmuseum.org/collection/the\u2026", "indices": [9, 32], "expanded_url": "http://www.metmuseum.org/collection/the-collection-online/search/462886?rpp=30&pg=1413&rndkey=20160130&ao=on&ft=*&pos=42373", "url": "https://t.co/OpNseJO3oL"}], "symbols": [], "user_mentions": []}, "source": "Museum bot", "contributors": null, "favorited": false, "in_reply_to_user_id_str": null, "retweeted": false, "created_at": "Sat Jan 30 12:15:08 +0000 2016"}, "is_translator": false, "screen_name": "MuseumBot", "created_at": "Tue May 20 01:32:24 +0000 2014"}], "previous_cursor_str": "4611686020936348428", "next_cursor_str": "4611686020936348428", "previous_cursor": 4611686020936348428} diff --git a/tests/test_api_30.py b/tests/test_api_30.py index d6e349e9..fc69705b 100644 --- a/tests/test_api_30.py +++ b/tests/test_api_30.py @@ -809,6 +809,7 @@ def testGetListMembers(self): resp = self.api.GetListMembers(list_id=93527328) self.assertTrue(type(resp[0]) is twitter.User) self.assertEqual(resp[0].id, 4048395140) + self.assertEqual(len(resp), 47) @responses.activate def testGetListMembersPaged(self): @@ -820,8 +821,10 @@ def testGetListMembersPaged(self): body=resp_data, match_querystring=True, status=200) - resp = self.api.GetListMembersPaged(list_id=93527328, cursor=4611686020936348428) + _, _, resp = self.api.GetListMembersPaged(list_id=93527328, + cursor=4611686020936348428) self.assertTrue([isinstance(u, twitter.User) for u in resp]) + self.assertEqual(len(resp), 20) with open('testdata/get_list_members_extra_params.json') as f: resp_data = f.read() @@ -837,6 +840,7 @@ def testGetListMembersPaged(self): include_entities=False, count=100) self.assertFalse(resp[0].status) + self.assertEqual(len(resp), 27) @responses.activate def testGetListTimeline(self): diff --git a/twitter/api.py b/twitter/api.py index 13d88799..f663736c 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -4283,7 +4283,7 @@ def GetListMembers(self, include_entities=include_entities) result += users - if next_cursor == 0 or next_cursor == previous_cursor: + if next_cursor == 0: break else: cursor = next_cursor From 3c7fca8e40b9ba5ab5b7ec2adfecf94a78d4cc41 Mon Sep 17 00:00:00 2001 From: Wanda Evans <39149409+derpwanda@users.noreply.github.com> Date: Wed, 17 Feb 2021 13:55:36 -0600 Subject: [PATCH 165/177] update comments update comments on lines 3552 & 3554, from 'mark' to 'unmark' --- twitter/api.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 13d88799..b7a96b1d 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -3549,9 +3549,9 @@ def DestroyFavorite(self, Args: status_id (int, optional): - The id of the twitter status to mark as a favorite. + The id of the twitter status to unmark as a favorite. status (twitter.Status, optional): - The twitter.Status object to mark as a favorite. + The twitter.Status object to unmark as a favorite. include_entities (bool, optional): The entities node will be omitted when set to False. From 9eca1901ae80e0333ae764ee645205df3245b003 Mon Sep 17 00:00:00 2001 From: Wanda Evans <39149409+derpwanda@users.noreply.github.com> Date: Wed, 17 Feb 2021 14:26:17 -0600 Subject: [PATCH 166/177] update comments in api.py update comments on lines 3518 & 3520 from "mark" to "unmark" --- twitter/api.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index b7a96b1d..e3ecd836 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -3515,9 +3515,9 @@ def CreateFavorite(self, Args: status_id (int, optional): - The id of the twitter status to mark as a favorite. + The id of the twitter status to unmark as a favorite. status (twitter.Status, optional): - The twitter.Status object to mark as a favorite. + The twitter.Status object to unmark as a favorite. include_entities (bool, optional): The entities node will be omitted when set to False. From 91e711420525dffc44f81ed286f292fd527711bc Mon Sep 17 00:00:00 2001 From: Wanda Evans <39149409+derpwanda@users.noreply.github.com> Date: Wed, 17 Feb 2021 17:56:57 -0600 Subject: [PATCH 167/177] correction Changed lines 3518 & 3520 from "unmark" to "mark" --- twitter/api.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index e3ecd836..b7a96b1d 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -3515,9 +3515,9 @@ def CreateFavorite(self, Args: status_id (int, optional): - The id of the twitter status to unmark as a favorite. + The id of the twitter status to mark as a favorite. status (twitter.Status, optional): - The twitter.Status object to unmark as a favorite. + The twitter.Status object to mark as a favorite. include_entities (bool, optional): The entities node will be omitted when set to False. From cbcf58ba9a07fa40ec4d75719625ccda5cbf0231 Mon Sep 17 00:00:00 2001 From: Wanda Evans <39149409+derpwanda@users.noreply.github.com> Date: Thu, 18 Feb 2021 23:01:56 -0600 Subject: [PATCH 168/177] corrected comments for DestoryBlock, DestroyMute DestroyBlock comments: block to unblock. DestroyMute comments: mute to unmute. --- twitter/api.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index b7a96b1d..832932e6 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -2209,17 +2209,17 @@ def DestroyBlock(self, Args: user_id (int, optional) - The numerical ID of the user to block. + The numerical ID of the user to unblock. screen_name (str, optional): - The screen name of the user to block. + The screen name of the user to unblock. include_entities (bool, optional): The entities node will not be included if set to False. skip_status (bool, optional): - When set to False, the blocked User's statuses will not be included + When set to False, the unblocked User's statuses will not be included with the returned User object. Returns: - A twitter.User instance representing the blocked user. + A twitter.User instance representing the unblocked user. """ return self._BlockMute(action='destroy', endpoint='block', @@ -2265,13 +2265,13 @@ def DestroyMute(self, Args: user_id (int, optional) - The numerical ID of the user to mute. + The numerical ID of the user to unmute. screen_name (str, optional): - The screen name of the user to mute. + The screen name of the user to unmute. include_entities (bool, optional): The entities node will not be included if set to False. skip_status (bool, optional): - When set to False, the muted User's statuses will not be included + When set to False, the unmuted User's statuses will not be included with the returned User object. Returns: From 1ade878f8d912264b0f2723f10e4d8886dd37392 Mon Sep 17 00:00:00 2001 From: yu9824 <58211916+yu9824@users.noreply.github.com> Date: Sat, 10 Jul 2021 19:43:54 +0900 Subject: [PATCH 169/177] Specifies the text type of long_description. --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 1a0a4120..39c67ef5 100755 --- a/setup.py +++ b/setup.py @@ -48,6 +48,7 @@ def extract_metaitem(meta): long_description=(read('README.rst') + '\n\n' + read('AUTHORS.rst') + '\n\n' + read('CHANGES')), + long_description_content_type = 'text/x-rst', author=extract_metaitem('author'), author_email=extract_metaitem('email'), maintainer=extract_metaitem('author'), From 719a507d8128a3e65d25e8b15640041b284835e5 Mon Sep 17 00:00:00 2001 From: yu9824 <58211916+yu9824@users.noreply.github.com> Date: Sat, 10 Jul 2021 19:50:30 +0900 Subject: [PATCH 170/177] Change project name to debug no pypitest server because I can not upload to project 'python-twitter'. --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 39c67ef5..d415b2c4 100755 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ def extract_metaitem(meta): raise RuntimeError('Unable to find __{meta}__ string.'.format(meta=meta)) setup( - name='python-twitter', + name='python-twitter_test', version=extract_metaitem('version'), license=extract_metaitem('license'), description=extract_metaitem('description'), From 378447974fdbc18841cf6d9ae8bb5051f39e47e8 Mon Sep 17 00:00:00 2001 From: yu9824 <58211916+yu9824@users.noreply.github.com> Date: Sat, 10 Jul 2021 20:03:07 +0900 Subject: [PATCH 171/177] Modify README.rst to deal with syntax errors. --- README.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.rst b/README.rst index 6e7931a3..5d006db7 100644 --- a/README.rst +++ b/README.rst @@ -111,9 +111,9 @@ Using The library provides a Python wrapper around the Twitter API and the Twitter data model. To get started, check out the examples in the examples/ folder or read the documentation at https://python-twitter.readthedocs.io which contains information about getting your authentication keys from Twitter and using the library. ----- +------------------ Using with Django ----- +------------------ Additional template tags that expand tweet urls and urlize tweet text. See the django template tags available for use with python-twitter: https://github.com/radzhome/python-twitter-django-tags @@ -195,9 +195,9 @@ or check out the inline documentation with:: $ pydoc twitter.Api ----- +------ Todo ----- +------ Patches, pull requests, and bug reports are `welcome `_, just please keep the style consistent with the original source. From 84ddd920c534e390fdaa75e4da3dbb48b96cb426 Mon Sep 17 00:00:00 2001 From: yu9824 <58211916+yu9824@users.noreply.github.com> Date: Sat, 10 Jul 2021 21:45:11 +0900 Subject: [PATCH 172/177] Define a function that converts text that causes errors due to indentation. --- setup.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index d415b2c4..b4b52e19 100755 --- a/setup.py +++ b/setup.py @@ -18,6 +18,7 @@ # limitations under the License. import os +from pdb import set_trace import re import codecs @@ -30,6 +31,19 @@ def read(filename): with codecs.open(os.path.join(cwd, filename), 'rb', 'utf-8') as h: return h.read() +def convert_txt(txt): + lst_txt = txt.split('\n') + for i in range(len(lst_txt)): + line = lst_txt[i] + match = re.match(r' +(\S.+)', line) + if match is not None: + lst_txt[i] = '\n| {}'.format(match.group(1)) + else: + match_date = re.match(r'(\d+-\d+-\d+)', line) + if match_date is not None: + lst_txt[i] = '\n**{}**'.format(match_date.group(1)) + return '\n'.join(lst_txt) + metadata = read(os.path.join(cwd, 'twitter', '__init__.py')) def extract_metaitem(meta): @@ -41,13 +55,13 @@ def extract_metaitem(meta): raise RuntimeError('Unable to find __{meta}__ string.'.format(meta=meta)) setup( - name='python-twitter_test', + name='python-twitter', version=extract_metaitem('version'), license=extract_metaitem('license'), description=extract_metaitem('description'), long_description=(read('README.rst') + '\n\n' + read('AUTHORS.rst') + '\n\n' + - read('CHANGES')), + convert_txt(read('CHANGES'))), long_description_content_type = 'text/x-rst', author=extract_metaitem('author'), author_email=extract_metaitem('email'), From 202e62c3e55164c57f0e5b3eaf227223ec5ecf38 Mon Sep 17 00:00:00 2001 From: yu9824 <58211916+yu9824@users.noreply.github.com> Date: Sat, 10 Jul 2021 21:48:18 +0900 Subject: [PATCH 173/177] Delete from pdb import set_trace --- setup.py | 1 - 1 file changed, 1 deletion(-) diff --git a/setup.py b/setup.py index b4b52e19..0e0f0e36 100755 --- a/setup.py +++ b/setup.py @@ -18,7 +18,6 @@ # limitations under the License. import os -from pdb import set_trace import re import codecs From eee5167dacff3d4b690987bd47def0ec05c5ef4f Mon Sep 17 00:00:00 2001 From: Dash <16400857+analogdash@users.noreply.github.com> Date: Sun, 25 Jul 2021 00:03:40 +0800 Subject: [PATCH 174/177] Fix docs to fit expected keyword argument --- twitter/api.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/twitter/api.py b/twitter/api.py index 832932e6..307644c2 100755 --- a/twitter/api.py +++ b/twitter/api.py @@ -3318,11 +3318,11 @@ def ShowFriendship(self, """Returns information about the relationship between the two users. Args: - source_id: + source_user_id: The user_id of the subject user [Optional] source_screen_name: The screen_name of the subject user [Optional] - target_id: + target_user_id: The user_id of the target user [Optional] target_screen_name: The screen_name of the target user [Optional] From 9a11ef2666210365656bccfacac26d7cc9bb2f2f Mon Sep 17 00:00:00 2001 From: sharkykh Date: Thu, 2 May 2019 01:08:45 +0300 Subject: [PATCH 175/177] Remove `future` dependency (again) Accidentally re-added in #573. --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index dece197e..95c7832e 100755 --- a/setup.py +++ b/setup.py @@ -56,7 +56,7 @@ def extract_metaitem(meta): download_url=extract_metaitem('download_url'), packages=find_packages(exclude=('tests', 'docs')), platforms=['Any'], - install_requires=['future', 'requests', 'requests-oauthlib'], + install_requires=['requests', 'requests-oauthlib'], tests_require=['pytest'], keywords='twitter api', classifiers=[ From ce60ed52674b4aa6ea3ef05cfb8e83df8d7fd892 Mon Sep 17 00:00:00 2001 From: Mike Taylor Date: Wed, 7 Aug 2024 19:14:34 -0400 Subject: [PATCH 176/177] Update README.rst Adding a note to mark that I'm archiving this repo --- README.rst | 28 +++++----------------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/README.rst b/README.rst index 5d006db7..0b831bfa 100644 --- a/README.rst +++ b/README.rst @@ -4,29 +4,11 @@ A Python wrapper around the Twitter API. By the `Python-Twitter Developers `_ -.. image:: https://img.shields.io/pypi/v/python-twitter.svg - :target: https://pypi.python.org/pypi/python-twitter/ - :alt: Downloads - -.. image:: https://readthedocs.org/projects/python-twitter/badge/?version=latest - :target: http://python-twitter.readthedocs.org/en/latest/?badge=latest - :alt: Documentation Status - -.. image:: https://circleci.com/gh/bear/python-twitter.svg?style=svg - :target: https://circleci.com/gh/bear/python-twitter - :alt: Circle CI - -.. image:: http://codecov.io/github/bear/python-twitter/coverage.svg?branch=master - :target: http://codecov.io/github/bear/python-twitter - :alt: Codecov - -.. image:: https://requires.io/github/bear/python-twitter/requirements.svg?branch=master - :target: https://requires.io/github/bear/python-twitter/requirements/?branch=master - :alt: Requirements Status - -.. image:: https://dependencyci.com/github/bear/python-twitter/badge - :target: https://dependencyci.com/github/bear/python-twitter - :alt: Dependency Status +============- +NOTICE +============ +I've archived this repo to mark that I'm not going to be maintaining it. It's open-source so anyone using it can fork or take it over. +Thank you to all the people that contributed to it in the past ============ Introduction From da1e9986f179622fa2d85f5b125a3f12f3e63177 Mon Sep 17 00:00:00 2001 From: Mike Taylor Date: Wed, 7 Aug 2024 19:14:50 -0400 Subject: [PATCH 177/177] Update README.rst --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 0b831bfa..bed3afb3 100644 --- a/README.rst +++ b/README.rst @@ -4,7 +4,7 @@ A Python wrapper around the Twitter API. By the `Python-Twitter Developers `_ -============- +============ NOTICE ============ I've archived this repo to mark that I'm not going to be maintaining it. It's open-source so anyone using it can fork or take it over.