-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTreinador.py
144 lines (122 loc) · 6.42 KB
/
Treinador.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# -*- coding: utf-8 -*-
from geopy.geocoders import Nominatim
import tweepy
OAUTH_TOKEN = '865998132517236736-Bn4F0J8agczPJOSE9CzTOzqkrvuTp75'
OAUTH_SECRET = 'ziX22stOPOkCZi4vQnVLQXOWoUDGeOBaNMu64mDVdxgcq'
CONSUMER_KEY = 'Jk1j59W1pzteRMVy85SRVKQZN'
CONSUMER_SECRET = 'C437hqnxUEhlLfcikKK0aOJjENEDyQ0mhg3xMxt2r9QLZIZK8U'
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(OAUTH_TOKEN, OAUTH_SECRET)
api = tweepy.API(auth)
geolocator = Nominatim()
def buscarTweets(query, quantidade):
input_marca = input("Qual a marca?\n 1 - Uber\n 2 - Cabify \n 3 - 99pop >>>>> ")
if (input_marca == "1"):
id_marca = 1
marca = "uber"
elif (input_marca == "2"):
id_marca = 2
marca = "cabify"
elif (input_marca == "3"):
id_marca = 3
marca = "99pop"
else:
print("MARCA INCORRETA")
return None
tweet = tweepy.Cursor(api.search, q=query, lang="pt").items(quantidade)
arq = open("doc.py", "w",encoding="utf8")
arq.write("import persistencia.DataBase as dao\n")
for i in tweet:
nome_usuario = str(i.user.name).replace("\n", " ").replace('"','')
screen_name_usuario = str(i.user.screen_name).replace("\n", " ").replace('"','')
lugar_usuario = i.user.location
id_tweet = i.id
texto_tweet = str(i.text).replace("\n", " ").replace('"','')
created_at_tweet = i.created_at
hashtags = i.entities.get('hashtags')
source_tweet = i.source
coordinate = ""
nome_lugar = ""
location = ""
if (i.place != None):
if (i.place.place_type == "city"):
nome_lugar = i.place.name
location = geolocator.geocode(i.place.full_name)
if i.text != None:
printTexto = i.text.replace("\n"," ")
try:
print(printTexto)
except:
print(printTexto.encode("utf8"))
sentimento = 5
while (sentimento not in (1,2,3)):
sentimento = int(input("Qual o sentimento deste tweet?\n 1 - Positivo\n 2 - Negativo \n 3 - Neutro >>>>> "))
if sentimento not in(1,2,3):
print("[*ERRO*]Sentimento Inexistente")
if texto_tweet.find("'") != -1:
texto_tweet.replace("'",":")
print("houve troca")
texto_correto = texto_tweet
nome_correto = nome_usuario
screen_name_correto = screen_name_usuario
lugar_correto = lugar_usuario
arq.write("try:\n")
if lugar_usuario != "":
arq.write(' dao.Executa_SQL("insert into voudeque.usuario(nome, username, nome_lugar) values(')
arq.write("'" + str(nome_correto) + "', '" + str(screen_name_correto) + "', '" + str(lugar_correto) + "'")
arq.write(');")\n')
else:
arq.write(' dao.Executa_SQL("insert into voudeque.usuario(nome, username) values(')
arq.write("'" + str(nome_correto) + "', '" + str(screen_name_correto) + "'")
arq.write(');")\n')
arq.write(' id_usuario = dao.Busca_SQL("select id from voudeque.usuario where usuario.nome = ')
arq.write("'" + str(nome_correto) + "'")
arq.write(';")[0][0]\n')
if (i.place != None):
coordenadas = i.place.bounding_box.coordinates[0][0]
local = geolocator.reverse(query=str(coordenadas[1]) + ", " + str(coordenadas[0]), language="pt")
try:
cidade = local.raw["address"]["city"]
arq.write(' dao.Executa_SQL("insert into voudeque.lugar(latitude, longitude, nome_lugar) values(')
arq.write("'" + str(coordenadas[1]) + "', '" + str(coordenadas[0]) + "', '" + str(cidade).lower() + "'")
arq.write(');")\n')
arq.write(' id_lugar = dao.Busca_SQL("select id from voudeque.lugar where nome_lugar = ')
arq.write("'" + str(cidade).lower() + "'" + " and latitude = " + "'" + str(
coordenadas[1]) + "'" + "and longitude = " + "'" + str(coordenadas[0]) + "'")
arq.write(';")[0][0]\n')
arq.write(' id_lugar = dao.Busca_SQL("select id from voudeque.lugar where lugar.nome_lugar = ')
arq.write("'" + str(cidade).lower() + "'")
arq.write(';")[0][0]\n')
except:
print("local sem cidade")
arq.write(" id_lugar = 'null' \n")
else:
arq.write(" id_lugar = 'null' \n")
arq.write(' str_id_usuario = str(id_usuario)\n')
arq.write(' str_id_lugar = str(id_lugar)\n')
arq.write(' dao.Executa_SQL("insert into voudeque.tweet(id, texto, dataHora, id_sentimento, id_usuario, id_lugar) values(')
arq.write(str(id_tweet) + ", '" + str(texto_correto) + "', '" + str(created_at_tweet) + "', '" + str(sentimento) + "', ")
arq.write('" + str_id_usuario + ", " + str_id_lugar + ')
arq.write('");")\n')
arq.write(' dao.Executa_SQL("insert into voudeque.tweet_marca(id_tweet, id_marca) values(')
arq.write(str(id_tweet) + ", " + str(id_marca))
arq.write(');")\n')
for j in i.entities.get("hashtags"):
if marca in j.get("text").lower():
arq.write(' dao.Executa_SQL("insert into voudeque.hashtag(texto,id_marca) values(')
arq.write("'" + str(j.get("text").lower()) + "', '" + str(id_marca) + "'")
arq.write(');")\n')
else:
arq.write(' dao.Executa_SQL("insert into voudeque.hashtag(texto) values(')
arq.write("'" + str(j.get("text").lower()) + "'")
arq.write(');")\n')
arq.write("except:\n print('Erro')\n")
arq.write("dao.Executa_SQL('DELETE FROM voudeque.usuario WHERE (id) IN (select * from(select usuario.id from voudeque.usuario left join voudeque.tweet on voudeque.usuario.id = voudeque.tweet.id_usuario where voudeque.tweet.id_usuario is null) as p);')\n")
arq.write("dao.Executa_SQL('DELETE FROM voudeque.lugar WHERE (id) IN (select * from(select lugar.id from voudeque.lugar left join voudeque.tweet on voudeque.lugar.id = voudeque.tweet.id_lugar where voudeque.tweet.id_lugar is null) as p);')\n")
arq.close()
buscarTweets("#cabify",5)
def buscarNovasHashtags(hashtag,listaDeMarcas):
for i in listaDeMarcas:
if hashtag.lower.contain(i):
id = "select id from voudeque.marca where nome = '" + str(i) + "'"
return id