From 9e11dc7d263b0157f207d58f9725d70731d21a83 Mon Sep 17 00:00:00 2001 From: Noretsa Date: Fri, 19 Jun 2020 11:55:40 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D1=81=D0=B5=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=D0=B5=D1=82,=20=D0=B6=D0=B4=D0=B5=D0=BC=20=D1=82?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/.DS_Store | Bin 10244 -> 14340 bytes data/5020051404_11@check.mo/.DS_Store | Bin 0 -> 6148 bytes data/5020051404_11@check.mo/6/.DS_Store | Bin 0 -> 10244 bytes .../6/Некрасино д, 18, 1п/,.textClipping | Bin 0 -> 165 bytes data/5020051404_11@check.mo/pass.txt | 1 + data/byshkin66@bk.ru/.DS_Store | Bin 0 -> 8196 bytes data/byshkin66@bk.ru/6/.DS_Store | Bin 0 -> 8196 bytes data/byshkin66@bk.ru/pass.txt | 1 + data/domreshetnikovo@gmail.com/.DS_Store | Bin 8196 -> 8196 bytes data/domreshetnikovo@gmail.com/6/.DS_Store | Bin 10244 -> 10244 bytes data/osa212@mail.ru/.DS_Store | Bin 8196 -> 8196 bytes data/osa212@mail.ru/6/.DS_Store | Bin 8196 -> 14340 bytes .../6/2-я Спартаковская ул, 2, 2п/.DS_Store | Bin 0 -> 6148 bytes knd_bot.py | 146 ++++++++---------- 14 files changed, 69 insertions(+), 79 deletions(-) create mode 100644 data/5020051404_11@check.mo/.DS_Store create mode 100644 data/5020051404_11@check.mo/6/.DS_Store create mode 100644 data/5020051404_11@check.mo/6/Некрасино д, 18, 1п/,.textClipping create mode 100644 data/5020051404_11@check.mo/pass.txt create mode 100644 data/byshkin66@bk.ru/.DS_Store create mode 100644 data/byshkin66@bk.ru/6/.DS_Store create mode 100644 data/byshkin66@bk.ru/pass.txt create mode 100644 data/osa212@mail.ru/6/2-я Спартаковская ул, 2, 2п/.DS_Store diff --git a/data/.DS_Store b/data/.DS_Store index 6a3f1a3960ed48fde374b603cff20b092e0e0041..d992d0f5d91d93df6e9d3abda6255aec7d014fe3 100644 GIT binary patch delta 1088 zcmZn(Xem%&U|?W$DortDU@!nOIe-{M3-ADmHUln(r2|zm z78fMtS{w%3qu_RLo;e3vV(?vO+v+zzw8bk#pY0!uQOR`Bii|K?&smNY!K;9_h&mD(tKlU|xaB R#LZFCdl_jRzv4JT0RY>B-v$5x delta 189 zcmZoEXbF&DU|?W$DortDU{C-uIe-{M3-C-V6q~3gIoZI3MH0vdOE3b(85mL-iWxG1 zWC=sw#*1d`6CdPmX6InxVC0x=AYwMzMqv`8`Q-Bou9J;L%r;LDT+2FHLA@O!wAn=B zI#7L@AT!8Bphet3!WCrM#*5#XC-a-=GBQjy;ZdHPV8YI+0a5|9(O`0p$;8c$qJJ0> K22D1RumS*ns4GeU diff --git a/data/5020051404_11@check.mo/.DS_Store b/data/5020051404_11@check.mo/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c75f8c40615d0f02d3169a28e20c82395f2821e7 GIT binary patch literal 6148 zcmeHKJ5B>Z47DLhE77E+oGYXW?IhZ?G`RrUtOUhI6A4kJS*jc%_sMm*1kWGPhE*gg z3a};5^LT8J<`wHT5%Kc1oe@omsDcX8L6)(|x#&o)+;anDsZlxr%z5{O+CLJ@owqNW zt|`O(^`>lhgA%B^Ep^>=rGdBFAK%~ZA5II{deUAv**(v`R~i%zGZ+X4f`MQl82En- zNVA4iw}!C>1HnKr@Wp_99}-kBJNAb9>A<2R0B{1g3T&MvfJq#{?ARN^17S-AS}Oa9 z!Ilnx^0@5S8(KQC-i$haGy8l>-Ewzt zFHmc0qVYwH8jTSX6T=$VmexyaZjp!~JIT(O zoik@==G$-f%$y~JKx^KJ6A~qasCaS7W@9!<;(C7FlFEV_h7!=8DD_HGX;C&Qo5cff zF$gO{1VRKt1VRKt1VRMvIs)jkc~WOd8Rj7ZAp#)+Hxc09hbUfLCIUGsrTBDUCXN6o z6|5Es%ltUNZK8op1aeeL)L;T>ic*?FaKr#`!OP{`dJf6Gk;LNuQSvdT!2d6AgPTwB>buY#z7o81yaI@%EcJ4<)5<&R$TxZ23d= zP3yO$uFbh`E~}hJ=|M!=@vUQ)ncG*e48Q+??qyBKu$<%FLzZV{Y_rSJ2h2*yQhIIS zqQ!Hxh<5*&s@OzjwQ5g3W1Yxb{wdMN(i)BS8aVPjuEBdT*xM=%rGJfK&7;Ar@38lA3me_q<#8{Ek7>!BKsJ-HX}PXxmlw0M{lB14mVxSSd*$V5m*h z%R9z>n1-umGucKCk}PpZfjmpjkmtx*a*kXgZ;|)N$K)#coP0sPB-hCgHdD5aMwY3_Bqpe&Md~6eRHQpA6I!||f-QBGmCMF!Xk115vKdm_NSi4V zoGDVfj&4wq$E-qXH`4^=OOO$HUl&PHmBCc(oRXVwkn`j+`G{OWPJT^pkRQp<dxoE&gdslYR-7q4D9y!Mgzlhd&_{)P2m|LwYk zp>)o%UFSHCl&{OGfA+!(6Mnei-u1&J12BmvF5Nct#i1|$-}~a}&^h$R!KSo$=NWqA zJM4{1X5~bGY;=C#7Wm_7*pGYU+p(X-CzsrJkyl2?e9xwGIkPB_|8Jf8|NlKZ|8Qa< z0wDr;`cP8oR4XDe79J=Dg~!^Xcpb%yC*E#UN@0ST2*;xo;ds2^;dl`x!MY$mBJ2`a u&+SL0#1f|e{AWOT{vVG`h39{Fe77cPMuz4*wU#u`M_N literal 0 HcmV?d00001 diff --git a/data/5020051404_11@check.mo/6/Некрасино д, 18, 1п/,.textClipping b/data/5020051404_11@check.mo/6/Некрасино д, 18, 1п/,.textClipping new file mode 100644 index 0000000000000000000000000000000000000000..fab6fa712a0771c21949d079c01948588d123308 GIT binary patch literal 165 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 delta 975 zcmZn(XbG4Q$?e2q%VNP|#bU=|w6Sm+`@{y`&FmZ;9O0@g3M{599zcwwg2j$OfyIHv zoV(ZFfg2)94FAg zEm2)DGz&^1-U^BbKHx-U<+Vggc<7!k(xTjZ!TsB|)_HN~x~fjz$xv zoj?!rd#%_1j6L*W{W!f~7m)-40s(=5KtLeyKSY52_hOP~a4AZGfIvVXFoXd6eF$P^ zGUCfYF1?=)EZ8GF)3Zl-FJWC_6_i0=MtnKQC2BAM?~0Ol1wX_9-W}V6zFowZgIx0N z1iX>ak3TZ_5ej&tV|&muClKLMlmY>Pz|9EE#ipENZ|$boJ9lqAUEx^L?(WH&Vvh6b zjioHpwhp5w_G6KYmo-wId3aLhgPyX_D6YP7eNG#mQRF_aZuuPkpj@S3={QSh2g(!?SzF)*7%CmQ~99U?Z?HM~k?->-tAz$Je* zx9By>IQddQs+Fpx4Wx|J;5pkGJTF_v(a+oi%}JUG+cw!Ax|Ml_RF~*;di=w)&l5eS z;kcpDcaS$lnmTQ|OsPy~(MMukc3;emyJ@E(p4!K*cE#PUgkNvL!G`Mb#2!QM>s017 z+LjwPEIs9QHZ&bg_O}_9X7@GNX-jiFKQXTG2I^E6_VhM5mu)n4PtCivE zfdMKPl!P}l9qc}Ky#KL*$6sb^!;S4f29VkOdZ;{wwQ(%{Um|5Xy^S2Hyq7XaeSZU~ z8EVtE?K?UZCGF_Dbu;c7y?Qk6>Q1LJ+d;^hlD4%grS~E{ZAsfqcU!2*PsYt;8jbaO z(~KF%b*J6ckGib3*RfM>qi5J|U|-hOsmx*hn|oZtwwyhB%0Wr#YcuCBUbg&!Q02P1 z=;c}W%~tZ~P`VePwOr$np{H8=49)H8h&xH$(hTcxTd(052~%&e;@x^aBq_bTpkU!F zHJ~oas77{?m14O)oiL814fmKg#*!kH?$>bUJ8g}PqA737)YB9fsp>waX-w%@YO?G# zuUM(l76(_M#C^lkGD=$>MNTLVPJvB4Tu#+iGoH{*MWei1)mo~y_41`E+x^Dc^;B)g ze~NBgqLUA$esiQ=RS&R{cf=jHxktBfR-fVU-s+0fEwbFfwDp>Xvnr0P zZ%hh%3RQ78Z6uq?UXsLp-AA4#C&@G96gflAleftG zBfpcsU^>i$1yBGBVJVcsgRmN^VFT1b1nOZMG{eKN8)C2@5}<(&hrotDI0na|AD)Dh z@GLwB&%8Rlhpzms2QO1Or#aqu3A>~HzJ1EUc+ zuzAbY=p7;Qm6@EqbLY)pQoORPeC_)Bp}RcdzGf55V-=^3N2d&3yc;`=ql^h^ppY&e zi|4J#M*XPFD5Xs2*1^Cs8Cj%wG*Sa4ffX`RUCHybbX5Q?n5lDdx zX=LaiJc0at3QqV8eF0vCSK!PDJ~m~T$R(T`A0J0Ns||M|t^@)C0fB%(;J-tF9h>D6 zAx}oc$KT?kr|gI?^AxOtCs+$0XWBd^yOa*A?5nt|)KQM}T+q^{j~h`8NULmF?Z|%Jy%m<$CJ? delta 461 zcmZoEXmOBWU|?W$DortDU;r^WfEYvza8E20o2Vx_*}#NF63Ay@0b)j=I0K6Ti!F;C zixG<*gTiJ(#&2ws6&TlUX6Inxum!1+VUYoxw`pu?cRq5u>#VXJ$NEG8RDJh8b;N|RBL8E6C$ zNN@uQS5R02!|6NoWPTGvR$ve^G)#6hk>&uhK!MFLIi6?g=KT^Y7%6afmy{YK0A)Hn AqyPW_ diff --git a/data/osa212@mail.ru/6/2-я Спартаковская ул, 2, 2п/.DS_Store b/data/osa212@mail.ru/6/2-я Спартаковская ул, 2, 2п/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 0: photos.sort() - questions = get_questions(task['id'], session, headers) + print(task['id']) + id_task = task['id'] + questions = get_questions(id_task, session, headers) data = [] for answers in questions: answer_chain = { @@ -63,19 +68,39 @@ def complete_task(session, headers, task, address): for item in chain['questions']: if len(data) == len(photos): img = send_image(session, headers, task['id'], photos.pop(0)) - first = {"id": 18850, "answer": [img['id']], 'start_time': int(time.time())} + first = {"id": 18850, "answer": [img['id']], 'answer_status': None, 'start_time': int(time.time())} time.sleep(2) first.update({'end_time': int(time.time())}) - second = {"id": 18851, "answer": {"location": task['coord']}} + second = {"id": 18851, "answer": {"location": task['coord']}, 'answer_status': None, 'start_time': int(time.time())} + time.sleep(2) + second.update({'end_time': int(time.time())}) item['question_components'].append(first) item['question_components'].append(second) else: img = send_image(session, headers, task['id'], photos.pop(0)) - first = {"id": 18856, "answer": 77} - second = {"id": 18857, "answer": [img['id']]} + first = {"id": 18856, "answer": 77, 'answer_status': None, 'start_time': int(time.time())} + time.sleep(2) + first.update({'end_time': int(time.time())}) + second = {"id": 18857, "answer": [img['id']], 'answer_status': None, 'start_time': int(time.time())} + time.sleep(2) + second.update({'end_time': int(time.time())}) item['question_components'].append(first) item['question_components'].append(second) - print(data) + ans = {"question_chains": data} + # print(ans) + session_t = session + session_t.headers.update( + { + 'referer': 'https://knd.mosreg.ru/executions'+str(task['id'])+'/solve', + 'x-platform': 'wb', + 'accept': '*/*' + } + ) + complete = session_t.post('https://knd.mosreg.ru//api/v1/executions/'+str(task['id'])+'/answers', headers=headers, json=ans) + if complete.status_code == 200: + print(f'Задание по адресу {address} выполнено успешно!') + else: + print(f'Задание по адресу {address} не выполненно! Статус ошибки {complete.status_code}') else: print(f"Несоответствие количества вопросов и количества фотографий по адресу: {address}") # send_execution(task,session, headers) @@ -89,7 +114,8 @@ def get_photo(address, email): return photos else: for images in os.listdir(main_path): - photos.append(main_path + '/' + images) + if images.endswith(".jpg") or images.endswith(".jpeg"): + photos.append(main_path + '/' + images) return photos @@ -98,6 +124,8 @@ def get_addresses(email): month = datetime.datetime.now().month main_path = os.path.join(os.path.abspath('.'), 'data') path = os.walk(os.path.join(main_path, email, str(month))) + if not os.path.exists(os.path.join(main_path, email, str(month))): + return f"Не найдена папка с месяцем у пользователя {email}! Проверьте структуру каталога!" for d, dirs, files in path: addresses.append(dirs) if len(addresses[0]) > 0: @@ -107,13 +135,15 @@ def get_addresses(email): def assign_task(session, headers, task, address): - complete_task(session, headers, task, address) +# complete_task(session, headers, task, address) # DON'T START PROGRAM!!!! - #task = session.put('https://knd.mofsreg.ru//api/v1/executions/'+str(task['id'])+'/assign', headers=headers) - #if task.status_code == 200: - # pass - #else: - # print(f"Не смогли получить задание {task['id']}!") + url = 'https://knd.mosreg.ru//api/v1/executions/'+str(task['id'])+'/assign' + task_assign = session.put(url, headers=headers) + if task_assign.status_code == 200: + print(f'Получили задани по адресу: {address}') + complete_task(session, headers, task, address) + else: + print(f"Не смогли получить задание {address} {task['id']}!") def get_task(session, headers): @@ -140,30 +170,40 @@ def get_task(session, headers): for address in addresses: # need split enterance from address search = address[:-4] - print(search) + # print(search) data = {'search': search} tasks = session_t.post('https://knd.mosreg.ru//api/v1/executions', headers=headers, data=data ) json_tasks = tasks.json() + get_t = False # Если есть доступное задание с таким адресом if len(json_tasks['executions_available']) > 0: for n in json_tasks['executions_available']: coord = n['coord'] enterances = n['tasks'] for execution in enterances: - task = { - 'id': execution['execution_id'], - 'address': execution['dimensions'][0].get('entity_value_name'), - 'enterance': execution['dimensions'][2].get('entity_value_name'), - 'coord': coord - } - # Принимаем задание - if task['enterance'] == address[-2]: + address_from_tasks = execution['dimensions'][0].get('entity_value_name') + # print(address_from_tasks) + # print('Клин г, '+address[:-4]) + enterance = execution['dimensions'][2].get('entity_value_name') + # print(enterance) + # print(address[-2]) + if address_from_tasks == 'Клин г, '+address[:-4] and \ + enterance[-1] == address[-2]: + print(f'Начали выполнение задания по адресу: {address}') + task = { + 'id': execution['execution_id'], + 'address': execution['dimensions'][0].get('entity_value_name'), + 'enterance': execution['dimensions'][2].get('entity_value_name'), + 'coord': coord + } + # Принимаем задание assign_task(session, headers, task, address) - else: - print(f"Нет доступных заданий для по адресу: {address}!") + get_t = True + if not get_t: + print(f"Нет доступных заданий для по адресу: {address}!") # Если нет задания с таким адресом else: print(f"Нет доступных заданий для пользователя {headers['uid']} по адресу: {address}") @@ -191,7 +231,7 @@ def main(): } if response.status_code == 200: # task = { - # 'id': 23607882, + # 'id': 23799105, # 'address': 'Решетниково рп, ОПМС-1 проезд, 13', # 'enterance': 6, # 'coord': [56.442503, 36.5596493] @@ -210,60 +250,8 @@ def main(): if __name__ == "__main__": main() -# headers = response.headers - -# print(item[0]['tasks']) -# print(len(item[3]['tasks'])) -# print(item[3]['coord']) -# count = 0 -# for item in json_exec.get('executions_assigned'): -# print(item['tasks']) -# if count < 1: -# # for n in item['tasks']: -# # print(n['dimensions']) -# count = count + 1 -# for task in item.get('tasks'): -# pass - - -# send_image(session, headers, "some") -# get_coord(str1) -# get_answers(session, headers) -# get_questions(session, headers) -# print(executions.text) def random_string(stringLength): letters = string.ascii_letters digits = string.digits return ''.join(random.choice(letters+digits) for i in range(stringLength)) - - - - - -# def get_coord(address): -# url = 'https://geocode-maps.yandex.ru/1.x/?format=json&apikey=591be3ec-2816-40ee-b575-08e687d27b37&geocode='+address -# coord = requests.get(url) -# print(coord.text) - - -# def get_task(session, task_id, headers): -# task = session.get('https://knd.mosreg.ru//api/v1/executions/', headers=headers) -# json_task = task.json() -# print(json_task) - - -# def get_answers(session, headers): -# answers = session.post('https://knd.mosreg.ru//api/v1/executions/22515485/answers', headers=headers) -# json_answers = answers.json() -# for ans in json_answers.get('question_chains'): -# print(ans) -# # print(json_answers) - - -# def get_questions(session, headers): -# question = session.get('https://knd.mosreg.ru//api/v1/executions/22515485/questions', headers=headers) -# json_question = question.json() -# for s in json_question['selected_chains']: -# for n in s['questions']: -# print(n['question_components'])