Beispiel #1
0
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('自动推送当前档线已关闭'))
Beispiel #2
0
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('自动爬取数据已关闭'))
Beispiel #3
0
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')
Beispiel #4
0
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')
Beispiel #5
0
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('清除成功'))
Beispiel #6
0
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('你还没有任何订阅!')
Beispiel #8
0
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))))
Beispiel #9
0
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))))
Beispiel #10
0
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)