Exemple #1
0
class TaoXiaoShuo:
    _app_id = 'com.martian.ttbook'

    _article_list_res = 'com.martian.ttbook:id/bs_list_book_name'
    _article_read_res = 'com.martian.ttbook:id/bd_reading'
    _article_advertise_close_res = 'com.martian.ttbook:id/bt_cancel'
    _article_save_to_shell_res = 'com.martian.ttbook:id/dialog_close'
    _article_end_res = 'com.martian.ttbook:id/tv_buy_reading_purcgase'
    _article_end_text = '余额不足请充值'

    def __init__(self, device_id):
        self._d = u2.connect_usb(device_id)
        self._operator = Operator(self._d)
        self._reader = Reader(self._d)

    def get_article_list_length(self):
        return self._operator.get_resource_length(self._article_list_res)

    def next_article_list(self):
        self._reader.page_up()
        time.sleep(3)

    def in_article(self, i):
        self._reader.in_article(self._article_list_res, i)
        time.sleep(3)
        self._operator.click_resource_if_exist(self._article_read_res)
        time.sleep(3)
        self._operator.click_resource_if_exist(self._article_advertise_close_res)

    def out_article(self):
        print(self._operator.get_resource_text('com.martian.ttbook:id/duration_bonus'))
        self._operator.go_back()
        time.sleep(3)
        self._operator.click_resource_if_exist(self._article_save_to_shell_res)
        time.sleep(3)
        while 0 == self.get_article_list_length():
            self._operator.go_back()
            time.sleep(3)

    def check_end(self):
        text = self._operator.get_resource_text(self._article_end_res)
        return text is not None and text == self._article_end_text

    def read(self):
        i = 0
        while not taoxiaoshuo.check_end():
            i += 1
            now = int(time.time())
            time_struct = time.localtime(now)
            print(i, '-', time.strftime("%Y-%m-%d %H:%M:%S", time_struct))
            self._reader.page_left()
            time.sleep(random.randint(5, 7))
            self._operator.click_resource_if_exist(self._article_advertise_close_res)
Exemple #2
0
class Reader:
    def __init__(self, d):
        self._d = d
        self._operator = Operator(self._d)
        self._screen = Screen(self._d)

    def get_article_list_length(self, article_list_resource_id):
        article_list_length = self._operator.get_resource_length(
            article_list_resource_id)
        while article_list_length == 0:
            self.page_up()
            article_list_length = self._operator.get_resource_length(
                article_list_resource_id)
            if article_list_length > 0:
                return article_list_length
        return article_list_length

    def page_left(self):
        self._screen.page_left()

    def page_up(self):
        self._screen.page_up()

    def in_article(self, article_list_resource_id, article_index):
        title = self._operator.get_resource_text(article_list_resource_id,
                                                 article_index)
        if title is None:
            return False
        print("INTO: " + title)
        if not self._operator.click_resource(article_list_resource_id,
                                             article_index):
            return False
        return True

    def read_article(self, direction='HORIZON'):
        if direction == 'HORIZON' or direction == 'H':
            self._screen.page_left()
        else:
            self._screen.page_up()
        sleep_random(3, 6)

    def exit_article(self):
        self._operator.go_back()
Exemple #3
0
class WanQia:
    _app_id = 'com.yyk.whenchat'
    _resource_id = _app_id + ':id/'
    _btn_cancle_bind_phone = _resource_id + 'btnLeft'
    _txt_cancle_bind_phone = '取消'
    _btn_me = _resource_id + 'ivTabMine'

    def __init__(self, d):
        self._d = d
        self._operator = Operator(d)
        self._reader = Reader(d)

    def start_app(self):
        self._operator.close_all_app()
        self._operator.start_app(self._app_id)
        text = self._operator.get_resource_text(self._btn_cancle_bind_phone)
        if text is not None and text == self._txt_cancle_bind_phone:
            self._operator.click_resource_if_exist(self._btn_cancle_bind_phone)

    def sign(self):
        self._operator.click_resource_if_exist(self._btn_me)
        # self._operator.click_xpath_if_exist(
        #     '//*[@resource-id="com.yyk.whenchat:id/vInvite"]/android.widget.ImageView[1]')
        self._operator.click_xpath_if_exist('//*[@text="邀请赚钱"]')
        self._operator.click_position(0.500, 0.880)
        # self._operator.click_xpath_if_exist('//*[@text="立即邀请"]')
        while not self._operator.is_resource_exists('com.tencent.mm:id/ln'):
            self._operator.click_xpath_if_exist(
                '//*[@resource-id="com.yyk.whenchat:id/gvBody"]/android.widget.LinearLayout[1]/android.widget.ImageView[1]'
            )
            sleep(30)
        self._operator.go_back()
        return True

    def wanqia(self):
        print("%s WanQia start ..." % get_local_time())
        self.start_app()
        success = self.sign()
        self._operator.close_all_app()
        print("%s WanQia end ..." % get_local_time())
        return success
Exemple #4
0
class Shuabao(object):
    _app_id = 'com.jm.video'
    _resource_id = _app_id + ":id/"
    _res_my_name = _resource_id + 'tv_name'

    def __init__(self, d):
        self._d = d
        self._operator = Operator(d)
        self._reader = Reader(d)

        self._bonus_res = 'com.ss.android.ugc.aweme.lite:id/kh'

    def start_app(self):
        self._operator.close_all_app()
        self._operator.start_app(self._app_id)

    # 右下角“我”
    def right_bottom_me(self):
        print("Click 我")
        self._operator.into_page_xpath('//*[@text="我"]', self._res_my_name,
                                       None)

    def watch_adv(self):
        sleep(35)
        while not self._operator.is_resource_exists(
                'com.jm.video:id/tt_video_ad_close'):
            sleep(1)
        self._operator.click_resource_if_exist(
            'com.jm.video:id/tt_video_ad_close')

    # 提钱
    def withdraw(self):
        if get_hour() < 12:
            return
        adv_finish = False
        while not adv_finish:
            if self._operator.is_xpath_exist('//*[@text="提现"]'):
                self._operator.click_xpath_if_exist('//*[@text="提现"]')
                if self._operator.is_xpath_exist('//*[@text="立即观看"]'):
                    self._operator.click_xpath_if_exist('//*[@text="立即观看"]')
                    self.watch_adv()
                    self._operator.go_back()
                else:
                    adv_finish = True
        if self._operator.is_xpath_exist('//*[@text="提现"]'):
            self._operator.click_xpath_if_exist('//*[@text="提现"]')
            if self._operator.is_xpath_exist('//*[@text="立即提现"]'):
                self._operator.click_xpath_if_exist('//*[@text="立即提现"]')
                self._operator.click_xpath_if_exist('//*[@text="赚更多元宝"]')

    def sign(self):
        self.right_bottom_me()
        # 中间任务
        print("Click 任务")
        self._operator.click_xpath_if_exist('//*[@text="任务"]')
        if self._operator.is_resource_exists('com.jm.video:id/imgClose'):
            self._operator.click_resource_if_exist('com.jm.video:id/imgClose')
        self.withdraw()
        if self._operator.is_xpath_exist('//*[@text="立即签到"]'):
            self._operator.click_xpath_if_exist('//*[@text="立即签到"]')
            if self._operator.is_xpath_exist('//*[@text="放弃签到看视频签到"]'):
                resource = self._d.xpath('//*[@text="放弃签到看视频签到"]')
                resource.click()
                self.watch_adv()
                self._operator.click_xpath_if_exist(
                    '//*[@text="刷宝短视频"]/android.view.View[1]/android.view.View[6]/android.view.View[1]/android.view.View[1]'
                )

    def watch(self):
        i = 0
        while i < 15:
            print(i, '-', get_local_time(), '-',
                  self._operator.get_resource_text('com.jm.video:id/desc'))
            self._reader.page_up()
            sleep_random()
            i += 1

    def is_video(self):
        return self._operator.is_xpath_exist(
            '//*[@resource-id="com.jm.video:id/tabLayout"]/android.widget.LinearLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]'
        )

    def go_to_video(self):
        while not self.is_video():
            self._operator.go_back()
        self._operator.click_xpath_if_exist(
            '//*[@resource-id="com.jm.video:id/tabLayout"]/android.widget.LinearLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]'
        )

    def shuabao(self):
        print("%s Shuabao start ..." % get_local_time())
        self.start_app()
        self.sign()
        self.go_to_video()
        self.watch()
        self._operator.close_all_app()
        print("%s Shuabao end ..." % get_local_time())
Exemple #5
0
class QuTouTiao(object):
    _app_id = 'com.jifen.qukan'
    _resource_id = _app_id + ":id/"

    def __init__(self, d):
        self._d = d
        self._operator = Operator(d)
        self._reader = Reader(d)

        self._article_list_res = 'com.jifen.qukan:id/aly'

        self._top_left_bonus_res = 'com.jifen.qukan:id/bwg'
        self._top_left_bonus_text = '领取'

        self._comment_res = 'com.jifen.qukan:id/a0o'
        self._comment_text = '全部评论'

    def start_app(self):
        self._operator.close_all_app()
        self._operator.start_app(self._app_id)

    # 右下角“我”
    def into_me(self):
        print("Click 我的")
        while not self._operator.is_xpath_exist('//*[@text="查看个人主页"]'):
            self._operator.click_xpath_if_exist('//*[@text="我的"]')

    def sign(self):
        self.into_me()
        self.withdraw()
        print("Click 去签到")
        self._operator.click_xpath_if_exist('//*[@text="去签到"]')
        self._operator.click_xpath_if_exist('//*[@text="任务"]')

        i = 0
        while not self._operator.is_xpath_exist('//*[@text="挑战60天超长签到"]'):
            print("60天超长签到")
            i += 1
            if i > 10:
                break
            self._reader.page_up()
        self._operator.click_xpath_if_exist('//*[@text="挑战60天超长签到"]')
        self._operator.go_back()

    def current_position(self):
        if self._operator.is_resource_exists(
                'com.jifen.qukan:id/nz') and self._operator.is_resource_exists(
                    'com.jifen.qukan:id/bpq'):
            return 'ARTICLE'
        else:
            return 'LIST'

    def withdraw(self):
        print("提现")
        # if get_hour() < 12:
        #     return
        self._operator.click_xpath_if_exist('//*[@text="我的"]')
        self._operator.click_resource_if_exist('com.jifen.qukan:id/auv')
        self._operator.click_xpath_if_exist('//*[@text="提现"]')
        self._operator.click_resource_if_exist('alipay_quick')
        self._operator.click_xpath_if_exist('//*[@text="我知道了"]')
        self._operator.go_back()
        self._operator.go_back()
        self._operator.go_back()

    def read(self):
        print("阅读文章")
        self._operator.click_xpath_if_exist('//*[@text="我的"]')
        self._operator.click_xpath_if_exist('//*[@text="头条"]')
        self._operator.click_xpath_if_exist('//*[@text="刷新"]')
        total_artical = 0
        while total_artical < 5:
            self._reader.page_up()
            article_list_length = self.get_article_list_length()
            self.get_top_left_bonus()
            for i in range(0, article_list_length):
                if self.in_article(i):
                    self.read_article()
                    total_artical += 1
                    self._operator.go_back()
                    print("total_artical: ", total_artical)

    def watch(self):
        print("观看视频")
        self._operator.click_xpath_if_exist('//*[@text="我的"]')
        self._operator.click_xpath_if_exist('//*[@text="视频"]')
        self._operator.click_xpath_if_exist('//*[@text="刷新"]')
        total_video = 0
        while total_video < 6:
            print("total_video: ", total_video)
            self._operator.click_resource_if_exist('com.jifen.qukan:id/qy')
            total_video += 1
            self.get_money()
            if self._operator.is_resource_exists('com.jifen.qukan:id/ud'):
                text = self._operator.get_resource_text(
                    'com.jifen.qukan:id/ud')
                if text is not None and text == '继续观看':
                    self._operator.click_resource_if_exist(
                        'com.jifen.qukan:id/ud')
            sleep_random()
            self._reader.page_up()

    def get_top_left_bonus(self):
        bonus_text = self._operator.get_resource_text(self._top_left_bonus_res)
        if bonus_text is not None and bonus_text == self._top_left_bonus_text:
            self._operator.click_resource_if_exist(self._top_left_bonus_res)

    def check_end(self):
        text = self._operator.get_resource_text(self._comment_res)
        return text is not None and text == self._comment_text

    def get_money(self):
        if self._operator.is_resource_exists('com.jifen.qukan:id/brl'):
            self._operator.click_resource_if_exist('com.jifen.qukan:id/brl')
            self._operator.click_resource_if_exist('com.jifen.qukan:id/a66')

    def get_article_list_length(self):
        length = self._reader.get_article_list_length(self._article_list_res)
        while length == 0:
            self._reader.page_up()
            length = self._reader.get_article_list_length(
                self._article_list_res)
        return length

    def in_article(self, i):
        if self._reader.in_article(self._article_list_res, i):
            sleep()
            return True
        else:
            return False

    def read_article(self):
        up_count = 0
        while not self.check_end() and up_count < 10:
            self._reader.read_article('V')
            up_count += 1
            self.get_money()

    def qutoutiao(self):
        print("%s Qutoutiao start ..." % get_local_time())
        self.start_app()
        self.sign()
        self.read()
        self.watch()
        self._operator.close_all_app()
        print("%s Qutoutiao end ..." % get_local_time())
Exemple #6
0
class MiDu:
    _app_id = 'com.lechuan.mdwz'
    _resource_id = _app_id + ":id/"

    _res_article_list = _resource_id + 'gm'
    _res_article_read = _resource_id + 're'
    _res_article_advertise_close = _resource_id + 'p6'
    _btn_adv_in_adv = _resource_id + 'pe'
    _btn_adv_close_adv = _resource_id + 'tt_video_ad_close'

    # _article_save_to_shell_res = 'com.martian.ttbook:id/dialog_close'
    # _article_end_res = 'com.martian.ttbook:id/tv_buy_reading_purcgase'
    # _article_end_text = '余额不足请充值'

    def __init__(self, d):
        self._d = d
        self._reader = Reader(d)
        self._operator = Operator(d)
        self._reader = Reader(d)

    def page_up(self):
        self._reader.page_up()

    def start_app(self):
        self._operator.close_all_app()
        self._operator.start_app(self._app_id)
        while not (self._operator.is_xpath_exist('//*[@text="我的"]')
                   and self._operator.is_xpath_exist('//*[@text="福利"]')):
            self._operator.go_back()

    def into_me(self):
        print("Into 我")
        return self._operator.into_page_xpath('//*[@text="我的"]', None, None)

    def get_article_list_length(self):
        return self._operator.get_resource_length(self._article_list_res)

    def next_article_list(self):
        self.page_up()
        sleep()

    def in_article(self, i):
        self._reader.in_article(self._article_list_res, i)
        sleep()
        self._operator.click_resource_if_exist(self._article_read_res)
        sleep()
        self._operator.click_resource_if_exist(
            self._article_advertise_close_res)

    def out_article(self):
        print(
            self._operator.get_resource_text(
                'com.martian.ttbook:id/duration_bonus'))
        self._operator.go_back()
        sleep()
        # self._operator.click_resource_if_exist(self._article_save_to_shell_res)
        # time.sleep(3)
        while 0 == self.get_article_list_length():
            self._operator.go_back()
            sleep()

    def check_end(self):
        return False
        # text = self._operator.get_resource_text(self._article_end_res)
        # return text is not None and text == self._article_end_text

    def read(self):
        i = 0
        while not self.check_end():
            i += 1
            print(i, '-', get_local_time())
            try:
                self._d.click(0.988, round(random.uniform(0.3, 0.7), 3))
            except Exception as e:
                print('Click resource failed' + str(e))
            sleep_random(2, 5)
            self._operator.click_resource_if_exist('com.lechuan.mdwz:id/oh')
            # 看视频翻倍金币
            # if self._operator.is_resource_exists(self._btn_adv_in_adv):
            #     self._operator.click_resource_if_exist(self._btn_adv_in_adv)
            #     while self._operator.is_resource_exists(self._btn_adv_close_adv):
            #         sleep()
            #     self._operator.click_resource_if_exist(self._btn_adv_close_adv)

            # self._operator.click_resource_if_exist(self._res_article_advertise_close)
            # self._operator.click_resource_if_exist('com.lechuan.mdwz:id/g_')
            # s = self._operator.get_resource_text('com.lechuan.mdwz:id/nz')
            # if s is not None and s == '立即领取':
            #     self._operator.click_resource_if_exist('com.lechuan.mdwz:id/nz')
            #     time.sleep(1)
            #     self._operator.click_resource('com.lechuan.mdwz:id/g_')
            # self._operator.click_resource_if_exist('com.lechuan.mdwz:id/gy')

    def midu(self):
        self.start_app()