daily pastebin goal
72%
SHARE
TWEET

Untitled

a guest Mar 1st, 2017 9 Never
Upgrade to PRO!
ENDING IN00days00hours00mins00secs
 
  1. import hmac
  2. import config
  3. import base64
  4. import urllib.parse
  5. import urllib
  6. import collections
  7. import requests
  8. import calendar
  9. import pprint
  10. import hashlib
  11. import time
  12. import string
  13. import random
  14.  
  15. streamUrl = "https://stream.twitter.com/1.1/statuses/filter.json?"
  16.  
  17.  
  18. class GenertateAuthHeader():
  19.     def generateOauthNonce(self):
  20.         lst = [random.choice(string.ascii_letters + string.digits) for n in range(32)]
  21.         str = "".join(lst)
  22.         return str
  23.  
  24.     def createSignatureString(self, baseString, signingKey):
  25.         outputStream = hmac.new(signingKey, baseString.encode(encoding='ascii'), hashlib.sha1)
  26.         return str(base64.b64encode(outputStream.digest()), encoding='ascii').rstrip('\n')
  27.  
  28.     def createSignatureBaseString(self, urlEncodedUrl="", urlOauthEncodedHeader=""):
  29.         return urlEncodedUrl + urlOauthEncodedHeader
  30.  
  31.     ##This creates a URL string that is encoded to I can attach
  32.     ##The Authorization ehader and encode to make the Signature
  33.     def createUrlString(self, httpMethod="POST", params=""):
  34.         baseString = ""
  35.         methodCapitalized = httpMethod.upper()
  36.         baseString += methodCapitalized
  37.         baseString += "&"
  38.         baseString += urllib.parse.quote(streamUrl)
  39.         baseString += "&"
  40.         baseString += urllib.parse.quote(params)
  41.         return urllib.parse.quote(baseString)
  42.  
  43.     ##This is becuase the keys need to be in order when creating the signature
  44.     def createUnorderedDictToOrdered(self, inDict):
  45.         orderedDict = collections.OrderedDict(sorted(inDict.items()))
  46.         return orderedDict
  47.  
  48.     def createSigningKey(self):
  49.         return str(urllib.parse.quote(config.twitterCSecret) + "&" + urllib.parse.quote(config.twitterAToken))
  50.  
  51.     ##agian this dictionary is for the signature
  52.     def createAuthDict(self):
  53.         oauthNonce = self.generateOauthNonce()
  54.         timeStamp = str(calendar.timegm(time.gmtime()))
  55.         authString = {
  56.             'oauth_consumer_key': urllib.parse.quote(config.twitterCKey),
  57.             'oauth_nonce': oauthNonce,
  58.             'oauth_signature_method': 'HMAC-SHA1',
  59.             'oauth_timestamp': timeStamp,
  60.             'oauth_token': config.twitterAToken,
  61.             'oauth_version': '1.0'
  62.         }
  63.         return self.createUnorderedDictToOrdered(authString)
  64.  
  65.     def generateSignatureString(self):
  66.         aDict = self.createAuthDict()
  67.         signingKey = self.createSigningKey()
  68.         encodedUrl = self.createUrlString()
  69.         orderedKeys = self.createUnorderedDictToOrdered(aDict)
  70.         encodedSigningKey = ""
  71.         for x in orderedKeys.items():
  72.             encodedSigningKey += urllib.parse.quote_plus(x[0]) + "=" + urllib.parse.quote(x[1]) + ","
  73.         baseString = encodedUrl + urllib.parse.quote(encodedSigningKey)
  74.  
  75.         return self.createSignatureString(baseString, bytes(signingKey, encoding='ascii'))
  76.  
  77.     ##This method only needs to be run to get the full authorization header WITH Signature
  78.     def generateAuthorizationHeader(self):
  79.         header = self.createAuthDict()
  80.         headerString = "OAuth "
  81.         count = 0
  82.         for x, v in header.items():
  83.             headerString += x + "=\"" + v + "\", "
  84.             if count == 1:
  85.                 headerString += "oauth_signature=\"" + self.generateSignatureString() + "\", "
  86.             count += 1
  87.  
  88.         return headerString[:-2]
  89.  
  90.  
  91. if __name__ == '__main__':
  92.  
  93.     authHeader = GenertateAuthHeader()
  94.     authorizationHeader = authHeader.generateAuthorizationHeader()
  95.     header = {
  96.         'Accept': '*/*',
  97.         'Connection': 'Keep-Alive',
  98.         'Content-Type': 'application/x-www-form-urlencoded',
  99.         'Authorization': authorizationHeader,
  100.         'Host': 'stream.twitter.com'
  101.     }
  102.  
  103.     data = {
  104.         'language': config.twitterSearchLanguage,
  105.         'track': config.twitterSearchTerms
  106.     }
  107.  
  108.     print(header)
  109.  
  110.     r = requests.post(streamUrl, headers=header, params=data)
  111.  
  112.     print(r.url)
  113.     print(r)
  114.     print(r.text)
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Pastebin PRO 'CHRISTMAS SPECIAL'!
Get 60% OFF Pastebin PRO accounts!
 
Top