Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- import os
- import sys
- import pyttsx
- import json
- import smtplib
- import praw
- from gtts import gTTS
- import subprocess
- from whatsapp import Client
- import pyautogui
- import subprocess
- try:
- import apiai
- except ImportError:
- sys.path.append(
- os.path.join(os.path.dirname(os.path.realpath(__file__)), os.pardir)
- )
- import apiai
- CLIENT_ACCESS_TOKEN = 'e5a80edd956c4635a3c57ee6ce5c4d15'
- def main():
- reload(sys)
- sys.setdefaultencoding('utf8')
- user = ["4917664079691", "491723050055-1477403580"]
- admin = ["4917664079691", "4915772049092", "491723050055-1477403580"]
- def isUser(number):
- return str(number) in user
- def isAdmin(number):
- return str(number) in admin
- def addUser():
- if isAdmin(str(sys.argv[3])):
- user.append(str(data["result"]["parameters"]["number"]))
- returnMessage(str(data["result"]["parameters"]["number"]) + " was put into the list! New list: ")
- for p in user: returnMessage(str(p))
- else:
- pass
- def returnMessage(returnMessage):
- number = sys.argv[3]
- if "-" in str(number):
- try:
- if str(originalRequest).startswith("Saint,"):
- print("Startete mit Saint,")
- os.system('cd /root/yowsup-master && python yowsup-cli demos -M -s ' + str(number) + ' "' + str(returnMessage) + '" -c /root/Documents/config.yowsup')
- except:
- os.system('cd /root/yowsup-master && python yowsup-cli demos -e -c /root/Documents/config.yowsup')
- else:
- if isUser(number):
- os.system('cd /root/yowsup-master && python yowsup-cli demos -s ' + str(number) + ' "' + str(returnMessage) + '" -c /root/Documents/config.yowsup -M')
- else:
- pass
- def display(message):
- print (message)
- if sys.argv[2] == "sendback":
- returnMessage(message)
- #Declares email adresses for certain persons
- def getEmail(person):
- if person == "Robyn":
- return "robyn.bynbyn@googlemail.com"
- elif person == "Moritz":
- return "moritz.unseld@googlemail.com"
- elif person == "Valentin":
- return "valentin.unseld@googlemail.com"
- #Declares numbers for certain persons
- def getNumber(person):
- if person == "Lisa":
- return "4915172113626"
- elif person == "you":
- return "4917664079691"
- elif person == "Valentin":
- return "491708498710"
- elif person == "Oliver":
- return "4915738365886"
- elif person == "Robyn":
- return "4915772049092"
- elif person == "Pompe":
- return "4915733128358"
- #Function for sending an email
- def email():
- server = smtplib.SMTP('smtp.gmail.com', 587)
- server.starttls()
- server.login("moritz.unseld@googlemail.com", "xirlgqugraxsfqzf")
- msg = data["result"]["parameters"]["message"]
- target = getEmail(data["result"]["parameters"]["person"])
- server.sendmail("moritz.unseld@googlemail.com", target, msg)
- server.quit()
- print ("Log: Email has been sent to this: " + target)
- #Function for sending a whatsapp message
- def whatsapp():
- target = data["result"]["parameters"]["person"]
- #client = Client(login='4915153987509', password='sFgkrqxAbRTtZmLo23DdY4YlGS4=')
- phone_to = getNumber(target)
- msg = data["result"]["parameters"]["message"]
- os.system('cd /root/yowsup-master && python yowsup-cli demos -s ' + str(phone_to) + ' "' + str(msg)+ '" -c /root/Documents/config.yowsup')
- 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')
- display("Whatsapp message has been sent to " + target)
- #Function for displaying reddit submissions (Todo: add parameters for [controversial] [hot] [new] [rising] [top])
- def reddit():
- reddit = praw.Reddit(user_agent="python:BurningTurtle.Saint.Saint:v0.1 (by /u/Busubmission.titlerningTurtle)",
- client_id="yuSNjoLCBbZsVA",
- client_secret="xfA5TbiKtVWdXvVicWVkLOOOuHo")
- number = 3
- subreddit = "all"
- sorting = "hot"
- try:
- if (int(data["result"]["parameters"]["number"]) < 1000):
- number = int(data["result"]["parameters"]["number"])
- except:
- pass
- try:
- if data["result"]["parameters"]["sorting"] != " ":
- sorting = data["result"]["parameters"]["sorting"]
- #print("Sorting was set to " + sorting + " by API.AI")
- else:
- display("Sorting was set to hot because sorting was null")
- pass
- except:
- display("Sorting was set manually because it led to an error")
- pass
- subreddit = data["result"]["parameters"]["subreddit"]
- if sorting == "hot":
- display ("The " + str(number) + " hottest posts right now in " + subreddit + " are:")
- for submission in reddit.subreddit(subreddit).hot(limit=number):
- display(submission.title)
- elif sorting == "top":
- display ("The " + str(number) + " most upvoted posts right now in " + subreddit + " are:")
- for submission in reddit.subreddit(subreddit).top(limit=number):
- display(submission.title)
- elif sorting == "rising":
- display ("The " + str(number) + " most rising posts right now in " + subreddit + " are:")
- for submission in reddit.subreddit(subreddit).rising(limit=number):
- display(submission.title)
- elif sorting == "new":
- display ("The " + str(number) + " newest posts right now in " + subreddit + " are:")
- for submission in reddit.subreddit(subreddit).new(limit=number):
- display(submission.title)
- elif sorting == "controversial":
- display ("The " + str(number) + " most controversial posts right now in " + subreddit + " are:")
- for submission in reddit.subreddit(subreddit).controversial(limit=number):
- display(submission.title)
- def process():
- if data["result"]["action"] == "email":
- email()
- elif data["result"]["action"] == "reddit":
- reddit()
- elif data["result"]["action"] == "whatsapp":
- whatsapp()
- elif data["result"]["action"] == "addUser":
- addUser()
- #api.ai init
- ai = apiai.ApiAI(CLIENT_ACCESS_TOKEN)
- request = ai.text_request()
- request.lang = 'en'
- #Take argument as request
- if sys.argv[1].startswith("Saint,"):
- originalRequest = sys.argv[1]
- request.query = sys.argv[1][7:]
- else:
- request.query = sys.argv[1]
- #Get response as json
- response = request.getresponse()
- data = json.load(response)
- process()
- #Text and Whatsapp output
- display(data["result"]["fulfillment"]["messages"][0]["speech"])
- #Get possible acions and tts
- #tts = gTTS(text=data["result"]["fulfillment"]["messages"][0]["speech"], lang='en')
- #tts.save("/root/Desktop/tts.mp3")
- #subprocess.Popen(['mpg123', '-q', "/root/Desktop/tts.mp3"]).wait()
- os.system('cd /root/yowsup-master && python yowsup-cli demos -e -c /root/Documents/config.yowsup')
- if __name__ == '__main__':
- try:
- main()
- except Exception:
- pass
- #os.system('cd /root/yowsup-master && python yowsup-cli demos -e -c /root/Documents/config.yowsup')
Add Comment
Please, Sign In to add comment