fa45d8aa5f
- health_checklist.json: 192.168.1.122→node122
- ocr_client.py: docstring IP→node122
- docs/market-data-requirements.md: IP→node122
- 所有API调用通过ProxyHandler({})绕过系统代理
Privoxy对node122:18003返回500,直连正常
147 lines
3.8 KiB
Python
147 lines
3.8 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding:utf-8 -*-
|
|
"""
|
|
Date: 2021/11/16 20:40
|
|
Desc: 艺恩-艺人
|
|
艺人商业价值
|
|
艺人流量价值
|
|
https://www.endata.com.cn/Marketing/Artist/business.html
|
|
"""
|
|
|
|
import datetime
|
|
import json
|
|
import os
|
|
|
|
import pandas as pd # type: ignore
|
|
import requests
|
|
import py_mini_racer # type: ignore
|
|
|
|
|
|
def _get_js_path(name: str = "", module_file: str = "") -> str:
|
|
"""
|
|
get JS file path
|
|
:param name: file name
|
|
:type name: str
|
|
:param module_file: filename
|
|
:type module_file: str
|
|
:return: 路径
|
|
:rtype: str
|
|
"""
|
|
module_folder = os.path.abspath(os.path.dirname(os.path.dirname(module_file)))
|
|
module_json_path = os.path.join(module_folder, "movie", name)
|
|
return module_json_path
|
|
|
|
|
|
def _get_file_content(file_name: str = "jm.js"):
|
|
"""
|
|
read the file content
|
|
:param file_name: filename
|
|
:type file_name: str
|
|
:return: file content
|
|
:rtype: str
|
|
"""
|
|
setting_file_name = file_name
|
|
setting_file_path = _get_js_path(setting_file_name, __file__)
|
|
with open(setting_file_path) as f:
|
|
file_data = f.read()
|
|
return file_data
|
|
|
|
|
|
def decrypt(origin_data: str = "") -> str:
|
|
"""
|
|
解密艺恩的加密数据
|
|
:param origin_data: 解密前的字符串
|
|
:type origin_data: str
|
|
:return: 解密后的字符串
|
|
:rtype: str
|
|
"""
|
|
file_data = _get_file_content(file_name="jm.js")
|
|
ctx = py_mini_racer.MiniRacer()
|
|
ctx.eval(file_data)
|
|
data = ctx.call("webInstace.shell", origin_data)
|
|
return data
|
|
|
|
|
|
def business_value_artist() -> pd.DataFrame:
|
|
"""
|
|
艺恩-艺人-艺人商业价值
|
|
https://www.endata.com.cn/Marketing/Artist/business.html
|
|
:return: 艺人商业价值
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "https://www.endata.com.cn/API/GetData.ashx"
|
|
payload = {
|
|
"Order": "BusinessValueIndex_L1",
|
|
"OrderType": "DESC",
|
|
"PageIndex": "1",
|
|
"PageSize": "100",
|
|
"MethodName": "Data_GetList_Star",
|
|
}
|
|
r = requests.post(url, data=payload)
|
|
r.encoding = "utf8"
|
|
data_json = json.loads(decrypt(r.text))
|
|
temp_df = pd.DataFrame(data_json["Data"]["Table"])
|
|
temp_df.columns = [
|
|
"排名",
|
|
"-",
|
|
"艺人",
|
|
"商业价值",
|
|
"-",
|
|
"专业热度",
|
|
"关注热度",
|
|
"预测热度",
|
|
"美誉度",
|
|
"-",
|
|
]
|
|
temp_df = temp_df[
|
|
["排名", "艺人", "商业价值", "专业热度", "关注热度", "预测热度", "美誉度"]
|
|
]
|
|
temp_df["统计日期"] = datetime.datetime.now().date().isoformat()
|
|
return temp_df
|
|
|
|
|
|
def online_value_artist() -> pd.DataFrame:
|
|
"""
|
|
艺恩-艺人-艺人流量价值
|
|
https://www.endata.com.cn/Marketing/Artist/business.html
|
|
:return: 艺人流量价值
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "https://www.endata.com.cn/API/GetData.ashx"
|
|
payload = {
|
|
"Order": "FlowValueIndex_L1",
|
|
"OrderType": "DESC",
|
|
"PageIndex": 1,
|
|
"PageSize": 100,
|
|
"MethodName": "Data_GetList_Star",
|
|
}
|
|
r = requests.post(url, data=payload)
|
|
r.encoding = "utf8"
|
|
data_json = json.loads(decrypt(r.text))
|
|
temp_df = pd.DataFrame(data_json["Data"]["Table"])
|
|
temp_df.columns = [
|
|
"排名",
|
|
"-",
|
|
"艺人",
|
|
"-",
|
|
"流量价值",
|
|
"专业热度",
|
|
"关注热度",
|
|
"预测热度",
|
|
"-",
|
|
"带货力",
|
|
]
|
|
temp_df = temp_df[
|
|
["排名", "艺人", "流量价值", "专业热度", "关注热度", "预测热度", "带货力"]
|
|
]
|
|
temp_df["统计日期"] = datetime.datetime.now().date().isoformat()
|
|
return temp_df
|
|
|
|
|
|
if __name__ == "__main__":
|
|
business_value_artist_df = business_value_artist()
|
|
print(business_value_artist_df)
|
|
|
|
online_value_artist_df = online_value_artist()
|
|
print(online_value_artist_df)
|