Ejemplo n.º 1
0
    def post(self):
        self.set_header('Content-Type', 'application/json; charset=UTF-8')
        if (not self.request.files) or (not 'imgFile' in self.request.files):
            return

        img_file = self.request.files['imgFile'][0]
        o_filename = img_file['filename']
        shop_id = self.get_argument('shop_id', '13')
        distributor_shop = self.db.get(
            'select taobao_api_info, taobao_nick from distributor_shop where id = %s',
            shop_id)
        app_info = json.loads(distributor_shop.taobao_api_info,
                              object_hook=json_hook)
        try:
            request = Taobao('taobao.picture.upload')
            request.set_app_info(app_info.app_key, app_info.app_secret_key)
            request.set_session(app_info.session)
            request.add_file('img', o_filename, img_file['body'])
            response = yield request(
                picture_category_id='0',
                image_input_title=o_filename.encode('utf-8'))
            request.parse_response(response.body)
            if request.is_ok():
                self.write({
                    'error': 0,
                    'url': request.message.picture.picture_path
                })
            else:
                err_msg = request.error.sub_msg if 'sub_msg' in request.error else request.error.msg
                self.write(json_dumps({'error': err_msg}))
        except IOError:
            self.write(json_dumps({'error': "没有找到图片文件"}))
            return
Ejemplo n.º 2
0
 def post(self):
     num_iid = self.get_argument('num_iid').encode('utf-8')
     arg_img_url = self.get_argument('img_url')
     shop_id = self.get_argument('shop_id')
     distributor_shop = self.db.get(
         'select taobao_api_info, taobao_nick from distributor_shop where id = %s',
         shop_id)
     app_info = json.loads(distributor_shop.taobao_api_info,
                           object_hook=json_hook)
     img_path = os.path.join(options.upload_img_path, arg_img_url[1:])
     try:
         fo = open(img_path, 'rb')
     except IOError:
         self.write(json_dumps({'error': "没有找到图片文件"}))
         return
     request = Taobao('taobao.item.img.upload')
     request.set_app_info(app_info.app_key, app_info.app_secret_key)
     request.set_session(app_info.session)
     request.add_file('image', fo.name, fo.read())
     fo.close()
     response = yield request(num_iid=num_iid, is_major='true')
     request.parse_response(response.body)
     if request.is_ok():
         self.write(json_dumps({'success': '图片上传成功'}))
     else:
         err_msg = request.error.sub_msg if 'sub_msg' in request.error else request.error.msg
         self.write(json_dumps({'error': err_msg}))
Ejemplo n.º 3
0
def replace_with_taobao_img(content, app_info):
    """替换淘宝推送时详情中的图片为淘宝的图片"""
    img_tag_ptn = re.compile("""<img[^>]*src=["']([^"^']*)""")
    cdn_o_ptn = re.compile("""(.+)%s/o/(\d+)/(\d+)/(\d+)/(.+)""" % options.img_host)
    cdn_p_ptn = re.compile("""(.+)%s/p/(\d+)/(\d+)/(\d+)/(.+)""" % options.img_host)
    # 找出所有的<img> tag
    img_tags = re.findall(img_tag_ptn, content)
    for tag in img_tags:
        m = cdn_p_ptn.match(tag)
        file_path = "p"
        # 匹配的图片
        if not m:
            m = cdn_o_ptn.match(tag)
            file_path = "o"
        if m:
            file_path += "/%s/%s/%s/%s" % (m.group(2), m.group(3), m.group(4), m.group(5))
            file_path = os.path.join(options.cdn_root, file_path)
            fo = open(file_path, "rb")
            request = Taobao("taobao.picture.upload")
            request.set_app_info(app_info.app_key, app_info.app_secret_key)
            request.set_session(app_info.session)
            request.add_file("img", fo.name, fo.read())

            response = yield request(picture_category_id="0", image_input_title=fo.name.encode("utf-8"))
            request.parse_response(response.body)
            if request.is_ok():
                new_src = request.message.picture.picture_path
            else:
                continue
            content = content.decode("utf-8") if isinstance(content, str) else content
            # 替换
            content = re.sub(tag, new_src, content)
    raise tornado.gen.Return(content)
Ejemplo n.º 4
0
    def post(self):
        self.set_header("Content-Type", "application/json; charset=UTF-8")
        if (not self.request.files) or (not "imgFile" in self.request.files):
            return

        img_file = self.request.files["imgFile"][0]
        o_filename = img_file["filename"]
        shop_id = self.get_argument("shop_id", "13")
        distributor_shop = self.db.get(
            "select taobao_api_info, taobao_nick from distributor_shop where id = %s", shop_id
        )
        app_info = json.loads(distributor_shop.taobao_api_info, object_hook=json_hook)
        try:
            request = Taobao("taobao.picture.upload")
            request.set_app_info(app_info.app_key, app_info.app_secret_key)
            request.set_session(app_info.session)
            request.add_file("img", o_filename, img_file["body"])
            response = yield request(picture_category_id="0", image_input_title=o_filename.encode("utf-8"))
            request.parse_response(response.body)
            if request.is_ok():
                self.write({"error": 0, "url": request.message.picture.picture_path})
            else:
                err_msg = request.error.sub_msg if "sub_msg" in request.error else request.error.msg
                self.write(json_dumps({"error": err_msg}))
        except IOError:
            self.write(json_dumps({"error": "没有找到图片文件"}))
            return
Ejemplo n.º 5
0
 def post(self):
     num_iid = self.get_argument("num_iid").encode("utf-8")
     arg_img_url = self.get_argument("img_url")
     shop_id = self.get_argument("shop_id")
     distributor_shop = self.db.get(
         "select taobao_api_info, taobao_nick from distributor_shop where id = %s", shop_id
     )
     app_info = json.loads(distributor_shop.taobao_api_info, object_hook=json_hook)
     img_path = os.path.join(options.upload_img_path, arg_img_url[1:])
     try:
         fo = open(img_path, "rb")
     except IOError:
         self.write(json_dumps({"error": "没有找到图片文件"}))
         return
     request = Taobao("taobao.item.img.upload")
     request.set_app_info(app_info.app_key, app_info.app_secret_key)
     request.set_session(app_info.session)
     request.add_file("image", fo.name, fo.read())
     fo.close()
     response = yield request(num_iid=num_iid, is_major="true")
     request.parse_response(response.body)
     if request.is_ok():
         self.write(json_dumps({"success": "图片上传成功"}))
     else:
         err_msg = request.error.sub_msg if "sub_msg" in request.error else request.error.msg
         self.write(json_dumps({"error": err_msg}))
Ejemplo n.º 6
0
def replace_with_taobao_img(content, app_info):
    """替换淘宝推送时详情中的图片为淘宝的图片"""
    img_tag_ptn = re.compile("""<img[^>]*src=["']([^"^']*)""")
    cdn_o_ptn = re.compile("""(.+)%s/o/(\d+)/(\d+)/(\d+)/(.+)""" %
                           options.img_host)
    cdn_p_ptn = re.compile("""(.+)%s/p/(\d+)/(\d+)/(\d+)/(.+)""" %
                           options.img_host)
    # 找出所有的<img> tag
    img_tags = re.findall(img_tag_ptn, content)
    for tag in img_tags:
        m = cdn_p_ptn.match(tag)
        file_path = 'p'
        # 匹配的图片
        if not m:
            m = cdn_o_ptn.match(tag)
            file_path = 'o'
        if m:
            file_path += '/%s/%s/%s/%s' % (m.group(2), m.group(3), m.group(4),
                                           m.group(5))
            file_path = os.path.join(options.cdn_root, file_path)
            fo = open(file_path, 'rb')
            request = Taobao('taobao.picture.upload')
            request.set_app_info(app_info.app_key, app_info.app_secret_key)
            request.set_session(app_info.session)
            request.add_file('img', fo.name, fo.read())

            response = yield request(picture_category_id='0',
                                     image_input_title=fo.name.encode('utf-8'))
            request.parse_response(response.body)
            if request.is_ok():
                new_src = request.message.picture.picture_path
            else:
                continue
            content = content.decode('utf-8') if isinstance(content,
                                                            str) else content
            # 替换
            content = re.sub(tag, new_src, content)
    raise tornado.gen.Return(content)