async def set_close_score_line(session): if session.current_arg == '': global Push_Score_Lines if Push_Score_Lines != None: scheduler.remove_job(Push_Score_Lines) Push_Score_Lines = None await session.send(message.MessageSegment.text('自动推送当前档线已关闭'))
async def set_close_crawl_score_line(session): if session.current_arg == '': global Crawl_Score_Lines if Crawl_Score_Lines != None: scheduler.remove_job(Crawl_Score_Lines) Crawl_Score_Lines = None await session.send(message.MessageSegment.text('自动爬取数据已关闭'))
async def deldy(session: CommandSession): rss_name = session.get('deldy', prompt='输入要删除的订阅名或订阅地址') # 权限判断 user_id = session.ctx['user_id'] # print(type(user_id),type(config.ROOTUSER)) if int(user_id) in config.ROOTUSER: # 获取、处理信息 flag = 0 try: list_rss = RWlist.readRss() for rss_ in list_rss: if rss_.name == rss_name or rss_.url == rss_name: list_rss.remove(rss_) scheduler.remove_job(rss_.name) try: os.remove(file_path+rss_.name+".json") except BaseException as e: logger.info(e) await session.send('订阅 ' + rss_name + ' 删除成功!') flag = flag + 1 if flag <= 0: await session.send('订阅 ' + rss_name + ' 删除失败!该订阅不存在!') else: RWlist.writeRss(list_rss) await session.send('删除 ' + str(flag) + ' 条订阅!') except BaseException as e: #logger.info(e) await session.send('你还没有任何订阅!') else: await session.send('你没有权限进行此操作!\n关于插件:http://ii1.fun/7byIVb')
async def deldy(session: CommandSession): rss_name = session.get('deldy', prompt='输入要删除的订阅名或订阅地址') user_id = session.ctx['user_id'] try: group_id = session.ctx['group_id'] except: group_id = None # 获取、处理信息 flag = 0 try: list_rss = RWlist.readRss() if group_id: for rss_ in list_rss: if (rss_.name == rss_name and str(group_id) in str(rss_.group_id)) or ( rss_.url == rss_name and str(group_id) in str(rss_.group_id)): rss_tmp = rss_ if rss_tmp.group_id[0] == str(group_id): rss_tmp.group_id.pop(0) else: rss_tmp.group_id = eval( re.sub(f", '{group_id}'", "", str(rss_tmp.group_id))) await session.send('本群订阅 ' + rss_name + ' 删除成功!') if not rss_tmp.group_id and not rss_tmp.user_id: list_rss.remove(rss_) scheduler.remove_job(rss_.name) try: os.remove(file_path + rss_.name + ".json") except BaseException as e: logger.info(e) RWlist.writeRss(list_rss) else: list_rss.remove(rss_) list_rss.append(rss_tmp) RWlist.writeRss(list_rss) elif user_id: for rss_ in list_rss: if rss_.name == rss_name or rss_.url == rss_name: list_rss.remove(rss_) scheduler.remove_job(rss_.name) try: os.remove(file_path + rss_.name + ".json") except BaseException as e: logger.info(e) await session.send('订阅 ' + rss_name + ' 删除成功!') flag = flag + 1 if flag <= 0: await session.send('订阅 ' + rss_name + ' 删除失败!该订阅不存在!') else: RWlist.writeRss(list_rss) await session.send('删除 ' + str(flag) + ' 条订阅!') except BaseException as e: #logger.info(e) await session.send('你还没有任何订阅!\n关于插件:http://ii1.fun/7byIVb')
async def clear_setu_schedule(session): if session.current_arg == '': global setu_scheduled_open global setu_scheduled_open_time global setu_scheduled_close global setu_scheduled_close_time if setu_scheduled_open != None: scheduler.remove_job(setu_scheduled_open) setu_scheduled_open = None if setu_scheduled_close != None: scheduler.remove_job(setu_scheduled_close) setu_scheduled_close = None setu_scheduled_open_time = None setu_scheduled_close_time = None await session.send(message.MessageSegment.text('清除成功'))
async def check_down_status(hash_str: str, group_ids: list, name: str): qb = await get_qb_client() if not qb: return info = qb.get_torrent(hash_str) files = qb.get_torrent_files(hash_str) bot = nonebot.get_bot() if info["total_downloaded"] - info["total_size"] >= 0.000000: all_time = (datetime.datetime.now() - down_info[hash_str]["start_time"]).seconds await send_msg(f"👏 {name}\nHash: {hash_str} \n下载完成!耗时:{all_time} s") down_info[hash_str]["status"] = DOWN_STATUS_UPLOADING for group_id in group_ids: for tmp in files: # 异常包起来防止超时报错导致后续不执行 try: if config.qb_down_path and len(config.qb_down_path) > 0: path = config.qb_down_path + tmp["name"] else: path = info["save_path"] + tmp["name"] await send_msg(f"{name}\nHash: {hash_str} \n开始上传到群:{group_id}") try: await bot.call_action( action="upload_group_file", group_id=group_id, file=path, name=tmp["name"], ) except Exception as e: await send_msg( f"{name}\nHash: {hash_str} \n上传到群:{group_id}失败!请手动上传!" ) logger.error(e) except TimeoutError as e: logger.warning(e) scheduler.remove_job(hash_str) down_info[hash_str]["status"] = DOWN_STATUS_UPLOAD_OK else: await delete_msg(down_info[hash_str]["downing_tips_msg_id"]) msg_id = await send_msg( f"{name}\n" f"Hash: {hash_str} \n" f"下载了 {round(info['total_downloaded'] / info['total_size'] * 100, 2)}%\n" f"平均下载速度:{round(info['dl_speed_avg'] / 1024, 2)} KB/s" ) down_info[hash_str]["downing_tips_msg_id"] = msg_id
async def cleargroup(session: CommandSession): bot = session.bot # 获取bot的群列表 try: self_ids = bot._wsr_api_clients.keys() for sid in self_ids: gl = await bot.get_group_list(self_id=sid) gl = ["{group_id}".format_map(g) for g in gl] except BaseException as e: await bot.send("Error!" + str(e)) return try: # 读取rss列表 list_rss = RWlist.readRss() for rss_ in list_rss: if rss_.group_id: # 完整复制一份rss_ rss_tmp = cp.deepcopy(rss_) i, g = 0, 0 while g < len(rss_.group_id): if rss_.group_id[g] not in gl: rss_tmp.group_id.remove(rss_.group_id[g]) i += 1 g += 1 if i: await session.send(f'{rss_.name}此次成功清理{i}个群聊!') # 处理完毕,更新数据 if not rss_tmp.group_id and not rss_tmp.user_id: list_rss.remove(rss_) scheduler.remove_job(rss_.name) try: os.remove(file_path + rss_.name + ".json") logger.info(f"订阅{rss_.name}已无订阅目标,删除整个订阅") except BaseException as e: logger.info(e) logger.info(f"订阅{rss_.name}已无订阅目标,删除整个订阅失败!") RWlist.writeRss(list_rss) else: list_rss.remove(rss_) list_rss.append(rss_tmp) RWlist.writeRss(list_rss) except BaseException as e: #logger.info(e) await session.send('你还没有任何订阅!')
async def set_close_setu_time(session): match = re.match(r'^(\d+):(\d+)', session.current_arg) if not match: return hour = int(match.group(1)) minute = int(match.group(2)) if hour < 0 or hour > 23 or minute < 0 or minute > 59: await session.send(message.MessageSegment.text('输入错误')) return global setu_scheduled_close global setu_scheduled_close_time setu_scheduled_close_time = (hour, minute) if setu_scheduled_close != None: scheduler.remove_job(setu_scheduled_close) setu_scheduled_close = None scheduler.add_job(close_setu_scheduled, 'cron', hour = hour, minute = minute, id = 'setu_close') setu_scheduled_close = 'setu_close' await session.send(message.MessageSegment.text('设置成功,当前涩图每日关闭时间为:{}:{}'.format(str(hour).zfill(2), str(minute).zfill(2))))
async def set_open_crawl_score_line(session): match = re.match(r'^(\d+):(\d+)', session.current_arg) if not match: return hour = int(match.group(1)) minute = int(match.group(2)) global Crawl_Score_Lines if Crawl_Score_Lines != None: scheduler.remove_job(Crawl_Score_Lines) Crawl_Score_Lines = None scheduler.add_job(write_down_score_line_scheduled, 'cron', hour=hour, minute=minute, id='crawl_score_lines_open') Crawl_Score_Lines = 'crawl_score_lines_open' await session.send( message.MessageSegment.text('每日{}:{}会自动爬取数据'.format( str(hour).zfill(2), str(minute).zfill(2))))
async def change(session: CommandSession): change_info = session.get( 'change', prompt= '输入要修改的订阅的 \n订阅名 修改项=,属性 \n如:\n 订阅 dyqq=,xx dsf=0\n对应参数: 订阅地址-url,订阅QQ-dyqq,订阅群-dyqun,更新频率-uptime,代理-proxy,第三方-dsf,翻译-tl,仅title-ot,仅图片-op\n\n注:\n代理、第三方、翻译、仅title属性值为1/0\nqq、群号前加英文逗号表示追加' ) user_id = session.ctx['user_id'] flag = 0 try: list_rss = RWlist.readRss() # 获取、处理信息 list_info = change_info.split(' ') name = list_info[0] # 取订阅名 list_info.pop(0) # 从列表删除 for rss_ in list_rss: if rss_.name == name: rss_a = rss_ flag = flag + 1 if flag <= 0: await session.send('订阅 ' + name + ' 不存在!') else: try: rss_tmp = rss_a for info in list_info: info_this = info.split('=', 1) if info_this[0] == 'url': rss_tmp.url = info_this[1] if info_this[0] == 'dyqq': list_user_id = info_this[1].split(',') if list_user_id[0] == '': list_user_id.pop(0) rss_tmp.user_id = rss_tmp.user_id + list_user_id else: if info_this[1] != '-1': rss_tmp.user_id = list_user_id else: rss_tmp.user_id = [] if info_this[0] == 'dyqun': list_group_id = info_this[1].split(',') if list_group_id[0] == '': list_group_id.pop(0) rss_tmp.group_id = rss_tmp.group_id + list_group_id else: if info_this[1] != '-1': rss_tmp.group_id = list_group_id else: rss_tmp.group_id = [] if info_this[0] == 'uptime': rss_tmp.time = int(info_this[1]) if info_this[0] == 'proxy': rss_tmp.img_proxy = bool(int(info_this[1])) #print(bool(info_this[1])) if info_this[0] == 'dsf': rss_tmp.notrsshub = bool(int(info_this[1])) if info_this[0] == 'tl': rss_tmp.translation = bool(int(info_this[1])) if info_this[0] == 'ot': rss_tmp.only_title = bool(int(info_this[1])) if info_this[0] == 'op': rss_tmp.only_pic = bool(int(info_this[1])) list_rss.remove(rss_a) list_rss.append(rss_tmp) RWlist.writeRss(list_rss) try: scheduler.remove_job(name) except Exception as e: print(e) # 加入订阅任务队列 TR.rss_trigger(rss_tmp.time, rss_tmp) logger.info('修改' + name + '成功') await session.send('修改 ' + name + ' 订阅成功!') except Exception as e: await session.send('命令出错,修改失败!') print(e) except: await session.send('你还没有任何订阅!\n关于插件:http://ii1.fun/7byIVb')
async def delete_job(rss: rss_class.Rss): try: scheduler.remove_job(rss.name) except Exception as e: logger.debug(e)