コード例 #1
0
def run():
    mysql = Mysql()
    sql, val = mysql.select_sql(tb=TB_INFO,
                                sel="COUNT(*) as c",
                                cond={"status": 3})
    res = mysql.getOne(sql, val)
    if res['c']:
        Selvisa()
    else:
        print('没有数据, 等待中...', strftime('%m/%d %H:%M:%S'))
コード例 #2
0
def run():
    while 1:
        mysql = Mysql()
        # def select_sql(self, tb, sel="*", cond=None, param="")
        sql, val = mysql.select_sql(tb=TB_INFO,
                                    sel="COUNT(*) as c",
                                    cond={"status": 8})
        res = mysql.getOne(sql, val)
        if res["c"]:
            ic = Implement_class(112)
            ic.main()
        else:
            print('没有数据, 等待中...', strftime('%m/%d %H:%M:%S'))
            time.sleep(10)
            os.system("cls")
コード例 #3
0
ファイル: cehsi.py プロジェクト: nanshaolmt/Australia
class Selvisa(huilian_selenium.Huilian):
    mysql = Mysql()
    tb = 'dc_business_thailand_setting'

    def __init__(self, app_id=""):
        print(app_id)
        pass

    def pageSuc(self):
        # 保存状态至数据库
        v_t_list = [('BJS', '北京'), ('TNA', '济南'), ('XIY', '西安'), ('SHA', '上海'),
                    ('HGH', '杭州'), ('NKG', '南京'), ('CAN', '广州'), ('SZX', '深圳'),
                    ('FOC', '福州'), ('CNG', '成都'), ('CKG', '重庆'), ('KMG', '昆明'),
                    ('WUH', '武汉'), ('CSX', '长沙'), ('SHE', '沈阳')]
        for k, v in v_t_list:
            print(f'正在更新的是:{v}')
            update_data = {
                "status": 11,
                "mpid": 44,
                "type": "法国领区",
                "china_name": v,
                "english_name": v,
                "china_value": k,
                "english_value": k,
            }
            sqls = self.asql.insert_sql(tb=self.tb, **update_data)
            self.asql.update(*sqls)
            sleep(1)

    # 数据库操作
    @property
    def asql(self):
        return Mysql()
コード例 #4
0
ファイル: aust_run.py プロジェクト: nanshaolmt/Australia
def run():
    while 1:
        mysql = Mysql()
        # def select_sql(self, tb, sel="*", cond=None, param="")
        #sql ----'SELECT COUNT(*) as c FROM dc_business_australia_info_eng WHERE status=%s '
        #val---[1] status 的值
        #"dc_business_australia_info_eng"  个人信息表.
        sql, val = mysql.select_sql(tb=TB_INFO,
                                    sel="COUNT(*) as c",
                                    cond={"status": 1})
        #查询 status 是1 的所有数据,取第一条.
        res = mysql.getOne(sql, val)

        #c  是查出来的值  count(*) as c    status  为1 的个数。
        if res["c"]:
            ic = Implement_class(112)
            ic.main()
        else:
            print('没有数据, 等待中...', strftime('%m/%d %H:%M:%S'))
            time.sleep(10)
            os.system("cls")
コード例 #5
0
class Selvisa(huilian_selenium.Huilian):
    mysql = Mysql()
    _tb_info = "dc_business_australia_info_eng"
    _tb_infoC = "dc_business_australia_info"
    _tb_visa = "dc_business_visa_account"

    def __init__(self, app_id=""):
        sql, val = self.asql.select_sql(
            tb=self._tb_info,
            cond={"status": 3} if not app_id else {"id": app_id})
        self.app = self.asql.getOne(sql, val)
        self.download_path = os.path.join(settings.BASEDIR, 'files')
        if os.path.isdir(self.download_path):
            shutil.rmtree(self.download_path)
        self.initParmar()
        # 设置 chrome_options 属性
        chrome_options = webdriver.ChromeOptions()
        # 设置浏览器窗口大小
        chrome_options.add_argument('window-size=1800x2000')
        # 无界面
        chrome_options.add_argument('--headless')
        # 不加载图片
        chrome_options.add_argument('blink-settings=imagesEnabled=false')
        chrome_options = huilian_selenium.chromeOptions(noWin=True,
                                                        noImg=True,
                                                        pdf=True)
        self.driver = webdriver.Chrome(chrome_options=chrome_options)
        self.driver.maximize_window()
        super().__init__(driver=self.driver)
        self.Login()

    # 信息,参数
    def initParmar(self):
        try:
            self.id = self.app['id']
            self.mpid = self.app['mpid']
            self.application_id = self.app['application_id']
            self.fullName = self.app["username"].strip()  # 全名 - 中
            self.application_status = self.app['application_status']
            # visa_account 信息
            visa_account = self.asql.getOne(*self.asql.select_sql(
                tb=self._tb_visa, cond={"mpid": self.mpid}))
            # if visa_account['email_status'] == 1:
            #     self.userName = visa_account['official_account']  # 登陆账号
            #     self.password = visa_account['official_account_pass']  # 登陆密码
            # else:
            self.userName = '******'
            self.password = '******'
        except Exception as e:
            pass
            print(e)

    # 登录页面
    def Login(self):
        print('进入登录页面...')
        try:
            # get方法会一直等到页面加载,然后才会继续程序,通常测试会在这里选择# sleep(2)
            self.open("https://online.immi.gov.au/lusc/login")
            sleep(2)
            # 输入登陆用户名
            self.send_keys((By.NAME, 'username'), self.userName)
            # 输入登陆密码
            self.send_keys((By.NAME, 'password'), self.password)
            self.click((By.NAME, 'login'))
            if ">An error has occurred<" in self.page:
                return 0
            else:
                pass
            self.click((By.NAME, 'continue'), 2)
            self.send_keys((By.NAME, 'i_instantSearchFld'),
                           self.application_id)
            self.click((By.NAME, 'btn_perform_instant_srch'), 2)
            if 'defaultActionPanel_0_3' in self.page:
                update_data = {
                    "status": 5,
                    "application_status": 5,
                    "utime": int(time())
                }
                sqls = self.asql.update_sql(tb=self._tb_info,
                                            cond={"id": self.app["id"]},
                                            **update_data)
                sqlc = (sqls[0].replace(self._tb_info,
                                        self._tb_infoC), sqls[1])
                self.asql.update(*sqls)
                self.asql.update(*sqlc)
                sleep(1)
                self.click((By.ID, 'defaultActionPanel_0_3'), 3)
                self.pageSuc()
            pass
        except Exception as e:
            print(e)
            self.quit()
            pass

    def pageSuc(self):
        print(f"进入付款成功页面")
        try:
            text = self.page
            text_required = text[text.rfind('Application home'):]
            text_required = text_required[text_required.find('<div id'):]
            requiredId = pub.get_reg_value(r'(?<=div id=").*?(?=")',
                                           text_required)
            requirexp = f"//*[@id='{requiredId}']/div/div[2]/div/div/div"
            # 判断文件夹是否存在,如果没有则创建
            if not os.path.exists(self.download_path):
                os.mkdir(self.download_path)
                sleep(10)
            # 个人信息表,下载PDF文档
            self.click((By.XPATH, f'{requirexp}/table/tbody/tr[1]//a'), 2)
            sleep(6)
            # 文件名字
            info_name = self.download_path + '\\visa.pdf'
            # 文件重命名
            os.rename(os.path.join(self.download_path, 'Application'),
                      info_name)
            sleep(1)
            # 浏览器开的窗口总数,下标从0开始
            windows = self.driver.window_handles
            # 去第二个窗口
            self.driver.switch_to.window(windows[1])
            # 关闭当前窗口
            self.close()
            sleep(1)
            my_info_url = requests.post(
                "https://visa.dllm.cn/index.php?s=/Business/Pcapi/insertpdf",
                files={
                    "file": ("visa.pdf", open(info_name,
                                              'rb'), "application/pdf")
                },
                timeout=10).json()

            update_data = {"my_info_url": my_info_url, "utime": int(time())}
            sqls = self.asql.update_sql(tb=self._tb_info,
                                        cond={"id": self.app["id"]},
                                        **update_data)
            sqlc = (sqls[0].replace(self._tb_info, self._tb_infoC), sqls[1])
            self.asql.update(*sqls)
            self.asql.update(*sqlc)
            sleep(1)
            return 0

        except Exception as e:
            print(e)
            self.quit()
            pass
            return 1

    # 数据库操作
    @property
    def asql(self):
        return Mysql()
コード例 #6
0
 def asql(self):
     return Mysql()
コード例 #7
0
class Selvisa(huilian_selenium.Huilian):
    mysql = Mysql()
    _tb_info = "dc_business_australia_info_eng"
    _tb_infoC = "dc_business_australia_info"
    _tb_visa = "dc_business_visa_account"

    def __init__(self, app_id=""):
        sql, val = self.asql.select_sql(
            tb=self._tb_info,
            cond={"status": 5} if not app_id else {"id": app_id})
        self.app = self.asql.getAll(sql, val)
        for i in self.app:
            self.id = i['id']
            self.application_id = i['application_id']
            self.mpid = i['mpid']
            self.fullName = i["username"].strip()  # 全名 - 中
            self.firstEName = i["english_name"].strip()  # 姓 - 英
            self.lastEName = i["english_name_s"].strip()  # 名 - 英
            self.application_status = i['application_status']
            self.download_path = os.path.join(settings.BASEDIR, 'files')
            if os.path.isdir(self.download_path):
                shutil.rmtree(self.download_path)
            self.initParmar()
            # 设置 chrome_options 属性
            chrome_options = webdriver.ChromeOptions()
            # 设置浏览器窗口大小
            chrome_options.add_argument('window-size=1800x2000')
            # 无界面
            chrome_options.add_argument('--headless')
            # 不加载图片
            chrome_options.add_argument('blink-settings=imagesEnabled=false')
            chrome_options = huilian_selenium.chromeOptions(noWin=True,
                                                            noImg=True,
                                                            pdf=True)
            self.driver = webdriver.Chrome(chrome_options=chrome_options)
            self.driver.maximize_window()
            super().__init__(driver=self.driver)
            self.Login()

    # 信息,参数
    def initParmar(self):
        try:
            # visa_account 信息
            visa_account = self.asql.getOne(*self.asql.select_sql(
                tb=self._tb_visa, cond={"mpid": self.mpid}))
            if visa_account['email_status'] == '1':
                self.userName = visa_account['official_account']  # 登陆账号
                self.password = visa_account['official_account_pass']  # 登陆密码
            else:
                self.userName = '******'
                self.password = '******'
        except Exception as e:
            pass
            print(e)

    # 登录页面
    def Login(self):
        print('进入登录页面...')
        try:
            # get方法会一直等到页面加载,然后才会继续程序,通常测试会在这里选择# sleep(2)
            self.open("https://online.immi.gov.au/lusc/login")
            sleep(2)
            # 输入登陆用户名
            self.send_keys((By.NAME, 'username'), self.userName)
            # 输入登陆密码
            self.send_keys((By.NAME, 'password'), self.password)
            self.click((By.NAME, 'login'))
            if ">An error has occurred<" in self.page:
                return 0
            else:
                pass
            self.click((By.NAME, 'continue'), 2)
            if self.application_status == 5:
                self.send_keys((By.NAME, 'i_instantSearchFld'),
                               self.application_id)
                self.click((By.NAME, 'btn_perform_instant_srch'), 2)
                self.click((By.ID, 'defaultActionPanel_0_3'), 2)
                self.pageSuc()
        except Exception as e:
            print(e)
            pass

    def pageSuc(self):
        print(f'查询{self.fullName}是否出签?')
        sleep(3)
        try:
            # 已出签
            if 'Granted' in self.page:
                self.click((By.ID, '_0a1a0c1a0a0b0a1a0b0-body'))
                text = self.find_element(
                    (By.ID, '_0a1a0c1a0a0b1a0c2-row-r0-_0a0b')).text
                sleep(2)
                if text == 'IMMI Grant Notification':
                    self.click((By.ID, '_0a1a0c1a0a0b1a0c2-row-r0-_0a0b'), 2)
                    self.click(
                        (By.ID, '_0a1a0c1a0a0b1a0c2-row-r0-_0a0a-dlg-_0b0b'),
                        2)
                else:
                    self.click((By.ID, '_0a1a0c1a0a0b1a0c2-row-r1-_0a0b'), 2)
                    sleep(4)
                    self.click(
                        (By.ID, '_0a1a0c1a0a0b1a0c2-row-r1-_0a0a-dlg-_0b0b'),
                        2)
                # if os.path.isdir(self.download_path):
                #     os.mkdir(self.download_path)
                #     sleep(3)
                receive_path = self.download_path + r'\application.pdf'
                sleep(5)
                receive_url = requests.post(
                    "https://visa.dllm.cn/index.php?s=/Business/Pcapi/insertpdf",
                    files={
                        "file":
                        ("application.pdf", open(receive_path,
                                                 'rb'), "application/pdf")
                    },
                    timeout=10).json()
                print(receive_url)
                # 保存状态至数据库
                update_data = {
                    "status": 6,
                    "receive_url": receive_url,
                    "utime": int(time())
                }
                sqls = self.asql.update_sql(tb=self._tb_info,
                                            cond={"id": self.id},
                                            **update_data)
                sqlc = [
                    sqls[0].replace(self._tb_info, self._tb_infoC), sqls[1]
                ]
                self.asql.update(*sqls)
                self.asql.update(*sqlc)
                sleep(1)
                print(f'{self.fullName}已出签')
                self.quit()
                return 0
            else:
                print(f'{self.fullName}未出签')
                self.quit()
                return 0
        except Exception as e:
            print(e)
            self.quit()
            pass
            return 1

    # 数据库操作
    @property
    def asql(self):
        return Mysql()