def send_webpage_screenshot(bot, event, url, viewportsize='1280x1024'): filename = 'screenie.png' cliprectsize = '0x0x' + viewportsize; try: cmd = ['capturejs', '--uri', url, '--viewportsize', viewportsize, '--output', filename, '--cliprect', cliprectsize] output = subprocess.check_output(cmd, stderr=subprocess.STDOUT) output = output.decode(encoding='UTF-8') if output != '': bot.send_message(event.conv, output) image_id = yield from UtilBot.upload_image(bot, filename) send_image(bot, event, image_id) os.remove(filename) except http.client.BadStatusLine as e: display.stop() bot.send_message(event.conv, 'Error: BadStatusLine')
def load_aliased_images(bot, event, *args): file_exception = False try: imageids_filename = 'imageids.json' imageids = json.loads(open(imageids_filename, encoding='utf-8').read(), encoding='utf-8') except IOError as e: if e.errno == errno.ENOENT: imageids = {} else: print('Exception:') print(str(e)) file_exception = True # loop through values in image_aliases.json aliases = load_json('image_aliases.json') for v in aliases.values(): print('V = ' + str(v)) for url in v if not isinstance(v, str) else [v]: print('URL = ' + url) # if url is not in imageids, upload it and store filename,id image_id = imageids.get(url) if image_id is None: print('URL = ' + url) filename = UtilBot.download_image(url, 'images') image_id = yield from UtilBot.upload_image(bot, filename) if not file_exception: imageids[url] = image_id with open(imageids_filename, 'w') as f: json.dump(imageids, f, indent=2, sort_keys=True) os.remove(filename)
def load_images_from_folder(bot, event, *args): folder = args[0] # loop through folder for filename in glob(os.path.join('images', folder, '*')): # if filename not in imageids, upload it and store filename,id filetail = os.path.split(filename)[1] filehead = os.path.split(os.path.split(filename)[0])[1] filekey = os.path.join(filehead, filetail) print(filekey) image_id = UtilDB.get_imageid_for_filename(filekey) if image_id is None: bot.send_message(event.conv, "Uploading {}".format(filekey)) image_id = yield from UtilBot.upload_image(bot, filename) UtilDB.set_imageid_for_filename(filekey, image_id) ####os.remove(filename) UtilDB.set_alias_for_filename(filekey, folder) bot.send_message(event.conv, "Done.")
def color(bot, event, *args): filename = 'color.png' cmd = ['convert', '-size', '500x500', 'xc:%s' % ' '.join(args), filename] try: output = subprocess.check_output(cmd, stderr=subprocess.STDOUT) output = output.decode(encoding='UTF-8') if output != '': bot.send_message(event.conv, output) image_id = yield from UtilBot.upload_image(bot, filename) send_image(bot, event, image_id) os.remove(filename) except subprocess.CalledProcessError as e: output = e.output.decode(encoding='UTF-8') if output != '': bot.send_message(event.conv, output)
def latex(bot, event, *args): if ''.join(args) == '?': segments = UtilBot.text_to_segments("""\ **LaTeX** Usage: /latex <LaTeX code> Purpose: Renders LaTeX code to an image and sends it """) bot.send_message_segments(event.conv, segments) else: cmd = "texvc /tmp images '" + \ ' '.join(args).replace("'", "'\\''") + \ "' utf-8 'rgb 1.0 1.0 1.0'" print('args: ') print(cmd) output = subprocess.check_output(cmd, shell=True) output = output.decode(encoding='UTF-8') print(output) filename = output[1:33] + '.png' filename = os.path.join('images', filename) image_id = yield from UtilBot.upload_image(bot, filename) send_image(bot, event, image_id)
def greentext(bot, event, *args): """ **Greentext** Usage: /greentext <text> Purpose: makes your text green and adds an epic maymay arrow, add more maymay arrows for more fun """ filename = 'greentext.png' message = ' '.join(args) if message[0] == '>': message = message[1:] message = message.replace('>', '\n>') message = '>' + message print(message) cmd = ['convert', '-size', '164x', '-font', '/usr/share/fonts/TTF/arial.ttf', '-pointsize', '13', '-fill', '#789922', '-background', '#ffffee', 'caption:%s' % message, filename] try: output = subprocess.check_output(cmd, stderr=subprocess.STDOUT) output = output.decode(encoding='UTF-8') if output != '': bot.send_message(event.conv, output) image_id = yield from UtilBot.upload_image(bot, filename) send_image(bot, event, image_id) os.remove(filename) except subprocess.CalledProcessError as e: output = e.output.decode(encoding='UTF-8') if output != '': bot.send_message(event.conv, output)
def img(bot, event, *args): if len(args) > 0 and args[0] == 'list': aliases = UtilDB.get_list_of_aliases() segments = [] for alias in aliases: segments.append(hangups.ChatMessageSegment(alias)) segments.append(hangups.ChatMessageSegment('\n', hangups.SegmentType.LINE_BREAK)) bot.send_message_segments(event.conv, segments) elif len(args) > 0 and args[0] == 'add': if len(args) < 3: bot.send_message(event.conv, "Error: not enough arguments") return # alias is all arguments except the first and last alias = ''.join(args[1:len(args)-1]) # strip spaces and non-alphanumeric characters alias = ''.join(filter(str.isalnum, alias)) alias = alias.lower() url = args[len(args)-1] if UtilDB.get_urls_for_alias(alias) is not None: bot.send_message(event.conv, "Error: that alias already exists") return print(str(is_valid_url(url))) if not is_valid_url(url): bot.send_message(event.conv, "Error: invalid URL") return UtilDB.set_alias_for_url(url, alias) bot.send_message(event.conv, "Alias {alias} saved with URL {url}".format(alias=alias,url=url)) #no special arguments elif len(args) > 0: url = args[0] is_alias = False alias = ''.join(args) # strip spaces and non-alphanumeric characters alias = ''.join(filter(str.isalnum, alias)) alias = alias.lower() alias_url_list = UtilDB.get_urls_for_alias(alias) if alias_url_list is not None: random_url = random.choice(alias_url_list) if random_url is not None: url = random_url is_alias = True image_id_list = UtilDB.get_imageids_for_alias(alias) image_id = None if image_id_list is not None: image_id = random.choice(image_id_list) is_alias = True if not is_valid_url(url): url = 'http://' + url if not is_valid_url(url) and image_id is None: bot.send_message(event.conv, "Error: invalid alias or URL.") return if image_id is None: image_id = UtilDB.get_imageid_for_url(url) desc = None if not is_alias: image_info = UtilBot.get_image_info(url) url, desc = image_info if desc is None and not is_alias: desc = ' '.join(args[1:]) print(image_id) if image_id is None: filename = UtilBot.download_image(url, 'images', False) image_id = yield from UtilBot.upload_image(bot, filename) UtilDB.set_imageid_for_url(url, image_id) os.remove(filename) bot.send_message_segments(event.conv, [hangups.ChatMessageSegment(desc)] if desc else None, image_id)