def image(cls, pic_path: str) -> 'MessageSegment': if cls.check_exist(pic_path): return MessageSegment.image(f'file:///{pic_path}') elif cls.check_exist(path.join(cls.image_dir, pic_path)): return MessageSegment.image( f'file:///{path.join(cls.image_dir, pic_path)}') else: return '【图片丢了】'
def get_random_image(cls, folder=None) -> 'MessageSegment': if not folder: image_path = cls.image_dir else: image_path = path.join(cls.image_dir, folder) image_name = get_random_file(image_path) return MessageSegment.image(f'file:///{path.join(image_path, image_name)}')
async def abWord(session: CommandSession): target = session.current_arg_text.strip() imageList = await getImage(target, 5) for x in imageList: msg = Message() msg.append(MessageSegment.image(x)) await session.send(msg, ensure_private=True)
async def colorImage(session: CommandSession): # 获取城市的天气预报 # 向用户发送天气预报 msg=Message() url="http://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&word=%E8%89%B2%E5%9B%BE" imgurl='https://s2.ax1x.com/2019/03/29/A00Whn.png' # msg.append(MessageSegment.share(url,"色图","网警已介入本群",imgurl)) msg.append(MessageSegment.image('https://s2.ax1x.com/2019/11/16/MBYbmd.jpg')) msg.extend('没有色图给👴爬') await session.send(msg)
def parse(cls, data: APIData_T) -> APIData_T: assert not data["code"], data["msg"] vidData = data["data"] return { "aid": vidData["aid"], "bid": IDCoverter.av2bv(vidData["aid"]), "title": vidData["title"], "desc": vidData["desc"], "cover": MessageSegment.image(vidData["pic"]), "duration": cls.encodeTime(vidData["duration"]), "time": cls.stamp2Time(vidData["pubdate"]), "part": vidData["videos"], "author": vidData["owner"]["name"], "author_id": vidData["owner"]["mid"], "author_face": MessageSegment.image(vidData["owner"]["face"]), "view": vidData["stat"]["view"], "danmaku": vidData["stat"]["danmaku"], "share": vidData["stat"]["share"], "like": vidData["stat"]["share"], "coin": vidData["stat"]["coin"], "favorite": vidData["stat"]["favorite"], }
async def save_image(cls, event: Event) -> None: for i, m in enumerate(event.message): match = re.match('\[CQ:image.+?\]', str(m)) if match: try: url = re.findall(r'http.*?term=\d', str(m))[0] save_name = re.findall(r'(?<=-)[^-]*?(?=/)', url)[0] image_path = await download_async(url, cls.image_dir, save_name) event.message[i] = MessageSegment.image(image_path) except Exception as ex: logger.warning(f'保存图片时发生错误{ex}') event.raw_message = str(event.message)
def _(session: CommandSession): session.send("开始生成词云") latestTime = datetime.datetime.now() - DELTA_TIME if "group_id" in session.ctx: messageIter = messageGenterator(group_id=session.ctx["group_id"], latestTime=latestTime) else: messageIter = messageGenterator(user_id=session.ctx["user_id"], latestTime=latestTime) wordcloud = WordcloudMaker() for data in messageIter: data: models.RecordsRead sentence = data.content wordcloud.update(sentence) imageData = wordcloud.save() return MessageSegment.image(f"base64://{b64encode(imageData).decode()}")
async def creep(bot: HoshinoBot, ev: CQEvent): match = re.match(r'(?:(?:rua)|(?:Rua)|搓)\[CQ:at,qq=(\d+?)\]', ev.raw_message) if not match: match = re.match(r'\[CQ:at,qq=(.+?)\] (?:(?:rua)|(?:Rua)|搓)', ev.raw_message) if not match: return creep_id = match.group(1) url = f'http://q1.qlogo.cn/g?b=qq&nk={creep_id}&s=160' resp = await aiorequests.get(url) resp_cont = await resp.content avatar = Image.open(BytesIO(resp_cont)) output = generate_gif(data_dir, avatar) print(output) await bot.send(ev, MessageSegment.image(f'file:///{output}'))
async def save_image(cls, event: Event, folder=None) -> None: if not folder: image_path = cls.image_dir else: image_path = path.join(cls.image_dir, folder) if not path.isdir(image_path): os.mkdir(image_path) for i, m in enumerate(event.message): match = re.match('\[CQ:image.+?\]', str(m)) if match: try: url = re.findall(r'http.*?term=\d', str(m))[0] save_name = re.findall(r'(?<=-)[^-]*?(?=/)', url)[0] image = await download_async(url, image_path, save_name) event.message[i] = MessageSegment.image(f'file:///{image}') except Exception as ex: print_exc() event.raw_message = str(event.message)
def _(session: CommandSession): session.send("开始生成统计") latestTime = datetime.datetime.now() - DELTA_TIME newestTime = _datetimeRound(datetime.datetime.now()) frameMaker = DataFrameMaker({"date": str, "time": float}) if "group_id" in session.ctx: messageIter = messageGenterator( group_id=session.ctx["group_id"], newestTime=newestTime, latestTime=latestTime, ) else: messageIter = messageGenterator(user_id=session.ctx["user_id"], newestTime=newestTime, latestTime=latestTime) for data in messageIter: date = str(data.time.date()) time = _time2Int(data.time.time()) frameMaker.update({"date": date, "time": time}) imageData = Chart.chatFrequency(frameMaker.read()) return MessageSegment.image(f"base64://{b64encode(imageData).decode()}")
async def image_from_url(cls, url: str, cache=True) -> 'MessageSegment': fname = get_str_md5(url) image = path.join(cls.image_dir, f'{fname}.jpg') if not path.exists(image) or not cache: image = await download_async(url, cls.image_dir, fname, 'jpg') return MessageSegment.image(f'file://{image}')
def image(cls, pic_path: str) -> 'MessageSegment': return MessageSegment.image( f'file:///{path.join(cls.image_dir, pic_path)}')
def image(cls, pic_path: str) -> 'MessageSegment': return MessageSegment.image(path.join(cls.image_dir, pic_path))
async def sendMessageCached(): bot = nonebot.get_bot() try: pass data = {'formBot': True} try: async with aiohttp.request( 'POST', f'http://{configJs["serverip"]}:{configJs["messageServerListen"]}', data=json.dumps(data), timeout=aiohttp.client.ClientTimeout(total=timeWait - 1)) as r: js = await r.text() js = json.loads(js) # res = requests.post('http://127.0.0.1:50382', data=json.dumps(data),timeout=3) # js = json.loads(res.text) # print('messcache') except: return for i in js: print(i) msg = Message('') # int(i.get('qq_group_id')) if not i.get('ensure_private'): for j in i.get('qq_id_list'): msg.append(MessageSegment.at(int(j))) if len(i.get('qq_id_list')) > 0: msg.extend('\n') textObj = i.get('text') if isinstance(textObj, list): for j in textObj: msg.extend(j.replace('$', ' ')) else: try: msg.extend(textObj) except: print(f'i.get() error') imageList = i.get('img') if isinstance(imageList, list): for j in imageList: if len(j) > 0: msg.append(MessageSegment.image(j)) else: try: if len(imageList) > 0: msg.append(MessageSegment.image(imageList)) except: print(f'image send error') if i.get('ensure_private'): for qqid in i.get('qq_id_list'): await bot.send_private_msg(user_id=qqid, message=msg) else: await bot.send_group_msg(group_id=int(i.get('qq_group_id')), message=msg) # await bot.send_group_msg(group_id=967636480, # message=f'给爬') except CQHttpError: pass