tweet-hs 0.5.1.2 → 0.5.2.0
raw patch · 9 files changed
+112/−26 lines, 9 filesdep +criteriondep +hspecdep +hspec-megaparsecdep ~basedep ~tweet-hs
Dependencies added: criterion, hspec, hspec-megaparsec
Dependency ranges changed: base, tweet-hs
Files
- bench/Bench.hs +14/−0
- src/Web/Tweet/API.hs +19/−8
- src/Web/Tweet/Exec.hs +7/−2
- src/Web/Tweet/Parser.hs +12/−11
- src/Web/Tweet/Types.hs +1/−1
- src/Web/Tweet/Utils.hs +8/−1
- test/Spec.hs +15/−0
- test/data +2/−0
- tweet-hs.cabal +34/−3
+ bench/Bench.hs view
@@ -0,0 +1,14 @@+module Main where++import Criterion.Main+import Text.Megaparsec+import Web.Tweet.Parser+import Data.ByteString as BS++fun = parse parseTweet ""++main = do+ file <- BS.readFile "test/data"+ defaultMain [ bgroup "parseTweet"+ [ bench "20" $ whnf fun file ]+ ]
src/Web/Tweet/API.hs view
@@ -6,7 +6,6 @@ import Network.HTTP.Client import Network.HTTP.Client.TLS import qualified Data.ByteString.Lazy.Char8 as BSL-import Data.Text.Encoding import Web.Tweet.Types import Web.Tweet.Utils import Control.Monad@@ -38,11 +37,11 @@ tweetData tweet filepath = do let requestString = urlString tweet bytes <- postRequest ("https://api.twitter.com/1.1/statuses/update.json" ++ requestString) filepath- pure . (view tweetId) . head . either (error "failed to parse tweet") id . getTweets . BSL.unpack $ bytes+ pure . (view tweetId) . head . either (error "failed to parse tweet") id . getTweets . BSL.toStrict $ bytes -- | Gets user profile with max_id set. getProfileMax :: String -> Int -> FilePath -> Maybe Int -> IO (Either (ParseError Char Dec) Timeline)-getProfileMax screenName count filepath maxId = getTweets . BSL.unpack <$> getProfileRaw screenName count filepath maxId+getProfileMax screenName count filepath maxId = getTweets . BSL.toStrict <$> getProfileRaw screenName count filepath maxId -- | Gets user profile with max_id set. getProfileRaw :: String -> Int -> FilePath -> Maybe Int -> IO BSL.ByteString@@ -61,8 +60,8 @@ showProfile screenName count color filepath = showTweets color <$> getProfile screenName count filepath -- | Show the most successful tweets by a given user, given their screen name. -showBest :: String -> Bool -> FilePath -> IO String-showBest screenName color filepath = showTweets color . pure . (take 13 . hits) <$> getAll screenName Nothing filepath +showBest :: String -> Int -> Bool -> FilePath -> IO String+showBest screenName n color filepath = showTweets color . pure . (take n . hits) <$> getAll screenName Nothing filepath -- | Display user timeline showTimeline :: Int -> Bool -> FilePath -> IO String@@ -78,7 +77,7 @@ -- | Get a timeline getTimeline :: Int -> FilePath -> IO (Either (ParseError Char Dec) Timeline)-getTimeline = (fmap (getTweets . BSL.unpack)) .* getTimelineRaw+getTimeline = (fmap (getTweets . BSL.toStrict)) .* getTimelineRaw -- | Get a user's timeline and return response as a bytestring getTimelineRaw :: Int -> FilePath -> IO BSL.ByteString@@ -125,13 +124,25 @@ sendDMRaw txt screenName = postRequest ("https://api.twitter.com/1.1/direct_messages/new.json?text=" ++ encoded ++ "&screen_name" ++ screenName ++ ".json") where encoded = strEncode $ txt +-- | Get DMs, return bytestring of response+getDMs :: Int -> FilePath -> IO BSL.ByteString+getDMs count = getRequest ("https://dev.twitter.com/rest/reference/get/direct_messages.json?count=" ++ (show count))+ -- | Follow a user given their screen name followUserRaw :: String -> FilePath -> IO BSL.ByteString-followUserRaw screenName = postRequest("https://api.twitter.com/1.1/friendships/create.json?screen_name=" ++ screenName)+followUserRaw screenName = postRequest ("https://api.twitter.com/1.1/friendships/create.json?screen_name=" ++ screenName) +-- | Block a user given their screen name+blockUserRaw :: String -> FilePath -> IO BSL.ByteString+blockUserRaw screenName = postRequest ("https://api.twitter.com/1.1/blocks/create.json?screen_name=" ++ screenName)++-- | Unblock a user given their screen name+unblockUserRaw :: String -> FilePath -> IO BSL.ByteString+unblockUserRaw screenName = postRequest ("https://api.twitter.com/1.1/blocks/destroy.json?screen_name=" ++ screenName)+ -- | Follow a user given their screen name unfollowUserRaw :: String -> FilePath -> IO BSL.ByteString-unfollowUserRaw screenName = postRequest("https://api.twitter.com/1.1/friendships/destroy.json?screen_name=" ++ screenName)+unfollowUserRaw screenName = postRequest ("https://api.twitter.com/1.1/friendships/destroy.json?screen_name=" ++ screenName) -- | Unretweet a tweet given its id; return bytestring response unretweetTweetRaw :: Integer -> FilePath -> IO BSL.ByteString
src/Web/Tweet/Exec.hs view
@@ -23,7 +23,7 @@ | Profile { count :: Maybe Int , color :: Bool , screenName :: String } | Markov { screenName :: String } | Send { tweets :: Maybe Int , replyId :: Maybe String , replyHandles :: Maybe [String] , userInput :: String }- | Sort { color :: Bool , screenName :: String }+ | Sort { color :: Bool , screenName :: String , count :: Maybe Int } | Delete { twId :: Integer } | Fav { twId :: Integer } | Unfav { twId :: Integer }@@ -73,7 +73,7 @@ selectCommand (SendInput maybeNum Nothing (Just handles)) file = threadStdIn handles Nothing (maybe 15 id maybeNum) file selectCommand (Timeline maybeNum color) file = putStrLn =<< showTimeline (maybe 11 id maybeNum) color file selectCommand (Profile maybeNum color name) file = putStrLn =<< showProfile name (maybe 11 id maybeNum) color file-selectCommand (Sort color name) file = putStrLn =<< showBest name color file+selectCommand (Sort color name maybeNum) file = putStrLn =<< showBest name (maybe 11 id maybeNum) color file selectCommand (Markov name) file = do raw <- getMarkov name Nothing file writeFile (name ++ ".txt") (unlines raw)@@ -212,6 +212,11 @@ <*> argument str (metavar "SCREEN_NAME" <> help "Screen name of user you want to view.")+ <*> (optional $ read <$> strOption+ (long "count"+ <> short 'n'+ <> metavar "NUM"+ <> help "Number of tweetInputs to fetch, default 12")) -- | Parser for the send subcommand tweet :: Parser Command
src/Web/Tweet/Parser.hs view
@@ -1,16 +1,17 @@+{-# LANGUAGE OverloadedStrings #-} -- FIXME make this module available under cabal file -- | Module containing parsers for tweet and response data.-module Web.Tweet.Parser where+module Web.Tweet.Parser ( parseTweet+ , getData ) where -import Text.Megaparsec.String+import qualified Data.ByteString as BS+import Text.Megaparsec.ByteString import Text.Megaparsec.Lexer as L import Text.Megaparsec import Web.Tweet.Types import Data.Monoid import Data.Maybe import Control.Monad----import System.IO.Unsafe -- | Parse some number of tweets parseTweet :: Parser Timeline@@ -36,10 +37,10 @@ faves <- read <$> filterStr "favorite_count" pure $ TweetEntity text name screenName id quoted rts faves -+-- | Parse a the quoted tweet parseQuoted :: Parser (Maybe TweetEntity) parseQuoted = do- optional (string ",\"quoted_status_id" >> filterStr "quoted_status_id_str") -- FIXME it's skipping too many? No prob is when two in a row twitter just dives in to RTs ALSO something wonky with it flipping rts/faves?+ optional (string ",\"quoted_status_id" >> filterStr "quoted_status_id_str") -- FIXME it's skipping too many? prob is when two are deleted in a row twitter just dives in to RTs contents <- optional $ string "\",\"quoted_status" case contents of (Just contents) -> pure <$> getData@@ -48,7 +49,7 @@ -- | Skip a set of square brackets [] skipInsideBrackets :: Parser ()-skipInsideBrackets = void (between (char '[') (char ']') $ many (skipInsideBrackets <|> void (noneOf "[]")))+skipInsideBrackets = void (between (char '[') (char ']') $ many (skipInsideBrackets <|> void (noneOf ("[]" :: String)))) -- | Skip user mentions field to avoid parsing the wrong name skipMentions :: Parser ()@@ -71,7 +72,7 @@ filterTag str = do string $ "\"" <> str <> "\":" open <- optional $ char '\"'- let forbidden = if (isJust open) then "\\\"" else "\\\","+ let forbidden = if (isJust open) then ("\\\"" :: String) else ("\\\"," :: String) want <- many $ noneOf forbidden <|> specialChar '\"' <|> specialChar '/' <|> newlineChar <|> unicodeChar -- specialChar 'u' pure want @@ -85,11 +86,11 @@ unicodeChar :: Parser Char unicodeChar = do string "\\u"- num <- fromHex . filterEmoji <$> count 4 anyChar+ num <- fromHex . filterEmoji . BS.pack . map (fromIntegral . fromEnum) <$> count 4 anyChar pure . toEnum . fromIntegral $ num -- | helper function to ignore emoji-filterEmoji str = if head str == 'd' then "FFFD" else str+filterEmoji str = if BS.head str == (fromIntegral . fromEnum $ 'd') then "FFFD" else str -- | Parse escaped characters specialChar :: Char -> Parser Char@@ -98,6 +99,6 @@ pure c -- | Convert a string of four hexadecimal digits to an integer.-fromHex :: String -> Integer+fromHex :: BS.ByteString -> Integer fromHex = fromRight . (parse (L.hexadecimal :: Parser Integer) "") where fromRight (Right a) = a
src/Web/Tweet/Types.hs view
@@ -26,7 +26,7 @@ , _quoted :: Maybe TweetEntity , _retweets :: Int , _favorites :: Int- } deriving (Generic, Default, Eq)+ } deriving (Generic, Default, Eq, Show) -- | Stores data like (name, text, favoriteCount, retweetCount) type Timeline = [TweetEntity]
src/Web/Tweet/Utils.hs view
@@ -2,6 +2,10 @@ module Web.Tweet.Utils where import qualified Data.ByteString.Char8 as BS+import qualified Data.ByteString as BS2+import qualified Data.ByteString.Lazy as BSL+import qualified Data.Text as T+import Data.Text.Encoding import Data.Char import Data.List import Web.Tweet.Types@@ -13,6 +17,9 @@ import Web.Tweet.Parser import Text.Megaparsec +bytestringToText :: BSL.ByteString -> T.Text+bytestringToText = decodeUtf8 . BSL.toStrict+ -- | filter out retweets, and sort by most successful. hits :: Timeline -> Timeline hits = sortTweets . filterRTs @@ -26,7 +33,7 @@ filterQuotes = filter ((==Nothing) . (view quoted)) -- | Get a list of tweets from a response, returning author, favorites, retweets, and content. -getTweets :: String -> Either (ParseError Char Dec) Timeline+getTweets :: BS2.ByteString -> Either (ParseError Char Dec) Timeline getTweets = parse parseTweet "" -- | Display Timeline without color
+ test/Spec.hs view
@@ -0,0 +1,15 @@+{-# LANGUAGE OverloadedStrings #-}++import Test.Hspec+import Test.Hspec.Megaparsec+import Text.Megaparsec+import Web.Tweet.Parser+import qualified Data.ByteString as BS++-- TODO make sure it's the right number of tweets as well+main :: IO ()+main = hspec $ do+ describe "parseTweet" $ do+ file <- runIO $ BS.readFile "test/data"+ parallel $ it "parses sample tweets" $ do+ parse parseTweet "" `shouldSucceedOn` file
+ test/data view
@@ -0,0 +1,2 @@+response:+[{"created_at":"Sun Mar 26 18:20:14 +0000 2017","id":846064265953972224,"id_str":"846064265953972224","text":"@thinversace @angelictrends charming potato","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[{"screen_name":"thinversace","name":"sara","id":3367916469,"id_str":"3367916469","indices":[0,12]},{"screen_name":"angelictrends","name":"alison","id":3379762101,"id_str":"3379762101","indices":[13,27]}],"urls":[]},"source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c\/a\u003e","in_reply_to_status_id":819600469303656449,"in_reply_to_status_id_str":"819600469303656449","in_reply_to_user_id":3367916469,"in_reply_to_user_id_str":"3367916469","in_reply_to_screen_name":"thinversace","user":{"id":739626641450635265,"id_str":"739626641450635265","name":"Loch Nessa Monster","screen_name":"hung_pope","location":"USA","description":"Applications to be my first ex-husband now being accepted. en\/fr\/de","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":288,"friends_count":560,"listed_count":17,"created_at":"Mon Jun 06 01:15:07 +0000 2016","favourites_count":34367,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":9497,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","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\/806557378426519552\/fr1JDHM-_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/806557378426519552\/fr1JDHM-_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/739626641450635265\/1473134164","profile_link_color":"981CEB","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":0,"favorite_count":0,"favorited":false,"retweeted":false,"lang":"en"},{"created_at":"Sun Mar 26 17:46:46 +0000 2017","id":846055843774660608,"id_str":"846055843774660608","text":"@frankentits94 I had a friend. Read a book ONCE. Gay now.","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[{"screen_name":"frankentits94","name":"Crunchwrap Hoe","id":845003695708426243,"id_str":"845003695708426243","indices":[0,14]}],"urls":[]},"source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c\/a\u003e","in_reply_to_status_id":846055659888168960,"in_reply_to_status_id_str":"846055659888168960","in_reply_to_user_id":845003695708426243,"in_reply_to_user_id_str":"845003695708426243","in_reply_to_screen_name":"frankentits94","user":{"id":739626641450635265,"id_str":"739626641450635265","name":"Loch Nessa Monster","screen_name":"hung_pope","location":"USA","description":"Applications to be my first ex-husband now being accepted. en\/fr\/de","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":288,"friends_count":560,"listed_count":17,"created_at":"Mon Jun 06 01:15:07 +0000 2016","favourites_count":34367,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":9497,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","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\/806557378426519552\/fr1JDHM-_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/806557378426519552\/fr1JDHM-_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/739626641450635265\/1473134164","profile_link_color":"981CEB","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":0,"favorite_count":1,"favorited":false,"retweeted":false,"lang":"en"},{"created_at":"Sun Mar 26 17:46:12 +0000 2017","id":846055700384112645,"id_str":"846055700384112645","text":"Despite the common name, they're amphisbaenians not lizards. https:\/\/t.co\/realbAxV47","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/realbAxV47","expanded_url":"https:\/\/twitter.com\/strange_animals\/status\/821715043918221312","display_url":"twitter.com\/strange_animal\u2026","indices":[61,84]}]},"source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":739626641450635265,"id_str":"739626641450635265","name":"Loch Nessa Monster","screen_name":"hung_pope","location":"USA","description":"Applications to be my first ex-husband now being accepted. en\/fr\/de","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":288,"friends_count":560,"listed_count":17,"created_at":"Mon Jun 06 01:15:07 +0000 2016","favourites_count":34367,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":9497,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","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\/806557378426519552\/fr1JDHM-_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/806557378426519552\/fr1JDHM-_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/739626641450635265\/1473134164","profile_link_color":"981CEB","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":true,"quoted_status_id":821715043918221312,"quoted_status_id_str":"821715043918221312","quoted_status":{"created_at":"Wed Jan 18 13:45:07 +0000 2017","id":821715043918221312,"id_str":"821715043918221312","text":"The Mexican mole lizard is endemic to Baja California, Mexico and has only two small limbs located at the front of\u2026 https:\/\/t.co\/hNGkGfqIvJ","truncated":true,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/hNGkGfqIvJ","expanded_url":"https:\/\/twitter.com\/i\/web\/status\/821715043918221312","display_url":"twitter.com\/i\/web\/status\/8\u2026","indices":[116,139]}]},"source":"\u003ca href=\"http:\/\/bufferapp.com\" rel=\"nofollow\"\u003eBuffer\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":1477312464,"id_str":"1477312464","name":"Strange Animals","screen_name":"Strange_Animals","location":"Earth","description":"Posting photos of amazing species you've never heard of. Highlighting the wonders of evolution & the extraordinary diversity of life. Contact: DM","url":"https:\/\/t.co\/wNZNZOyFSd","entities":{"url":{"urls":[{"url":"https:\/\/t.co\/wNZNZOyFSd","expanded_url":"https:\/\/www.instagram.com\/strangeanimals_","display_url":"instagram.com\/strangeanimals_","indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":106411,"friends_count":15,"listed_count":1016,"created_at":"Sun Jun 02 13:39:05 +0000 2013","favourites_count":31004,"utc_offset":3600,"time_zone":"London","geo_enabled":true,"verified":false,"statuses_count":3154,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/pbs.twimg.com\/profile_background_images\/509674877016502272\/ML7hYTpJ.jpeg","profile_background_image_url_https":"https:\/\/pbs.twimg.com\/profile_background_images\/509674877016502272\/ML7hYTpJ.jpeg","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/681057278263443456\/G4v5Ed36_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/681057278263443456\/G4v5Ed36_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/1477312464\/1424390375","profile_link_color":"009EB3","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":1520,"favorite_count":3004,"favorited":false,"retweeted":false,"possibly_sensitive":false,"lang":"en"},"retweet_count":0,"favorite_count":1,"favorited":false,"retweeted":false,"possibly_sensitive":false,"lang":"en"},{"created_at":"Sun Mar 26 17:44:31 +0000 2017","id":846055276683952128,"id_str":"846055276683952128","text":"@frankentits94 fuck books amirite","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[{"screen_name":"frankentits94","name":"Crunchwrap Hoe","id":845003695708426243,"id_str":"845003695708426243","indices":[0,14]}],"urls":[]},"source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c\/a\u003e","in_reply_to_status_id":846047488440242177,"in_reply_to_status_id_str":"846047488440242177","in_reply_to_user_id":845003695708426243,"in_reply_to_user_id_str":"845003695708426243","in_reply_to_screen_name":"frankentits94","user":{"id":739626641450635265,"id_str":"739626641450635265","name":"Loch Nessa Monster","screen_name":"hung_pope","location":"USA","description":"Applications to be my first ex-husband now being accepted. en\/fr\/de","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":288,"friends_count":560,"listed_count":17,"created_at":"Mon Jun 06 01:15:07 +0000 2016","favourites_count":34367,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":9497,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","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\/806557378426519552\/fr1JDHM-_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/806557378426519552\/fr1JDHM-_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/739626641450635265\/1473134164","profile_link_color":"981CEB","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":0,"favorite_count":1,"favorited":false,"retweeted":false,"lang":"en"},{"created_at":"Sun Mar 26 17:36:44 +0000 2017","id":846053318048829442,"id_str":"846053318048829442","text":"I just show it to my friends https:\/\/t.co\/39hqJjnzig","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/39hqJjnzig","expanded_url":"https:\/\/twitter.com\/tokoyodrift420\/status\/846037196738039809","display_url":"twitter.com\/tokoyodrift420\u2026","indices":[29,52]}]},"source":"\u003ca href=\"http:\/\/twitter.com\" rel=\"nofollow\"\u003eTwitter Web Client\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":739626641450635265,"id_str":"739626641450635265","name":"Loch Nessa Monster","screen_name":"hung_pope","location":"USA","description":"Applications to be my first ex-husband now being accepted. en\/fr\/de","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":288,"friends_count":560,"listed_count":17,"created_at":"Mon Jun 06 01:15:07 +0000 2016","favourites_count":34367,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":9497,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","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\/806557378426519552\/fr1JDHM-_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/806557378426519552\/fr1JDHM-_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/739626641450635265\/1473134164","profile_link_color":"981CEB","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":true,"quoted_status_id":846037196738039809,"quoted_status_id_str":"846037196738039809","quoted_status":{"created_at":"Sun Mar 26 16:32:40 +0000 2017","id":846037196738039809,"id_str":"846037196738039809","text":"You ever take a nude so fire you wanna show your friends?","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]},"source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":2201776675,"id_str":"2201776675","name":"Jose CanDraco","screen_name":"tokoyodrift420","location":"Baltimore","description":"SBOE | Waxx Planet #LTTRN","url":"https:\/\/t.co\/GOHFbPQyVP","entities":{"url":{"urls":[{"url":"https:\/\/t.co\/GOHFbPQyVP","expanded_url":"https:\/\/soundcloud.com\/tron_cartier","display_url":"soundcloud.com\/tron_cartier","indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":154,"friends_count":173,"listed_count":1,"created_at":"Mon Nov 18 18:36:19 +0000 2013","favourites_count":2103,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":1346,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","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\/836995250161926146\/jOIGDnCJ_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/836995250161926146\/jOIGDnCJ_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/2201776675\/1391968865","profile_link_color":"ABB8C2","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":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":1,"favorite_count":0,"favorited":false,"retweeted":false,"lang":"en"},"retweet_count":0,"favorite_count":1,"favorited":false,"retweeted":false,"possibly_sensitive":false,"lang":"en"},{"created_at":"Sun Mar 26 17:29:06 +0000 2017","id":846051395975467008,"id_str":"846051395975467008","text":"RT @NAACP: Tracing His Roots, Georgetown Employee Learns University Sold His Ancestor https:\/\/t.co\/L2WYhnZZdK","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[{"screen_name":"NAACP","name":"NAACP","id":44988185,"id_str":"44988185","indices":[3,9]}],"urls":[{"url":"https:\/\/t.co\/L2WYhnZZdK","expanded_url":"https:\/\/nyti.ms\/2n0xdLf","display_url":"nyti.ms\/2n0xdLf","indices":[86,109]}]},"source":"\u003ca href=\"http:\/\/twitter.com\" rel=\"nofollow\"\u003eTwitter Web Client\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":739626641450635265,"id_str":"739626641450635265","name":"Loch Nessa Monster","screen_name":"hung_pope","location":"USA","description":"Applications to be my first ex-husband now being accepted. en\/fr\/de","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":288,"friends_count":560,"listed_count":17,"created_at":"Mon Jun 06 01:15:07 +0000 2016","favourites_count":34367,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":9497,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","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\/806557378426519552\/fr1JDHM-_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/806557378426519552\/fr1JDHM-_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/739626641450635265\/1473134164","profile_link_color":"981CEB","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"retweeted_status":{"created_at":"Sun Mar 26 16:49:57 +0000 2017","id":846041546147463168,"id_str":"846041546147463168","text":"Tracing His Roots, Georgetown Employee Learns University Sold His Ancestor https:\/\/t.co\/L2WYhnZZdK","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/L2WYhnZZdK","expanded_url":"https:\/\/nyti.ms\/2n0xdLf","display_url":"nyti.ms\/2n0xdLf","indices":[75,98]}]},"source":"\u003ca href=\"http:\/\/twitter.com\" rel=\"nofollow\"\u003eTwitter Web Client\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":44988185,"id_str":"44988185","name":"NAACP","screen_name":"NAACP","location":"Baltimore, MD","description":"Founded 1909, the NAACP is the nation's oldest and largest grassroots\u2013based civil rights organization. Over 2,000 volunteer-run branches nationwide.","url":"https:\/\/t.co\/4Rz4iSxiYw","entities":{"url":{"urls":[{"url":"https:\/\/t.co\/4Rz4iSxiYw","expanded_url":"http:\/\/www.naacp.org","display_url":"naacp.org","indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":260695,"friends_count":31207,"listed_count":3419,"created_at":"Fri Jun 05 20:32:34 +0000 2009","favourites_count":3101,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","geo_enabled":true,"verified":true,"statuses_count":20150,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"9AE4E8","profile_background_image_url":"http:\/\/pbs.twimg.com\/profile_background_images\/163269904\/tw_bg_1.jpg","profile_background_image_url_https":"https:\/\/pbs.twimg.com\/profile_background_images\/163269904\/tw_bg_1.jpg","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/722461858251321344\/DFUbQhxC_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/722461858251321344\/DFUbQhxC_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/44988185\/1465482837","profile_link_color":"0084B4","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"DDFFCC","profile_text_color":"333333","profile_use_background_image":false,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":72,"favorite_count":56,"favorited":false,"retweeted":true,"possibly_sensitive":false,"lang":"en"},"is_quote_status":false,"retweet_count":72,"favorite_count":0,"favorited":false,"retweeted":true,"possibly_sensitive":false,"lang":"en"},{"created_at":"Sun Mar 26 17:26:42 +0000 2017","id":846050791093915649,"id_str":"846050791093915649","text":"it's not cultural appropriation to buy something a foreigner sold you, and saying that it is is protectionist nonsense","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]},"source":"\u003ca href=\"https:\/\/github.com\/vmchale\/twitter-vim\" rel=\"nofollow\"\u003eVim-twitter\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":739626641450635265,"id_str":"739626641450635265","name":"Loch Nessa Monster","screen_name":"hung_pope","location":"USA","description":"Applications to be my first ex-husband now being accepted. en\/fr\/de","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":288,"friends_count":560,"listed_count":17,"created_at":"Mon Jun 06 01:15:07 +0000 2016","favourites_count":34367,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":9497,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","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\/806557378426519552\/fr1JDHM-_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/806557378426519552\/fr1JDHM-_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/739626641450635265\/1473134164","profile_link_color":"981CEB","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":0,"favorite_count":1,"favorited":false,"retweeted":false,"lang":"en"},{"created_at":"Sun Mar 26 17:23:12 +0000 2017","id":846049910919237633,"id_str":"846049910919237633","text":"RT @DaytonUnitNAACP: Great turnout for the #Dayton #NAACP Youth Council & the Littlejohn Jr. Youth Council Civil Rights Panel Discussion at\u2026","truncated":false,"entities":{"hashtags":[{"text":"Dayton","indices":[43,50]},{"text":"NAACP","indices":[51,57]}],"symbols":[],"user_mentions":[{"screen_name":"DaytonUnitNAACP","name":"Dayton Unit NAACP","id":320491992,"id_str":"320491992","indices":[3,19]}],"urls":[]},"source":"\u003ca href=\"http:\/\/twitter.com\" rel=\"nofollow\"\u003eTwitter Web Client\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":739626641450635265,"id_str":"739626641450635265","name":"Loch Nessa Monster","screen_name":"hung_pope","location":"USA","description":"Applications to be my first ex-husband now being accepted. en\/fr\/de","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":288,"friends_count":560,"listed_count":17,"created_at":"Mon Jun 06 01:15:07 +0000 2016","favourites_count":34367,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":9497,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","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\/806557378426519552\/fr1JDHM-_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/806557378426519552\/fr1JDHM-_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/739626641450635265\/1473134164","profile_link_color":"981CEB","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"retweeted_status":{"created_at":"Sat Mar 25 17:08:29 +0000 2017","id":845683820569464832,"id_str":"845683820569464832","text":"Great turnout for the #Dayton #NAACP Youth Council & the Littlejohn Jr. Youth Council Civil Rights Panel Discussion\u2026 https:\/\/t.co\/46ixu6Mc6I","truncated":true,"entities":{"hashtags":[{"text":"Dayton","indices":[22,29]},{"text":"NAACP","indices":[30,36]}],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/46ixu6Mc6I","expanded_url":"https:\/\/twitter.com\/i\/web\/status\/845683820569464832","display_url":"twitter.com\/i\/web\/status\/8\u2026","indices":[121,144]}]},"source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":320491992,"id_str":"320491992","name":"Dayton Unit NAACP","screen_name":"DaytonUnitNAACP","location":"Dayton, OH","description":"Founded May 10, 1915 the Dayton Unit NAACP is the city's oldest and largest nonpartisan civil rights organization.","url":"https:\/\/t.co\/5PI2H6pSgr","entities":{"url":{"urls":[{"url":"https:\/\/t.co\/5PI2H6pSgr","expanded_url":"http:\/\/www.naacpdayton.org","display_url":"naacpdayton.org","indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":212,"friends_count":564,"listed_count":6,"created_at":"Mon Jun 20 00:53:32 +0000 2011","favourites_count":16,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":192,"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:\/\/pbs.twimg.com\/profile_images\/771390722813624321\/oMtuYf1i_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/771390722813624321\/oMtuYf1i_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/320491992\/1472747756","profile_link_color":"1DA1F2","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":true,"default_profile":true,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":9,"favorite_count":20,"favorited":false,"retweeted":true,"possibly_sensitive":false,"lang":"en"},"is_quote_status":false,"retweet_count":9,"favorite_count":0,"favorited":false,"retweeted":true,"lang":"en"},{"created_at":"Sun Mar 26 17:22:59 +0000 2017","id":846049858880491521,"id_str":"846049858880491521","text":"RT @ACLU: Happy ACLU Day! https:\/\/t.co\/ApzfRDezg4","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[{"screen_name":"ACLU","name":"ACLU National","id":13393052,"id_str":"13393052","indices":[3,8]}],"urls":[{"url":"https:\/\/t.co\/ApzfRDezg4","expanded_url":"https:\/\/twitter.com\/upandoutcomic\/status\/846028659253112833","display_url":"twitter.com\/upandoutcomic\/\u2026","indices":[26,49]}]},"source":"\u003ca href=\"http:\/\/twitter.com\" rel=\"nofollow\"\u003eTwitter Web Client\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":739626641450635265,"id_str":"739626641450635265","name":"Loch Nessa Monster","screen_name":"hung_pope","location":"USA","description":"Applications to be my first ex-husband now being accepted. en\/fr\/de","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":288,"friends_count":560,"listed_count":17,"created_at":"Mon Jun 06 01:15:07 +0000 2016","favourites_count":34367,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":9497,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","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\/806557378426519552\/fr1JDHM-_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/806557378426519552\/fr1JDHM-_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/739626641450635265\/1473134164","profile_link_color":"981CEB","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"retweeted_status":{"created_at":"Sun Mar 26 16:52:51 +0000 2017","id":846042273494286336,"id_str":"846042273494286336","text":"Happy ACLU Day! https:\/\/t.co\/ApzfRDezg4","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/ApzfRDezg4","expanded_url":"https:\/\/twitter.com\/upandoutcomic\/status\/846028659253112833","display_url":"twitter.com\/upandoutcomic\/\u2026","indices":[16,39]}]},"source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":13393052,"id_str":"13393052","name":"ACLU National","screen_name":"ACLU","location":"All 50 states ","description":"The American Civil Liberties Union is a nonprofit, nonpartisan, legal and advocacy organization devoted to protecting the rights of everyone in America.","url":"http:\/\/t.co\/AF1gbNvLJ8","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/AF1gbNvLJ8","expanded_url":"http:\/\/www.aclu.org","display_url":"aclu.org","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":1119418,"friends_count":4901,"listed_count":12576,"created_at":"Tue Feb 12 16:27:34 +0000 2008","favourites_count":10974,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","geo_enabled":true,"verified":true,"statuses_count":30805,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"3A7CC2","profile_background_image_url":"http:\/\/pbs.twimg.com\/profile_background_images\/8644121\/twitterbg.jpg","profile_background_image_url_https":"https:\/\/pbs.twimg.com\/profile_background_images\/8644121\/twitterbg.jpg","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/839858096600145920\/xWQ5heIQ_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/839858096600145920\/xWQ5heIQ_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/13393052\/1485811411","profile_link_color":"0782ED","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"FFFFFF","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":true,"quoted_status_id":846028659253112833,"quoted_status_id_str":"846028659253112833","quoted_status":{"created_at":"Sun Mar 26 15:58:45 +0000 2017","id":846028659253112833,"id_str":"846028659253112833","text":"It's Make Up Your Own Holiday Day. \n\nShoutout to the @aclu https:\/\/t.co\/i1TLhVHKj9","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[{"screen_name":"ACLU","name":"ACLU National","id":13393052,"id_str":"13393052","indices":[53,58]}],"urls":[],"media":[{"id":846028650080190464,"id_str":"846028650080190464","indices":[59,82],"media_url":"http:\/\/pbs.twimg.com\/media\/C72ykyXVQAA091R.jpg","media_url_https":"https:\/\/pbs.twimg.com\/media\/C72ykyXVQAA091R.jpg","url":"https:\/\/t.co\/i1TLhVHKj9","display_url":"pic.twitter.com\/i1TLhVHKj9","expanded_url":"https:\/\/twitter.com\/upandoutcomic\/status\/846028659253112833\/photo\/1","type":"photo","sizes":{"large":{"w":1200,"h":1330,"resize":"fit"},"medium":{"w":1083,"h":1200,"resize":"fit"},"thumb":{"w":150,"h":150,"resize":"crop"},"small":{"w":614,"h":680,"resize":"fit"}}}]},"extended_entities":{"media":[{"id":846028650080190464,"id_str":"846028650080190464","indices":[59,82],"media_url":"http:\/\/pbs.twimg.com\/media\/C72ykyXVQAA091R.jpg","media_url_https":"https:\/\/pbs.twimg.com\/media\/C72ykyXVQAA091R.jpg","url":"https:\/\/t.co\/i1TLhVHKj9","display_url":"pic.twitter.com\/i1TLhVHKj9","expanded_url":"https:\/\/twitter.com\/upandoutcomic\/status\/846028659253112833\/photo\/1","type":"photo","sizes":{"large":{"w":1200,"h":1330,"resize":"fit"},"medium":{"w":1083,"h":1200,"resize":"fit"},"thumb":{"w":150,"h":150,"resize":"crop"},"small":{"w":614,"h":680,"resize":"fit"}}}]},"source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":563903972,"id_str":"563903972","name":"Julia Evelyn Kaye","screen_name":"upandoutcomic","location":"Los Angeles, CA","description":"Trans lady comic artist for the webcomic UP and OUT. I'm also workin' for Disney TV. Email: upandoutcomic @ gmail .com (she\/her)","url":"https:\/\/t.co\/VAUxhSXdSj","entities":{"url":{"urls":[{"url":"https:\/\/t.co\/VAUxhSXdSj","expanded_url":"http:\/\/www.upandoutcomic.com","display_url":"upandoutcomic.com","indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":13595,"friends_count":594,"listed_count":183,"created_at":"Thu Apr 26 17:42:26 +0000 2012","favourites_count":39679,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":true,"statuses_count":19964,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"FAEADA","profile_background_image_url":"http:\/\/pbs.twimg.com\/profile_background_images\/378800000052896222\/d95858bec0cde2dbd6e6319a72d31d40.png","profile_background_image_url_https":"https:\/\/pbs.twimg.com\/profile_background_images\/378800000052896222\/d95858bec0cde2dbd6e6319a72d31d40.png","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/794603502265860097\/hRajTIDj_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/794603502265860097\/hRajTIDj_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/563903972\/1468461840","profile_link_color":"009999","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"EFEFEF","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":153,"favorite_count":504,"favorited":false,"retweeted":true,"possibly_sensitive":false,"lang":"en"},"retweet_count":233,"favorite_count":958,"favorited":false,"retweeted":true,"possibly_sensitive":false,"lang":"en"},"is_quote_status":true,"quoted_status_id":846028659253112833,"quoted_status_id_str":"846028659253112833","retweet_count":233,"favorite_count":0,"favorited":false,"retweeted":true,"possibly_sensitive":false,"lang":"en"},{"created_at":"Sun Mar 26 17:18:00 +0000 2017","id":846048602858405890,"id_str":"846048602858405890","text":"Also relevant is the fact the imperial and colonial citizenship were often stratified so that therederived notions\u2026 https:\/\/t.co\/Oje7WGmlcV","truncated":true,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/Oje7WGmlcV","expanded_url":"https:\/\/twitter.com\/i\/web\/status\/846048602858405890","display_url":"twitter.com\/i\/web\/status\/8\u2026","indices":[116,139]}]},"source":"\u003ca href=\"http:\/\/twitter.com\" rel=\"nofollow\"\u003eTwitter Web Client\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":739626641450635265,"id_str":"739626641450635265","name":"Loch Nessa Monster","screen_name":"hung_pope","location":"USA","description":"Applications to be my first ex-husband now being accepted. en\/fr\/de","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":288,"friends_count":560,"listed_count":17,"created_at":"Mon Jun 06 01:15:07 +0000 2016","favourites_count":34367,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":9497,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","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\/806557378426519552\/fr1JDHM-_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/806557378426519552\/fr1JDHM-_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/739626641450635265\/1473134164","profile_link_color":"981CEB","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":true,"quoted_status_id":845961364912979969,"quoted_status_id_str":"845961364912979969","quoted_status":{"created_at":"Sun Mar 26 11:31:21 +0000 2017","id":845961364912979969,"id_str":"845961364912979969","text":"Die gesamte Ideologie der \"Identit\u00e4ren\" mit wenigen S\u00e4tzen auseinander genommen. Ronen Steinke im Buch Zwei der @SZ https:\/\/t.co\/XzbwYMe3WP","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[{"screen_name":"SZ","name":"S\u00fcddeutsche Zeitung","id":114508061,"id_str":"114508061","indices":[112,115]}],"urls":[],"media":[{"id":845961362618679299,"id_str":"845961362618679299","indices":[116,139],"media_url":"http:\/\/pbs.twimg.com\/media\/C711YJCXgAMeMkc.jpg","media_url_https":"https:\/\/pbs.twimg.com\/media\/C711YJCXgAMeMkc.jpg","url":"https:\/\/t.co\/XzbwYMe3WP","display_url":"pic.twitter.com\/XzbwYMe3WP","expanded_url":"https:\/\/twitter.com\/GildaSahebi\/status\/845961364912979969\/photo\/1","type":"photo","sizes":{"large":{"w":1024,"h":768,"resize":"fit"},"small":{"w":680,"h":510,"resize":"fit"},"thumb":{"w":150,"h":150,"resize":"crop"},"medium":{"w":1024,"h":768,"resize":"fit"}}}]},"extended_entities":{"media":[{"id":845961362618679299,"id_str":"845961362618679299","indices":[116,139],"media_url":"http:\/\/pbs.twimg.com\/media\/C711YJCXgAMeMkc.jpg","media_url_https":"https:\/\/pbs.twimg.com\/media\/C711YJCXgAMeMkc.jpg","url":"https:\/\/t.co\/XzbwYMe3WP","display_url":"pic.twitter.com\/XzbwYMe3WP","expanded_url":"https:\/\/twitter.com\/GildaSahebi\/status\/845961364912979969\/photo\/1","type":"photo","sizes":{"large":{"w":1024,"h":768,"resize":"fit"},"small":{"w":680,"h":510,"resize":"fit"},"thumb":{"w":150,"h":150,"resize":"crop"},"medium":{"w":1024,"h":768,"resize":"fit"}}}]},"source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":2218477926,"id_str":"2218477926","name":"Gilda Sahebi","screen_name":"GildaSahebi","location":"","description":"\u00c4rztin \/\/ Politikwissenschaftlerin \/\/ Journalistin \/\/ Autorin beim @neomagazin","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":1375,"friends_count":546,"listed_count":21,"created_at":"Wed Nov 27 21:45:42 +0000 2013","favourites_count":198,"utc_offset":7200,"time_zone":"Paris","geo_enabled":true,"verified":false,"statuses_count":444,"lang":"de","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:\/\/pbs.twimg.com\/profile_images\/525972423447826432\/bddl8hXb_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/525972423447826432\/bddl8hXb_normal.jpeg","profile_link_color":"1DA1F2","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":false,"default_profile":true,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":537,"favorite_count":1141,"favorited":false,"retweeted":false,"possibly_sensitive":false,"lang":"de"},"retweet_count":0,"favorite_count":0,"favorited":false,"retweeted":false,"possibly_sensitive":false,"lang":"en"},{"created_at":"Sun Mar 26 17:11:33 +0000 2017","id":846046980581347328,"id_str":"846046980581347328","text":"RT @realDonaldTrump: If Syria was forced to use Obamacare they would self-destruct without a shot being fired. Obama should sell them that\u2026","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[{"screen_name":"realDonaldTrump","name":"Donald J. Trump","id":25073877,"id_str":"25073877","indices":[3,19]}],"urls":[]},"source":"\u003ca href=\"http:\/\/twitter.com\" rel=\"nofollow\"\u003eTwitter Web Client\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":739626641450635265,"id_str":"739626641450635265","name":"Loch Nessa Monster","screen_name":"hung_pope","location":"USA","description":"Applications to be my first ex-husband now being accepted. en\/fr\/de","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":288,"friends_count":560,"listed_count":17,"created_at":"Mon Jun 06 01:15:07 +0000 2016","favourites_count":34367,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":9497,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","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\/806557378426519552\/fr1JDHM-_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/806557378426519552\/fr1JDHM-_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/739626641450635265\/1473134164","profile_link_color":"981CEB","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"retweeted_status":{"created_at":"Fri Sep 06 22:49:12 +0000 2013","id":376114891381542912,"id_str":"376114891381542912","text":"If Syria was forced to use Obamacare they would self-destruct without a shot being fired. Obama should sell them that idea!","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]},"source":"\u003ca href=\"http:\/\/twitter.com\/download\/android\" rel=\"nofollow\"\u003eTwitter for Android\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":25073877,"id_str":"25073877","name":"Donald J. Trump","screen_name":"realDonaldTrump","location":"Washington, DC","description":"45th President of the United States of America","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":27052381,"friends_count":43,"listed_count":67019,"created_at":"Wed Mar 18 13:46:38 +0000 2009","favourites_count":47,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","geo_enabled":true,"verified":true,"statuses_count":34652,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":true,"profile_background_color":"6D5C18","profile_background_image_url":"http:\/\/pbs.twimg.com\/profile_background_images\/530021613\/trump_scotland__43_of_70_cc.jpg","profile_background_image_url_https":"https:\/\/pbs.twimg.com\/profile_background_images\/530021613\/trump_scotland__43_of_70_cc.jpg","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/1980294624\/DJT_Headshot_V2_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/1980294624\/DJT_Headshot_V2_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/25073877\/1489657715","profile_link_color":"0D5B73","profile_sidebar_border_color":"BDDCAD","profile_sidebar_fill_color":"C5CEC0","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false,"translator_type":"regular"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":975,"favorite_count":448,"favorited":false,"retweeted":true,"lang":"en"},"is_quote_status":false,"retweet_count":975,"favorite_count":0,"favorited":false,"retweeted":true,"lang":"en"},{"created_at":"Sun Mar 26 17:09:55 +0000 2017","id":846046566968446984,"id_str":"846046566968446984","text":"who is president obsma https:\/\/t.co\/BV8KIqPACr","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/BV8KIqPACr","expanded_url":"https:\/\/twitter.com\/newtgingrich\/status\/310167482142978049","display_url":"twitter.com\/newtgingrich\/s\u2026","indices":[23,46]}]},"source":"\u003ca href=\"http:\/\/twitter.com\" rel=\"nofollow\"\u003eTwitter Web Client\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":739626641450635265,"id_str":"739626641450635265","name":"Loch Nessa Monster","screen_name":"hung_pope","location":"USA","description":"Applications to be my first ex-husband now being accepted. en\/fr\/de","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":288,"friends_count":560,"listed_count":17,"created_at":"Mon Jun 06 01:15:07 +0000 2016","favourites_count":34367,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":9497,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","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\/806557378426519552\/fr1JDHM-_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/806557378426519552\/fr1JDHM-_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/739626641450635265\/1473134164","profile_link_color":"981CEB","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":true,"quoted_status_id":310167482142978049,"quoted_status_id_str":"310167482142978049","quoted_status":{"created_at":"Fri Mar 08 23:17:45 +0000 2013","id":310167482142978049,"id_str":"310167482142978049","text":"Trump and president obsma both golf but trump doesn't charge the taxpayers $920,000 for a golf weekend in florida.","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]},"source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":20713061,"id_str":"20713061","name":"Newt Gingrich","screen_name":"newtgingrich","location":"","description":"Husband, father, grandfather, citizen, small businessman, author, former Speaker of the House.","url":"https:\/\/t.co\/k86Aj8WHdK","entities":{"url":{"urls":[{"url":"https:\/\/t.co\/k86Aj8WHdK","expanded_url":"http:\/\/www.gingrichproductions.com\/","display_url":"gingrichproductions.com","indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":1928703,"friends_count":898,"listed_count":15516,"created_at":"Thu Feb 12 20:18:08 +0000 2009","favourites_count":560,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":true,"statuses_count":9853,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"0A1735","profile_background_image_url":"http:\/\/pbs.twimg.com\/profile_background_images\/378800000096309284\/b226755905fa8abd2131a92f9765c84e.jpeg","profile_background_image_url_https":"https:\/\/pbs.twimg.com\/profile_background_images\/378800000096309284\/b226755905fa8abd2131a92f9765c84e.jpeg","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/722099116654923777\/S7O3vYVT_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/722099116654923777\/S7O3vYVT_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/20713061\/1426197965","profile_link_color":"2D4A92","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"FFFFFF","profile_text_color":"727272","profile_use_background_image":true,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":3641,"favorite_count":3216,"favorited":false,"retweeted":false,"lang":"en"},"retweet_count":0,"favorite_count":1,"favorited":false,"retweeted":false,"possibly_sensitive":false,"lang":"en"},{"created_at":"Sun Mar 26 17:09:02 +0000 2017","id":846046346327052289,"id_str":"846046346327052289","text":"RT @realDonaldTrump: We will immediately repeal and replace ObamaCare - and nobody can do that like me. We will save $'s and have much bett\u2026","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[{"screen_name":"realDonaldTrump","name":"Donald J. Trump","id":25073877,"id_str":"25073877","indices":[3,19]}],"urls":[]},"source":"\u003ca href=\"http:\/\/twitter.com\" rel=\"nofollow\"\u003eTwitter Web Client\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":739626641450635265,"id_str":"739626641450635265","name":"Loch Nessa Monster","screen_name":"hung_pope","location":"USA","description":"Applications to be my first ex-husband now being accepted. en\/fr\/de","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":288,"friends_count":560,"listed_count":17,"created_at":"Mon Jun 06 01:15:07 +0000 2016","favourites_count":34367,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":9497,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","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\/806557378426519552\/fr1JDHM-_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/806557378426519552\/fr1JDHM-_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/739626641450635265\/1473134164","profile_link_color":"981CEB","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"retweeted_status":{"created_at":"Tue Feb 09 22:15:34 +0000 2016","id":697182075045179392,"id_str":"697182075045179392","text":"We will immediately repeal and replace ObamaCare - and nobody can do that like me. We will save $'s and have much better healthcare!","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]},"source":"\u003ca href=\"http:\/\/twitter.com\/download\/android\" rel=\"nofollow\"\u003eTwitter for Android\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":25073877,"id_str":"25073877","name":"Donald J. Trump","screen_name":"realDonaldTrump","location":"Washington, DC","description":"45th President of the United States of America","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":27052381,"friends_count":43,"listed_count":67019,"created_at":"Wed Mar 18 13:46:38 +0000 2009","favourites_count":47,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","geo_enabled":true,"verified":true,"statuses_count":34652,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":true,"profile_background_color":"6D5C18","profile_background_image_url":"http:\/\/pbs.twimg.com\/profile_background_images\/530021613\/trump_scotland__43_of_70_cc.jpg","profile_background_image_url_https":"https:\/\/pbs.twimg.com\/profile_background_images\/530021613\/trump_scotland__43_of_70_cc.jpg","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/1980294624\/DJT_Headshot_V2_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/1980294624\/DJT_Headshot_V2_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/25073877\/1489657715","profile_link_color":"0D5B73","profile_sidebar_border_color":"BDDCAD","profile_sidebar_fill_color":"C5CEC0","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false,"translator_type":"regular"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":12933,"favorite_count":19535,"favorited":false,"retweeted":true,"lang":"en"},"is_quote_status":false,"retweet_count":12933,"favorite_count":0,"favorited":false,"retweeted":true,"lang":"en"},{"created_at":"Sun Mar 26 16:21:02 +0000 2017","id":846034267771691008,"id_str":"846034267771691008","text":"Because calling Germany's war debts is even SOUNDER policy when they don't exist in the first place! https:\/\/t.co\/vzt0zHw0Pn","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/vzt0zHw0Pn","expanded_url":"https:\/\/twitter.com\/paulkrugman\/status\/845995845854154753","display_url":"twitter.com\/paulkrugman\/st\u2026","indices":[101,124]}]},"source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":739626641450635265,"id_str":"739626641450635265","name":"Loch Nessa Monster","screen_name":"hung_pope","location":"USA","description":"Applications to be my first ex-husband now being accepted. en\/fr\/de","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":288,"friends_count":560,"listed_count":17,"created_at":"Mon Jun 06 01:15:07 +0000 2016","favourites_count":34367,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":9497,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","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\/806557378426519552\/fr1JDHM-_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/806557378426519552\/fr1JDHM-_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/739626641450635265\/1473134164","profile_link_color":"981CEB","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":true,"quoted_status_id":845995845854154753,"quoted_status_id_str":"845995845854154753","quoted_status":{"created_at":"Sun Mar 26 13:48:22 +0000 2017","id":845995845854154753,"id_str":"845995845854154753","text":"Trump is worse than you could have imagined, even knowing that he's worse than you could have imagined. https:\/\/t.co\/BEnukQbXV8","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/BEnukQbXV8","expanded_url":"http:\/\/www.independent.co.uk\/news\/world\/americas\/us-politics\/donald-trump-angela-merkel-nato-bill-defence-ignore-usa-germany-spending-a7650636.html","display_url":"independent.co.uk\/news\/world\/ame\u2026","indices":[104,127]}]},"source":"\u003ca href=\"http:\/\/twitter.com\" rel=\"nofollow\"\u003eTwitter Web Client\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":17006157,"id_str":"17006157","name":"Paul Krugman","screen_name":"paulkrugman","location":"New York City","description":"Nobel laureate. Op-Ed columnist, @nytopinion. Author, \u201cThe Return of Depression Economics,\u201d \u201cThe Great Unraveling,\u201d \u201cThe Age of Diminished Expectations\u201d + more.","url":"http:\/\/t.co\/vl6CX9xUSi","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/vl6CX9xUSi","expanded_url":"http:\/\/krugman.blogs.nytimes.com\/","display_url":"krugman.blogs.nytimes.com","indices":[0,22]}]},"description":{"urls":[]}},"protected":false,"followers_count":2740224,"friends_count":15,"listed_count":35131,"created_at":"Mon Oct 27 20:17:02 +0000 2008","favourites_count":13,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":true,"statuses_count":9136,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"9AE4E8","profile_background_image_url":"http:\/\/pbs.twimg.com\/profile_background_images\/4431039\/twitter_post.png","profile_background_image_url_https":"https:\/\/pbs.twimg.com\/profile_background_images\/4431039\/twitter_post.png","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/2044852218\/NYT_Twitter_Krugman_normal.png","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/2044852218\/NYT_Twitter_Krugman_normal.png","profile_link_color":"0084B4","profile_sidebar_border_color":"BDDCAD","profile_sidebar_fill_color":"DDFFCC","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":3472,"favorite_count":5011,"favorited":false,"retweeted":false,"possibly_sensitive":false,"lang":"en"},"retweet_count":0,"favorite_count":0,"favorited":false,"retweeted":false,"possibly_sensitive":false,"lang":"en"},{"created_at":"Sun Mar 26 16:16:05 +0000 2017","id":846033020234686464,"id_str":"846033020234686464","text":"@el_dr0gas omg I will keep this in mind \u2764\ufe0f","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[{"screen_name":"el_dr0gas","name":"malice in wonderland","id":33943703,"id_str":"33943703","indices":[0,10]}],"urls":[]},"source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c\/a\u003e","in_reply_to_status_id":846030859304144897,"in_reply_to_status_id_str":"846030859304144897","in_reply_to_user_id":33943703,"in_reply_to_user_id_str":"33943703","in_reply_to_screen_name":"el_dr0gas","user":{"id":739626641450635265,"id_str":"739626641450635265","name":"Loch Nessa Monster","screen_name":"hung_pope","location":"USA","description":"Applications to be my first ex-husband now being accepted. en\/fr\/de","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":288,"friends_count":560,"listed_count":17,"created_at":"Mon Jun 06 01:15:07 +0000 2016","favourites_count":34367,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":9497,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","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\/806557378426519552\/fr1JDHM-_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/806557378426519552\/fr1JDHM-_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/739626641450635265\/1473134164","profile_link_color":"981CEB","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":0,"favorite_count":0,"favorited":false,"retweeted":false,"lang":"en"}]
tweet-hs.cabal view
@@ -1,5 +1,5 @@ name: tweet-hs-version: 0.5.1.2+version: 0.5.2.0 cabal-version: >=1.10 build-type: Simple license: BSD3@@ -17,6 +17,7 @@ README.md stack.yaml bash/mkCompletions+ test/data source-repository head type: git@@ -31,6 +32,7 @@ exposed-modules: Web.Tweet Web.Tweet.Exec+ Web.Tweet.Parser build-depends: base >=4.7 && <5, http-client-tls >=0.3.4 && <0.4,@@ -56,7 +58,6 @@ Web.Tweet.Utils Web.Tweet.Utils.Colors Web.Tweet.Sign- Web.Tweet.Parser Web.Tweet.API Web.Tweet.Utils.API @@ -69,7 +70,37 @@ main-is: Main.hs build-depends: base >=4.9.1.0 && <4.10,- tweet-hs >=0.5.1.2 && <0.6+ tweet-hs >=0.5.2.0 && <0.6 default-language: Haskell2010 hs-source-dirs: app +test-suite tweeths-test+ type: exitcode-stdio-1.0+ main-is: Spec.hs+ build-depends:+ base >=4.9.1.0 && <4.10,+ tweet-hs >=0.5.2.0 && <0.6,+ hspec >=2.4.2 && <2.5,+ hspec-megaparsec >=0.3.1 && <0.4,+ megaparsec >=5.2.0 && <5.3,+ bytestring >=0.10.8.1 && <0.11+ default-language: Haskell2010+ hs-source-dirs: test+ ghc-options: -threaded -rtsopts -with-rtsopts=-N++benchmark tweeths-bench+ + if flag(llvm-fast)+ ghc-options: -threaded -rtsopts -with-rtsopts=-N -fllvm -optlo-O3 -O3+ else+ ghc-options: -threaded -rtsopts -with-rtsopts=-N -O3+ type: exitcode-stdio-1.0+ main-is: Bench.hs+ build-depends:+ base >=4.9.1.0 && <4.10,+ criterion >=1.1.4.0 && <1.2,+ tweet-hs >=0.5.2.0 && <0.6,+ megaparsec >=5.2.0 && <5.3,+ bytestring >=0.10.8.1 && <0.11+ default-language: Haskell2010+ hs-source-dirs: bench