Guest User

Untitled

a guest
Dec 5th, 2016
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.83 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import os
  5. import sys
  6. import pyttsx
  7. import json
  8. import smtplib
  9. import praw
  10. from gtts import gTTS
  11. import subprocess
  12. from whatsapp import Client
  13. import pyautogui
  14. import subprocess
  15.  
  16. try:
  17.     import apiai
  18. except ImportError:
  19.     sys.path.append(
  20.         os.path.join(os.path.dirname(os.path.realpath(__file__)), os.pardir)
  21.     )
  22.     import apiai
  23.  
  24. CLIENT_ACCESS_TOKEN = 'e5a80edd956c4635a3c57ee6ce5c4d15'
  25.  
  26. def main():
  27.  
  28.     reload(sys)
  29.     sys.setdefaultencoding('utf8')
  30.  
  31.     user = ["4917664079691", "491723050055-1477403580"]
  32.     admin = ["4917664079691", "4915772049092", "491723050055-1477403580"]
  33.  
  34.     def isUser(number):
  35.     return str(number) in user
  36.  
  37.     def isAdmin(number):
  38.     return str(number) in admin
  39.  
  40.     def addUser():
  41.     if isAdmin(str(sys.argv[3])):
  42.         user.append(str(data["result"]["parameters"]["number"]))
  43.         returnMessage(str(data["result"]["parameters"]["number"]) + " was put into the list! New list: ")
  44.         for p in user: returnMessage(str(p))
  45.     else:
  46.         pass
  47.  
  48.     def returnMessage(returnMessage):
  49.     number = sys.argv[3]
  50.     if "-" in str(number):
  51.         try:
  52.             if str(originalRequest).startswith("Saint,"):
  53.                 print("Startete mit Saint,")
  54.                 os.system('cd /root/yowsup-master && python yowsup-cli demos -M -s ' + str(number) + ' "' + str(returnMessage) + '" -c /root/Documents/config.yowsup')
  55.         except:
  56.             os.system('cd /root/yowsup-master && python yowsup-cli demos -e -c /root/Documents/config.yowsup')
  57.     else:
  58.         if isUser(number):
  59.             os.system('cd /root/yowsup-master && python yowsup-cli demos -s ' + str(number) + ' "' + str(returnMessage) + '" -c /root/Documents/config.yowsup -M')
  60.         else:
  61.             pass
  62.  
  63.     def display(message):
  64.     print (message)
  65.     if sys.argv[2] == "sendback":
  66.         returnMessage(message)
  67.  
  68.     #Declares email adresses for certain persons
  69.     def getEmail(person):
  70.     if person == "Robyn":
  71.         return "robyn.bynbyn@googlemail.com"
  72.     elif person == "Moritz":
  73.         return "moritz.unseld@googlemail.com"
  74.     elif person == "Valentin":
  75.         return "valentin.unseld@googlemail.com"
  76.    
  77.     #Declares numbers for certain persons
  78.     def getNumber(person):
  79.     if person == "Lisa":
  80.         return "4915172113626"
  81.     elif person == "you":
  82.         return "4917664079691"
  83.     elif person == "Valentin":
  84.         return "491708498710"
  85.     elif person == "Oliver":
  86.         return "4915738365886"
  87.     elif person == "Robyn":
  88.         return "4915772049092"
  89.     elif person == "Pompe":
  90.         return "4915733128358"
  91.  
  92.     #Function for sending an email
  93.     def email():
  94.     server = smtplib.SMTP('smtp.gmail.com', 587)
  95.     server.starttls()
  96.     server.login("moritz.unseld@googlemail.com", "xirlgqugraxsfqzf")
  97.     msg = data["result"]["parameters"]["message"]
  98.     target = getEmail(data["result"]["parameters"]["person"])
  99.     server.sendmail("moritz.unseld@googlemail.com", target, msg)
  100.     server.quit()
  101.     print ("Log: Email has been sent to this: " + target)
  102.  
  103.     #Function for sending a whatsapp message
  104.     def whatsapp():
  105.     target = data["result"]["parameters"]["person"]
  106.     #client = Client(login='4915153987509', password='sFgkrqxAbRTtZmLo23DdY4YlGS4=')
  107.     phone_to = getNumber(target)
  108.     msg = data["result"]["parameters"]["message"]
  109.     os.system('cd /root/yowsup-master && python yowsup-cli demos -s ' + str(phone_to) + ' "' + str(msg)+ '" -c /root/Documents/config.yowsup')
  110.     os.system('cd /root/yowsup-master && python yowsup-cli demos -s ' + str(phone_to) + ' "This messsage was sent by Saint in early alpha, please note that problems may occur." -c /root/Documents/config.yowsup')
  111.     display("Whatsapp message has been sent to " + target)
  112.  
  113.  
  114.     #Function for displaying reddit submissions (Todo: add parameters for [controversial] [hot] [new] [rising] [top])
  115.     def reddit():
  116.     reddit = praw.Reddit(user_agent="python:BurningTurtle.Saint.Saint:v0.1 (by /u/Busubmission.titlerningTurtle)",
  117.                          client_id="yuSNjoLCBbZsVA",
  118.                          client_secret="xfA5TbiKtVWdXvVicWVkLOOOuHo")
  119.     number = 3
  120.     subreddit = "all"
  121.     sorting = "hot"
  122.  
  123.     try:
  124.         if (int(data["result"]["parameters"]["number"]) < 1000):
  125.             number = int(data["result"]["parameters"]["number"])
  126.     except:
  127.         pass
  128.  
  129.     try:
  130.         if data["result"]["parameters"]["sorting"] != " ":
  131.             sorting = data["result"]["parameters"]["sorting"]
  132.             #print("Sorting was set to " + sorting + " by API.AI")
  133.         else:
  134.             display("Sorting was set to hot because sorting was null")
  135.             pass
  136.     except:
  137.         display("Sorting was set manually because it led to an error")
  138.         pass
  139.  
  140.     subreddit = data["result"]["parameters"]["subreddit"]
  141.    
  142.     if sorting == "hot":
  143.         display ("The " + str(number) + " hottest posts right now in " + subreddit + " are:")
  144.         for submission in reddit.subreddit(subreddit).hot(limit=number):
  145.             display(submission.title)
  146.  
  147.     elif sorting == "top":
  148.         display ("The " + str(number) + " most upvoted posts right now in " + subreddit + " are:")
  149.         for submission in reddit.subreddit(subreddit).top(limit=number):
  150.             display(submission.title)
  151.  
  152.     elif sorting == "rising":
  153.         display ("The " + str(number) + " most rising posts right now in " + subreddit + " are:")
  154.         for submission in reddit.subreddit(subreddit).rising(limit=number):
  155.             display(submission.title)
  156.  
  157.     elif sorting == "new":
  158.         display ("The " + str(number) + " newest posts right now in " + subreddit + " are:")
  159.         for submission in reddit.subreddit(subreddit).new(limit=number):
  160.             display(submission.title)
  161.  
  162.     elif sorting == "controversial":
  163.         display ("The " + str(number) + " most controversial posts right now in " + subreddit + " are:")
  164.         for submission in reddit.subreddit(subreddit).controversial(limit=number):
  165.             display(submission.title)
  166.  
  167.  
  168.     def process():
  169.     if data["result"]["action"] == "email":
  170.         email()
  171.     elif data["result"]["action"] == "reddit":
  172.         reddit()
  173.     elif data["result"]["action"] == "whatsapp":
  174.         whatsapp()
  175.     elif data["result"]["action"] == "addUser":
  176.         addUser()
  177.  
  178.     #api.ai init
  179.     ai = apiai.ApiAI(CLIENT_ACCESS_TOKEN)
  180.     request = ai.text_request()
  181.     request.lang = 'en'
  182.  
  183.     #Take argument as request
  184.     if sys.argv[1].startswith("Saint,"):
  185.     originalRequest = sys.argv[1]
  186.         request.query = sys.argv[1][7:]
  187.     else:
  188.     request.query = sys.argv[1]
  189.  
  190.     #Get response as json
  191.     response = request.getresponse()
  192.     data = json.load(response)
  193.     process()
  194.  
  195.     #Text and Whatsapp output
  196.     display(data["result"]["fulfillment"]["messages"][0]["speech"])
  197.     #Get possible acions and tts
  198.     #tts = gTTS(text=data["result"]["fulfillment"]["messages"][0]["speech"], lang='en')
  199.     #tts.save("/root/Desktop/tts.mp3")
  200.     #subprocess.Popen(['mpg123', '-q', "/root/Desktop/tts.mp3"]).wait()
  201.    
  202.     os.system('cd /root/yowsup-master && python yowsup-cli demos -e -c /root/Documents/config.yowsup')
  203.  
  204. if __name__ == '__main__':
  205.     try:
  206.         main()
  207.     except Exception:
  208.     pass
  209.     #os.system('cd /root/yowsup-master && python yowsup-cli demos -e -c /root/Documents/config.yowsup')
Add Comment
Please, Sign In to add comment