Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- __author__ = 'Meltrizzo'
- import facepy as facebook
- import tweepy
- import json
- from sys import argv
- from py2neo import Graph, Node, rel
- # Twitter Tokens
- consumer_key = 'KfhWV2WNhawcSj7iKefomwSQ2'
- consumer_secret = 'YMfMhkZpUN5N0lIEi4IRWHpOUMh2cW1vunMBs8fdA2ESyvibTm'
- twitter_access_token = '2444440219-2w6YnM5YOtSlEpR6wqtjrgrni5EWIdWmrthqefW'
- twitter_access_token_secret = 'uU0zPWvMl3k6Tw3ccvQPmM7XRFPn82R1NgubL30qwkD8F'
- # FB Token
- access_token = "CAAMPdeFl8pUBALh3ItxIsf84oNOLI0fzlWnJc7eYi6CAQvQteLZC3w2zs3kBFCXLtiyI9cyiE2RtfOUUUD7rEgPlKcJ2n7ebPZCZBCX0QeHC7xMpZC0FX11ib73fbNfNbK2QZBZBt9lN7gWj8Mkqh5FngIx5PZB8Df95CgMN36ACYjG6l3jqecjahUUAaZAlTWkZD"
- # neo4j address
- neoAD = "http://neo4j:NaMpets7909@localhost:7474/db/data"
- source = argv[1].lower()
- class AbstractInformation:
- def __init__(self, text='', name='', id='', location='', time='', real_name='', language=''):
- self.text = text
- self.name = name
- self.id = id
- self.location = location
- self.time = time
- self.real_name = real_name
- self.language = language
- def get_text(self):
- return self.text
- def get_name(self):
- return self.name
- def get_id(self):
- return self.id
- def get_location(self):
- return self.location
- def get_time(self):
- return self.time
- def get_real_name(self):
- return self.real_name
- def get_location(self):
- return self.location
- def set_text(self, text):
- self.text = text
- def set_name(self, name):
- self.name = name
- def set_id(self, id):
- self.id = id
- def set_location(self, location):
- self.location = location
- def set_time(self, time):
- self.time = time
- def set_real_name(self, real_name):
- self.real_name = real_name
- class TwitterMessage(AbstractInformation):
- def __init__(self, retweets='', reply_to_user=''):
- AbstractInformation.__init__(self)
- def get_retweets(self):
- return self.retweets
- def get_reply_to_user(self):
- return self.reply_to_user
- def set_retweets(self, retweets):
- self.retweets = retweets
- def set_reply_to_user(self, reply_to_user):
- self.reply_to_user = reply_to_user
- class FacebookInformation(AbstractInformation):
- def __init__(self, gender='', locale=''):
- AbstractInformation.__init__(self)
- def get_gender(self):
- return self.get_gender()
- def get_locale(self):
- return self.get_locale()
- def set_gender(self, gender):
- self.gender = gender
- def set_locale(self, locale):
- self.locale = locale
- class ModelParser(tweepy.parsers.ModelParser):
- def parse(self, method, payload):
- result = super(ModelParser, self).parse(method, payload)
- result._payload = json.loads(payload)
- return result
- def constructAPI():
- if source == "facebook":
- api = facebook.GraphAPI(access_token)
- elif source == "twitter":
- auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
- auth.set_access_token(twitter_access_token, twitter_access_token_secret)
- api = tweepy.API(auth, parser=ModelParser())
- return api
- def grabData(api):
- if source == "facebook":
- data = api.get('me')
- elif source == "twitter":
- data = []
- for result in api.search(q="programming", rpp=100, result_type="recent", lang="en"):
- data.append(result)
- return data
- def loadData(data, db):
- array = []
- if source == "facebook":
- facebook_message = FacebookInformation()
- for dictKey in data:
- if dictKey == "name":
- facebook_message.set_name(str(data[dictKey]).encode('utf-8', 'ignore'))
- elif dictKey == "gender":
- facebook_message.set_gender(str(data[dictKey]).encode('utf-8', 'ignore'))
- elif dictKey == "locale":
- facebook_message.set_locale(str(data[dictKey]).encode('utf-8', 'ignore'))
- elif source == "twitter":
- for x in range(0, len(data)):
- tweet = TwitterMessage()
- tweet.set_retweets(str(data[x].retweets))
- tweet.set_language(data[x].lang).encode('utf-8', 'ignore')
- tweet.set_id(str(data[x].id_str))
- tweet.set_text(str(data[x].text).encode('utf-8', 'ignore'))
- tweet.set_name(str(data[x].source).encode('utf-8', 'ignore'))
- tweet.set_name(str(data[x].user.screen_name).encode('utf-8', 'ignore'))
- tweet.set_location(str(data[x].user.location).encode('utf-8', 'ignore'))
- array.append(tweet)
- return array
- def purge(db):
- db.delete_all()
- print("IT'S ALL DEAD")
- def constructFeed():
- g = Graph(neoAD)
- return g
- if __name__ == "__main__":
- # connect to neo4j
- db = constructFeed()
- # erase the current dataset (BEWARE)
- purge(db)
- # get either facebook or twitter API
- api = constructAPI()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement