Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- # P2B: Les réseaux sociaux en entreprise
- # Valentin Honoré et Gabriel Urbain
- # Avril 2010
- #
- # Développpement d'outils d'exploitation de données récupérées sur twitter
- # Utilisation du module python-twitter pour l'exploitation de données provenant de twitter en format Json (Java-script Object Notation)
- import twitter
- import datetime
- #--------------------------------------------------------------------------------------
- class date:
- "Class developped to exploit a string date in 30 characters from twitter"
- monthtxt = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
- day = 0
- month = 0
- year = 0
- serie = datetime.date(2010, 04, 12)
- txt = ""
- #################################################################################
- def __init__ (self, texte):
- self.txt = texte
- self.day = int(self.txt[8:10])
- i = 0
- while i < 12:
- if self.monthtxt[i] == self.txt[4:7] :
- self.month = i + 1
- break;
- i = i + 1
- self.year = int(self.txt[26:30])
- self.serie = datetime.date(self.year, self.month, self.day)
- #################################################################################
- def GetSerie (self):
- return self.serie
- #################################################################################
- def GetDay (self):
- return self.day
- #################################################################################
- def GetMonth (self):
- return self.month
- #################################################################################
- def GetYear (self):
- return self.year
- #--------------------------------------------------------------------------------------
- class dataUse:
- "Class with some methods to get twitter datas and some others to exploit them"
- FILENAME = "Resultat.txt"
- DEFAULT = "Default"
- USER = "be_rail"
- COUNT = 200
- TIMEGAP = 2
- #################################################################################
- def __init__(self, name, password):
- "Constructor"
- self.api = twitter.Api(username = name, password = password)
- ##################################################################################
- def Display (self, usertype = "f", user = USER, nbre = COUNT):
- "Display all the statuses of the concerned user. Use f for friends, p for public and u for particular users"
- # Declaration
- if user == ("f" or None):
- statuses = self.api.GetFriendsTimeline(count = self.COUNT)
- elif user == "p":
- statuses = self.api.GetPublicTimeline(count = self.COUNT)
- elif user == "u":
- statuses = self.api.GetUserTimeline(user = user, count = self.COUNT)
- j = 0
- # Display
- while j < nbre:
- print "Tweet %u)" %(j+1)
- print "De: " + statuses[j].user.name
- print "Date: " + statuses[j].GetCreatedAt()
- print "Message: " + statuses[j].text + "\n\n"
- #################################################################################
- def Sending (self, msg = DEFAULT):
- "Post a tweet on the selectioned account"
- api.PostUpdate(msg)
- #################################################################################
- def TimeExploit (self, user = USER, gap = TIMEGAP, filedest = FILENAME):
- "Write the nummer of posts in each intervals of one gap of days in filedest"
- # Declaration
- i=0
- j=0
- tab = []
- moyenne = [0]
- statuses = self.api.GetUserTimeline(user = user, count = self.COUNT)
- # work out the number of points
- statuses.reverse()
- deltajours = (date(statuses[i-1].GetCreatedAt()).GetSerie() - date(statuses[0].GetCreatedAt()).GetSerie())
- nbrepoints = deltajours.days/gap
- print "Le delta de temps vaut %(a)u et il y a %(b)u intervalles de %(c)u jours" \
- %{'a': deltajours.days, 'b': nbrepoints, 'c': gap}
- # initialize tab chart
- for i in range(deltajours.days):
- tab.append(0)
- # implement the chart if needed
- for status in statuses:
- tab[(date(status.GetCreatedAt()).GetSerie() - date(statuses[0].GetCreatedAt()).GetSerie()).days - 1] = \
- tab[(date(status.GetCreatedAt()).GetSerie() - date(statuses[0].GetCreatedAt()).GetSerie()).days - 1] + 1
- # work out the value during a gap of days
- for i in range(deltajours.days):
- moyenne[j] = moyenne[j] + tab[i]
- if i%gap == 0:
- j = j + 1
- moyenne.append(0)
- # write text and datas
- ff = open (filedest, 'w')
- ff.write("Nombre de fois ou un tweet a ete poste :\n\nNombre\t\tDate\n\n")
- d = datetime.timedelta(days=gap)
- i = 1
- for value in moyenne :
- borne = date(statuses[0].GetCreatedAt()).GetSerie() + i * d
- texte = "%(a)u\t\t %(b)u/%(c)u/%(d)u\t\t%(e)u\n" \
- %{'a': i, 'b': borne.day, 'c': borne.month, 'd': borne.year, 'e': value}
- ff.write (texte)
- i = i + 1
- ff.close()
- ##################################################################################
- def Search (self, user = USER, gap = TIMEGAP, txt = DEFAULT, filedest = FILENAME):
- "Search the text txt in all post and write it with the date in filedest"
- # Declaration
- i=0
- j=0
- tab = []
- moyenne = [0]
- statuses = self.api.GetUserTimeline(user = user, count = self.COUNT)
- # work out the number of points
- statuses.reverse()
- deltajours = (date(statuses[i-1].GetCreatedAt()).GetSerie() - date(statuses[0].GetCreatedAt()).GetSerie())
- nbrepoints = deltajours.days/gap
- print "Le delta de temps vaut %(a)u et il y a %(b)u intervalles de %(c)u jours" \
- %{'a': deltajours.days, 'b': nbrepoints, 'c': gap}
- # initialize the tab chart
- for i in range(deltajours.days):
- tab.append(0)
- # implement the chart if needed
- for status in statuses:
- text = status.text
- datum = date (status.GetCreatedAt())
- if ( text.find(txt) > 0 ):
- tab[(date(status.GetCreatedAt()).GetSerie() - date(statuses[0].GetCreatedAt()).GetSerie()).days - 1] = \
- tab[(date(status.GetCreatedAt()).GetSerie() - date(statuses[0].GetCreatedAt()).GetSerie()).days - 1] + 1
- j = j + 1
- print "Le mot \"" + txt + "\" a ete trouve %u fois dans les tweets" %j
- # work out the value during a gap of days
- j = 0
- for i in range(deltajours.days):
- moyenne[j] = moyenne[j] + tab[i]
- if i%gap == 0:
- j = j + 1
- moyenne.append(0)
- # write text and datas
- ff = open (filedest, 'w')
- ff.write("Nombre de fois ou "+txt+" a ete trouve :\n\nNombre\t\tDate\n\n")
- d = datetime.timedelta(days=gap)
- i = 1
- for value in moyenne :
- borne = date(statuses[0].GetCreatedAt()).GetSerie() + i * d
- texte = "%(a)u\t\t %(b)u/%(c)u/%(d)u\t\t%(e)u\n" \
- %{'a': i, 'b': borne.day, 'c': borne.month, 'd': borne.year, 'e': value}
- ff.write (texte)
- i = i + 1
- ff.close()
- return j
- #--------------------------------------------------------------------------------------
- session = dataUse('gabs48', 'XXX')
- session.TimeExploit (user = 'be_rail', gap = 15, filedest = 'resultat1.txt')
- session.Search (user = 'be_rail', gap = 15, txt = 'retard', filedest = 'resultat2.txt')
- session.Search (user = 'be_rail', gap = 15, txt = 'accident', filedest = 'resultat3.txt')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement