Advertisement
Guest User

Untitled

a guest
Jul 1st, 2015
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.99 KB | None | 0 0
  1. __author__ = 'Meltrizzo'
  2.  
  3. import facepy as facebook
  4.  
  5. import tweepy
  6. import json
  7. from sys import argv
  8. from py2neo import Graph, Node, rel
  9. # Twitter Tokens
  10. consumer_key = 'KfhWV2WNhawcSj7iKefomwSQ2'
  11. consumer_secret = 'YMfMhkZpUN5N0lIEi4IRWHpOUMh2cW1vunMBs8fdA2ESyvibTm'
  12. twitter_access_token = '2444440219-2w6YnM5YOtSlEpR6wqtjrgrni5EWIdWmrthqefW'
  13. twitter_access_token_secret = 'uU0zPWvMl3k6Tw3ccvQPmM7XRFPn82R1NgubL30qwkD8F'
  14. # FB Token
  15. access_token = "CAAMPdeFl8pUBALh3ItxIsf84oNOLI0fzlWnJc7eYi6CAQvQteLZC3w2zs3kBFCXLtiyI9cyiE2RtfOUUUD7rEgPlKcJ2n7ebPZCZBCX0QeHC7xMpZC0FX11ib73fbNfNbK2QZBZBt9lN7gWj8Mkqh5FngIx5PZB8Df95CgMN36ACYjG6l3jqecjahUUAaZAlTWkZD"
  16. # neo4j address
  17. neoAD = "http://neo4j:NaMpets7909@localhost:7474/db/data"
  18. source = argv[1].lower()
  19.  
  20.  
  21. class AbstractInformation:
  22.     def __init__(self, text='', name='', id='', location='', time='', real_name='', language=''):
  23.         self.text = text
  24.         self.name = name
  25.         self.id = id
  26.         self.location = location
  27.         self.time = time
  28.         self.real_name = real_name
  29.         self.language = language
  30.  
  31.     def get_text(self):
  32.         return self.text
  33.  
  34.     def get_name(self):
  35.         return self.name
  36.  
  37.     def get_id(self):
  38.         return self.id
  39.  
  40.     def get_location(self):
  41.         return self.location
  42.  
  43.     def get_time(self):
  44.         return self.time
  45.  
  46.     def get_real_name(self):
  47.         return self.real_name
  48.  
  49.     def get_location(self):
  50.         return self.location
  51.  
  52.     def set_text(self, text):
  53.         self.text = text
  54.  
  55.     def set_name(self, name):
  56.         self.name = name
  57.  
  58.     def set_id(self, id):
  59.         self.id = id
  60.  
  61.     def set_location(self, location):
  62.         self.location = location
  63.  
  64.     def set_time(self, time):
  65.         self.time = time
  66.  
  67.     def set_real_name(self, real_name):
  68.         self.real_name = real_name
  69.  
  70.  
  71. class TwitterMessage(AbstractInformation):
  72.     def __init__(self, retweets='', reply_to_user=''):
  73.         AbstractInformation.__init__(self)
  74.  
  75.     def get_retweets(self):
  76.         return self.retweets
  77.  
  78.     def get_reply_to_user(self):
  79.         return self.reply_to_user
  80.  
  81.     def set_retweets(self, retweets):
  82.         self.retweets = retweets
  83.  
  84.     def set_reply_to_user(self, reply_to_user):
  85.         self.reply_to_user = reply_to_user
  86.  
  87.  
  88. class FacebookInformation(AbstractInformation):
  89.     def __init__(self, gender='', locale=''):
  90.         AbstractInformation.__init__(self)
  91.  
  92.     def get_gender(self):
  93.         return self.get_gender()
  94.  
  95.     def get_locale(self):
  96.         return self.get_locale()
  97.  
  98.     def set_gender(self, gender):
  99.         self.gender = gender
  100.  
  101.     def set_locale(self, locale):
  102.         self.locale = locale
  103.  
  104. class ModelParser(tweepy.parsers.ModelParser):
  105.     def parse(self, method, payload):
  106.         result = super(ModelParser, self).parse(method, payload)
  107.         result._payload = json.loads(payload)
  108.         return result
  109.  
  110.  
  111. def constructAPI():
  112.     if source == "facebook":
  113.         api = facebook.GraphAPI(access_token)
  114.     elif source == "twitter":
  115.         auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
  116.         auth.set_access_token(twitter_access_token, twitter_access_token_secret)
  117.         api = tweepy.API(auth, parser=ModelParser())
  118.     return api
  119.  
  120.  
  121. def grabData(api):
  122.     if source == "facebook":
  123.         data = api.get('me')
  124.     elif source == "twitter":
  125.         data = []
  126.         for result in api.search(q="programming", rpp=100, result_type="recent", lang="en"):
  127.             data.append(result)
  128.     return data
  129.  
  130.  
  131. def loadData(data, db):
  132.     array = []
  133.     if source == "facebook":
  134.         facebook_message = FacebookInformation()
  135.         for dictKey in data:
  136.             if dictKey == "name":
  137.                 facebook_message.set_name(str(data[dictKey]).encode('utf-8', 'ignore'))
  138.             elif dictKey == "gender":
  139.                 facebook_message.set_gender(str(data[dictKey]).encode('utf-8', 'ignore'))
  140.             elif dictKey == "locale":
  141.                 facebook_message.set_locale(str(data[dictKey]).encode('utf-8', 'ignore'))
  142.     elif source == "twitter":
  143.         for x in range(0, len(data)):
  144.             tweet = TwitterMessage()
  145.             tweet.set_retweets(str(data[x].retweets))
  146.             tweet.set_language(data[x].lang).encode('utf-8', 'ignore')
  147.             tweet.set_id(str(data[x].id_str))
  148.             tweet.set_text(str(data[x].text).encode('utf-8', 'ignore'))
  149.             tweet.set_name(str(data[x].source).encode('utf-8', 'ignore'))
  150.             tweet.set_name(str(data[x].user.screen_name).encode('utf-8', 'ignore'))
  151.             tweet.set_location(str(data[x].user.location).encode('utf-8', 'ignore'))
  152.             array.append(tweet)
  153.     return array
  154.  
  155.  
  156. def purge(db):
  157.     db.delete_all()
  158.     print("IT'S ALL DEAD")
  159.  
  160.  
  161. def constructFeed():
  162.     g = Graph(neoAD)
  163.     return g
  164.  
  165.  
  166. if __name__ == "__main__":
  167.     # connect to neo4j
  168.     db = constructFeed()
  169.     # erase the current dataset (BEWARE)
  170.     purge(db)
  171.     # get either facebook or twitter API
  172.     api = constructAPI()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement