def conne_worker(bot, message, names, full=False, sorter=None): """ 获取圆爹的进程worker. """ file_name = 'conne' + str(int(time.time())) + '.png' full_path = os.path.join(config['cq_root_dir'], config['cq_image_dir'], file_name) hidden_fields = [14, 15, 16, 20, 24] if full: hidden_fields = [] try: inexistence, image = get_conne_pic(names, sorter, hidden_fields) except Exception as e: reply(bot, message, '汪汪汪? 可能是网络问题, 重试一下吧') raise e return if inexistence: # 有没找到的话提示哪些没找到ff reply(bot, message, '以下单位圆爹站好像没找到: {}'.format(', '.join(inexistence))) if not len(inexistence) == len(names): # 不是一个都没找到就行 image.save(full_path) reply(bot, message, CQImage(file_name))
def status_worker(bot, message, name, refresh): """ 获取属性图的进程worker. """ full_path = os.path.join(config['cq_root_dir'], config['cq_image_dir'], 'unit', name + '.png') if not os.path.exists( os.path.join(config['cq_root_dir'], config['cq_image_dir'], 'unit')): os.mkdir( os.path.join(config['cq_root_dir'], config['cq_image_dir'], 'unit')) # 没有缓存或者要求刷新的情况 if not os.path.exists(full_path) or refresh: try: image = get_status_pic(name) except UnitException as e: reply(bot, message, str(e)) return except Exception as e: reply(bot, message, '汪汪汪? 可能是网络问题, 重试一下吧') raise e return image.save(full_path) reply(bot, message, str(CQImage(os.path.join("unit", name + ".png"))))
def __str__(self): for url in self.media: filename = os.path.basename(url) dir = os.path.join(config['cq_root_dir'], config['cq_image_dir'], 'twitter') path = os.path.join(dir, filename) # 没有twitter文件夹的话就新建一个 if not os.path.exists(dir): os.mkdir(dir) # 下图 if not os.path.exists(path): resp = requests.get(url, timeout=60, proxies=config.get('proxies')) with open(path, 'wb') as f: f.write(resp.content) dt = self.date.astimezone(timezone(timedelta(hours=9))) ds = datetime.strftime(dt, '%Y-%m-%d %H:%M:%S JST') results = [ ds, ] text = self.text text = text.replace('・', '·').replace('✕', '×').replace('#千年戦争アイギス', '').replace('♪', '') results.extend(['', text.strip()]) results.extend([ str(CQImage(os.path.join('twitter', os.path.basename(m)))) for m in self.media ]) return '\n'.join(results)
def poster(bot, message): """#poster [-h] [-f] -h : 打印本帮助 -f : 强制刷新 """ try: cmd, *args = shlex.split(message.text) except ValueError: return False if not cmd[0] in config['trigger']: return False if not cmd[1:] == 'poster': return False try: options, args = getopt.gnu_getopt(args, 'hf') except getopt.GetoptError: # 格式不对 reply(bot, message, poster.__doc__) return True refresh = False # 拆参数 for o, a in options: if o == '-h': # 帮助 reply(bot, message, poster.__doc__) return True elif o == '-f': refresh = True weekday = datetime.now().weekday() if weekday >= 3: delta = timedelta(days=weekday - 3) else: delta = timedelta(days=7 + weekday - 3) thu_date = datetime.now().date() - delta url = '{}event{}.jpg'.format(BASE_URL, thu_date.strftime('%Y%m%d')) filename = os.path.basename(url) dir = os.path.join(config['cq_root_dir'], config['cq_image_dir'], 'poster') path = os.path.join(dir, filename) if not os.path.exists(dir): os.mkdir(dir) if not os.path.exists(path) or refresh: resp = requests.get(url, timeout=60, proxies=config.get('proxies')) if not resp.status_code == 200: reply(bot, message, '没找到海报...还没更新或者是网络问题?') return True with open(path, 'wb') as f: f.write(resp.content) reply(bot, message, CQImage(os.path.join('poster', filename))) return True
def emoji_base(bot, message): """#emoji [-h] [-d 名称] [内容...] -h : 打印本帮助 -d 名称 : emoji的名称 内容 : 要录入的内容, 可以有图片也可以有文字, 也可以是混合内容. 一个名称可以有多个内容. 当没有内容时将输出列表. 例: #emoji -d 班长 班长!!!.jpg #emoji -d 我好菜啊 你是坏菜! #emoji (将列出所有emoji列表) #emoji -d 班长 (将列出班长emoji的列表) """ try: cmd, *args = shlex.split(message.text) except ValueError: return False if not cmd[0] in config['trigger']: return False if not cmd[1:] == 'emoji': return False try: options, args = getopt.gnu_getopt(args, 'hd:') except getopt.GetoptError: # 格式不对 reply(bot, message, emoji_base.__doc__) return True name = None for o, a in options: if o == '-d': name = a elif o == '-h': # 帮助 reply(bot, message, emoji_base.__doc__) return True # 没有内容的时候输出列表 if not name: # 列出所有名字 emojis = Emoji.objects() names = [] for emoji in emojis: names.append('[' + ','.join(emoji.name) + ']') msg = '现在保存了以下内容: \n{}' .format(';'.join(names)) reply(bot, message, msg) return True if not args: # 列出当前名字下的所有表情 emoji = Emoji.objects(name=name).first() if not emoji: reply(bot, message, '没找到名字{}'.format(name)) return True msg = '{}对应以下内容: \n'.format(emoji.name) msg_emojis = [] for index, content in enumerate(emoji.emoji): msg_emojis.append('[{}] => [{}]'.format(index + 1, content)) msg += ';'.join(msg_emojis) reply(bot, message, msg) return True # 内容 content = ' '.join(args) # 有内容, 是增加 emoji = Emoji.objects(name=name).first() if not emoji: emoji = Emoji() emoji.name.append(name) # 找图片 files = CQImage.PATTERN.findall(content) # 遍历 for filename in files: dir = os.path.join(config['cq_root_dir'], config['cq_image_dir'], 'emoji') path = os.path.join(dir, filename) if not os.path.exists(dir): os.mkdir(dir) cqimg = os.path.join(config['cq_root_dir'], config['cq_image_dir'], filename + '.cqimg') parser = ConfigParser() parser.read(cqimg) url = parser['image']['url'] r = requests.get(url, timeout=30, proxies=config.get('proxies', {})) # 下载 with open(path, 'wb') as f: f.write(r.content) content = CQImage.PATTERN.sub(str(CQImage('emoji/\\1')), content) emoji.emoji.append(content) emoji.save() if len(emoji.emoji) > 10: msg = '[{}]现在含有{}个emoji'.format(','.join(emoji.name),str(len(emoji.emoji))) else: msg = '[{}]现在对应以下内容: \n{}'.format(','.join(emoji.name), '[' + '];['.join(emoji.emoji) + ']') reply(bot, message, msg)