示例#1
0
def calDictEnd(data, start):
    st = Stack()
    if data[start] == ord('d'):
        st.push(data[start])
    start += 1
    while not st.isEmpty():
        if data[start] == ord('e'):
            st.pop()
            start += 1
        elif data[start] == ord('l') or data[start] == ord(
                'd') or data[start] == ord('i'):
            st.push(data[start])
            start += 1
        elif ord('0') <= data[start] <= ord('9'):
            num = 0
            while ord('0') <= data[start] <= ord('9'):
                num = num * 10 + (data[start] - ord('0'))
                start += 1
            if st.peek() != ord('i'):
                start += 1 + num  # 冒号加字符串长度
        elif data[start] == ord('-'):
            start += 1
        else:
            gl.get_value('logger').logger.error('Unknow character in torrent')
            exit(10)
    return start
示例#2
0
    def login(self):
        try:
            # image_file.show()
            # captcha_text = input('If image can not open in your system, then open the url below in browser\n'
            #                     + self._root + image_url + '\n' + 'Input Code:')
            self.app.getlogindata(self.stationname)

            # 取消登录,强制退出
            if not gl.get_value('logindata')[0]:
                exit('取消登录')

            login_data = {
                'username': gl.get_value('logindata')[1]['username'],
                'password': gl.get_value('logindata')[1]['password'],
                'token': gl.get_value('logindata')[1]['secondverify'],
            }
            main_page = self._session.post(self._root + 'takelogin.php',
                                           login_data,
                                           headers=self.headers,
                                           timeout=(30, 30))
            if main_page.url != self._root + 'index.php':
                self.logger.error('Login error')
                return False
            self._save()
        except BaseException as e:
            self.logger.exception(traceback.format_exc())
            exit(4)
            return False
        return True
示例#3
0
    def __init__(self, stationname):
        basepath = 'autopt/'
        self.stationname = stationname.upper()
        self.config = gl.get_value('config')[self.stationname]
        self.logger = gl.get_value('logger').logger
        self.app = gl.get_value('wxpython')

        self._session = cloudscraper.create_scraper(delay=5)
        self.csvfilename = basepath + 'torrentslist/' + self.stationname + '_list.csv'
        self.webagentfilename = basepath + 'useragent/' + self.stationname + '_webagent'
        self.cookiefilename = basepath + 'cookies/' + self.stationname + '_cookie'
        self._root = self.config['root']
        self.psk = self.config['passkey']
        self.list = []
        self.autoptpage = AutoPT_Page
        self.manager = QBmanage_Reseed.Manager(self.config)
        self.useragent = ''
        self.readwebagent()
        self.headers = {'User-Agent': self.useragent}
        if self.config['switch']:
            self._load()
        if os.path.exists(self.csvfilename):
            self.logger.debug('Read list.csv')
            with open(self.csvfilename, 'r', encoding='UTF-8') as f:
                for line in f.readlines():
                    self.list.append(line.split(',')[0])
示例#4
0
def get_torrent_name(data):
    try:
        # return str(libtorrent.torrent_info(libtorrent.bdecode(data)).name())
        metainfo = bencode.bdecode(data)

        # print (metainfo)
        return metainfo['info']['name']
    except BaseException as e:
        gl.get_value('logger').logger.exception(traceback.format_exc())
示例#5
0
 def checkptthread(self):
     if gl.get_value('thread') is not None and gl.get_value(
             'thread').is_alive():
         # time.sleep(1)
         wx.CallLater(1000, self.checkptthread)
     else:
         gl.get_value('wechat').send(text='AutoPT运行出错,已停止')
         self.logger.info('检测到线程关闭,异常退出')
         self.frame.Show()
         wx.MessageBox('检测到异常线程关闭', "AutoPT")
         wx.Exit()
示例#6
0
    def login(self):
        try:
            # image_file.show()
            # captcha_text = input('If image can not open in your system, then open the url below in browser\n'
            #                     + self._root + image_url + '\n' + 'Input Code:')
            self.app.getlogindata(self.stationname)

            # 取消登录,强制退出
            if not gl.get_value('logindata')[0]:
                exit('取消登录')

            login_data = {
                'username': gl.get_value('logindata')[1]['username'],
                'password': gl.get_value('logindata')[1]['password'],
                # 'otp': gl.get_value('logindata')[1]['secondverify'],
                'passan': '',
                'passid': '0',
                'lang': '0',
                # 'rememberme': 'yes',
            }
            main_page = self._session.post(self._root + 'takelogin.php',
                                           login_data,
                                           headers=self.headers,
                                           timeout=(30, 30))
            if main_page.status_code == 200 and main_page.url == self._root + '2fa.php':
                page = BeautifulSoup(main_page.text, 'lxml')
                authcode = page.select('input[name=authenticity_token]')
                if len(authcode) == 0:
                    return False
                authcode = authcode[0].attrs['value']
                uid = page.select('input[name=uid]')
                if len(uid) == 0:
                    return False
                uid = uid[0].attrs['value']
                login_data = {
                    'authenticity_token': authcode,
                    'uid': uid,
                    'otp': gl.get_value('logindata')[1]['secondverify'],
                }
                main_page = self._session.post(self._root + 'take2fa.php',
                                               login_data,
                                               headers=self.headers,
                                               timeout=(30, 30))
            if main_page.url != self._root + 'my.php':
                self.logger.error('Login error')
                return False
            self._save()
        except BaseException as e:
            self.logger.exception(traceback.format_exc())
            exit(4)
            return False
        return True
示例#7
0
    def pages(self):
        """Return pages in torrents.php
        :returns: yield ByrPage pages
        """
        # free url
        self.logger.debug('Get pages')
        filterurl = 'torrents.php?'
        page = self.get_url(filterurl)
        self.logger.debug('Get pages Done')

        # 监测二次验证导致的登录问题
        recheckpage = False
        n = 0
        try:
            # 防止网页获取失败时的异常
            for line in page.find_all('tr', class_='twoupfree_bg'):
                if n == 0:
                    if not gl.get_value('thread_flag'):
                        return
                    recheckpage = True
                    if not self.config['onlyattendance']:
                        yield self.autoptpage(line, 1)
                    n = 1
                else:
                    n -= 1
        except BaseException as e:
            self.logger.exception(traceback.format_exc())

        if not gl.get_value('thread_flag'):
            return

        n = 0
        try:
            # 防止网页获取失败时的异常
            for line in page.find_all('tr', class_='free_bg'):
                if n == 0:
                    if not gl.get_value('thread_flag'):
                        return
                    recheckpage = True
                    if not self.config['onlyattendance']:
                        yield self.autoptpage(line)
                    n = 1
                else:
                    n -= 1
        except BaseException as e:
            self.logger.exception(traceback.format_exc())
        if not recheckpage:
            self.logger.warning(
                '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!界面没有找到种子标签!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
            )
            if self.config['onlyattendance']:
                self.logger.warning('仅签到失败')
示例#8
0
def get_torrent_hash40(data):
    try:
        start = data.find(b'4:info') + 6
        return hashlib.sha1(data[start:calDictEnd(data, start)]).hexdigest()
        # return str(libtorrent.torrent_info(libtorrent.bdecode(data)).info_hash())
        # mangetlink = magneturi.from_torrent_data(data)
        # mangetlink = mangetlink[mangetlink.find('btih') + 5:mangetlink.find('btih') + 5 + 32]
        # b16Hash = base64.b16encode(base64.b32decode(mangetlink))
        # b16Hash = b16Hash.lower()
        # b16Hash = str(b16Hash, "utf-8")
        # return b16Hash
    except BaseException as e:
        gl.get_value('logger').logger.exception(traceback.format_exc())
示例#9
0
    def __init__(self, soup, method=0):
        """Init variables
        :soup: Soup
        """
        self.logger = gl.get_value('logger').logger
        self.method = method
        self.url = soup.find(class_='name_left').a['href']
        self.name = soup.find(class_='name_left').find('img', class_='report')['torrentname']
        self.id = soup.find(class_='name_left').find('img', class_='report')['torrent']
        self.type = soup.find('td').find('img')['alt']
        self.createtime = soup.find_all('td')[-6].text
        self.createtimestamp = time.mktime(time.strptime(self.createtime, "%Y-%m-%d%H:%M:%S"))
        self.size = self.tosize(soup.find_all('td')[-4].text)
        self.seeders = int(soup.find_all('td')[-2].text.split('/')[0])
        self.leechers = int(soup.find_all('td')[-2].text.split('\n')[-1])
        self.snatched = int(soup.find_all('td')[-3].text.replace('次', '').replace(',', ''))
        self.lefttime = ''
        self.futherstamp = -1
        try:
            # 注意,字符串中间这个不是空格
            # if self.name.endswith('[email protected]'):
            #     self.name = self.name[:len('[email protected]') * -1]
            lefttimetext = None
            for span in soup.find(class_='name_left').find_all('span'):
                if '剩余' in span.text:
                    lefttimetext = str(span).split('到')[1].split(',')[0]
                    break
            if lefttimetext is not None:
                self.lefttime = lefttimetext
                self.futherstamp = time.mktime(time.strptime(self.lefttime, "%Y年%m月%d日%H点%M分"))

        except BaseException as e:
            # 没有限制时间
            self.lefttime = ''
            self.futherstamp = -1
示例#10
0
    def start(self):
        """Start spider"""
        self.logger.info('Start Spider [' + self.stationname + ']')
        if self.config['onlyattendance']:
            self.logger.info('仅签到模式')
        # self.checktorrenttime()
        # self._load()
        with open(self.csvfilename, 'a', encoding='UTF-8') as f:
            try:
                for page in self.pages:
                    if not gl.get_value('thread_flag'):
                        continue
                    if page.id not in self.list and page.ok:
                        # page.ok为第一次筛选,不符合条件的会再次检查
                        # 下面方法为第二次筛选,不符合条件的下次不会再检查
                        # 不符合条件的就不下载,直接添加到csv里
                        if not self.judgetorrentok(page):
                            self.pageinfotocsv(f, page)
                            self.list.append(page.id)
                            continue
                        # 通过条件后再开始下载
                        req_dl = self.getdownload(page.id)
                        thash = TorrentInfo.get_torrent_hash40(
                            req_dl.content
                        ) if req_dl.status_code == 200 else ''

                        self.logger.info('Download ' + page.name)
                        self.downloadtorrent(f, page, req_dl, thash)
            except BaseException as e:
                self.logger.exception(traceback.format_exc())
        self.logger.info('Done')
def tccapi():
    ret = ""
    if request.method == 'POST':
        data = request.get_data()
        if data == b"exit":
            print("Server shutting down...")
            shutdown_server()
            return "Server shutting down..."

        # inferserver
        #myinserver = gl.get_value("myinserver")
        inferserver = gl.get_value("inferserver")
        #print(inferserver)

        data_pred = inferserver.pre_process(request)
        ret = inferserver.pridect(data_pred)
        ret = inferserver.post_process(ret)
        if not isinstance(ret, str):
            ret = str(ret)
        # print("return: ", ret)
    else:
        print(
            "please use post request.such as :curl localhost:8080/tccapi -X POST -d \'{\"img\"/:2}\'"
        )
    return ret
示例#12
0
 def onExit(self, event):
     self.SetIcon(wx.Icon(self.ICON), '正在退出...稍等1-2分钟')  # 设置图标和标题
     self.windowhandler.Hide()
     self.logger.debug('菜单退出 点击事件')
     # 退出时记得把logger的句柄移除,否则永远卡死在handler的emit里
     self.logger.removeHandler(
         gl.get_value('logger').loggingRedirectHandler)
     wx.Exit()
示例#13
0
 def __init__(self, redirect=False, filename=None):
     # redirect = True if gl.get_value('config').loglevel == 'debug' else False
     self.frame = None
     self.TaskBar = None
     self.timer = None
     self.logger = gl.get_value('logger').logger
     # list是为了引用传参
     self.loginflag = [False]
     wx.App.__init__(self, redirect, filename)
示例#14
0
    def login(self):
        try:
            login_page = self.get_url('login.php')
            image_url = login_page.find('img', alt='CAPTCHA')['src']
            image_hash = login_page.find('input', attrs={'name':
                                                         'imagehash'})['value']
            self.logger.info('Image url: ' + image_url)
            self.logger.info('Image hash: ' + image_hash)
            req = self._session.get(self._root + image_url,
                                    headers=self.headers,
                                    timeout=(30, 30))
            image_file = Image.open(BytesIO(req.content))
            # image_file.show()
            # captcha_text = input('If image can not open in your system, then open the url below in browser\n'
            #                     + self._root + image_url + '\n' + 'Input Code:')
            self.app.getlogindata(self.stationname, image_file)

            # 取消登录,强制退出
            if not gl.get_value('logindata')[0]:
                exit('取消登录')

            self.logger.debug('Captcha text: ' +
                              gl.get_value('logindata')[1]['captcha'])

            login_data = {
                'username': gl.get_value('logindata')[1]['username'],
                'password': gl.get_value('logindata')[1]['password'],
                'imagestring': gl.get_value('logindata')[1]['captcha'],
                'imagehash': image_hash
            }
            main_page = self._session.post(self._root + 'takelogin.php',
                                           login_data,
                                           headers=self.headers,
                                           timeout=(30, 30))
            if main_page.url != self._root + 'index.php':
                self.logger.error('Login error')
                return False
            self._save()
        except BaseException as e:
            self.logger.exception(traceback.format_exc())
            exit(4)
            return False
        return True
示例#15
0
def Runqbittorrent():
    logger = gl.get_value('logger').logger
    if gl.get_value('config').qbtpath != '':
        try:
            if not CheckProgramStatus('qbittorrent.exe'):
                logger.debug('未检测到QBitTorrent打开,正在尝试打开')
                os.startfile(gl.get_value('config').qbtpath)
                trytime = 60
                while trytime > 0 and (not CheckProgramStatus('qbittorrent.exe')):
                    trytime -= 5
                    logger.info('正在等待QBT启动')
                    time.sleep(5)
                if trytime <= 0:
                    logger.error('QBT启动失败,异常退出')
                else:
                    logger.error('QBT启动成功')
            else:
                logger.debug('QBitTorrent已在运行')
        except BaseException as e:
            logger.exception(traceback.format_exc())
示例#16
0
 def __init__(self, windowhandler):
     wx.adv.TaskBarIcon.__init__(self)
     self.logger = gl.get_value('logger').logger
     self.SetIcon(wx.Icon(self.ICON), self.TITLE)  # 设置图标和标题
     self.Bind(wx.EVT_MENU, self.onAbout, id=self.ID_ABOUT)  # 绑定“关于”选项的点击事件
     self.Bind(wx.EVT_MENU, self.onExit, id=self.ID_EXIT)  # 绑定“退出”选项的点击事件
     self.Bind(wx.EVT_MENU, self.onShowLog,
               id=self.ID_SHOW_LOG)  # 绑定“显示页面”选项的点击事件
     self.Bind(wx.adv.EVT_TASKBAR_LEFT_DOWN,
               self.onShowLog)  # 绑定“显示页面”选项的点击事件
     self.windowhandler = windowhandler
示例#17
0
文件: qbapi.py 项目: ossfile/AutoPT
 def __init__(self, root, username='', password=''):
     self._root = root
     self.logger = gl.get_value('logger').logger
     self._session = requests.session()
     self._session.headers = {
         'User-Agent':
         'Mozilla/5.0 AppleWebKit/537.36 Chrome/79.0.3945.16 Safari/537.36 Edg/79.0.309.11'
     }
     if username != '' and password != '':
         if not self.login(username, password):
             self.logger.warning('QBitTorrent Login Fails')
             exit(8)
示例#18
0
    def login(self):
        try:
            self.app.getlogindata(self.stationname)

            # 取消登录,强制退出
            if not gl.get_value('logindata')[0]:
                exit('取消登录')

            login_data = {
                'username': gl.get_value('logindata')[1]['username'],
                'password': gl.get_value('logindata')[1]['password'],
                # 'verify_code': gl.get_value('logindata')[1]['secondverify']
            }
            header = {
                'User-Agent': self.useragent,
                'Referer': 'https://pt.m-team.cc/takelogin.php'
            }
            main_page = self._session.post(self._root + 'takelogin.php',
                                           data=login_data,
                                           headers=header,
                                           timeout=(30, 30))
            if main_page.status_code == 200 and 'verify.php' in main_page.url:
                login_data = {
                    'otp': gl.get_value('logindata')[1]['secondverify']
                }
                sec_page = self._session.post(self._root + 'verify.php',
                                              login_data,
                                              headers=self.headers,
                                              timeout=(30, 30))
            if sec_page.url != self._root + 'index.php':
                self.logger.error('Login error')
                return False
            else:
                self._save()
                return True
        except BaseException as e:
            self.logger.exception(traceback.format_exc())
            exit(4)
            return False
        return False
示例#19
0
    def __init__(self):
        formatter = logging.Formatter(
            '%(asctime)10s [%(filename)s %(levelname)s:%(lineno)s-%(funcName)s]%(message)s'
        )

        self._logger = logging.getLogger("AutoPT")

        console = logging.StreamHandler()
        console.setLevel(logging.DEBUG)
        console.setFormatter(formatter)

        th = handlers.TimedRotatingFileHandler(
            filename='log/Run.log',
            when='midnight',
            backupCount=gl.get_value('config').logsavetime,
            encoding='utf-8')  # 往文件里写入#指定间隔时间自动生成文件的处理器
        th.setLevel(logging.DEBUG)
        # 实例化TimedRotatingFileHandler
        # interval是时间间隔,backupCount是备份文件的个数,如果超过这个个数,就会自动删除,when是间隔的时间单位,单位有以下几种:
        # S 秒
        # M 分
        # H 小时、
        # D 天、
        # W 每星期(interval==0时代表星期一)
        # midnight 每天凌晨
        th.setFormatter(formatter)  # 设置文件里写入的格式

        self.loggingRedirectHandler = LogginRedirectHandler()
        self.loggingRedirectHandler.setFormatter(formatter)
        if gl.get_value('config').loglevel == 'info':
            self.loggingRedirectHandler.setLevel(logging.INFO)
        else:
            self.loggingRedirectHandler.setLevel(logging.DEBUG)

        self._logger.addHandler(th)
        self._logger.addHandler(console)
        self._logger.addHandler(self.loggingRedirectHandler)
        self._logger.setLevel(logging.DEBUG)
示例#20
0
    def login(self):
        try:
            self.app.getlogindata(self.stationname)
            # 取消登录,强制退出
            if not gl.get_value('logindata')[0]:
                exit('取消登录')

            login_data = {
                'username': gl.get_value('logindata')[1]['username'],
                'password': gl.get_value('logindata')[1]['password'],
                'logout': 'forever',
            }
            main_page = self._session.post(self._root + 'takelogin.php',
                                           login_data,
                                           headers=self.headers)
            if main_page.url != self._root + 'index.php':
                self.logger.error('Login error')
                return False
            self._save()
        except BaseException as e:
            self.logger.exception(traceback.format_exc())
            exit(4)
            return False
        return True
示例#21
0
    def pages(self):
        """Return pages in torrents.php
        :returns: yield ByrPage pages
        """
        # free url
        self.logger.debug('Get pages')
        filterurl = 'torrents_new.php'
        page = self.get_url(filterurl)
        self.logger.debug('Get pages Done')

        # 自动签到
        self.attendance(page)

        # 监测二次验证导致的登录问题
        recheckpage = False
        n = 1
        try:
            # 防止网页获取失败时的异常
            for line in page.find('table', class_='torrents').find_all('tr'):
                if n == 0:
                    if not gl.get_value('thread_flag'):
                        return
                    recheckpage = True
                    if line.find('img', class_='pro_free2up') is not None and \
                            line.find('img', class_='hitandrun') is None and not self.config['onlyattendance']:
                        yield self.autoptpage(line, 1)
                        n = 1
                    elif line.find('img', class_='pro_free') is not None and \
                            line.find('img', class_='hitandrun') is None and not self.config['onlyattendance']:
                        yield self.autoptpage(line)
                        n = 1
                else:
                    n -= 1
        except BaseException as e:
            # self.logger.exception(traceback.format_exc())
            self.logger.debug(e)
        if not recheckpage:
            self.logger.warning(
                '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!界面没有找到种子标签!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
            )
            if self.config['onlyattendance']:
                self.logger.warning('仅签到失败')
示例#22
0
 def __init__(self, soup, method=0):
     """Init variables
     :soup: Soup
     """
     self.logger = gl.get_value('logger').logger
     self.method = method
     url = soup.find(class_='torrentname').a['href']
     self.name = soup.find(class_='torrentname').b.text
     # 注意,字符串中间这个不是空格
     if self.name.endswith('[email protected]'):
         self.name = self.name[:len('[email protected]') * -1]
     self.type = soup.img['title']
     self.createtime = soup.find_all('td')[-6].text
     self.createtimestamp = self.totimestamp(self.createtime)
     self.size = self.tosize(soup.find_all('td')[-5].text)
     self.seeders = int(soup.find_all('td')[-4].text.replace(',', ''))
     self.leechers = int(soup.find_all('td')[-3].text.replace(',', ''))
     self.snatched = int(soup.find_all('td')[-2].text.replace(',', ''))
     self.id = parse_qs(urlparse(url).query)['id'][0]
     self.futherstamp = -1
     self.lefttime = ''
示例#23
0
 def __init__(self, soup, method=0):
     """Init variables
     :soup: Soup
     """
     self.logger = gl.get_value('logger').logger
     self.method = method
     self.url = soup.find(class_='torrentname').a['href']
     self.name = soup.find(class_='torrentname').b.text
     # 注意,字符串中间这个不是空格
     if self.name.endswith('[email protected]'):
         self.name = self.name[:len('[email protected]') * -1]
     self.type = soup.img['title']
     self.createtime = soup.find_all('td')[-8].text
     self.createtimestamp = self.totimestamp(self.createtime)
     self.size = self.tosize(soup.find_all('td')[-7].text)
     self.seeders = int(soup.find_all('td')[-6].text.replace(',', ''))
     self.leechers = int(soup.find_all('td')[-5].text.replace(',', ''))
     self.snatched = int(soup.find_all('td')[-4].text.replace(',', ''))
     self.id = parse_qs(urlparse(self.url).query)['id'][0]
     try:
         # 注意,字符串中间这个不是空格
         if self.name.endswith('[email protected]'):
             self.name = self.name[:len('[email protected]') * -1]
         self.lefttime = [
             tmp_span.text for tmp_span in soup.find(
                 class_='torrentname').find_all('span')
             if self.matchlefttimestr(tmp_span.text)
         ]
         if len(self.lefttime) == 1:
             self.lefttime = self.lefttime[0]
             self.futherstamp = self.mystrptime(self.lefttime)
         else:
             self.lefttime = ''
             self.futherstamp = -1
     except BaseException as e:
         # 没有限制时间
         self.lefttime = ''
         self.futherstamp = -1
     pass
示例#24
0
    def __init__(self):
        wx.Frame.__init__(self,
                          parent=None,
                          id=1,
                          title='AutoPT',
                          pos=wx.DefaultPosition,
                          size=(1000, 700),
                          style=wx.CAPTION | wx.CLOSE_BOX,
                          name='frame')

        self.SetIcon(wx.Icon(self.ICON))  # 设置图标和标题

        self.SetForegroundColour(wx.WHITE)
        self.SetBackgroundColour(wx.WHITE)

        self.textctrl = wx.TextCtrl(self,
                                    style=wx.TE_MULTILINE | wx.TE_READONLY)

        self.textctrl.SetForegroundColour(wx.BLACK)
        self.textctrl.SetBackgroundColour(wx.WHITE)

        self.Bind(wx.EVT_CLOSE, self.onExit)  # 绑定“退出”选项的点击事件

        self.logger = gl.get_value('logger').logger
示例#25
0
def run():
    logger = gl.get_value('logger').logger
    try:
        maxtime = 1
        auto_byr = None
        auto_tju = None
        auto_pter = None
        auto_mteam = None
        auto_pthome = None
        auto_frds = None
        auto_ttg = None
        auto_lemonhd = None

        Runqbittorrent()

        refconfig = {
            'name': 'reseed',
            'ref': {
                'byr': auto_byr,
                'tju': auto_tju,
                'mteam': auto_mteam,
                'pter': auto_pter,
                'pthome': auto_pthome,
                'frds': auto_frds,
                'ttg': auto_ttg,
                'lemonhd': auto_lemonhd,
            }
        }
        gl.set_value('allref', refconfig)
        auto_byr = AutoPT_BYR()
        refconfig['ref']['byr'] = auto_byr
        auto_tju = AutoPT_TJU()
        refconfig['ref']['tju'] = auto_tju
        auto_pter = AutoPT_PTER()
        refconfig['ref']['pter'] = auto_pter
        auto_mteam = AutoPT_MTEAM()
        refconfig['ref']['mteam'] = auto_mteam
        auto_pthome = AutoPT_PTHOME()
        refconfig['ref']['pthome'] = auto_pthome
        auto_frds = AutoPT_FRDS()
        refconfig['ref']['frds'] = auto_frds
        auto_ttg = AutoPT_TTG()
        refconfig['ref']['ttg'] = auto_ttg
        auto_lemonhd = AutoPT_LEMONHD()
        refconfig['ref']['lemonhd'] = auto_lemonhd

        if gl.get_value('config').switch('byr'):
            if maxtime % gl.get_value('config').intervaltime('byr') != 0:
                maxtime *= gl.get_value('config').intervaltime('byr')
        if gl.get_value('config').switch('tju'):
            if maxtime % gl.get_value('config').intervaltime('tju') != 0:
                maxtime *= gl.get_value('config').intervaltime('tju')
        if gl.get_value('config').switch('pter'):
            if maxtime % gl.get_value('config').intervaltime('pter') != 0:
                maxtime *= gl.get_value('config').intervaltime('pter')
        if gl.get_value('config').switch('mteam'):
            if maxtime % gl.get_value('config').intervaltime('mteam') != 0:
                maxtime *= gl.get_value('config').intervaltime('mteam')
        if gl.get_value('config').switch('pthome'):
            if maxtime % gl.get_value('config').intervaltime('pthome') != 0:
                maxtime *= gl.get_value('config').intervaltime('pthome')
        if gl.get_value('config').switch('frds'):
            if maxtime % gl.get_value('config').intervaltime('frds') != 0:
                maxtime *= gl.get_value('config').intervaltime('frds')
        if gl.get_value('config').switch('ttg'):
            if maxtime % gl.get_value('config').intervaltime('ttg') != 0:
                maxtime *= gl.get_value('config').intervaltime('ttg')
        if gl.get_value('config').switch('lemonhd'):
            if maxtime % gl.get_value('config').intervaltime('lemonhd') != 0:
                maxtime *= gl.get_value('config').intervaltime('lemonhd')

        manager = Manager()
        if maxtime % (6 * 3600) != 0:
            maxtime *= (6 * 3600)

        counttime = 0
        while gl.get_value('thread_flag'):
            if gl.get_value('config').switch(
                    'reseed') and counttime % 120 == 0:
                manager.checkalltorrentexist()
                manager.recheck()
            if gl.get_value('config').switch(
                    'reseed') and counttime % (3 * 3600) == 0:
                manager.checkprttracker()
                manager.recheckall()
                manager.checkemptydir()
            if gl.get_value('thread_flag') and gl.get_value('config').switch(
                    'lemonhd') and counttime % gl.get_value(
                        'config').intervaltime('lemonhd') == 0:
                auto_lemonhd.start()
                pass
            if gl.get_value('thread_flag') and gl.get_value('config').switch(
                    'ttg'
            ) and counttime % gl.get_value('config').intervaltime('ttg') == 0:
                auto_ttg.start()
                pass
            if gl.get_value('thread_flag') and gl.get_value('config').switch(
                    'frds'
            ) and counttime % gl.get_value('config').intervaltime('frds') == 0:
                auto_frds.start()
                pass
            if gl.get_value('thread_flag') and gl.get_value('config').switch(
                    'pthome') and counttime % gl.get_value(
                        'config').intervaltime('pthome') == 0:
                auto_pthome.start()
            if gl.get_value('thread_flag') and gl.get_value('config').switch(
                    'mteam') and counttime % gl.get_value(
                        'config').intervaltime('mteam') == 0:
                auto_mteam.start()
            if gl.get_value('thread_flag') and gl.get_value('config').switch(
                    'tju'
            ) and counttime % gl.get_value('config').intervaltime('tju') == 0:
                auto_tju.start()
            if gl.get_value('thread_flag') and gl.get_value('config').switch(
                    'pter'
            ) and counttime % gl.get_value('config').intervaltime('pter') == 0:
                auto_pter.start()
            if gl.get_value('thread_flag') and gl.get_value('config').switch(
                    'byr'
            ) and counttime % gl.get_value('config').intervaltime('byr') == 0:
                auto_byr.start()

            counttime = (1 + counttime) % maxtime
            time.sleep(1)
    except BaseException:
        logger.exception(traceback.format_exc())
示例#26
0
 def __init__(self, token):
     self.token = token
     self._root = 'https://iyuu.cn/' + self.token + '.send'
     self._session = requests.session()
     self.logger = gl.get_value('logger').logger
示例#27
0
                    time.sleep(5)
                if trytime <= 0:
                    logger.error('QBT启动失败,异常退出')
                else:
                    logger.error('QBT启动成功')
            else:
                logger.debug('QBitTorrent已在运行')
        except BaseException as e:
            logger.exception(traceback.format_exc())


if __name__ == '__main__':
    gl._init()
    gl.set_value('thread_flag', True)
    try:
        gl.set_value('config', Myconfig.Config())
        gl.set_value('logger', Mylogger.Mylogger())
        gl.set_value('wechat', iyuu(gl.get_value('config').token))
        gl.set_value('thread', Thread(target=run))
        app = BGIcon.MyWindows()
        gl.set_value('wxpython', app)

        gl.get_value('logger').logger.info('程序启动')
        gl.get_value('thread').start()

        app.MainLoop()
    except BaseException:
        traceback.print_exc(file=open('treace.txt', 'w+'))
        # gl.get_value('logger').logger.exception(traceback.format_exc())
    gl.set_value('thread_flag', False)
示例#28
0
 def emit(self, record):
     msg = self.format(record)
     gl.get_value('logwindow').frame.textctrl.AppendText(msg + '\n')
示例#29
0
    def pages(self):
        """Return pages in torrents.php
        :returns: yield ByrPage pages
        """
        # free url
        self.logger.debug('Get Media pages')
        filterurl = 'browse.php?c=M'
        page = self.get_url(filterurl)
        self.logger.debug('Get pages Done')

        # 自动签到
        self.attendance(page)

        # 监测二次验证导致的登录问题
        recheckpage = False
        n = 1
        try:
            # 防止网页获取失败时的异常
            for line in page.find('table', id='torrent_table').find_all('tr'):
                # print(line)
                # print('\n\n\n\n\n')
                if n == 0:
                    recheckpage = True
                    if line.find('img', src='/pic/ico_2xfree.gif') is not None and \
                            line.find('img', src='/pic/hit_run.gif') is None and not self.config['onlyattendance']:
                        yield self.autoptpage(line, 1)
                    elif line.find('img', src='/pic/ico_free.gif') is not None and \
                            line.find('img', src='/pic/hit_run.gif') is None and not self.config['onlyattendance']:
                        yield self.autoptpage(line)
                else:
                    n -= 1
        except BaseException as e:
            # self.logger.exception(traceback.format_exc())
            self.logger.debug(e)
        if not recheckpage:
            self.logger.warning(
                '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!界面没有找到种子标签!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
            )
            if self.config['onlyattendance']:
                self.logger.warning('仅签到失败')
        elif recheckpage and self.config['onlyattendance']:
            return
        if not gl.get_value('thread_flag'):
            return

        self.logger.debug('Get Game&Ware pages')
        filterurl = 'browse.php?c=G'
        page = self.get_url(filterurl)
        self.logger.debug('Get pages Done')
        # 监测二次验证导致的登录问题
        recheckpage = False
        n = 1
        try:
            # 防止网页获取失败时的异常
            for line in page.find('table', id='torrent_table').find_all('tr'):
                # print(line)
                # print('\n\n\n\n\n')
                if n == 0:
                    recheckpage = True
                    if line.find('img', src='/pic/ico_2xfree.gif') is not None and \
                            line.find('img', src='/pic/hit_run.gif') is None and not self.config['onlyattendance']:
                        yield self.autoptpage(line, 1)
                    elif line.find('img', src='/pic/ico_free.gif') is not None and \
                            line.find('img', src='/pic/hit_run.gif') is None and not self.config['onlyattendance']:
                        yield self.autoptpage(line)
                else:
                    n -= 1
        except BaseException as e:
            # self.logger.exception(traceback.format_exc())
            self.logger.debug(e)
        if not recheckpage:
            self.logger.warning(
                '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!界面没有找到种子标签!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
            )
            if self.config['onlyattendance']:
                self.logger.warning('仅签到失败')
        elif recheckpage and self.config['onlyattendance']:
            return
        if not gl.get_value('thread_flag'):
            return