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
# 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()
def get_translator(): import microsofttranslator return microsofttranslator.Translator(settings.MS_TRANSLATE_CLIENT_ID, settings.MS_TRANSLATE_CLIENT_SECRET)
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()
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
def __init__(self, client_id, client_secret): self._translator = _microsofttranslator.Translator( client_id, client_secret)
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..."
# 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()