def main():
    """ Application entry point.
    """
    # Configuring log
    logging.basicConfig(level=logging.INFO,
                        format='%(asctime)s %(message)s',
                        datefmt='%m/%d/%Y %I:%M:%S %p')

    # Getting environment variables
    logging.info('Loading environment variables...')
    bot_token = os.environ['BOT_TOKEN']
    az_client_id = os.environ['AZ_CLIENT_ID']
    az_client_secret = os.environ['AZ_CLIENT_SECRET']

    # Creating the translator
    logging.info('Creating translator...')
    mstranslator = microsofttranslator.Translator(az_client_id,
                                                  az_client_secret)
    # Creating the bot
    logging.info('Creating the bot...')
    bot = handlers.create_bot(bot_token, mstranslator)

    # Starting the main loop
    loop = asyncio.get_event_loop()

    if os.environ.get('IS_PROD'):
        url = os.environ['BOT_BASE_URL']
        url_path = os.environ['BOT_WEBHOOK_PATH']
        port = os.environ['PORT']

        message_queue = asyncio.Queue()  # channel between web app and bot
        server_task = server_init(loop, bot, message_queue, url, url_path,
                                  port)
        loop.run_until_complete(server_task)
        logging.info('Starting the bot...')
        loop.create_task(bot.message_loop(source=message_queue))
    else:
        logging.info('Deleting webhook')
        loop.create_task(bot.setWebhook())  # deleting any webhook available
        logging.info('Starting the bot...')
        loop.create_task(bot.message_loop())  # starting bot pooling

    try:
        loop.run_forever()
        logging.info('Bot listening...')
    except KeyboardInterrupt:
        pass
Exemple #2
0
# cmdline arguments are of the form: MSTranslate.py code
import sys
import microsofttranslator

translator = microsofttranslator.Translator("name", "your-password")

f = open("speech.txt", "r")
text = str(f.read())
f.close()

reload(sys)
sys.setdefaultencoding('utf-8')

code = sys.argv[1]

try:
    s = translator.translate(text.encode('utf-8'), code)
    print s.encode('utf-8')
except microsofttranslator.TranslateApiException:
    print 'Server busy\nTry again later\nInconvenience Regretted\n\n\n'
finally:
    print 'Thank you for using MSTranslator.py\nBye\n'

f = open("transText.txt", "w")
f.write(s.encode('utf-8'))
f.close()
Exemple #3
0
def get_translator():
    import microsofttranslator
    return microsofttranslator.Translator(settings.MS_TRANSLATE_CLIENT_ID,
                                          settings.MS_TRANSLATE_CLIENT_SECRET)
Exemple #4
0
import time
from twisted.internet import threads
from unicodescript import script

import plugins as p

plugin_config = YAMLConfig("cfg/translator.config.yml", {
    "translationService": 0,
    "msTranslateID": '',
    "msTranslateSecret": ''
})
if plugin_config['translationService'] == 1 and plugin_config[
        'msTranslateID'] != '' and plugin_config['msTranslateSecret'] != '':
    import microsofttranslator
    provider = "Bing"
    translator = microsofttranslator.Translator(
        plugin_config['msTranslateID'], plugin_config['msTranslateSecret'])
    lastKeyTime = time.time()
else:
    import goslate
    provider = "Google"
    translator = goslate.Goslate()


@p.on_initial_connect_hook
def create_preferences(client):
    """
    :type client: ShipProxy
    """
    if client.playerId in data.clients.connectedClients:
        user_prefs = data.clients.connectedClients[client.playerId].preferences
        if not user_prefs.has_preference('translate_chat'):
# cmdline arguments are of the form: MSTranslate.py code
import sys
import microsofttranslator

translator = microsofttranslator.Translator('''client_id''',
                                            '''client_secret_key''')

f = open("speech.txt", "r")
text = str(f.read())
f.close()

reload(sys)
sys.setdefaultencoding('utf-8')

code = sys.argv[1]

try:
    s = translator.translate(text.encode('utf-8'), code)
    print s.encode('utf-8')
except microsofttranslator.TranslateApiException:
    print 'Server busy\nTry again later\nInconvenience Regretted\n\n\n'
finally:
    print 'Thank you for using MSTranslator.py\nBye\n'

f = open("transText.txt", "w")
f.write(s.encode('utf-8'))
f.close()
Exemple #6
0
 def __init__(self, **kwargs):
     self.KEY = ENGINE_CONFIG.get_engine('bing')['key']
     self.token = None
     self.translator = microsofttranslator.Translator(
         None, None)  # ignore old client api/id
Exemple #7
0
 def __init__(self, client_id, client_secret):
     self._translator = _microsofttranslator.Translator(
         client_id, client_secret)
Exemple #8
0
def main():
    global handlers, alaises, CAT_API_KEY, flickr_api, mstranslate_api

    # Deal with the configuration file.
    config = configparser.ConfigParser()

    # Default Value
    DEF_VAL = 'REPLACE_ME'

    # Create it, if it doesn't exist.
    if not os.path.isfile("config.txt"):
        print "No config file found. Generating one - please fill out information in " + os.path.join(
            os.getcwd(), "config.txt")
        with open('config.txt', 'w') as configfile:
            config['Discord'] = {'email': DEF_VAL, 'password': DEF_VAL}
            config['TheCatAPI.com'] = {'api_key': DEF_VAL}
            config['Twitter'] = {
                "consumer_key": DEF_VAL,
                "consumer_secret": DEF_VAL,
                "access_token_key": DEF_VAL,
                "access_token_secret": DEF_VAL
            }
            config['Twitter Feed'] = {'default_channel': "general"}
            config['Flickr'] = {
                'flickr_api_key': DEF_VAL,
                'flickr_secret_key': DEF_VAL
            }
            config['Microsoft Translate'] = {
                'api_key': DEF_VAL,
                'secret_key': DEF_VAL
            }
            config.write(configfile)
        return

    # Load in configuration information
    config.read('config.txt')
    email = config['Discord']['email']
    password = config['Discord']['password']
    CAT_API_KEY = config['TheCatAPI.com']['api_key']

    twitter_consumer_key = config['Twitter']['consumer_key']
    twitter_consumer_secret = config['Twitter']['consumer_secret']
    twitter_access_token_key = config['Twitter']['access_token_key']
    twitter_access_token_secret = config['Twitter']['access_token_secret']

    twitter_default_channel = config['Twitter Feed']['default_channel']

    FLICKR_API_KEY = config['Flickr']['api_key']
    FLICKR_SECRET_KEY = config['Flickr']['secret_key']

    MICROSOFT_TRANSLATE_API = config['Microsoft Translate']['api_key']
    MICROSOFT_TRANSLATE_SECRET = config['Microsoft Translate']['secret_key']

    mstranslate_api = microsofttranslator.Translator(
        MICROSOFT_TRANSLATE_API, MICROSOFT_TRANSLATE_SECRET)

    to_fill = [
        email, password, CAT_API_KEY, twitter_consumer_key,
        twitter_consumer_secret, twitter_access_token_key,
        twitter_access_token_secret, FLICKR_API_KEY, FLICKR_SECRET_KEY
    ]

    # Prevent execution if the configuration file isn't complete
    for arg in to_fill:
        if arg == DEF_VAL:
            print "config.txt has not been fully completed. Fully fill out config.txt and re-run."
            return

    # Create necessary files for data tracking
    # Boats (!boat)
    if not os.path.isfile("boats.dat"):
        with open('boats.dat', 'w') as f:
            f.write("{}")

    # Seen logs (!seen)
    if not os.path.isfile("seen.dat"):
        with open('seen.dat', 'w') as f:
            f.write("{}")

    # Populate the handler dictionary with function references.
    if not handlers:
        handlers = {}
        handlers["!boat"] = cmd_boat
        handlers["!cat"] = cmd_cat
        handlers["!catgif"] = cmd_catgif
        handlers["!upboat"] = cmd_upboat
        handlers["!downboat"] = cmd_downboat
        handlers["!help"] = cmd_help
        handlers["!lookup"] = cmd_lookup
        handlers["!poll"] = cmd_poll
        handlers["!seen"] = cmd_seen
        handlers["!test"] = cmd_test
        handlers["!vote"] = cmd_vote
        handlers["!wipe"] = cmd_wipe
        handlers["!wipebot"] = cmd_wipebot

        handlers["!random"] = cmd_random
        handlers["!roll"] = cmd_roll
        handlers["!coinflip"] = cmd_flip
        handlers["!gifcat"] = cmd_catgif

        handlers["!flickr"] = cmd_flickr
        handlers["!flickrcover"] = cmd_flickrcover
        handlers["!debug"] = cmd_debug
        #handlers["!strip"] = cmd_strip

    # Twitter listener
    tp = TwitterPoll(twitter_access_token_key,
                     twitter_access_token_secret,
                     twitter_consumer_key,
                     twitter_consumer_secret,
                     polling_seconds=70)

    @tp.register_event("new_tweet")
    def new_tweet(user, tweet, tweetdata):
        # Map twitter users to channels
        user = user.lower()
        default = get_channel(client, twitter_default_channel)
        channels = {}

        for (each_key, each_val) in config.items('Twitter Feed'):
            if each_key == 'default_channel':
                continue
            channels[each_key.lower()] = [
                get_channel(client, cname.strip())
                for cname in each_val.split(",")
            ]

        # Pre-processing
        t_content = tweet
        t_translated = None

        t_nourl = re.sub(r"(?:https?\://)\S+", "URL", t_content)
        t_cleaned = ''.join(e for e in t_nourl if e.isalnum() or e in (' '))

        direct_link = "https://twitter.com/Ti_DiscordBot/status/" + tweetdata[
            'id_str']

        if mstranslate_api.detect_language(t_cleaned) != u'en':
            t_translated = mstranslate_api.translate(t_nourl, 'en')

        msg = direct_link
        #if t_translated:
        #    msg += "\n  *Auto-Translate: " + t_translated.encode('utf-8') + "*"

        # Get the list of channels assigned to the user (or a default), remove any that don't exist
        for channel in filter(
                lambda x: x is not None,
            [default] if user not in channels else channels[user]):
            client.send_message(channel, msg)

    @tp.register_event("no_tweets")
    def no_tweets():
        return

    tp.start()

    # Set the flicker API
    flickr_api = flickrapi.FlickrAPI(FLICKR_API_KEY, FLICKR_SECRET_KEY)
    if not flickr_api.token_valid(perms=unicode("write")):
        flickr_api.get_request_token(oauth_callback=unicode('oob'))
        authorize_url = flickr_api.auth_url(perms=unicode('write'))
        print "!!!!!!!!!"
        print "FLICKR TOKEN INVALID. Authenticate here: " + authorize_url
        verifier = unicode(raw_input('Verifier code: '))
        flickr_api.get_access_token(unicode(verifier))

    # Connect to Discord, and begin listening to events.
    client.login(email, password)
    try:
        client.run()  #This blocks the main thread.
    except KeyboardInterrupt:
        print("\nti-bot: Closing API Client..."),
        client.logout()
        print("Done.")
        print("ti-bot: Closing Twitter Listener..."),
        print "Done."
        tp.stop()
    except:
        exc_type, exc_value, exc_traceback = sys.exc_info()
        traceback.print_exception(exc_type,
                                  exc_value,
                                  exc_traceback,
                                  limit=None,
                                  file=sys.stdout)
    print "SEE YOU SPACE COWBOY..."
Exemple #9
0
# cmdline arguments are of the form: MSTranslate.py code
import sys
import microsofttranslator

translator=microsofttranslator.Translator("UnivLangTransApp_1", "pbqz/lPGg47fU0GxnkstdPSMTlyoD/KRwYW7wvCp2DQ=")

f=open("speech.txt","r")
text=str(f.read())
f.close()

reload(sys)
sys.setdefaultencoding('utf-8')

code=sys.argv[1]

try:
	s=translator.translate(text.encode('utf-8'),code)
	print s.encode('utf-8')
except microsofttranslator.TranslateApiException:
	print 'Server busy\nTry again later\nInconvenience Regretted\n\n\n'
finally:
	print 'Thank you for using MSTranslator.py\nBye\n'

f=open("transText.txt","w")
f.write(s.encode('utf-8'))
f.close()