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 img(bot, event, *args): if len(args) > 0: yield from bot.send_typing(event.conv) url = args[0] file_exception = False try: imageids_filename = os.path.join('images', 'imageids.json') imageids = json.loads(open(imageids_filename, encoding='utf-8').read(), encoding='utf-8') imageID = imageids.get(url) except IOError as e: if e.errno == errno.ENOENT: imageids = {} else: print('Exception:') print(str(e)) file_exception = True imageID = None if imageID is None: filename = UtilBot.download_image(url, 'images') imageID = yield from bot._client.upload_image(filename) if not file_exception: imageids[url] = imageID with open(imageids_filename, 'w') as f: json.dump(imageids, f, indent=2, sort_keys=True) os.remove(filename) bot.send_image(event.conv, imageID)
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)