1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import time
import json
from utils.base import APIView
from gm_upload import upload, upload_file
from openpyxl import load_workbook
class VirtualVote(APIView):
def post(self, request):
xls_file = request.FILES.get('file')
if not xls_file:
return {'message': u'上传失败,请重新上传', 'code': 500}
wb = load_workbook(xls_file)
data = wb.get_sheet_by_name(wb.get_sheet_names()[0])
columns = [item for item in data.columns]
column_data = columns[0]
column_data = [item.value for item in column_data]
if '用户id' not in column_data:
return {'message': u'文件数据格式错误,请确保内容中有”用户id“标题', 'code': 500}
user_ids = []
for item in column_data:
try:
user_id = int(item)
user_ids.append(user_id)
except:
continue
if not user_ids:
return {'message': u'上传失败,文件第一列不存在user_id数据', 'code': 500}
self.rpc['venus/sun/tools/virtual_vote'](user_ids=user_ids).unwrap()
return {'message': u'上传成功', 'code': 200}
class BatchUpdateTopicTag(APIView):
def post(self, request):
xls_file = request.FILES.get('file')
if not xls_file:
return {'message': u'上传失败,请重新上传', 'code': 500}
wb = load_workbook(xls_file)
data = wb.get_sheet_by_name(wb.get_sheet_names()[0])
rows_data = [item.value for row in data.rows for item in row if item.value]
topic_infos = []
topic_tag_info = {}
for index, item in enumerate(rows_data):
if index == len(rows_data) - 1:
topic_infos.append(topic_tag_info)
if item.startswith('http:'):
if topic_tag_info.get('url'):
topic_infos.append(topic_tag_info)
topic_tag_info = {}
topic_tag_info['url'] = item.split('-')[0].replace('http://alpha.iyanzhi.com/', '')
continue
if item.split(':')[-1] and topic_tag_info.get('url'):
if not topic_tag_info.get('tags'):
topic_tag_info['tags'] = [item.split(':')[-1]]
else:
topic_tag_info['tags'].append(item.split(':')[-1])
self.rpc['venus/sun/tools/batch_update_topic_tags'](topic_infos=topic_infos).unwrap()
return {'message': u'上传成功', 'code': 200}
class BatchCreateTopicWithAiFashionTag(APIView):
def post(self, request):
json_file = request.FILES.get('file')
tag_infos = request.POST.get('tag_infos', '[]')
if not json_file and not tag_infos:
return {'message': u'上传失败,请重新上传', 'code': 500}
if json_file:
json_data = json.load(json_file)
self.rpc['venus/sun/tools/batch_create_topic_with_ai_fashion_tag'](infos=json_data).unwrap()
if tag_infos:
json_data = json.loads(tag_infos)
self.rpc['venus/sun/tools/batch_create_topic_with_ai_fashion_tag'](infos=json_data).unwrap()
return {'message': u'上传成功', 'code': 200}
class AddVirtFans(APIView):
def post(self, request):
xls_file = request.FILES.get('file')
if not xls_file:
return {'message': u'上传失败,请重新上传', 'code': 500}
wb = load_workbook(xls_file)
data = wb.get_sheet_by_name(wb.get_sheet_names()[0])
columns = [item for item in data.columns]
user_id_column = [item.value for item in columns[0]]
fans_num_column = [item.value for item in columns[1]]
user_id_fans_num_data = list(zip(user_id_column[1:], fans_num_column[1:]))
#做一次数据清洗。 避免文件中的空行
user_id_fans_num_data = [
(user_id, fans_num) for user_id, fans_num in user_id_fans_num_data
if isinstance(user_id, int) and isinstance(fans_num, int)
]
try:
self.rpc['venus/sun/tools/add_virt_fans'](data=user_id_fans_num_data).unwrap()
except:
return {'message': u'处理失败', 'code': 500}
return {'message': u'处理成功', 'code': 200}