· 5 years ago · Mar 04, 2020, 01:26 AM
1import requests
2from datetime import datetime, timedelta
3import json
4import pandas as pd
5
6
7HOST = 'https://t...content-available-to-author-only...x.ru'
8TOKEN = "" # Your OAuth-token
9HEADER = {"Content-Type": "application/json", "Authorization": "OAuth " + TOKEN}
10
11
12def create_pool(project_id, name):
13 return requests.post(f'{HOST}/api/v1/pools', headers=HEADER, data=json.dumps({
14 "project_id": project_id,
15 "private_name": name,
16 "may_contain_adult_content": True,
17 "will_expire": (datetime.now() + timedelta(days=30)).isoformat(),
18 "reward_per_assignment": 0.01,
19 "assignment_max_duration_seconds": 600,
20 "defaults": {
21 "default_overlap_for_new_task_suites": 3,
22 "default_overlap_for_new_tasks": 3
23 },
24 "mixer_config": {
25 "real_tasks_count": 10,
26 "golden_tasks_count": 0,
27 "training_tasks_count": 0
28 }
29 }, ensure_ascii=False).encode('utf8'))
30
31
32def put_tasks_into_pool(pool_id, tsv_file):
33 df = pd.read_csv(tsv_file)
34 tasks = []
35 input_columns = [hd.split(':')[-1] for hd in filter(lambda x: x.startswith('INPUT:'), df.columns)]
36 for _, row in df.iterrows():
37 params = {
38 "pool_id": pool_id,
39 "input_values": {
40 hd:row[f'INPUT:{hd}'] for hd in input_columns
41 }
42 }
43 tasks += [params]
44 return requests.post(f'{HOST}/api/v1/tasks?allow_defaults=true', headers=HEADER,
45 data=json.dumps(tasks, ensure_ascii=False).encode('utf8'))
46
47
48def get_period_results(pool_id, from_date, to_date):
49 return requests.get(f'{HOST}/api/v1/assignments?'
50 f'pool_id={pool_id}&'
51 f'submitted_gte={from_date}&'
52 f'submitted_lte={to_date}',
53 headers=HEADER)
54
55
56def main():
57 # Create new pool in project with id 32554
58 ret = create_pool(32554, 'Тест Пул')
59 id_pool = ret.json()['id']
60
61 # Put all tasks from tsv file into pool created above
62 ret = put_tasks_into_pool(id_pool, '../дорожные_знаки/dataset_2.tsv')
63
64 # Get result from pool for the period
65 ret = get_period_results(pool_id=10881902,
66 from_date='2020-02-13T17:30:19',
67 to_date='2020-02-13T17:30:40')