import math from Modules.TycApi.TycUtils import frist_request, page_request, business_request, special_frist_request, \ special_page_request # 数据库参数 DB_GSBJ = '公司背景' DB_SFFX = '司法风险' DB_JYFX = '经营风险' DB_TYFX = '天眼风险' DB_JYZK = '经营状况' DB_ZSCQ = '知识产权' DB_GSFZ = '公司发展' class TycDataImpl(object): """天眼查接口相关""" # 工商信息 @staticmethod def basic_information(**kwargs): name = kwargs['name'] url = 'http://open.api.tianyancha.com/services/open/ic/baseinfo/normal?keyword={name}' url = url.format(name=name) res = business_request(url, name, DB_GSBJ, '基本信息') return res # 高管信息 @staticmethod def executive_information(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/ic/staff/2.0?keyword={name}&pageNum={page_num}&pageSize=20' url = url.format(name=name, page_num=page_num) # 如果只有1页返回保存成功,如需翻页返回总条数用于计算页码 res = frist_request(url, name, DB_GSBJ, '主要人员') if res != '保存成功': page_total = math.ceil(res / 20) + 1 for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/ic/staff/2.0?keyword={name}&pageNum={page}&pageSize=20' url = url.format(name=name, page=page) res = page_request(url, name, DB_GSBJ, '主要人员') return res # 股东信息 @staticmethod def shareholders_information(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/ic/holder/2.0?pageSize=20&keyword={name}&pageNum={page_num}' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_GSBJ, '企业股东') if res != '保存成功': page_total = math.ceil(res / 20) + 1 for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/ic/holder/2.0?pageSize=20&keyword={name}&pageNum={page}' url = url.format(name=name, page=page) res = page_request(url, name, DB_GSBJ, '企业股东') return res # 对外投资 @staticmethod def outbound_investment(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/ic/inverst/2.0?pageSize=20&keyword={name}&pageNum={page_num}' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_GSBJ, '对外投资') if res != '保存成功': page_total = math.ceil(res / 20) + 1 for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/ic/inverst/2.0?pageSize=20&keyword={name}&pageNum={page}' url = url.format(name=name, page=page) res = page_request(url, name, DB_GSBJ, '对外投资') return res # 分支机构 @staticmethod def branch_offices(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/ic/branch/2.0?keyword={name}&pageNum={page_num}&pageSize=20' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_GSBJ, '分支机构') if res != '保存成功': page_total = math.ceil(res / 20) + 1 for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/ic/branch/2.0?keyword={name}&pageNum={page}&pageSize=20' url = url.format(name=name, page=page) res = page_request(url, name, DB_GSBJ, '分支机构') return res # 工商变更 @staticmethod def change_record(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/ic/changeinfo/2.0?keyword={name}&pageNum={page_num}&pageSize=20' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_GSBJ, '变更记录') if res != '保存成功': page_total = math.ceil(res / 20) + 1 for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/ic/changeinfo/2.0?keyword={name}&pageNum={page}&pageSize=20' url = url.format(name=name, page=page) res = page_request(url, name, DB_GSBJ, '变更记录') return res # 商标信息 @staticmethod def trademark_information(**kwargs): name = kwargs['name'] end_date = time.strftime('%Y-%m-%d', time.localtime()) begin_date = str(int(end_date[:4]) - 4) + '-01-01' res = None for code in range(1, 46): page_num = 1 url = 'http://open.api.tianyancha.com/services/open/ipr/tm/2.0?appDateBegin={begin_date}&pageSize=20&tmClass={code}&appDateEnd={end_date}&keyword={name}&pageNum={page_num}&status=1' url = url.format(name=name, page_num=page_num, begin_date=begin_date, end_date=end_date, code=code) res = special_frist_request(url, name, DB_ZSCQ, '商标信息', code) if res != '保存成功': page_total = math.ceil(res / 20) + 1 for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/ipr/tm/2.0?appDateBegin={begin_date}&pageSize=20&tmClass={code}&appDateEnd={end_date}&keyword={name}&pageNum={page}&status=1' url = url.format(name=name, page=page, begin_date=begin_date, end_date=end_date, code=code) res = special_page_request(url, name, DB_ZSCQ, '商标信息', code) return res # 专利信息 @staticmethod def patent_information(**kwargs): name = kwargs['name'] end_date = time.strftime('%Y-%m-%d', time.localtime()) begin_date = str(int(end_date[:4]) - 4) + '-01-01' res = None for code in range(1, 4): page_num = 1 url = 'http://open.api.tianyancha.com/services/open/ipr/patents/3.0?pubDateBegin={begin_date}&appDateBegin={begin_date}&pageSize=20&pubDateEnd={end_date}&appDateEnd={end_date}&keyword={name}&pageNum={page_num}&patentType={code}' url = url.format(name=name, page_num=page_num, begin_date=begin_date, end_date=end_date, code=code) res = special_frist_request(url, name, DB_ZSCQ, '专利信息', code) if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/ipr/patents/3.0?pubDateBegin={begin_date}&appDateBegin={begin_date}&pageSize=20&pubDateEnd={end_date}&appDateEnd={end_date}&keyword={name}&pageNum={page}&patentType={code}' url = url.format(name=name, page=page, begin_date=begin_date, end_date=end_date, code=code) res = special_page_request(url, name, DB_ZSCQ, '专利信息', code) return res # 软件著作权 @staticmethod def software_copyrights(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/ipr/copyReg/2.0?keyword={name}&pageNum={page_num}&pageSize=20' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_ZSCQ, '软件著作权') if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/ipr/copyReg/2.0?keyword={name}&pageNum={page}&pageSize=20' url = url.format(name=name, page=page) res = page_request(url, name, DB_ZSCQ, '软件著作权') return res # 网站备案 @staticmethod def website_record(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/ipr/icp/3.0?keyword={name}&pageNum={page_num}&pageSize=20' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_ZSCQ, '网站备案') if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/ipr/icp/3.0?keyword={name}&pageNum={page}&pageSize=20' url = url.format(name=name, page=page) res = page_request(url, name, DB_ZSCQ, '网站备案') return res # 开庭公告 @staticmethod def hearing_announcement(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/jr/ktannouncement/2.0?pageSize=20&keyword={name}&pageNum={page_num}' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_SFFX, '开庭公告') if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/jr/ktannouncement/2.0?pageSize=20&keyword={name}&pageNum={page}' url = url.format(name=name, page=page) res = page_request(url, name, DB_SFFX, '开庭公告') return res # 被执行人 @staticmethod def executor(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/jr/zhixinginfo/2.0?pageSize=20&keyword={name}&pageNum={page_num}' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_SFFX, '被执行人') if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/jr/zhixinginfo/2.0?pageSize=20&keyword={name}&pageNum={page}' url = url.format(name=name, page=page) res = page_request(url, name, DB_SFFX, '被执行人') return res # 法院公告 @staticmethod def court_announcement(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/jr/courtAnnouncement/2.0?pageSize=20&keyword={name}&pageNum={page_num}' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_SFFX, '法院公告') if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/jr/courtAnnouncement/2.0?pageSize=20&keyword={name}&pageNum={page}' url = url.format(name=name, page=page) res = page_request(url, name, DB_SFFX, '法院公告') return res # 立案信息 @staticmethod def case_filing_information(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/jr/courtRegister/2.0?pageSize=20&keyword={name}&pageNum={page_num}' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_SFFX, '立案信息') if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/jr/courtRegister/2.0?pageSize=20&keyword={name}&pageNum={page}' url = url.format(name=name, page=page) res = page_request(url, name, DB_SFFX, '立案信息') return res # 失信人 @staticmethod def untrustworthy(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/jr/dishonest/2.0?keyword={name}&pageNum={page_num}&pageSize=1' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_SFFX, '失信人') if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/jr/dishonest/2.0?keyword={name}&pageNum={page}&pageSize=1' url = url.format(name=name, page=page) res = page_request(url, name, DB_SFFX, '失信人') return res # 法律诉讼 @staticmethod def legal_proceedings(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/jr/lawSuit/3.0?keyword={name}&pageNum={page_num}&pageSize=20' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_SFFX, '法律诉讼') if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/jr/lawSuit/3.0?keyword={name}&pageNum={page}&pageSize=20' url = url.format(name=name, page=page) res = page_request(url, name, DB_SFFX, '法律诉讼') return res # 送达公告 @staticmethod def delivery_announcement(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/jr/sendAnnouncement/2.0?pageSize=20&keyword={name}&pageNum={page_num}' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_SFFX, '送达公告') if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/jr/sendAnnouncement/2.0?pageSize=20&keyword={name}&pageNum={page}' url = url.format(name=name, page=page) res = page_request(url, name, DB_SFFX, '送达公告') return res # 破产重整 @staticmethod def bankruptcy_reorganization(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/jr/bankruptcy/2.0?pageSize=20&keyword={name}&pageNum={page_num}' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_SFFX, '破产重整') if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/jr/bankruptcy/2.0?pageSize=20&keyword={name}&pageNum={page}' url = url.format(name=name, page=page) res = page_request(url, name, DB_SFFX, '破产重整') return res # 限制消费令 @staticmethod def restricted_spending_order(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/jr/consumptionRestriction/2.0?pageSize=20&keyword={name}&pageNum={page_num}' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_SFFX, '限制消费令') if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/jr/consumptionRestriction/2.0?pageSize=20&keyword={name}&pageNum={page}' url = url.format(name=name, page=page) res = page_request(url, name, DB_SFFX, '限制消费令') return res # 终本案件 @staticmethod def final_case(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/jr/endCase/2.0?pageSize=20&keyword={name}&pageNum={page_num}' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_SFFX, '终本案件') if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/jr/endCase/2.0?pageSize=20&keyword={name}&pageNum={page}' url = url.format(name=name, page=page) res = page_request(url, name, DB_SFFX, '终本案件') return res # 股权出质 @staticmethod def equity_pledge(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/mr/equityInfo/2.0?pageSize=20&keyword={name}&pageNum={page_num}' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_JYFX, '股权出质') if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/mr/equityInfo/2.0?pageSize=20&keyword={name}&pageNum={page}' url = url.format(name=name, page=page) res = page_request(url, name, DB_JYFX, '股权出质') return res # 动产抵押 @staticmethod def mortgage_movable_property(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/mr/mortgageInfo/2.0?pageSize=20&keyword={name}&pageNum={page_num}' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_JYFX, '动产抵押') if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/mr/mortgageInfo/2.0?pageSize=20&keyword={name}&pageNum={page}' url = url.format(name=name, page=page) res = page_request(url, name, DB_JYFX, '动产抵押') return res # 土地抵押 @staticmethod def land_mortgage(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/mr/landMortgage/2.0?pageSize=20&keyword={name}&pageNum={page_num}' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_JYFX, '土地抵押') if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/mr/landMortgage/2.0?pageSize=20&keyword={name}&pageNum={page}' url = url.format(name=name, page=page) res = page_request(url, name, DB_JYFX, '土地抵押') return res # 经营异常 @staticmethod def abnormal_operation(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/mr/abnormal/2.0?pageSize=20&keyword={name}&pageNum={page_num}' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_JYFX, '经营异常') if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/mr/abnormal/2.0?pageSize=20&keyword={name}&pageNum={page}' url = url.format(name=name, page=page) res = page_request(url, name, DB_JYFX, '经营异常') return res # 行政处罚 @staticmethod def administrative_penalties(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/mr/punishmentInfo/3.0?pageSize=20&keyword={name}&pageNum={page_num}' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_JYFX, '行政处罚') if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/mr/punishmentInfo/3.0?pageSize=20&keyword={name}&pageNum={page}' url = url.format(name=name, page=page) res = page_request(url, name, DB_JYFX, '行政处罚') return res # 严重违法 @staticmethod def serious_violation(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/mr/illegalinfo/2.0?pageSize=20&keyword={name}&pageNum={page_num}' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_JYFX, '严重违法') if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/mr/illegalinfo/2.0?pageSize=20&keyword={name}&pageNum={page}' url = url.format(name=name, page=page) res = page_request(url, name, DB_JYFX, '严重违法') return res # 税收违法 @staticmethod def tax_violation(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/mr/taxContravention/2.0?pageSize=20&keyword={name}&pageNum={page_num}' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_JYFX, '税收违法') if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/mr/taxContravention/2.0?pageSize=20&keyword={name}&pageNum={page}' url = url.format(name=name, page=page) res = page_request(url, name, DB_JYFX, '税收违法') return res # 欠税公告 @staticmethod def tax_arrears_announcement(**kwargs): name = kwargs['name'] page_num = 1 url = 'http://open.api.tianyancha.com/services/open/mr/ownTax/2.0?pageSize=20&keyword={name}&pageNum={page_num}' url = url.format(name=name, page_num=page_num) res = frist_request(url, name, DB_JYFX, '欠税公告') if res != '保存成功': page_total = math.ceil(res / 20) + 1 page_total = 20 if page_total > 20 else page_total for page in range(2, page_total): url = 'http://open.api.tianyancha.com/services/open/mr/ownTax/2.0?pageSize=20&keyword={name}&pageNum={page}' url = url.format(name=name, page=page) res = page_request(url, name, DB_JYFX, '欠税公告') return res