async def setu(session: CommandSession): print('执行setu' + session.current_arg_text) res = '' code = 0 if session.current_arg_text == '': src = get_random_src(option.get_option()['sql_dir']) res = '恭喜你获得老婆一只!' print(src) await session.send(MessageSegment.image(src), at_sender=True) await session.send(res, at_sender=True) else: s = session.current_arg_text if isnumber(s): num = int(session.current_arg_text) if num >= 10: await session.send('做人不能太贪心哦!', at_sender=True) num = 1 for i in range(num): src = get_random_src(option.get_option()['sql_dir']) await session.send(MessageSegment.image(src), at_sender=True) res = '共计获得老婆' + str(num) + '只!' await session.send(res, at_sender=True) else: try: src = get_pic_from_sql(session.current_arg_text) res = '恭喜你获得' + session.current_arg_text.strip() + '老婆一只!' except Exception: src = get_random_src(option.get_option()['sql_dir']) res = '网络受到神秘的非物质力量干扰,故老婆丢失,这边给您换了一个' await session.send(MessageSegment.image(src), at_sender=True) await session.send(res, at_sender=True)
async def twelve(): logger.info("十二点了!") msg: Message = MessageSegment.image( "f29b5c32ad65cdbd38f097e6b5e314d4.image") for group in ENABLED_GROUPS: await bot.send_group_msg(group_id=group, message=msg) logger.info("报时已发送至群号 {}".format(group))
async def pixivmale(bot, event): # 提取pixiv男性向的图片 data = feedparser.parse(config.rsshub + 'pixiv/ranking/day_male') id = random.randrange(0, len(data.entries)) link = data.entries[id].link title = data.entries[id].title summary = data.entries[id].summary pattern = re.compile(r'src="(.*?)"', re.I) img = re.findall(pattern, summary) sendimg = MessageSegment.image(img[0]) await bot.send(event, "标题:" + title + "\n" + link + "\n" + "原图发送~太慢就等等啦~") await bot.send(event, sendimg) # 该api不可用 # async def pixivr18(bot, event): # 提取pixivR18日榜榜的图片 # if event.group_id in config.whilelst: #群组白名单 # data = feedparser.parse(config.rsshub + 'pixiv/ranking/day_r18') # id = random.randrange(0, len(data.entries)) # link = data.entries[id].link # title = data.entries[id].title # summary = data.entries[id].summary # pattern = re.compile(r'src="(.*?)"', re.I) # img = re.findall(pattern,summary) # sendimg = MessageSegment.image(img[0]) # await bot.send(event, "标题:" + title + "\n" + link + "\n" + "原图发送~太慢就等等啦~") # await bot.send(event, sendimg) # else: # await bot.send(event, "だめですよ~")
async def help_(bot: Bot, event: Event, state: dict): if int(event.get_user_id()) != event.self_id: path_ = os.getcwd() path_ = path_ + '\help.png' mypath = 'file:///' + path_ print(mypath) await bot.send(event=event, message=MessageSegment.image(mypath))
async def _chick_in(): uid = session.ctx['sender']['user_id'] if check_in_interval_judgment(uid): chick_in(uid) image = await get_image(uid) card = session.ctx.get('sender').get('_card') if card: text = chick_in_text(uid, card) else: nickname = session.ctx['sender']['nickname'] text = chick_in_text(uid, nickname) image = ImageProcessing(image, text, 256, 'send') await image.save() bot = session.bot boo = await bot.can_send_image() boo = boo['yes'] if not boo: await session.send(text) else: with open('./chick_image_cache/send.png', 'rb') as f: base = base64.b64encode(f.read()) img = MessageSegment.image(f'base64://{base.decode()}') await session.send(img) else: await session.send('您今天已经签到过了')
async def pixiv_analysis(session: CommandSession): # await session.send('功能修复中.') bot = get_bot() reg = session.current_arg_text # seq = MessageSegment.image(os.getcwd()+'\\pixdata\\0.jpg') # await bot.send_group_msg(group_id=debug_group, message=seq) # try: # await bot.send_group_msg(group_id=debug_group, # message='[CQ:image,file=https://img.cheerfun.dev:233/c/540x540_70/img-master/img/2019/12/26/10/47/03/78484613_p0_master1200.jpg]') # message='[CQ:image,file=https://img.cheerfun.dev:233/c/540x540_70/img-master/img/2019/12/26/10/47/03/78484613_p0_master1200.jpg]') # except CQHttpError as e: # print(e) if not reg: await session.send('未输入搜索关键词.') await bot.send_group_msg(group_id=debug_group, message='p站搜索中,tag:' + reg) await session.send("当前参数: 查找%d张图片,搜索页数%d,最低收藏数%d,正在搜索..." % (num, page, bookmark)) datas = searchByTag(reg, num, page, bookmark) # print(ill) if not datas: await session.send('未搜索到图片或网络错误.') else: await session.send('搜索到%d组图片.' % len(datas)) for data in datas: await session.send(data[0]) for i in range(1, len(data)): seq = MessageSegment.image(os.getcwd() + '\\pixdata\\' + data[i]) try: await session.send(seq) except CQHttpError as e: print(e) sleep(2)
async def setu(session: CommandSession): print('执行setu' + session.current_arg_text) res = '' code = 0 if session.current_arg_text == '': src = get_pic_from_local() res = '恭喜你获得老婆一只!' await session.send(MessageSegment.image(src), at_sender=True) await session.send(res, at_sender=True) else: s = session.current_arg_text if isnumber(s): num = int(session.current_arg_text) if num >= 10: await session.send('做人不能太贪心哦!', at_sender=True) num = 1 for i in range(num): src = get_pic_from_local() await session.send(MessageSegment.image(src), at_sender=True) res = '共计获得老婆' + str(num) + '只!' await session.send(res, at_sender=True) else: try: code, src, quota = get_pic(r18=0, keyword=session.current_arg_text) if code == 0: res = '恭喜你获得' + session.current_arg_text.strip() + '老婆一只!' else: src = get_pic_from_local() if code == -1: print('api内部错误') elif code == 401: print('由于不规范的操作而被拒绝调用') elif code == 403: print('找不到符合关键字的色图') elif code == 429: print('达到调用额度限制') await session.send('剩余服务次数:' + str(quota)) except Exception: src = get_pic_from_local() res = '网络受到神秘的非物质力量干扰,故老婆丢失,这边给您换了一个' await session.send(MessageSegment.image(src), at_sender=True) await session.send(res, at_sender=True)
async def wikipedia(session: CommandSession): words = session.get('words', prompt='你想查询什么词条呢?') data = await get_wikipedia(words) if len(data) == 1: res = MessageSegment.text(data[0]) await session.send(res) elif len(data) == 2: res = MessageSegment.text(data[0]) img = MessageSegment.image(data[1]) await session.send(res + img)
def get_downloaded_image_path(response: dict, path: str): url = response['url'] image_response = requests.get(url, stream=True) image_response.raise_for_status() path = f'{path}/{response["filename"]}' if not os.path.exists(path): with open(path, 'wb') as file: file.write(image_response.content) resp = str(MessageSegment.image(f'file:///{path}')) return resp
async def epicfree(bot, event): data = feedparser.parse(config.rsshub + 'epicgames/freegames') for i in range(0, len(data.entries)): title = data.entries[i].title summary = data.entries[i].summary link = data.entries[i].link pattern = re.compile(r'src="(.*?)"', re.I) img = re.findall(pattern, summary) sendimg = MessageSegment.image(img[0]) await bot.send(event, sendimg + "\n" + "游戏名:" + title + "\n" + "链接:" + link)
async def pixivday(bot, event): # 提取pixiv日榜的图片 data = feedparser.parse(config.rsshub + 'pixiv/ranking/day') id = random.randrange(0, len(data.entries)) link = data.entries[id].link title = data.entries[id].title summary = data.entries[id].summary pattern = re.compile(r'src="(.*?)"', re.I) img = re.findall(pattern, summary) sendimg = MessageSegment.image(img[0]) await bot.send(event, "标题:" + title + "\n" + link + "\n" + "原图发送~太慢就等等啦~") await bot.send(event, sendimg)
async def _send(self, to_chat: int, chat_type: ChatType, message: UnifiedMessage): """ :return: """ self.logger.debug('begin processing message') context = dict() if chat_type == ChatType.UNSPECIFIED: self.logger.warning(f'Sending to undefined group or chat {to_chat}') return context['message_type'] = f'{chat_type}' context['message'] = list() if message.image: image_name = os.path.basename(message.image) context['message'].append(MessageSegment.image(image_name)) if (chat_type == ChatType.PRIVATE and self.config.NameforPrivateChat) or \ (chat_type in (ChatType.GROUP, ChatType.DISCUSS) and self.config.NameforGroupChat): # name logic if message.chat_attrs.name: context['message'].append(MessageSegment.text(message.chat_attrs.name)) if message.chat_attrs.reply_to: context['message'].append(MessageSegment.text(' (➡️️' + message.chat_attrs.reply_to.name + ')')) if message.chat_attrs.forward_from: context['message'].append(MessageSegment.text(' (️️↩️' + message.chat_attrs.forward_from.name + ')')) if message.chat_attrs.name: context['message'].append(MessageSegment.text(': ')) # at user if message.send_action.user_id: context['message'].append(MessageSegment.at(message.send_action.user_id)) context['message'].append(MessageSegment.text(' ')) context['message'].append(MessageSegment.text(message.text)) if chat_type == ChatType.PRIVATE: context['user_id'] = to_chat else: context[f'{chat_type}_id'] = to_chat self.logger.debug('finished processing message, ready to send') result = await self.bot.send(context, context['message']) if message.chat_attrs: set_egress_message_id(src_platform=message.chat_attrs.platform, src_chat_id=message.chat_attrs.chat_id, src_chat_type=message.chat_attrs.chat_type, src_message_id=message.chat_attrs.message_id, dst_platform=self.name, dst_chat_id=to_chat, dst_chat_type=chat_type, dst_message_id=result.get('message_id'), user_id=self.config.Account) self.logger.debug('finished sending') return result.get('message_id')
async def zaobao(): (bot, ) = nonebot.get_bots().values() text = await get_zaobao() text.replace('\n', '') for id in group_id_list: await bot.send_msg(message_type="group", group_id=int(id), message='早上好,兄弟萌☀\n━━━━━━━━\n60s读懂世界\n' + MessageSegment.image(text)) await bot.send_msg(message_type="group", group_id=int(id), message=str(get_today()))
async def setu(bot, event): if event.group_id in config.whilelst: #群组白名单 id = random.randrange(12, 131) url = config.url + "%d" % id res = requests.get(url=url) pic = json.loads(res.content)['data'] await bot.send(event, "" + pic['title'] + "\n" + "url:" + pic['url']) img = MessageSegment.image("https://pixiv.cat/%d" % pic['pid'] + ".jpg") await bot.send(event, img) else: await bot.send(event, "您配吗?")
async def pixivmonth(bot, event): # 提取pixiv月榜的图片 data = feedparser.parse(config.rsshub + 'pixiv/ranking/month') id = random.randrange(0, len(data.entries)) link = data.entries[id].link title = data.entries[id].title summary = data.entries[id].summary pattern = re.compile(r'src="(.*?)"', re.I) img = re.findall(pattern, summary) await bot.send(event, "标题:" + title + "\n" + link + "\n" + "原图发送~太慢就等等啦~") # sendimg = MessageSegment.image(img[0]) sendimg = MessageSegment.image( 'https://cdn.jsdelivr.net/gh/tydaytygx/NA/NA_icon_report_1080_.png') await bot.send(event, sendimg)
async def kaw(bot, event): # 提取Konachan Anime Wallpapers日榜的图片 if event.group_id in config.whilelst: #群组白名单 data = feedparser.parse(config.rsshub + 'konachan/post/popular_recent/1d') id = random.randrange(0, len(data.entries)) link = data.entries[id].link title = data.entries[id].title summary = data.entries[id].summary pattern = re.compile(r'src="(.*?)"', re.I) img = re.findall(pattern, summary) await bot.send(event, "tag:" + title + "\n" + link) sendimg = MessageSegment.image(img[0]) await bot.send(event, sendimg) else: await bot.send(event, "您配吗?")
async def ph_(bot: Bot, event: Event, state: dict): if event.get_user_id != event.self_id: print(str(event.message)) ch = str(event.message) i = 0 ss = [' '] * 2 for it in ch.split(' '): if i == 2: break ss[i] = it i = i + 1 ph_generator(str(ss[0]), str(ss[1])) path_ = os.getcwd() path_ = path_ + '\ph.png' mypath = 'file:///' + path_ print(mypath) sst = MessageSegment.image(file=str(mypath)) #(file = str(mypath)) await bot.send(event=event, message=Message(sst))
async def tawawa(session: CommandSession): qq_number = '10000' # todo it should be catch from session await session.send('功能暂时不可用') try: msg, ok, no = action.start(qq_number) log.write([msg, ok, no]) if ok is False: await session.send(msg) else: prev_msg = '现在发送第' + str(no) + '话' await session.send(prev_msg) b64_str = get_b64_content(msg) seg = MessageSegment.image(b64_str) await session.send(seg) except Exception as e: log.write(e) await session.send('发生了些小小的错误呢')
async def repeat(session: NLPSession): global tempmsg msg = str(session.event["message"]) groupnum = str(session.event['group_id']) print('群%s收到消息%s' % (groupnum, msg)) if msg.startswith('[CQ:rich'): print('检测到富文本消息') msglist = msg.split(' ') title = msglist[9][7:-1] datalist = msglist[12].split('\"') cover = datalist[1] text = '' text += title + '\n' text += '[CQ:image,file=' + cover + ']' await session.send(text) else: # if groupnum in group_list: rnd = randint(1, 100) # 总概率 if rnd <= 5: rnd = randint(1, 6) print('复读随机数:%d' % (rnd)) if rnd == 1: print('生草') await session.send('草', at_sender=True) if rnd == 2: print('复读') if session.msg_images: seq = MessageSegment.image(session.msg_images[0]) await session.send(seq) else: await session.send(msg) if rnd in range(3, 5): print('记录延迟复读') tempmsg.append(msg) if rnd in range(5, 7): print('复读延迟复读') if tempmsg: # 判断非空 i = randint(0, len(tempmsg) - 1) await session.send(tempmsg[i]) tempmsg.remove(tempmsg[i]) if rnd == 66: await session.send('详情点击:http://game.granbluefantasy.jp/')
def coupons_send_one_goods(bot, order): url = config.url_coupons_alimama_get_one_goods + str(order) + "/" res = requests.get(url=url) goods = json.loads(res.content) # 获取商品图片链接 url_pic = "" if goods['marketingMainPic']: url_pic = goods['marketingMainPic'] elif goods['mainPic']: url_pic = goods['mainPic'] message = print_goods(goods) for q in config.LOOP_LIST: if url_pic: img = MessageSegment.image(url_pic) bot.sync.send_group_msg(group_id=q, message=img + "\n" + message) else: bot.sync.send_group_msg(group_id=q, message=message) time.sleep(config.loop_coupons_alimama_time) pass
async def get_pic(): picture = MessageSegment.image("sh71/71.jpg") return picture
async def beauty(session: CommandSession): try: respond = MessageSegment.image('/dl/hana.jpg') await session.send(respond, ignore_failure=False) except ActionFailed as e: print(e.retcode)
async def handle_WZ(bot: Bot, event: Event, state: dict): king = state["king"] wangzhe = await get_wangzhe(king) await bot.send(event=event, message=MessageSegment.image(wangzhe))
async def handle_biao(bot: Bot, event: Event, state: dict): biao = state["biao"] biaoqingbao = await get_biao(biao) await bot.send(event=event, message=MessageSegment.image(biaoqingbao))
async def setu(session: CommandSession): if getPic(): seq = MessageSegment.image(os.getcwd() + '\\pixdata\\x.png') await session.send(seq)
async def R18_(bot: Bot, event: Event, state: dict): if int(event.get_user_id()) != event.self_id: await bot.send( event=event, message=MessageSegment.image(get_R18()), )
async def mcpo(bot: Bot, event: Event, state: dict): if int(event.get_user_id()) != event.self_id: await bot.send(event=event, message=MessageSegment.image(get_mc()), at_sender=True)
async def pixiv_send(session: nonebot.CommandSession): if alarm_api.get_alarm(): await session.finish('警报已升起!请等待解除!\n' f'{alarm_api.get_info()}') ctx = session.ctx.copy() message_id = ctx['message_id'] if get_privilege(ctx['user_id'], perm.BANNED): return group_id = ctx['group_id'] if 'group_id' in ctx else -1 user_id = ctx['user_id'] if 'group_id' in ctx and not get_privilege(user_id, perm.OWNER): if admin_control.get_data(ctx['group_id'], 'banned'): await session.finish('管理员已设置禁止该群接收色图。如果确认这是错误的话,请联系bot制作者') sanity = -1 monitored = False multiplier = 1 doMultiply = False if group_id in sanity_meter.get_sanity_dict(): sanity = sanity_meter.get_sanity(group_id) elif 'group_id' not in ctx and not get_privilege(user_id, perm.WHITELIST): await session.finish('我主人还没有添加你到信任名单哦。请找BOT制作者要私聊使用权限~') else: sanity = sanity_meter.get_max_sanity() sanity_meter.set_sanity(group_id=group_id, sanity=sanity_meter.get_max_sanity()) if sanity <= 0: if group_id not in sanity_meter.remind_dict or not sanity_meter.remind_dict[ group_id]: sanity_meter.set_remid_dict(group_id, True) await session.finish('您已经理智丧失了,不能再查了哟~(小提示:指令理智查询可以帮您查看本群还剩多少理智)') return if not admin_control.get_if_authed(): pixiv_api.set_auth( access_token=admin_control.get_access_token(), refresh_token='iL51azZw7BWWJmGysAurE3qfOsOhGW-xOZP41FPhG-s') admin_control.set_if_authed(True) is_exempt = admin_control.get_data(group_id, 'exempt') if group_id != -1 else False key_word = str(session.get('key_word', prompt='请输入一个关键字进行查询')).lower() if key_word in sanity_meter.get_bad_word_dict(): multiplier = sanity_meter.get_bad_word_dict()[key_word] doMultiply = True if multiplier > 0: await session.send( f'该查询关键词在黑名单中,危机合约模式已开启:本次色图搜索将{multiplier}倍消耗理智') if multiplier * 2 > 400: sanity_meter.set_user_data(user_id, 'ban_count') if sanity_meter.get_user_data_by_tag(user_id, 'ban_count') >= 2: user_control_module.set_user_privilege( user_id, 'BANNED', True) await session.send(f'用户{user_id}已被封停机器人使用权限') bot = nonebot.get_bot() await bot.send_private_msg( user_id=SUPER_USER, message= f'User {user_id} has been banned for triggering prtection. Keyword = {key_word}' ) else: await session.send('本次黑名单搜索已触发群保护机制,下次触发将会导致所有功能禁用。') bot = nonebot.get_bot() await bot.send_private_msg( user_id=SUPER_USER, message= f'User {user_id} triggered protection mechanism. Keyword = {key_word}' ) del bot return else: await session.send( f'该查询关键词在白名单中,支援合约已开启:本次色图搜索将{abs(multiplier)}倍补充理智') if key_word in sanity_meter.get_monitored_keywords(): await session.send('该关键词在主人的监控下,本次搜索不消耗理智,且会转发主人一份√') monitored = True if 'group_id' in ctx: sanity_meter.set_user_data(user_id, 'hit_xp') sanity_meter.set_xp_data(key_word) elif '色图' in key_word: await session.finish( MessageSegment.image( f'file:///{getcwd()}/data/dl/others/QQ图片20191013212223.jpg')) elif '屑bot' in key_word: await session.finish('你屑你🐴呢') json_result = {} try: if '最新' in key_word: json_result = pixiv_api.illust_ranking('week') else: json_result = pixiv_api.search_illust(word=key_word, sort="popular_desc") except pixivpy3.PixivError: await session.finish('pixiv连接出错了!') except Exception as err: await session.send(f'发现未知错误!错误信息已发送给bot主人分析!\n' f'{err}') bot = nonebot.get_bot() await bot.send_private_msg( user_id=SUPER_USER, message=f'Uncaught error while using pixiv search:\n' f'Error from {user_id}\n' f'Keyword = {key_word}\n' f'Exception = {err}') return # 看一下access token是否过期 if 'error' in json_result: admin_control.set_if_authed(False) try: admin_control.set_access_token(access_token=pixiv_api.login( username=user_name, password=password).response.access_token) await session.send('新的P站匿名访问链接已建立……') admin_control.set_if_authed(True) except pixivpy3.PixivError as err: print(err) return if '{user='******'{user=(.*?)}', key_word) if key_word: key_word = key_word[0] else: await session.send('未找到该用户。') return json_user = pixiv_api.search_user(word=key_word, sort="popular_desc") if json_user.user_previews: user_id = json_user.user_previews[0].user.id json_result = pixiv_api.user_illusts(user_id) else: await session.send(f"{key_word}无搜索结果或图片过少……") return else: json_result = pixiv_api.search_illust(word=key_word, sort="popular_desc") if not json_result.illusts or len(json_result.illusts) < 4: nonebot.logger.warning(f"未找到图片, keyword = {key_word}") await session.send(f"{key_word}无搜索结果或图片过少……") return sanity_meter.track_keyword(key_word) illust = random.choice(json_result.illusts) is_r18 = illust.sanity_level == 6 if not monitored: if is_r18: sanity_meter.drain_sanity(group_id=group_id, sanity=2 if not doMultiply else 2 * multiplier) else: sanity_meter.drain_sanity(group_id=group_id, sanity=1 if not doMultiply else 1 * multiplier) start_time = time.time() path = await download_image(illust) try: nickname = ctx['sender']['nickname'] except TypeError: nickname = 'null' bot = nonebot.get_bot() if not is_r18: try: await session.send( f'[CQ:reply,id={message_id}]' f'Pixiv ID: {illust.id}\n' f'查询关键词:{key_word}\n' f'画师:{illust["user"]["name"]}\n' + f'{MessageSegment.image(f"file:///{path}")}\n' + f'Download Time: {(time.time() - start_time):.2f}s') nonebot.logger.info("sent image on path: " + path) except Exception as e: nonebot.logger.info('Something went wrong %s' % e) await session.send('悲,屑TX不收我图。') return elif is_r18 and (group_id == -1 or admin_control.get_data(group_id, 'R18')): await session.send( f'[CQ:reply,id={message_id}]' f'芜湖~好图来了ww\n' f'Pixiv ID: {illust.id}\n' f'关键词:{key_word}\n' f'画师:{illust["user"]["name"]}\n' f'[CQ:image,file=file:///{path}{",type=flash" if not is_exempt else ""}]' + f'Download Time: {(time.time() - start_time):.2f}s') else: if not monitored: await session.send('我找到色图了!\n但是我发给我主人了_(:зゝ∠)_') await bot.send_private_msg( user_id=SUPER_USER, message=f"图片来自:{nickname}\n" f"来自群:{group_id}\n" f"查询关键词:{key_word}\n" + f'Pixiv ID: {illust.id}\n' + f'{MessageSegment.image(f"file:///{path}")}\n' + f'Download Time: {(time.time() - start_time):.2f}s') sanity_meter.set_usage(group_id, 'setu') if 'group_id' in ctx: sanity_meter.set_user_data(user_id, 'setu') if monitored and not get_privilege(user_id, perm.OWNER): await bot.send_private_msg(user_id=SUPER_USER, message=f'图片来自:{nickname}\n' f'查询关键词:{key_word}\n' f'Pixiv ID: {illust.id}\n' '关键字在监控中' + f'[CQ:image,file=file:///{path}]')
async def sauce_helper(url): params = { 'output_type': 2, 'testmode': 0, 'db': 999, 'numres': 6, 'url': url } response = {} async with aiohttp.ClientSession() as client: async with client.get('https://saucenao.com/search.php', params=params) as page: json_data = await page.json() if json_data['results']: json_data = json_data['results'][0] nonebot.logger.info(f'Json data: \n' f'{json_data}') response = '' if json_data: simlarity = json_data['header']['similarity'] + '%' thumbnail = json_data['header']['thumbnail'] async with client.get(thumbnail) as page: file_name = thumbnail.split('/')[-1] file_name = re.sub(r'\?auth=.*?$', '', file_name) path = f'{getcwd()}/data/lol/{file_name}' if not exists(path): try: with open(path, 'wb') as file: while True: chunk = await page.content.read(1024**2) if not chunk: break file.write(chunk) except IOError: return {} image_content = MessageSegment.image(f'file:///{path}') json_data = json_data['data'] if 'ext_urls' not in json_data: return {} pixiv_id = 'Undefined' title = 'Undefined' author = 'Undefined' ext_url = json_data['ext_urls'][0] if 'title' not in json_data: if 'creator' in json_data: author = json_data['creator'] elif 'author' in json_data: author = json_data['author'] else: if 'artist' not in json_data: return {} author = json_data['artist'] elif 'title' in json_data: title = json_data['title'] if 'author_name' in json_data: author = json_data['author_name'] elif 'member_name' in json_data: author = json_data['member_name'] if 'pixiv_id' in json_data: pixiv_id = json_data['pixiv_id'] response = { 'data': image_content, 'simlarity': simlarity, 'title': title, 'author': author, 'pixiv_id': pixiv_id, 'ext_url': ext_url, 'thumbnail': thumbnail } """ response += f'{image_content}' \ f'图片相似度:{simlarity}\n' \ f'图片标题:{title}\n' \ f'图片画师:{author}\n' \ f'Pixiv ID:{pixiv_id}\n' \ f'直链:{ext_url}' """ return response
dynamic = dynamic.replace("null ", "None ") # 由于返回数据中可能存在空值null,为了保持语义一致将其改为None dynamic = dynamic.replace("null,", "None,") # 由于返回数据中可能存在空值null,为了保持语义一致将其改为None dynamic = dynamic.replace("false ", "False,") dynamic = dynamic.replace("false,", "False,") dynamic = dynamic.replace("true ", "True,") dynamic = dynamic.replace("true,", "True,") while re.search(r"(.*)(\"\{)(.*)(\}\")(.*)", dynamic) is not None: dynamic = re.sub( r"(.*)(\"\{)(.*)(\}\")(.*)", lambda x: x.group(1) + "{" + x.group(3) + "}" + x.group(5), dynamic) while re.search(r"(.*)(\"\[)(.*)(\]\")(.*)", dynamic) is not None: dynamic = re.sub( r"(.*)(\"\[)(.*)(\]\")(.*)", lambda x: x.group(1) + "[" + x.group(3) + "]" + x.group(5), dynamic) print(dynamic) # print(ast.literal_eval(dynamic)) # print(json.dumps(ast.literal_eval(dynamic), ensure_ascii=False, indent=4)) dynamic_dict = ast.literal_eval(dynamic) print(dynamic_dict) print(json.dumps(dynamic_dict, ensure_ascii=False, indent=4)) img_url = dynamic_dict["item"]["pictures"][0]["img_src"] fmt = "【B站动态推送-原创内容】\n" + \ dynamic_dict["user"]["name"] + " " + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime( html_content["data"]["card"]["desc"]["timestamp"])) + "\n" + \ dynamic_dict["item"]["description"] + "\n" + str(MessageSegment.image(img_url)) + "\n" + \ "共" + str(dynamic_dict["item"]["pictures_count"]) + "张图片,详情点击下方链接" + "\n" + \ "动态地址:t.bilibili.com/" print(fmt)