commit
f45b5c2562
|
@ -5,7 +5,7 @@
|
||||||
# @File : auto_comment.py
|
# @File : auto_comment.py
|
||||||
# 多账号评价,异常处理
|
# 多账号评价,异常处理
|
||||||
# 2023/3/28 修复乱码
|
# 2023/3/28 修复乱码
|
||||||
# 2023/4/19 当存在OPENAI_API_KEY环境变量时,启用AI评价;网络环境问题自行想办法,国外机或配置ProxyUrl HTTP代理;
|
# 2023/4/19 当存在OPENAI_API_KEY环境变量时,启用AI评价;网络支持:1.环境变量OPENAI_API_BASE_URL反向代理、2.ProxyUrl代理、3.环境支持直连;
|
||||||
'''
|
'''
|
||||||
new Env('自动评价');
|
new Env('自动评价');
|
||||||
8 8 2 1 * https://raw.githubusercontent.com/6dylan6/auto_comment/main/jd_comment.py
|
8 8 2 1 * https://raw.githubusercontent.com/6dylan6/auto_comment/main/jd_comment.py
|
||||||
|
@ -34,21 +34,11 @@ except:
|
||||||
os.system('pip3 install jieba &> /dev/null')
|
os.system('pip3 install jieba &> /dev/null')
|
||||||
os.system('pip3 install zhon &> /dev/null')
|
os.system('pip3 install zhon &> /dev/null')
|
||||||
os.system('pip3 install requests &> /dev/null')
|
os.system('pip3 install requests &> /dev/null')
|
||||||
os.system('pip3 install openai &> /dev/null')
|
|
||||||
import jieba
|
import jieba
|
||||||
import jieba.analyse
|
import jieba.analyse
|
||||||
#import yaml
|
#import yaml
|
||||||
from lxml import etree
|
from lxml import etree
|
||||||
import requests
|
import requests
|
||||||
import openai
|
|
||||||
|
|
||||||
if "OPENAI_API_KEY" in os.environ:
|
|
||||||
print('已启用AI评价');
|
|
||||||
try:
|
|
||||||
import openai
|
|
||||||
except:
|
|
||||||
print('安装openai模块')
|
|
||||||
os.system('pip3 install openai &> /dev/null')
|
|
||||||
|
|
||||||
# constants
|
# constants
|
||||||
CONFIG_PATH = './config.yml'
|
CONFIG_PATH = './config.yml'
|
||||||
|
@ -176,16 +166,24 @@ def generation(pname, _class=0, _type=1, opts=None):
|
||||||
|
|
||||||
# ChatGPT评价生成
|
# ChatGPT评价生成
|
||||||
def generation_ai(pname, _class=0, _type=1, opts=None):
|
def generation_ai(pname, _class=0, _type=1, opts=None):
|
||||||
os.environ['http_proxy'] = os.getenv("ProxyUrl")
|
# 当存在 OPENAI_API_BASE_URL 时,使用反向代理
|
||||||
os.environ['https_proxy'] = os.getenv("ProxyUrl")
|
api_base_url = os.environ.get("OPENAI_API_BASE_URL", "https://api.openai.com")
|
||||||
openai.api_key = os.getenv("OPENAI_API_KEY")
|
api_key = os.environ["OPENAI_API_KEY"]
|
||||||
prompt = f"{pname} 写一段此商品的评价,简短、口语化"
|
prompt = f"{pname} 写一段此商品的评价,简短、口语化"
|
||||||
response = openai.ChatCompletion.create(
|
response = requests.post(
|
||||||
model="gpt-3.5-turbo",
|
f"{api_base_url}/v1/chat/completions",
|
||||||
messages=[{"role": "user", "content": prompt}],
|
headers={
|
||||||
max_tokens=1024,
|
"Content-Type": "application/json",
|
||||||
|
"Authorization": f"Bearer {api_key}",
|
||||||
|
},
|
||||||
|
json={
|
||||||
|
"model": "gpt-3.5-turbo",
|
||||||
|
"messages": [{"role": "user", "content": prompt}],
|
||||||
|
"max_tokens": 1024,
|
||||||
|
}
|
||||||
)
|
)
|
||||||
return 5, response.choices[0].message.content.strip()
|
response_text = response.json()
|
||||||
|
return 5, response_text["choices"][0]["message"]["content"].strip()
|
||||||
|
|
||||||
|
|
||||||
# 查询全部评价
|
# 查询全部评价
|
||||||
|
@ -273,7 +271,7 @@ def sunbw(N, opts=None):
|
||||||
opts['logger'].debug('Commenting on items')
|
opts['logger'].debug('Commenting on items')
|
||||||
for i, Order in enumerate(reversed(Order_data)):
|
for i, Order in enumerate(reversed(Order_data)):
|
||||||
if i + 1 > 10:
|
if i + 1 > 10:
|
||||||
opts['logger'].info(f'\t已评价10个订单,跳出')
|
opts['logger'].info(f'\n已评价10个订单,跳出')
|
||||||
break
|
break
|
||||||
try:
|
try:
|
||||||
oid = Order.xpath('tr[@class="tr-th"]/td/span[3]/a/text()')[0]
|
oid = Order.xpath('tr[@class="tr-th"]/td/span[3]/a/text()')[0]
|
||||||
|
@ -293,7 +291,7 @@ def sunbw(N, opts=None):
|
||||||
idx = 0
|
idx = 0
|
||||||
for oname, pid in zip(oname_data, pid_data):
|
for oname, pid in zip(oname_data, pid_data):
|
||||||
pid = re.findall('(?<=jd.com/)[(0-9)*?]+',pid)[0]
|
pid = re.findall('(?<=jd.com/)[(0-9)*?]+',pid)[0]
|
||||||
opts['logger'].info(f'\t开始第{i+1}个订单: {oid}')
|
opts['logger'].info(f'\n开始第{i+1}个订单: {oid}')
|
||||||
opts['logger'].debug('pid: %s', pid)
|
opts['logger'].debug('pid: %s', pid)
|
||||||
opts['logger'].debug('oid: %s', oid)
|
opts['logger'].debug('oid: %s', oid)
|
||||||
xing, Str = generation(oname, opts=opts)
|
xing, Str = generation(oname, opts=opts)
|
||||||
|
@ -426,7 +424,7 @@ def review(N, opts=None):
|
||||||
opts['logger'].debug('Commenting on items')
|
opts['logger'].debug('Commenting on items')
|
||||||
for i, Order in enumerate(reversed(Order_data)):
|
for i, Order in enumerate(reversed(Order_data)):
|
||||||
if i + 1 > 10:
|
if i + 1 > 10:
|
||||||
opts['logger'].info(f'\t已评价10个订单,跳出')
|
opts['logger'].info(f'\n已评价10个订单,跳出')
|
||||||
break
|
break
|
||||||
oname = Order.xpath('td[1]/div/div[2]/div/a/text()')[0]
|
oname = Order.xpath('td[1]/div/div[2]/div/a/text()')[0]
|
||||||
_id = Order.xpath('td[3]/div/a/@href')[0]
|
_id = Order.xpath('td[3]/div/a/@href')[0]
|
||||||
|
@ -439,7 +437,7 @@ def review(N, opts=None):
|
||||||
"").split('&orderId=')
|
"").split('&orderId=')
|
||||||
opts['logger'].debug('pid: %s', pid)
|
opts['logger'].debug('pid: %s', pid)
|
||||||
opts['logger'].debug('oid: %s', oid)
|
opts['logger'].debug('oid: %s', oid)
|
||||||
opts['logger'].info(f'\t开始第{i+1}个订单: {oid}')
|
opts['logger'].info(f'\n开始第{i+1}个订单: {oid}')
|
||||||
_, context = generation(oname, _type=0, opts=opts)
|
_, context = generation(oname, _type=0, opts=opts)
|
||||||
opts['logger'].info(f'追评内容:{context}')
|
opts['logger'].info(f'追评内容:{context}')
|
||||||
data1 = {
|
data1 = {
|
||||||
|
@ -513,11 +511,11 @@ def Service_rating(N, opts=None):
|
||||||
opts['logger'].debug('Commenting on items')
|
opts['logger'].debug('Commenting on items')
|
||||||
for i, Order in enumerate(reversed(Order_data)):
|
for i, Order in enumerate(reversed(Order_data)):
|
||||||
if i + 1 > 10:
|
if i + 1 > 10:
|
||||||
opts['logger'].info(f'\t已评价10个订单,跳出')
|
opts['logger'].info(f'\n已评价10个订单,跳出')
|
||||||
break
|
break
|
||||||
#oname = Order.xpath('td[1]/div[1]/div[2]/div/a/text()')[0]
|
#oname = Order.xpath('td[1]/div[1]/div[2]/div/a/text()')[0]
|
||||||
oid = Order.xpath('td[1]/span[3]/a/text()')[0]
|
oid = Order.xpath('td[1]/span[3]/a/text()')[0]
|
||||||
opts['logger'].info(f'\t开始第{i+1}个订单: {oid}')
|
opts['logger'].info(f'\n开始第{i+1}个订单: {oid}')
|
||||||
opts['logger'].debug('oid: %s', oid)
|
opts['logger'].debug('oid: %s', oid)
|
||||||
url1 = (f'https://club.jd.com/myJdcomments/insertRestSurvey.action'
|
url1 = (f'https://club.jd.com/myJdcomments/insertRestSurvey.action'
|
||||||
f'?voteid=145&ruleid={oid}')
|
f'?voteid=145&ruleid={oid}')
|
||||||
|
@ -542,7 +540,7 @@ def Service_rating(N, opts=None):
|
||||||
opts['logger'].info(f'提交成功!')
|
opts['logger'].info(f'提交成功!')
|
||||||
else:
|
else:
|
||||||
opts['logger'].debug('Skipped sending comment request in dry run')
|
opts['logger'].debug('Skipped sending comment request in dry run')
|
||||||
#opts['logger'].info("\t " + pj1.text)
|
#opts['logger'].info("\n " + pj1.text)
|
||||||
opts['logger'].debug('Sleep time (s): %.1f', SERVICE_RATING_SLEEP_SEC)
|
opts['logger'].debug('Sleep time (s): %.1f', SERVICE_RATING_SLEEP_SEC)
|
||||||
time.sleep(SERVICE_RATING_SLEEP_SEC)
|
time.sleep(SERVICE_RATING_SLEEP_SEC)
|
||||||
N['服务评价'] -= 1
|
N['服务评价'] -= 1
|
||||||
|
@ -696,6 +694,16 @@ if __name__ == '__main__':
|
||||||
else:
|
else:
|
||||||
logger.info("没有设置变量PC_COOKIE,请添加电脑端CK到环境变量")
|
logger.info("没有设置变量PC_COOKIE,请添加电脑端CK到环境变量")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
if "OPENAI_API_KEY" in os.environ:
|
||||||
|
logger.info('已启用AI评价')
|
||||||
|
if "OPENAI_API_BASE_URL" in os.environ:
|
||||||
|
logger.info(' - 使用 OpenAI API 代理:' + os.environ["OPENAI_API_BASE_URL"])
|
||||||
|
elif os.environ.get("ProxyUrl").startswith("http"):
|
||||||
|
os.environ['http_proxy'] = os.getenv("ProxyUrl")
|
||||||
|
os.environ['https_proxy'] = os.getenv("ProxyUrl")
|
||||||
|
logger.info(' - 使用QL配置文件ProxyUrl代理:' + os.environ["ProxyUrl"])
|
||||||
|
else:
|
||||||
|
logger.info(' - 未使用代理,请确认当前网络环境可直连:api.openai.com')
|
||||||
try:
|
try:
|
||||||
i = 1
|
i = 1
|
||||||
for ck in cks:
|
for ck in cks:
|
||||||
|
@ -720,7 +728,7 @@ if __name__ == '__main__':
|
||||||
}
|
}
|
||||||
logger.debug('Builtin HTTP request header: %s', headers)
|
logger.debug('Builtin HTTP request header: %s', headers)
|
||||||
logger.debug('Starting main processes')
|
logger.debug('Starting main processes')
|
||||||
print ('\n开始第 '+ str(i) +'个账号评价。。。\n')
|
logger.info('\n开始第 '+ str(i) +' 个账号评价...\n')
|
||||||
main(opts)
|
main(opts)
|
||||||
i += 1
|
i += 1
|
||||||
# NOTE: It needs 3,000 times to raise this exception. Do you really want to
|
# NOTE: It needs 3,000 times to raise this exception. Do you really want to
|
||||||
|
|
Loading…
Reference in New Issue