コード例 #1
0
ファイル: jd_assistant.py プロジェクト: f1025395916/untitled
    def __init__(self):
        self.username = ''
        self.nick_name = ''
        self.is_login = False
        self.headers = {
            'User-Agent': USER_AGENT,
        }
        # 保存cookie,第二次免登录
        self.sess = requests.session()

        self.item_cat = dict()

        self.risk_control = ''
        self.eid = global_config.get('config', 'eid') or DEFAULT_EID
        self.fp = global_config.get('config', 'fp') or DEFAULT_FP
        self.track_id = '9643cbd55bbbe103eef18a213e069eb0'

        self.seckill_init_info = dict()
        self.seckill_order_data = dict()
        self.seckill_url = dict()

        try:
            self._load_cookies()
        except Exception as e:
            pass
コード例 #2
0
 def __init__(self):
     # 钉钉url
     self._access_token = global_config.get('config', 'access_token')
     self._timestamp, self._sign = build_sign()
     self.url = 'https://oapi.dingtalk.com/robot/send?access_token=%s&timestamp=%s&sign=%s' % (
         self._access_token, self._timestamp, self._sign)
     self.headers = {"Content-Type": "application/json ;charset=utf-8"}
     self.expression = global_config.get('config', 'expression')
     self.content = ""
コード例 #3
0
ファイル: main.py プロジェクト: zwd1990/baidu-wangpan-parse
def main(options):
    login = BaiduLogin()
    login.login_by_username(username=global_config.get('account', 'username'),
                            password=global_config.get('account', 'password'))
    pan = BaiduPan(is_encrypt=True if options.password else False,
                   is_folder=options.folder,
                   link=options.link,
                   password=options.password)
    link = pan.get_download_link()
    print(link)
コード例 #4
0
ファイル: tools.py プロジェクト: wind9/api
def get_redis(db_name):
    redis_host = config.get('public', 'redis_host')
    redis_port = config.get('public', 'redis_port')
    redis_password = config.get('public', 'redis_password')
    db = config.get(db_name, 'redis_db_name')
    pool = ConnectionPool(host=redis_host,
                          port=redis_port,
                          password=redis_password,
                          db=db)
    redis = StrictRedis(connection_pool=pool)
    return redis
コード例 #5
0
ファイル: packages.py プロジェクト: gmat/emzed2
def _create_package_folder(pkg_folder, pkg_name, version):
    package_folder = os.path.join(pkg_folder, pkg_name)
    os.makedirs(package_folder)
    with open(os.path.join(package_folder, "__init__.py"), "w") as fp:
        fp.write(
            """

# IMPORTS WHICH SHOULD APPEAR IN emzed.ext AFTER INSTALLING THE PACKAGE:
from minimal_module import hello # makes emzed.ext.%s.hello() visible

# DO NOT TOUCH THE FOLLOWING LINE:
import pkg_resources
__version__ = tuple(map(int, pkg_resources.require(__name__)[0].version.split(".")))
del pkg_resources"""
            % pkg_name
        )

    with open(os.path.join(package_folder, "app.py"), "w") as fp:
        fp.write(
            """
def run():
    return 42
    """
        )

    with open(os.path.join(package_folder, "minimal_module.py"), "w") as fp:
        fp.write(
            """
def hello():
    return "hello from %s"
    """
            % pkg_name
        )

    with open(os.path.join(pkg_folder, "setup.py"), "w") as fp:
        user = global_config.get("emzed_store_user")
        password = global_config.get("emzed_store_password")
        repository = global_config.get_url("emzed_store_url")
        author = global_config.get("user_name")
        author_email = global_config.get("user_email")
        author_url = global_config.get("user_url")
        fp.write(SETUP_PY_TEMPLATE % locals())

    with open(os.path.join(pkg_folder, "LICENSE"), "w") as fp:
        fp.write(licenses.GPL_3)

    with open(os.path.join(pkg_folder, "README"), "w") as fp:
        fp.write("please describe your emzed package here\n")
コード例 #6
0
ファイル: packages.py プロジェクト: lowks/emzed2
def delete_from_emzed_store(pkg_name, version_string, secret=""):
    assert_valid_secret(secret)
    assert version_string, "empty version_string not allowed"
    user = global_config.get("emzed_store_user")
    password = global_config.get("emzed_store_password")
    url = global_config.get_url("emzed_store_url")  # + pkg_name + "/" + version_string

    folder = "/" + secret
    try:
        files = client.list_files(url, user, folder)
    except requests.HTTPError, e:
        print e.message
        print
        print "MAYBE USER %s IS NOT KNOWN OR SECRET %r IS NOT VALID" % (user, secret)
        print
        return False
コード例 #7
0
ファイル: action_push.py プロジェクト: luck-ying01/V2EX_sign
 def server(self, contents):  #server酱推送
     SCKEY = global_config.get('message', 'SCKEY')
     server_message = {"text": "V2EX每日签到奖励!", "desp": contents}
     r = requests.post("https://sc.ftqq.com/" + SCKEY + ".send",
                       data=server_message)
     if r.status_code == 200:
         print('[+]server酱已推送,请查收')
コード例 #8
0
ファイル: packages.py プロジェクト: gmat/emzed2
def delete_from_emzed_store(pkg_name, version_string, secret=""):
    assert_valid_secret(secret)
    assert version_string, "empty version_string not allowed"
    user = global_config.get("emzed_store_user")
    password = global_config.get("emzed_store_password")
    url = global_config.get_url(
        "emzed_store_url")  # + pkg_name + "/" + version_string

    folder = "/" + secret
    try:
        files = client.list_files(url, user, folder)
    except requests.HTTPError, e:
        print str(e)
        print
        print "MAYBE USER %s IS NOT KNOWN OR SECRET %r IS NOT VALID" % (user,
                                                                        secret)
        print
        return False
コード例 #9
0
ファイル: packages.py プロジェクト: gmat/emzed2
def upload_to_emzed_store(pkg_folder, secret=""):
    assert_valid_secret(secret)
    with changed_working_directory(pkg_folder):
        # make sure we load the right setup.py
        sys.path.insert(0, os.path.abspath(pkg_folder))
        import setup
        reload(setup)
        sys.path.pop(0)

        existing_versions = list_packages_from_emzed_store()[setup.PKG_NAME]
        if existing_versions:
            if any(setup.VERSION == v for (v, __) in existing_versions):

                raise Exception("package %s with version %s already exists" %
                                (setup.PKG_NAME, setup.VERSION))
        if os.path.exists("dist"):
            shutil.rmtree("dist")

        rc = subprocess.call("python setup.py sdist",
                             shell=True,
                             stdout=sys.__stdout__,
                             stderr=sys.__stdout__)
        if rc:
            raise Exception("upload failed")

        user = global_config.get("emzed_store_user")
        password = global_config.get("emzed_store_password")
        url = global_config.get_url("emzed_store_url")

        for p in glob.glob("dist/*"):
            if os.path.isfile(p):
                path = "/%s/%s" % (secret, os.path.basename(p))
                with open(p, "rb") as fp:
                    try:
                        client.upload_file(url, user, password, path, fp)
                    except requests.HTTPError, e:
                        print str(e)
                        print
                        print "MAYBE USER %s IS UNKNOWN OR PASSWORD DOES NOT MATCH" % user
                        print
                        print "USE emzed.config.edit() TO CHANGE THEM."
                        print
                        break
コード例 #10
0
ファイル: packages.py プロジェクト: lowks/emzed2
def upload_to_emzed_store(pkg_folder, secret=""):
    assert_valid_secret(secret)
    with changed_working_directory(pkg_folder):
        # make sure we load the right setup.py
        sys.path.insert(0, os.path.abspath(pkg_folder))
        import setup
        reload(setup)
        sys.path.pop(0)

        existing_versions = list_packages_from_emzed_store()[setup.PKG_NAME]
        if existing_versions:
            if any(setup.VERSION == v for (v, __) in existing_versions):

                raise Exception("package %s with version %s already exists" % (setup.PKG_NAME,
                                                                               setup.VERSION))
        if os.path.exists("dist"):
            shutil.rmtree("dist")

        rc = subprocess.call("python setup.py sdist", shell=True,
                stdout=sys.__stdout__,
                stderr= sys.__stdout__)
        if rc:
            raise Exception("upload failed")

        user = global_config.get("emzed_store_user")
        password = global_config.get("emzed_store_password")
        url = global_config.get_url("emzed_store_url")

        for p in glob.glob("dist/*"):
            if os.path.isfile(p):
                path = "/%s/%s" % (secret, os.path.basename(p))
                with open(p, "rb") as fp:
                    try:
                        client.upload_file(url, user, password, path, fp)
                    except requests.HTTPError, e:
                        print e.message
                        print
                        print "MAYBE USER %s IS UNKNOWN OR PASSWORD DOES NOT MATCH" % user
                        print
                        print "USE emzed.config.edit() TO CHANGE THEM."
                        print
                        break
コード例 #11
0
ファイル: api.py プロジェクト: wind9/api
def check_enable(resp):
    if resp and result_parse(resp):
        redis.set('enable', 1)
        redis.set('fail_count', 0)
    else:
        fail_count = int(redis.get('fail_count'))
        redis.set('fail_count', fail_count + 1)
        log.info("第{}次提交失败".format(fail_count + 1))
        if fail_count + 1 > int(config.get('fl', 'max_fail')):
            log.info("第{}次提交失败,已达最大失败次数,充值暂停".format(fail_count + 1))
            redis.set('enable', 0)
コード例 #12
0
ファイル: control_car.py プロジェクト: young0898/RaspiCar
    def __init__(self):
        GPIO.setmode(GPIO.BCM)  # 定义树莓派GPIO引脚以BCM方式编号
        GPIO.setwarnings(False)
        GPIO.setup(servo_pin, GPIO.OUT)  # 设置舵机IO口为输出
        GPIO.setup(motor_pin, GPIO.OUT)  # 设置电调IO口为输出
        self.servo_pwm = GPIO.PWM(servo_pin, frequency)  # 定义舵机pwm输出频率
        self.motor_pwm = GPIO.PWM(motor_pin, frequency)  # 定义电调pwm输出频率
        self.direction_add = int(global_config.get('config',
                                                   'direction_add'))  # 左右方向修正
        self.direction_per = float(global_config.get(
            'config', 'direction_per'))  # 最大转向角度占比
        self.direction_reverse = int(
            global_config.get('config', 'direction_reverse'))  # 方向反向
        self.speed_add = int(global_config.get('config',
                                               'speed_add'))  # 前进后退修正
        self.speed_per = float(global_config.get('config',
                                                 'speed_per'))  # 速度比例100%

        self.last_direction = 0
        self.last_speed = 0
コード例 #13
0
ファイル: sign.py プロジェクト: LittlePanger/ding_robot
def build_sign():
    timestamp = str(round(time.time() * 1000))
    secret = global_config.get('config', 'secret')
    secret_enc = secret.encode('utf-8')
    string_to_sign = '{}\n{}'.format(timestamp, secret)
    string_to_sign_enc = string_to_sign.encode('utf-8')
    hmac_code = hmac.new(secret_enc,
                         string_to_sign_enc,
                         digestmod=hashlib.sha256).digest()
    sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
    return timestamp, sign
コード例 #14
0
def get_weather():
    url = "https://devapi.heweather.net/v7/weather/24h"
    key = global_config.get('config', 'key')
    location = global_config.get('config', 'location')

    # 失败重试5次
    count = 0
    while count < 5:
        try:
            count += 1
            result = requests.get(url=url,
                                  params={
                                      'location': location,
                                      'key': key
                                  },
                                  timeout=(3, 1))
            if result:
                return get_result(result)
        except Exception as e:
            logging.error(f'retry,{count}, {e}')
            time.sleep(1)
コード例 #15
0
ファイル: packages.py プロジェクト: gmat/emzed2
def _create_package_folder(pkg_folder, pkg_name, version):
    package_folder = os.path.join(pkg_folder, pkg_name)
    os.makedirs(package_folder)
    with open(os.path.join(package_folder, "__init__.py"), "w") as fp:
        fp.write("""

# IMPORTS WHICH SHOULD APPEAR IN emzed.ext AFTER INSTALLING THE PACKAGE:
from minimal_module import hello # makes emzed.ext.%s.hello() visible

# DO NOT TOUCH THE FOLLOWING LINE:
import pkg_resources
__version__ = tuple(map(int, pkg_resources.require(__name__)[0].version.split(".")))
del pkg_resources""" % pkg_name)

    with open(os.path.join(package_folder, "app.py"), "w") as fp:
        fp.write("""
def run():
    return 42
    """)

    with open(os.path.join(package_folder, "minimal_module.py"), "w") as fp:
        fp.write("""
def hello():
    return "hello from %s"
    """ % pkg_name)

    with open(os.path.join(pkg_folder, "setup.py"), "w") as fp:
        user = global_config.get("emzed_store_user")
        password = global_config.get("emzed_store_password")
        repository = global_config.get_url("emzed_store_url")
        author = global_config.get("user_name")
        author_email = global_config.get("user_email")
        author_url = global_config.get("user_url")
        fp.write(SETUP_PY_TEMPLATE % locals())

    with open(os.path.join(pkg_folder, "LICENSE"), "w") as fp:
        fp.write(licenses.GPL_3)

    with open(os.path.join(pkg_folder, "README"), "w") as fp:
        fp.write("please describe your emzed package here\n")
コード例 #16
0
ファイル: jd_test.py プロジェクト: zeng126/jd-test
    def __init__(self):
        use_random_ua = global_config.getboolean('config', 'random_useragent')
        self.user_agent = DEFAULT_USER_AGENT if not use_random_ua else get_random_useragent(
        )
        self.headers = {'User-Agent': self.user_agent}
        self.is_login = False
        self.nick_name = ''

        ##################
        self.eid = global_config.get('config', 'eid')
        self.fp = global_config.get('config', 'fp')
        self.track_id = global_config.get('config', 'track_id')

        self.item_cat = dict()
        self.item_vender_ids = dict()  # 记录商家id
        self.timeout = float(
            global_config.get('config', 'timeout') or DEFAULT_TIMEOUT)
        self.send_message = global_config.getboolean('messenger', 'enable')
        self.messenger = Messenger(global_config.get(
            'messenger', 'sckey')) if self.send_message else None

        self.sess = requests.session()
コード例 #17
0
 def send_markdown(self, title, use_img=False):
     if use_img:
         img = global_config.get('config', 'img')
         if img:
             self.content += "\n![](%s)" % img
     msg = {
         "msgtype": "markdown",
         "markdown": {
             "title": title,
             "text": self.content
         }
     }
     msg_json = json.dumps(msg)
     requests.post(url=self.url, data=msg_json, headers=self.headers)
コード例 #18
0
ファイル: action_push.py プロジェクト: luck-ying01/V2EX_sign
 def start(self, contents):
     notice = global_config.get('message', 'notice')
     if notice == '1':
         try:
             self.server(contents)
         except:
             print('[+]server酱配置出错')
     elif notice == '2':
         try:
             self.dingtalk(contents)
         except:
             print('[+]钉钉配置出错')
     else:
         print('[+]已选择不推送')
コード例 #19
0
ファイル: action_push.py プロジェクト: luck-ying01/V2EX_sign
 def dingtalk(self, contents):  #钉钉消息推送
     webhook_url = global_config.get('message', 'webhook')
     dd_header = {"Content-Type": "application/json", "Charset": "UTF-8"}
     dd_message = {
         "msgtype": "text",
         "text": {
             "content": f'V2EX每日签到奖励 信息通知!\n{contents}'
         }
     }
     r = requests.post(url=webhook_url,
                       headers=dd_header,
                       data=json.dumps(dd_message))
     if r.status_code == 200:
         print('[+]钉钉消息已推送,请查收\n')
コード例 #20
0
 def _get_seckill_order_data(self):
     """生成提交抢购订单所需的请求体参数
     :return: 请求体参数组成的dict
     """
     logger.info('生成提交抢购订单所需参数...')
     # 获取用户秒杀初始化信息
     self.seckill_init_info[self.sku_id] = self._get_seckill_init_info()
     init_info = self.seckill_init_info.get(self.sku_id)
     default_address = init_info['addressList'][0]  # 默认地址dict
     logger.info("默认地址dict: {}".format(json.dumps(default_address)))
     invoice_info = init_info.get('invoiceInfo', {})  # 默认发票信息dict, 有可能不返回
     token = init_info['token']
     data = {
         'skuId': self.sku_id,
         'num': self.seckill_num,
         'addressId': default_address['id'],
         'yuShou': 'true',
         'isModifyAddress': 'false',
         'name': default_address['name'],
         'provinceId': default_address['provinceId'],
         'cityId': default_address['cityId'],
         'countyId': default_address['countyId'],
         'townId': default_address['townId'],
         'addressDetail': default_address['addressDetail'],
         'mobile': default_address['mobile'],
         'mobileKey': default_address['mobileKey'],
         'email': default_address.get('email', ''),
         'postCode': '',
         'invoiceTitle': invoice_info.get('invoiceTitle', -1),
         'invoiceCompanyName': '',
         'invoiceContent': invoice_info.get('invoiceContentType', 1),
         'invoiceTaxpayerNO': '',
         'invoiceEmail': '',
         'invoicePhone': invoice_info.get('invoicePhone', ''),
         'invoicePhoneKey': invoice_info.get('invoicePhoneKey', ''),
         'invoice': 'true' if invoice_info else 'false',
         'password': global_config.get('account', 'payment_pwd'),
         'codTimeType': 3,
         'paymentType': 4,
         'areaCode': '',
         'overseas': 0,
         'phone': '',
         'eid': global_config.getRaw('config', 'eid'),
         'fp': global_config.getRaw('config', 'fp'),
         'token': token,
         'pru': ''
     }
     logger.info("提交抢购订单所需参数: {}".format(json.dumps(data)))
     return data
コード例 #21
0
    def __init__(self):
        self.username = ''
        self.nick_name = ''
        self.is_login = False
        self.headers = {
            'User-Agent': USER_AGENT,
        }
        self.sess = requests.session()

        self.item_cat = dict()

        self.risk_control = ''
        self.eid = global_config.get('config', 'eid') or DEFAULT_EID
        self.fp = global_config.get('config', 'fp') or DEFAULT_FP
        self.track_id = DEFAULT_TRACK_ID

        self.seckill_init_info = dict()
        self.seckill_order_data = dict()
        self.seckill_url = dict()

        try:
            self._load_cookies()
        except Exception:
            pass
コード例 #22
0
ファイル: packages.py プロジェクト: lowks/emzed2
def list_packages_from_emzed_store(secret=""):
    url = global_config.get_url("emzed_store_url")
    result = defaultdict(list)
    if not secret:
        packages = client.list_public_files(url)
    else:
        user = global_config.get("emzed_store_user")
        folder = "/" + secret
        try:
            packages = client.list_files(url, user, folder)
        except requests.HTTPError, e:
            print e.message
            print
            print "MAYBE USER %s IS UNKNOWN OR SECRET '%s' IS INVALID" % (user, secret)
            print
            return result
コード例 #23
0
ファイル: packages.py プロジェクト: gmat/emzed2
def list_packages_from_emzed_store(secret=""):
    url = global_config.get_url("emzed_store_url")
    result = defaultdict(list)
    if not secret:
        packages = client.list_public_files(url)
    else:
        user = global_config.get("emzed_store_user")
        folder = "/" + secret
        try:
            packages = client.list_files(url, user, folder)
        except requests.HTTPError, e:
            print str(e)
            print
            print "MAYBE USER %s IS UNKNOWN OR SECRET '%s' IS INVALID" % (
                user, secret)
            print
            return result
コード例 #24
0
ファイル: helpers.py プロジェクト: gmat/emzed2
def get_json(url):
    from config import global_config
    user = global_config.get("emzed_store_user")
    password = global_config.get("emzed_store_password")
    return requests.get(url, headers=dict(Accept="application/json"), auth=(user, password))
コード例 #25
0
from lib_translate import translate_all_in_one
from config import global_config

src_lang = global_config.get("translate_src_lang")

if src_lang == "zh":
    # text = "习近平在贺电中指出,巴勒斯坦问题作为中东根源性问题,关乎地区和平稳定,关乎国际公平正义,关乎人类良知道义。实现巴勒斯坦与以色列比邻而居、和平共处,不仅是巴以人民世代梦想,也是地区各国人民和国际社会的殷切期望。国际社会应该坚持“两国方案”的正确方向,以联合国有关决议、“土地换和平”原则等国际共识为基础,努力推动中东和平进程。当前形势下,应该更多关注新冠肺炎疫情对巴勒斯坦造成的严峻挑战,帮助巴勒斯坦人民抗击疫情。"
    text = "坡度差"
elif src_lang == "en":
    text = "As in Q2 2020, the year-on-year traffic growth rate remained at a more normal level, around 50 percent, compared to the extraordinary peak in 2018 and the first part of 2019. The quarter-on-quarter growth for Q3 2020 was 10 percent. COVID-19 related restrictions, such as lockdowns and constraints on movement, continue to be reflected in people’s communication patterns. However, mobile traffic and mobility are gradually returning to normal levels. In many countries, mobile traffic is, to a certain extent, still geographically shifted from public and office locations to homes and remote work locations. Some countries have seen an increase in mobile broadband data traffic, while others have experienced a decline supported by Wi-Fi offload in homes with good fixed broadband connections. These traffic patterns could change again if new waves of COVID-19 occur."
else:
    raise AttributeError("Unsupported src_lang.")

translation = translate_all_in_one(text)
print(translation)
コード例 #26
0
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from jd_assistant import Assistant
from config import global_config
"""
重要提示:此处为示例代码之一,请移步下面的链接查看使用教程👇
https://github.com/tychxn/jd-assistant/wiki/1.-%E4%BA%AC%E4%B8%9C%E6%8A%A2%E8%B4%AD%E5%8A%A9%E6%89%8B%E7%94%A8%E6%B3%95
"""

# 抢购通用配置

sku_id = global_config.get('sku', 'sku_id')  # 商品id
buy_time = global_config.get('sku',
                             'buy_time')  # 开始抢购时间,格式:'2020-11-28 12:59:59.950'
retry = 5  # 抢购重复执行次数,可选参数,默认4次
interval = 0.01  # 抢购执行间隔,可选参数,默认4秒
num = 1  # 购买数量,可选参数,默认1个
sleep_interval = 0.5  # 抢购前倒计时轮询时间,默认0.5秒
fast_sleep_interval = 0.01  # 抢购5秒内倒计时轮询时间,默认0.01秒

# 配置【预约抢购,自动加入购物车】
# 注意:一定要在抢购开始前手动清空购物车中此类无法勾选的商品!(因为脚本在执行清空购物车操作时,无法清空不能勾选的商品)
is_pass_cart = False  # 是否跳过添加购物车,默认False

# 配置【预约抢购,不会自动加入购物车】
# area = '19_1607_3155_62117'  # 区域id
# sku_buy_time = '2020-12-04 15:00:00.000'  # 商品抢购时间
# buy_time = None  # 开始抢购时间,默认为None,自动提前0.050秒,网络通畅时不需要修改,如果网络慢可根据自己情况适当修改,格式:'2020-11-28 12:59:59.950'
fast_mode = True  # 快速模式:略过访问抢购订单结算页面这一步骤,默认为 True

コード例 #27
0
import json
from config import global_config

DEFAULT_HEADER = {
    'Host': 'webapi.mybti.cn',
    'Connection': 'keep-alive',
    'Accept': 'application/json, text/plain, */*',
    'Origin': 'https://webui.mybti.cn',
    'User-Agent':
    'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 QBCore/4.0.1295.400 QQBrowser/9.0.2524.400 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2875.116 Safari/537.36 NetType/WIFI MicroMessenger/7.0.5 WindowsWechat',
    'Authorization': global_config.get('config', 'token'),
    'Referer': 'https://webui.mybti.cn/',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.5;q=0.4'
}


def parse_json(s):
    begin = s.find('{')
    end = s.rfind('}') + 1
    return json.loads(s[begin:end])
コード例 #28
0
 def __init__(self):
     self.header = DEFAULT_HEADER
     self.send_message = global_config.getboolean('messenger', 'enable')
     self.messenger = Messenger(global_config.get(
         'messenger', 'sckey')) if self.send_message else None
コード例 #29
0
"""
翻译预处理器
method: processor
input_type: str
output_type: str
"""
import sys

from config import global_config

# 获取当前模块有用的配置
preprocess_pipeline = global_config.get("preprocess_pipeline", [])


def get_basic_preprocessor():
    """
    使用bert中的脚本对中文进行分字处理
    >>> processor = get_basic_preprocessor()
    >>> text = "你好"
    >>> processor(text)
    '你 好'
    """
    from lib_translate.bert_tokenizer import BasicTokenizer
    tokenizer = BasicTokenizer(do_lower_case=False)

    def preprocessor(line):
        return " ".join(tokenizer.tokenize(line))

    return preprocessor

コード例 #30
0
import os
import time
import json
from utils.funcs import post_rpc
from config import global_config

serve_port = global_config.get('serve_port')
robot_code = "test_robot_id"
version = "v0.1"
user_id = "user1"
cwd = os.path.dirname(os.path.abspath(__file__))


def train_nlu():
    with open(os.path.join(cwd, "assets/nlu_training_data.json")) as f:
        nlu_data = json.load(f)
    # 训练nlu模型
    data = {
        "robot_id": robot_code,
        "method": "train",
        "version": version,
        "data": nlu_data
    }
    response = post_rpc(
        "http://127.0.0.1:{}/xiaoyu/multi/nlu".format(serve_port), data)
    print(response)


def train_dialogue():
    with open(os.path.join(cwd, "assets/dialogue_graph.json")) as f:
        graph_data = json.load(f)
コード例 #31
0
>>> src_word.lower() not in show_words(return_dict=True)
True
>>> mask_term("hello world! I'm.")
("hello world! I'm.", [])
"""
import re
import warnings
import pandas

from sqlalchemy import Column, String, create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from config import global_config

PROTECTION_SYMBOL = global_config["term_mask_symbol"]
DICT_FILE = global_config.get("term_protection_dict", None)
SRC_LANG = global_config["translate_src_lang"]
TGT_LANG = global_config["translate_tgt_lang"]
TERM_PROTECTION_DB = global_config["term_protection_db"]

__all__ = [
    "mask_term", "de_mask_term", "add_words", "delete_words", "show_words"
]


def _transform_word(word):
    """
    对加入词表的词进行预处理
    """
    return word.strip().lower()
コード例 #32
0
"""
对模型的长句进行分割(根据配置的最长句长限制)
method: sent_splitter
input type: str
output type: List[str]
"""
from config import global_config

# 获取当前模块有用的配置
max_sent_len = global_config.get("max_sent_len", 100)
src_lang = global_config.get("translate_src_lang")

if src_lang == "zh":
    from pyltp import SentenceSplitter

    def sent_splitter(text):
        def sent_len(x):
            # 因为在预处理时会分字,所以在计算句长时把空格去掉。
            return len(x.replace(" ", ""))

        if sent_len(text) > max_sent_len:
            sents = SentenceSplitter.split(text)
            long_sents = list(
                filter(lambda x: sent_len(x) > max_sent_len, sents))
            if long_sents:
                raise AttributeError(
                    "Please enter text less than {} chars in chinese.".format(
                        max_sent_len))
        else:
            sents = [text]
        return sents
コード例 #33
0
ファイル: save_mail.py プロジェクト: hnzyc/learnprogram
import xlwings as xw
import win32com.client as win32
import os
import work
from config import global_config  #编写config模块,设置全局配置信息

# 首先定义所有需要用到的文件路径
file_path = global_config.get('send_mail', 'file_path')  # 读取投资者信息表文件所在路径
sheet_name = global_config.get('send_mail', 'sheet_name')
col = global_config.getint('send_mail', 'col')
mail_to = global_config.getint('send_mail', 'mail_to')
mail_sub = global_config.get('send_mail', 'mail_sub')
mail_body = global_config.get('send_mail', 'mail_body')
attach_report = global_config.get('send_mail', 'attach_report')
save_path = global_config.get('excel_split', 'save_path')

if __name__ == '__main__':
    print('现在开始保存邮件,请稍候……')
    print('***' * 20)
    work.save_mail(file_path, mail_sub, mail_body, attach_report, save_path,
                   mail_to, sheet_name, col)
コード例 #34
0
ファイル: jd_test.py プロジェクト: zeng126/jd-test
    def submit_order(self):
        """提交订单

        重要:
        1.该方法只适用于普通商品的提交订单(即可以加入购物车,然后结算提交订单的商品)
        2.提交订单时,会对购物车中勾选✓的商品进行结算(如果勾选了多个商品,将会提交成一个订单)

        :return: True/False 订单提交结果
        """
        url = 'https://trade.jd.com/shopping/order/submitOrder.action'
        # js function of submit order is included in https://trade.jd.com/shopping/misc/js/order.js?r=2018070403091

        data = {
            'overseaPurchaseCookies': '',
            'vendorRemarks': '[]',
            'submitOrderParam.sopNotPutInvoice': 'false',
            'submitOrderParam.trackID': 'TestTrackId',
            'submitOrderParam.ignorePriceChange': '0',
            'submitOrderParam.btSupport': '0',
            'riskControl': self.risk_control,
            'submitOrderParam.isBestCoupon': 1,
            'submitOrderParam.jxj': 1,
            'submitOrderParam.trackId':
            self.track_id,  # Todo: need to get trackId
            'submitOrderParam.eid': self.eid,
            'submitOrderParam.fp': self.fp,
            'submitOrderParam.needCheck': 1,
        }

        # add payment password when necessary
        payment_pwd = global_config.get('account', 'payment_pwd')
        if payment_pwd:
            data['submitOrderParam.payPassword'] = encrypt_payment_pwd(
                payment_pwd)

        headers = {
            'User-Agent': self.user_agent,
            'Host': 'trade.jd.com',
            'Referer':
            'http://trade.jd.com/shopping/order/getOrderInfo.action',
        }

        try:
            resp = self.sess.post(url=url, data=data, headers=headers)
            resp_json = json.loads(resp.text)

            # 返回信息示例:
            # 下单失败
            # {'overSea': False, 'orderXml': None, 'cartXml': None, 'noStockSkuIds': '', 'reqInfo': None, 'hasJxj': False, 'addedServiceList': None, 'sign': None, 'pin': 'xxx', 'needCheckCode': False, 'success': False, 'resultCode': 60123, 'orderId': 0, 'submitSkuNum': 0, 'deductMoneyFlag': 0, 'goJumpOrderCenter': False, 'payInfo': None, 'scaleSkuInfoListVO': None, 'purchaseSkuInfoListVO': None, 'noSupportHomeServiceSkuList': None, 'msgMobile': None, 'addressVO': None, 'msgUuid': None, 'message': '请输入支付密码!'}
            # {'overSea': False, 'cartXml': None, 'noStockSkuIds': '', 'reqInfo': None, 'hasJxj': False, 'addedServiceList': None, 'orderXml': None, 'sign': None, 'pin': 'xxx', 'needCheckCode': False, 'success': False, 'resultCode': 60017, 'orderId': 0, 'submitSkuNum': 0, 'deductMoneyFlag': 0, 'goJumpOrderCenter': False, 'payInfo': None, 'scaleSkuInfoListVO': None, 'purchaseSkuInfoListVO': None, 'noSupportHomeServiceSkuList': None, 'msgMobile': None, 'addressVO': None, 'msgUuid': None, 'message': '您多次提交过快,请稍后再试'}
            # {'overSea': False, 'orderXml': None, 'cartXml': None, 'noStockSkuIds': '', 'reqInfo': None, 'hasJxj': False, 'addedServiceList': None, 'sign': None, 'pin': 'xxx', 'needCheckCode': False, 'success': False, 'resultCode': 60077, 'orderId': 0, 'submitSkuNum': 0, 'deductMoneyFlag': 0, 'goJumpOrderCenter': False, 'payInfo': None, 'scaleSkuInfoListVO': None, 'purchaseSkuInfoListVO': None, 'noSupportHomeServiceSkuList': None, 'msgMobile': None, 'addressVO': None, 'msgUuid': None, 'message': '获取用户订单信息失败'}
            # {"cartXml":null,"noStockSkuIds":"xxx","reqInfo":null,"hasJxj":false,"addedServiceList":null,"overSea":false,"orderXml":null,"sign":null,"pin":"xxx","needCheckCode":false,"success":false,"resultCode":600157,"orderId":0,"submitSkuNum":0,"deductMoneyFlag":0,"goJumpOrderCenter":false,"payInfo":null,"scaleSkuInfoListVO":null,"purchaseSkuInfoListVO":null,"noSupportHomeServiceSkuList":null,"msgMobile":null,"addressVO":{"pin":"xxx","areaName":"","provinceId":xx,"cityId":xx,"countyId":xx,"townId":xx,"paymentId":0,"selected":false,"addressDetail":"xx","mobile":"xx","idCard":"","phone":null,"email":null,"selfPickMobile":null,"selfPickPhone":null,"provinceName":null,"cityName":null,"countyName":null,"townName":null,"giftSenderConsigneeName":null,"giftSenderConsigneeMobile":null,"gcLat":0.0,"gcLng":0.0,"coord_type":0,"longitude":0.0,"latitude":0.0,"selfPickOptimize":0,"consigneeId":0,"selectedAddressType":0,"siteType":0,"helpMessage":null,"tipInfo":null,"cabinetAvailable":true,"limitKeyword":0,"specialRemark":null,"siteProvinceId":0,"siteCityId":0,"siteCountyId":0,"siteTownId":0,"skuSupported":false,"addressSupported":0,"isCod":0,"consigneeName":null,"pickVOname":null,"shipmentType":0,"retTag":0,"tagSource":0,"userDefinedTag":null,"newProvinceId":0,"newCityId":0,"newCountyId":0,"newTownId":0,"newProvinceName":null,"newCityName":null,"newCountyName":null,"newTownName":null,"checkLevel":0,"optimizePickID":0,"pickType":0,"dataSign":0,"overseas":0,"areaCode":null,"nameCode":null,"appSelfPickAddress":0,"associatePickId":0,"associateAddressId":0,"appId":null,"encryptText":null,"certNum":null,"used":false,"oldAddress":false,"mapping":false,"addressType":0,"fullAddress":"xxxx","postCode":null,"addressDefault":false,"addressName":null,"selfPickAddressShuntFlag":0,"pickId":0,"pickName":null,"pickVOselected":false,"mapUrl":null,"branchId":0,"canSelected":false,"address":null,"name":"xxx","message":null,"id":0},"msgUuid":null,"message":"xxxxxx商品无货"}
            # {'orderXml': None, 'overSea': False, 'noStockSkuIds': 'xxx', 'reqInfo': None, 'hasJxj': False, 'addedServiceList': None, 'cartXml': None, 'sign': None, 'pin': 'xxx', 'needCheckCode': False, 'success': False, 'resultCode': 600158, 'orderId': 0, 'submitSkuNum': 0, 'deductMoneyFlag': 0, 'goJumpOrderCenter': False, 'payInfo': None, 'scaleSkuInfoListVO': None, 'purchaseSkuInfoListVO': None, 'noSupportHomeServiceSkuList': None, 'msgMobile': None, 'addressVO': {'oldAddress': False, 'mapping': False, 'pin': 'xxx', 'areaName': '', 'provinceId': xx, 'cityId': xx, 'countyId': xx, 'townId': xx, 'paymentId': 0, 'selected': False, 'addressDetail': 'xxxx', 'mobile': 'xxxx', 'idCard': '', 'phone': None, 'email': None, 'selfPickMobile': None, 'selfPickPhone': None, 'provinceName': None, 'cityName': None, 'countyName': None, 'townName': None, 'giftSenderConsigneeName': None, 'giftSenderConsigneeMobile': None, 'gcLat': 0.0, 'gcLng': 0.0, 'coord_type': 0, 'longitude': 0.0, 'latitude': 0.0, 'selfPickOptimize': 0, 'consigneeId': 0, 'selectedAddressType': 0, 'newCityName': None, 'newCountyName': None, 'newTownName': None, 'checkLevel': 0, 'optimizePickID': 0, 'pickType': 0, 'dataSign': 0, 'overseas': 0, 'areaCode': None, 'nameCode': None, 'appSelfPickAddress': 0, 'associatePickId': 0, 'associateAddressId': 0, 'appId': None, 'encryptText': None, 'certNum': None, 'addressType': 0, 'fullAddress': 'xxxx', 'postCode': None, 'addressDefault': False, 'addressName': None, 'selfPickAddressShuntFlag': 0, 'pickId': 0, 'pickName': None, 'pickVOselected': False, 'mapUrl': None, 'branchId': 0, 'canSelected': False, 'siteType': 0, 'helpMessage': None, 'tipInfo': None, 'cabinetAvailable': True, 'limitKeyword': 0, 'specialRemark': None, 'siteProvinceId': 0, 'siteCityId': 0, 'siteCountyId': 0, 'siteTownId': 0, 'skuSupported': False, 'addressSupported': 0, 'isCod': 0, 'consigneeName': None, 'pickVOname': None, 'shipmentType': 0, 'retTag': 0, 'tagSource': 0, 'userDefinedTag': None, 'newProvinceId': 0, 'newCityId': 0, 'newCountyId': 0, 'newTownId': 0, 'newProvinceName': None, 'used': False, 'address': None, 'name': 'xx', 'message': None, 'id': 0}, 'msgUuid': None, 'message': 'xxxxxx商品无货'}
            # 下单成功
            # {'overSea': False, 'orderXml': None, 'cartXml': None, 'noStockSkuIds': '', 'reqInfo': None, 'hasJxj': False, 'addedServiceList': None, 'sign': None, 'pin': 'xxx', 'needCheckCode': False, 'success': True, 'resultCode': 0, 'orderId': 8740xxxxx, 'submitSkuNum': 1, 'deductMoneyFlag': 0, 'goJumpOrderCenter': False, 'payInfo': None, 'scaleSkuInfoListVO': None, 'purchaseSkuInfoListVO': None, 'noSupportHomeServiceSkuList': None, 'msgMobile': None, 'addressVO': None, 'msgUuid': None, 'message': None}

            if resp_json.get('success'):
                order_id = resp_json.get('orderId')
                logger.info('订单提交成功! 订单号:%s', order_id)
                if self.send_message:
                    self.messenger.send(text='jd-assistant 订单提交成功',
                                        desp='订单号:%s' % order_id)
                return True
            else:
                message, result_code = resp_json.get('message'), resp_json.get(
                    'resultCode')
                if result_code == 0:
                    self._save_invoice()
                    message = message + '(下单商品可能为第三方商品,将切换为普通发票进行尝试)'
                elif result_code == 60077:
                    message = message + '(可能是购物车为空 或 未勾选购物车中商品)'
                elif result_code == 60123:
                    message = message + '(需要在config.ini文件中配置支付密码)'
                logger.info('订单提交失败, 错误码:%s, 返回信息:%s', result_code, message)
                logger.info(resp_json)
                return False
        except Exception as e:
            logger.error(e)
            return False
コード例 #35
0
import os
import work
from config import global_config  #编写config模块,设置全局配置信息

# 结算单文件夹路径
path1 = global_config.get('account_path', 'path1')
# 结算单保存的文件名
investors_info1 = os.path.join(
    path1, global_config.get('account_path', 'investors_info1'))

if __name__ == '__main__':

    print('正在逐个提取结算单信息,请稍候……')
    data1 = work.cust_info_list2(path1)  # 结算单信息统计
    data1.to_excel(investors_info1)  # 保存结算单信息到excel表
    print('已全部提取完成,请打开转入结算单所在文件夹查看')