cxyu 3 years ago
parent
commit
6fa73e6142

+ 49 - 7
web_module/tornado_api.py

@@ -33,7 +33,6 @@ class BaseHandler(tornado.web.RequestHandler):
         pass
 
     def set_default_headers(self):
-        print('get in ')
         self.set_header('Access-Control-Allow-Origin', '*')
         self.set_header('Access-Control-Allow-Headers', '*')
         self.set_header('Access-Control-Max-Age', 1000)
@@ -90,18 +89,21 @@ class create_ad_layout_remote(BaseHandler):
 
 class create_ad_layout_local(BaseHandler):
     def post(self):
-        user_id = self.get_argument("user_id", None)
-        layout_typesetting = self.get_argument("layout_typesetting", None)
-        layout_name = self.get_argument("layout_name", None)
+        # TODO:返回一个layout_name重复的一个信息
+        request_dict = json.loads(self.request.body)
+        user_id = request_dict['user_id']
+        layout_typesetting = request_dict['layout_typesetting']
+        layout_name = request_dict['layout_name']
+
         print(user_id, layout_typesetting, layout_name)
+        print('layout-typesetting', type(layout_typesetting), layout_typesetting)
         sql_session = db.DBSession()
         if user_id is None or layout_name is None or layout_typesetting is None:
             self.write({'status': {'msg': 'url parameter error', "RetCode": 400}})
             return
         # 落地页名字精确到毫秒,默认是全局唯一
-        # TODO:检查一下layout--内容 有无问题-----和前端确定一下
-
-        layout_typesetting_info = {'user_id': user_id, 'name': layout_name, 'typesetting': layout_typesetting}
+        layout_typesetting_info = {'user_id': user_id, 'name': layout_name,
+                                   'typesetting': layout_typesetting}
         layout_typesetting_inserte = sql_tools.save_layout_typesetting_info(
             layout_typesetting_info=layout_typesetting_info,
             table_layout_typesetting=layout_typesetting_table)
@@ -110,6 +112,39 @@ class create_ad_layout_local(BaseHandler):
         self.write({'status': {'msg': 'success', "RetCode": 200}})
 
 
+class get_ad_layout_local(BaseHandler):
+    def get(self):
+        user_id = self.get_argument('user_id', None)
+        layout_name = self.get_argument('layout_name', None)
+        sql_session = db.DBSession()
+        if user_id is None:
+            self.write({'status': {'msg': 'url parameter error', "RetCode": 400}})
+            return
+        # 落地页名字精确到毫秒,默认是全局唯一
+        if layout_name:
+            result = sql_tools.get_layout_typesetting_rough(sql_session=sql_session, user_id=user_id,
+                                                            typesetting_name=layout_name)
+        else:
+            # TODO:之后修改一下,让其查询效率高点,like效率过低
+            layout_name = ''
+            result = sql_tools.get_layout_typesetting_rough(sql_session=sql_session, user_id=user_id,
+                                                            typesetting_name=layout_name)
+        print(result)
+        result_ = []
+        for i in range(len(result)):
+            print(result[i])
+            typesetting, name, create_time, update_time = result[i]
+            _ = {}
+            _['typesetting'] = json.loads(typesetting)
+            _['layout_name'] = name
+            _['id'] = i
+            _['create_time'] = create_time.strftime("%Y-%m-%d %H:%M:%S")
+            _['update_time'] = update_time.strftime("%Y-%m-%d %H:%M:%S")
+            result_.append(_)
+        self.write({'statu': {'msg': 'success', "RetCode": 200},
+                    'local_layout_info': result_})
+
+
 # TODO:wechat_info,human_info 这两张表有空时需要进行对应改进
 class ad_status(BaseHandler):
     def get(self):
@@ -134,6 +169,7 @@ class ad_status(BaseHandler):
 
 
 class ad_human_info(BaseHandler):
+    # TODO:不允许短时间,刷新
 
     @staticmethod
     def refresh_wechat_cookies(tornado_web, user_id):
@@ -257,10 +293,16 @@ class ad_wechat_info(BaseHandler):
                         'wechat_info': result_list})
 
 
+class delete_ad_layout():
+    # TODO:伪删除落地页
+    pass
+
+
 def make_app():
     return tornado.web.Application([
         ("/create_ad_plan_local", create_ad_plan_local),
         ("/create_ad_layout_local", create_ad_layout_local),
+        ("/get_layout_local", get_ad_layout_local),
         ("/create_ad_plan_remote", create_ad_plan_remote),
         ("/create_ad_layout_remote", create_ad_layout_remote),
         ("/ad_human_info", ad_human_info),

+ 4 - 3
wechat_action/create_ad_layout.py

@@ -49,7 +49,7 @@ class CreateAd:
         input_element.send_keys(Keys.BACKSPACE)
         input_element.send_keys(layout_name)
 
-    def set_background_color(self):
+    def set_background_color(self, color):
         color_buttons = self.driver.find_elements_by_class_name('adui-cp-picker')
         c_buttons_can_use = []
         for _ in color_buttons:
@@ -61,10 +61,11 @@ class CreateAd:
         for _ in input_elements:
             if _.is_enabled() and _.is_displayed() and _.get_attribute("value") == 'FFFFFF':
                 _.click()
-                _.send_keys('F7F7F7')
+                _.send_keys(color)
 
     def set_head_assemb(self, info):
         def single_page_set():
+            #TODO:选择图片之后,还有一些其他选项
             self.driver.find_element_by_xpath('//*[@id="stage-sidebar"]/div[1]/div/div[1]/div/div').click()
             time.sleep(random.uniform(0.1, 0.2))
 
@@ -738,7 +739,7 @@ class CreateAd:
             self.set_advertisement_sign(layout_name=layout[-4]['layout_name'])
             self.set_head_assemb(layout[str(-1)])
             if -2 in layout.keys():
-                self.set_background_color()
+                self.set_background_color(layout['bc_color']['color'])
 
             for _ in range(max([int(x) for x in layout.keys()]) + 1):
                 info = layout[str(_)]

+ 23 - 2
wechat_action/create_ad_plan.py

@@ -15,8 +15,7 @@ import random
 
 
 class CreateAdPlan():
-    # TODO:一旦登录之后,driver就不要关闭,然后错误就部分不断重试
-
+    # TODO:因为人群包现在可能存在唯一性,公众号间的复制,需要怎么处理
     def __init__(self, task, login_ad):
         self.task = task
         # self.task_check()
@@ -207,6 +206,28 @@ class CreateAdPlan():
         self.driver.find_element_by_xpath(
             '//*[@class="adui-button-base adui-button-primary adui-button-small"]').click()
 
+    def set_ad_age(self):
+        age_elements = self.driver.find_elements_by_xpath('//*[@class="adui-select-selector"]')
+        age_elements[0].click()
+        time.sleep(0.1)
+        # 256,一截,[14(17),24][25,32][33,40][41,48][49,56][57,64]
+        if self.task['age'][0] == 14:
+            age_elements[1].click()
+
+        else:
+            self.driver.execute_script('''
+            document.getElementsByClassName('rc-virtual-list-holder')[0].scrollTop={};
+            '''.format(self.task['age'][0] - 17 / 7) * 256)
+            time.sleep(random.uniform(0.1, 0.2))
+            self.driver.find_element_by_xpath('//*[@id="begin_age_{}"]'.format(int(self.task['age'][0]))).click()
+
+            # 年龄---设置
+            age_elements[1].click()
+
+            self.driver.execute_script('''
+                document.getElementsByClassName('rc-virtual-list-holder')[0].scrollTop={};
+                '''.format(self.task['age'][0] - 17 / 7) * 256)
+
     def set_ad_idea(self):
         # 创意创建
         logging.info('设置创意')

+ 8 - 8
wechat_action/create_ad_plan_idea.py

@@ -52,7 +52,7 @@ class IdeaAction:
         if idea_dic['jump_type'] == 1:
             # 点击按钮跳转
             for _ in select_elements:
-                if _.text == '一键关注' and idea_dic['jump_type-button_type'] == 2:
+                if _.text == '一键关注' and idea_dic['jump_type_button_type'] == 2:
                     _.click()
             time.sleep(random.uniform(0.1, 0.2))
 
@@ -62,7 +62,7 @@ class IdeaAction:
             input_elements = self.driver.find_element_by_xpath('//*[@class="adui-input-base"]')
             for _ in input_elements:
                 if _.get_attribute("placeholder") == '输入关键字搜索推广页':
-                    _.send_keys(idea_dic['jump_type-page_type'])
+                    _.send_keys(idea_dic['jump_type_page_type'])
                     _.send_keys(Keys.RETURN)
             WebDriverWait(self.driver, 30).until(
                 lambda driver: self.driver.find_elements_by_xpath('//*[@class="adui-table-cellInner"]'))
@@ -70,7 +70,7 @@ class IdeaAction:
             page_elements = self.driver.find_elements_by_xpath('//*[@class="adui-table-cellInner"]')
             for _ in page_elements:
                 # 推广页的名字需要一模一样
-                if _.text == idea_dic['jump_type-page_type']:
+                if _.text == idea_dic['jump_type_page_type']:
                     _.click()
             time.sleep(random.uniform(0.1, 0.2))
 
@@ -221,7 +221,7 @@ class IdeaAction:
         self.push_promotion_page()
 
     def idea_pyq(self):
-
+        #TODO:添加idea_name,idea_moudle,
         logging.info('朋友圈--文案设置')
         WebDriverWait(self.driver, 100).until(
             lambda driver: self.driver.find_element_by_xpath('//*[@class="ql-editor ql-blank"]'))
@@ -234,9 +234,9 @@ class IdeaAction:
         # 朋友圈其他设置
         select_elements = self.driver.find_elements_by_xpath('//*[@class="label-2ZOAbuO31o"]')
         for _ in select_elements:
-            if _.text == '了解更多' and self.task['idea']['jump_type-text_type'] == 2:
+            if _.text == '了解更多' and self.task['idea']['jump_type_text_type'] == 2:
                 _.click()
-            if _.text == '原生推广页' and self.task['idea']['jump_type-link_type'] == 2:
+            if _.text == '原生推广页' and self.task['idea']['jump_type_link_type'] == 2:
                 _.click()
 
         # 朋友圈推广页选择
@@ -246,7 +246,7 @@ class IdeaAction:
         input_elements = self.driver.find_elements_by_xpath('//*[@class="adui-input-base"]')
         for _ in input_elements:
             if _.get_attribute("placeholder") == '输入关键字搜索推广页':
-                _.send_keys(self.task['idea']['jump_type-page_type'])
+                _.send_keys(self.task['idea']['jump_type_page_type'])
                 _.send_keys(Keys.RETURN)
         # TODO:有空去除这个时间,使用等待
         time.sleep(random.uniform(0.5, 1))
@@ -256,7 +256,7 @@ class IdeaAction:
         page_elements = self.driver.find_elements_by_xpath('//*[@class="adui-table-cellInner"]')
         for _ in page_elements:
             # 推广页的名字需要一模一样
-            if _.text == self.task['idea']['jump_type-page_type']:
+            if _.text == self.task['idea']['jump_type_page_type']:
                 _.click()
         time.sleep(random.uniform(0.1, 0.2))
 

+ 12 - 0
wechat_action/sql_tools.py

@@ -94,6 +94,18 @@ def get_human_info(sql_session, service_name, wechat_name):
     return result_list
 
 
+def get_layout_typesetting_rough(sql_session, user_id, typesetting_name):
+    sql = '''
+            select typesetting,name,create_time,update_time from layout_typesetting lt 
+            where user_id ='{}' and name like '%{}%';
+    '''.format(user_id, typesetting_name)
+    print(sql)
+    cursor = sql_session.execute(sql)
+    lines = cursor.fetchall()
+    result_list = [line for line in lines]
+    return result_list
+
+
 def get_layout_typesetting(sql_session, user_id, typesetting_name):
     sql = '''
             select typesetting from layout_typesetting lt