Advertisement
Guest User

Untitled

a guest
Dec 14th, 2019
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.47 KB | None | 0 0
  1. # IMPORTAR AS LIBS
  2. import time
  3. import os
  4.  
  5. from selenium import webdriver
  6. from selenium.webdriver.common.keys import Keys
  7. from selenium.webdriver.common.action_chains import ActionChains
  8. from selenium.webdriver.chrome.options import Options
  9.  
  10. from chatterbot import ChatBot
  11. from chatterbot.trainers import ChatterBotCorpusTrainer
  12. from chatterbot.trainers import ListTrainer
  13.  
  14. import wikipedia
  15. wikipedia.set_lang('pt')
  16.  
  17. import json
  18. import requests
  19.  
  20. from PIL import Image #pip install Pillow
  21.  
  22. from imgurpython import ImgurClient #pip install imgurpython
  23.  
  24. # INSTACIAR CHATBOT
  25. chatbot = ChatBot('Ananda')
  26. trainer = ChatterBotCorpusTrainer(chatbot)
  27. trainer.train('chatterbot.corpus.portuguese')
  28. trainerer = ListTrainer(chatbot)
  29.  
  30. # ARMAZENAR DIRETORIO PRINCIPAL EM VARIAVEL
  31. dir_path = os.getcwd()
  32.  
  33. # INICIAR APLICAÇÂO
  34. driver = webdriver.Chrome(dir_path+'/chromedriver.exe')
  35. driver.get('https://web.whatsapp.com/')
  36. driver.implicitly_wait(15)
  37.  
  38. # FUNÇÕES BÁSICAS DE COMUNICAÇÃO
  39. def pegaConversa():
  40. try:
  41. post = driver.find_elements_by_class_name("_12pGw")
  42. ultimo = len(post) - 1
  43. texto = post[ultimo].find_elements_by_css_selector("span.selectable-text").text
  44. return texto
  45. except:
  46. pass
  47.  
  48. def enviaMensagem(mensagem):
  49. caixa_de_texto = driver.find_element_by_class_name('_3u328')
  50. valor = "*Ananda:* "+str(mensagem)
  51. for part in valor.split("\n"):
  52. caixa_de_texto.send_keys(part)
  53. ActionChains(driver).key_down(keys.SHIFT).key_down(keys.ENTER).key_up(keys.SHIFT).perform()
  54. time.sleep(0.5)
  55. botao_enviar = driver.find_elements_by_class_name('_3M-N-')
  56. botao_enviar.click()
  57.  
  58. def treinar(mensagem):
  59. resposta = 'Como respondo isso? me ensina, por favor...? utilize ;"'+str(mensagem)+'"'
  60. enviaMensagem(resposta)
  61. novo = []
  62. try:
  63. while True:
  64. ultima = pegaConversa()
  65. if ultima == "!":
  66. enviaMensagem("Você desativou meu aprendizado.")
  67. break
  68. elif ultima.replace(';','') != '' and ultima != mensagem and ultima[0] == ";" :
  69. auxiliar = ultima
  70. print(mensagem.lower().strip())
  71. print(ultima.replace(';','').lower().strip())
  72. novo.append(mensagem.lower().strip())
  73. novo.append(ultima.replace(';','').lower().strip())
  74. trainerer.train(novo)
  75. enviaMensagem("Pronto, aprendi! Obrigada <3")
  76. break
  77. except:
  78. pass
  79.  
  80. # WIKIPEDIA
  81. def wiki():
  82. try:
  83. busca = str(pegaConversa().strip().lower()[2:])
  84. mensagem = '{}'.format(wikipedia.summary(busca))
  85. enviaMensagem(mensagem)
  86. except:
  87. enviaMensagem('Não encontrei nada relevante para "{}" na Wikipedia em português.'.format(busca))
  88. # NOTICIAS
  89. def noticias():
  90. try:
  91. req = requests.get('https://newsapi.org/v2/top-headlines?country=br&category=technology&apiKey=ce2305ff589541e196cece9185b8d3f9')
  92. noticias = json.loads(req.text)
  93. for news in noticias['articles']:
  94. titulo = news['title']
  95. link = news['url']
  96. desc = news['description']
  97. mensagem = "{}\n{}\n{}".format(titulo,desc,link)
  98. enviaMensagem(mensagem)
  99. time.sleep(1)
  100. except:
  101. enviaMensagem('agora não...')
  102. pass
  103.  
  104. # VISÃO COMPUTACIONAL
  105. def visa():
  106. # CAPTAR A FOTO
  107. foto = driver.find_elements_by_class_name("_3mdDl")
  108. last = len(foto) - 1
  109. for img in foto[last].find_elements_by_tag_name("img"):
  110. try:
  111. #SALVAR IMAGEM
  112. img.screenshot("path/nome.png")
  113. # CONVERTER IMG
  114. im = Image.open("path/nome.png")
  115. rgb = im.convert("RGB")
  116. rgb.save("path/nome.png")
  117. break
  118. except:
  119. enviaMensagem("Agora não...")
  120. break
  121. # PUBLICAR FOTO NA WEB
  122. client_id = 'b3255c28668c514'
  123. client_secret = '2b4f4820b2f8ddcc83a82335194733f929af8cd2'
  124. client = ImgurClient(client_id, client_secret)
  125. image = client.upload_from_path("path/nome.png", anon=False)
  126. # API AZURE FACE
  127. subscription_key = '8c06eda47b6c413abfa3c7ab87250511'
  128. assert subscription_key
  129. face_api_url = 'https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect'
  130. image_url = Image['link']
  131. headers = {'Ocp-Apim-Subscription-Key': subscription_key}
  132. params = {'returnFaceId': 'true','returnFaceLandmarks': 'false','returnFaceAttributes': 'age,gender',}
  133. respo = requests.post(face_api_url, params=params,headers=headers, json={"url": image_url})
  134. print(json.dumps(respo.json()))
  135. # ENVIAR RESULTADO DA API
  136. try:
  137. genero = None
  138. if (respo.json()[0]["faceAttributes"]["gender"] == "male"):
  139. genero = "Homem"
  140. else:
  141. genero = "Mulher"
  142. enviaMensagem("{}, {} anos.".format(genero,int(respo.json()[0]["faceAttributes"]["age"])))
  143. except:
  144. enviaMensagem("Rosto não reconhecido.")
  145.  
  146. # BLOCO PRINCIPAL DE EXECUÇÃO
  147. salva = pegaConversa()
  148. while True:
  149. try:
  150. if pegaConversa() != "" and pegaConversa()[:8] != "Ananda: " and pegaConversa() != salva and pegaConversa().strip() != "!" and pegaConversa().strip() != ";" and pegaConversa().strip().lower()[:2] != "W: " and pegaConversa().strip().lower() != "noticias" and pegaConversa().strip().lower() != "notícias" and pegaConversa().strip().lower() != "visão computacional":
  151. texto = str(pegaConversa().strip().lower())
  152. response = chatbot.get_response(texto)
  153. if float(respose.confidence) < 0.2:
  154. treinar(pegaConversa())
  155. else:
  156. enviaMensagem(response)
  157. elif pegaConversa().strip().lower()[:2] == "w:":
  158. wiki()
  159. elif pegaConversa().strip().lower() == "noticias" or pegaConversa().strip().lower() == "notícias":
  160. noticias()
  161. elif pegaConversa().strip().lower() == "visão computacional":
  162. enviaMensagem("Aguardando envio da imagem...")
  163. time.sleep(15)
  164. visa()
  165. pass
  166. else:
  167. pass
  168. except:
  169. pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement