From 2708cc53a69bc4930916aec7b3903b598421d4eb Mon Sep 17 00:00:00 2001 From: MatManSky Date: Fri, 11 Aug 2023 23:38:00 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=92=D0=BE=D0=B2=D0=B8=D0=BD=D1=8B=20?= =?UTF-8?q?=D0=BD=D0=B0=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B8=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D0=BC=D1=83=D1=81=D0=BE=D1=80=D0=BA=D0=B0=D0=BC(?= =?UTF-8?q?=D0=BF=D0=BE=D1=87=D0=B5=D0=BC=D1=83-=D1=82=D0=BE=20=D0=BD?= =?UTF-8?q?=D0=B5=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D1=8E=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/api.py | 18 ++++++++++-------- back/service.py | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/back/api.py b/back/api.py index e3fe7c8..661f3b8 100644 --- a/back/api.py +++ b/back/api.py @@ -205,9 +205,10 @@ def poems_to_front(db: Annotated[Session, Depends(utils.get_db)]): # db: Annotat @app.get("/api/trashbox", response_model=List[schemas.TrashboxResponse]) -def get_trashboxes(Lat:float, Lng:float, Category:str):#крутая функция для работы с api +def get_trashboxes(Lat:float, Lng:float, Category):#крутая функция для работы с api # json, передаваемый стороннему API head = {'Authorization': 'Bearer {}'.format(service.my_token)} + # Данные пользователя (местоположение, количество мусорок, которое пользователь хочет видеть) my_data={ 'x' : f"{Lng}", @@ -215,9 +216,8 @@ def get_trashboxes(Lat:float, Lng:float, Category:str):#крутая функц 'limit' : '1' } - - list_of_category = [] # лист по которому будет отбираться uniq_trashboxes - match Category: + # Перевод категории с фронта на категорию с сайта + match Category: case "PORRIDGE": list_of_category=["Опасные отходы", "Иное"] case "Конспекты": @@ -235,10 +235,10 @@ def get_trashboxes(Lat:float, Lng:float, Category:str):#крутая функц case "Всякая всячина": list_of_category=["Металл", "Бумага", "Стекло","Иное", "Тетра Пак", "Батарейки", "Крышечки", "Шины", "Опасные отходы", "Лампочки", "Пластик"] - + # Получение ответа от стороннего апи response = requests.post(f"{service.BASE_URL}/nearest_recycling/get", headers=head, data=my_data) infos = response.json() - + # Чтение ответа trashboxes = [] for trashbox in infos["results"]: temp_dict = {} @@ -246,12 +246,14 @@ def get_trashboxes(Lat:float, Lng:float, Category:str):#крутая функц coord_list = obj["geometry"] temp_dict["Lat"] = coord_list["coordinates"][1] temp_dict["Lng"] = coord_list["coordinates"][0] - properties = obj["properties"] temp_dict["Name"] = properties["title"] temp_dict["Address"] = properties["address"] temp_dict["Categories"] = properties["content_text"].split(',') - trashboxes.append(temp_dict) + + for a in list_of_category: + if a in temp_dict["Categories"] and temp_dict not in trashboxes: + trashboxes.append(temp_dict) uniq_trashboxes = [schemas.TrashboxResponse(**ast.literal_eval(el1)) for el1 in set([str(el2) for el2 in trashboxes])] return uniq_trashboxes diff --git a/back/service.py b/back/service.py index 6228552..6e582cf 100644 --- a/back/service.py +++ b/back/service.py @@ -7,7 +7,7 @@ import datetime # Переменные для получения данных о мусорках с внешнего API # url API -BASE_URL='https://geointelect2.gate.petersburg.ru/nearest_recycling/get'#адрес сайта и мой токин +BASE_URL='https://geointelect2.gate.petersburg.ru'#адрес сайта и мой токин # токен для получения данных my_token='eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhU1RaZm42bHpTdURYcUttRkg1SzN5UDFhT0FxUkhTNm9OendMUExaTXhFIn0.eyJleHAiOjE3ODM3ODk4NjgsImlhdCI6MTY4OTA5NTQ2OCwianRpIjoiNDUzNjQzZTgtYTkyMi00NTI4LWIzYmMtYWJiYTNmYjkyNTkxIiwiaXNzIjoiaHR0cHM6Ly9rYy5wZXRlcnNidXJnLnJ1L3JlYWxtcy9lZ3MtYXBpIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImJjYjQ2NzljLTU3ZGItNDU5ZC1iNWUxLWRlOGI4Yzg5MTMwMyIsInR5cCI6IkJlYXJlciIsImF6cCI6ImFkbWluLXJlc3QtY2xpZW50Iiwic2Vzc2lvbl9zdGF0ZSI6ImM2ZDJiOTZhLWMxNjMtNDAxZS05ZjMzLTI0MmE0NDcxMDY5OCIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsiLyoiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbImRlZmF1bHQtcm9sZXMtZWdzLWFwaSIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiJjNmQyYjk2YS1jMTYzLTQwMWUtOWYzMy0yNDJhNDQ3MTA2OTgiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsIm5hbWUiOiLQktC70LDQtNC40LzQuNGAINCv0LrQvtCy0LvQtdCyIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiZTBmYzc2OGRhOTA4MjNiODgwZGQzOGVhMDJjMmQ5NTciLCJnaXZlbl9uYW1lIjoi0JLQu9Cw0LTQuNC80LjRgCIsImZhbWlseV9uYW1lIjoi0K_QutC-0LLQu9C10LIifQ.E2bW0B-c6W5Lj63eP_G8eI453NlDMnW05l11TZT0GSsAtGayXGaolHtWrmI90D5Yxz7v9FGkkCmcUZYy1ywAdO9dDt_XrtFEJWFpG-3csavuMjXmqfQQ9SmPwDw-3toO64NuZVv6qVqoUlPPj57sLx4bLtVbB4pdqgyJYcrDHg7sgwz4d1Z3tAeUfSpum9s5ZfELequfpLoZMXn6CaYZhePaoK-CxeU3KPBPTPOVPKZZ19s7QY10VdkxLULknqf9opdvLs4j8NMimtwoIiHNBFlgQz10Cr7bhDKWugfvSRsICouniIiBJo76wrj5T92s-ztf1FShJuqnQcKE_QLd2A' From 043a210324b12e098ad235700c652e391be7222c Mon Sep 17 00:00:00 2001 From: MatManSky Date: Sat, 12 Aug 2023 00:25:56 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=9C=D1=83=D1=81=D0=BE=D1=80=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=A0=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=B5=D1=82,=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B2=D1=82=D1=80=D0=B0=20=D0=BF=D1=80=D0=B8=D1=83=D0=BA?= =?UTF-8?q?=D1=80=D0=B0=D1=88=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/api.py | 46 ++++++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/back/api.py b/back/api.py index 2b83090..563bbfb 100644 --- a/back/api.py +++ b/back/api.py @@ -205,40 +205,39 @@ def poems_to_front(db: Annotated[Session, Depends(utils.get_db)]): # db: Annotat @app.get("/api/trashbox", response_model=List[schemas.TrashboxResponse]) -def get_trashboxes(Lat:float, Lng:float, Category):#крутая функция для работы с api +def get_trashboxes(Lat:float, Lng:float, Category:str):#крутая функция для работы с api # json, передаваемый стороннему API - head = {'Authorization': 'Bearer {}'.format(service.my_token)} + BASE_URL= "https://geointelect2.gate.petersburg.ru" + my_token="eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhU1RaZm42bHpTdURYcUttRkg1SzN5UDFhT0FxUkhTNm9OendMUExaTXhFIn0.eyJleHAiOjE3ODYyMjUzMzMsImlhdCI6MTY5MTUzMDkzMywianRpIjoiYjU0MmU3MTQtYzJkMS00NTY2LWJkY2MtYmQ5NzA0ODY1ZjgzIiwiaXNzIjoiaHR0cHM6Ly9rYy5wZXRlcnNidXJnLnJ1L3JlYWxtcy9lZ3MtYXBpIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImJjYjQ2NzljLTU3ZGItNDU5ZC1iNWUxLWRlOGI4Yzg5MTMwMyIsInR5cCI6IkJlYXJlciIsImF6cCI6ImFkbWluLXJlc3QtY2xpZW50Iiwic2Vzc2lvbl9zdGF0ZSI6IjJhOTgwMzUyLTY1M2QtNGZlZC1iMDI1LWQ1N2U0NDRjZmM3NiIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsiLyoiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbImRlZmF1bHQtcm9sZXMtZWdzLWFwaSIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiIyYTk4MDM1Mi02NTNkLTRmZWQtYjAyNS1kNTdlNDQ0Y2ZjNzYiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsIm5hbWUiOiLQktC70LDQtNC40LzQuNGAINCv0LrQvtCy0LvQtdCyIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiZTBmYzc2OGRhOTA4MjNiODgwZGQzOGVhMDJjMmQ5NTciLCJnaXZlbl9uYW1lIjoi0JLQu9Cw0LTQuNC80LjRgCIsImZhbWlseV9uYW1lIjoi0K_QutC-0LLQu9C10LIifQ.FTKiC1hpWcOkmSW9QZpC-RY7Ko50jw1mDMfXIWYxlQ-zehLm2CLmOnHvYoOoI39k2OzeCIAB9ZdRrrGZc6G9Z1eFELUjNGEqKxSC1Phj9ATemKgbOKEttk-OGc-rFr9VPA8_SnfvLts6wTI2YK33YBIxCF5nCbnr4Qj3LeEQ0d6Hy8PO4ATrBF5EOeuAZRprvIEjXe_f8N9ONKckCPB-xFB4P2pZlVXGoCNoewGEcY3zXH4khezN6zcVr6tpc6G8dBv9EqT_v92IDSg-aXQk6ysA0cO0-6x5w1-_qU0iHGIAPsLNV9IKBoFbjc0JH6cWabldPRH12NP1trvYfqKDGQ" + head = {'Authorization': 'Bearer {}'.format(my_token)} - # Данные пользователя (местоположение, количество мусорок, которое пользователь хочет видеть) my_data={ 'x' : f"{Lng}", 'y' : f"{Lat}", 'limit' : '1' } - - # Перевод категории с фронта на категорию с сайта - match Category: + + match Category: case "PORRIDGE": - list_of_category=["Опасные отходы", "Иное"] + list_of_category = ["Опасные отходы", "Иное"] case "Конспекты": - list_of_category=["Бумага"] + list_of_category = ["Бумага"] case "Молочные продукты": - list_of_category=["Стекло","Тетра Пак", "Иное"] + list_of_category = ["Стекло", "Тетра Пак", "Иное"] case "Хлебобулочные изделия": - list_of_category=["Пластик", "Иное"] + list_of_category = ["Пластик", "Иное"] case "Моющие средства": - list_of_category=["Пластик", "Опасные отходы", "Иное"] + list_of_category = ["Пластик", "Опасные отходы", "Иное"] case "Одежда": - list_of_category=["Одежда"] + list_of_category = ["Одежда"] case "Фрукты и овощи": - list_of_category=["Иное"] + list_of_category = ["Иное"] case "Всякая всячина": - list_of_category=["Металл", "Бумага", "Стекло","Иное", "Тетра Пак", "Батарейки", "Крышечки", "Шины", "Опасные отходы", "Лампочки", "Пластик"] - - # Получение ответа от стороннего апи - response = requests.post(f"{service.BASE_URL}/nearest_recycling/get", headers=head, data=my_data) + list_of_category = ["Металл", "Бумага", "Стекло", "Иное", "Тетра Пак", "Батарейки", "Крышечки", "Шины", + "Опасные отходы", "Лампочки", "Пластик"] + + response = requests.post(f"{BASE_URL}/nearest_recycling/get", headers=head, data=my_data) infos = response.json() - # Чтение ответа trashboxes = [] for trashbox in infos["results"]: temp_dict = {} @@ -246,17 +245,16 @@ def get_trashboxes(Lat:float, Lng:float, Category):#крутая функция coord_list = obj["geometry"] temp_dict["Lat"] = coord_list["coordinates"][1] temp_dict["Lng"] = coord_list["coordinates"][0] + properties = obj["properties"] temp_dict["Name"] = properties["title"] temp_dict["Address"] = properties["address"] temp_dict["Categories"] = properties["content_text"].split(',') - for a in list_of_category: - if a in temp_dict["Categories"] and temp_dict not in trashboxes: - trashboxes.append(temp_dict) - - uniq_trashboxes = [schemas.TrashboxResponse(**ast.literal_eval(el1)) for el1 in set([str(el2) for el2 in trashboxes])] - return uniq_trashboxes + if a in temp_dict["Categories"] and temp_dict not in trashboxes: + trashboxes.append(temp_dict) + uniq_trashboxes = [ast.literal_eval(el1) for el1 in set([str(el2) for el2 in trashboxes])] + return JSONResponse(uniq_trashboxes) @app.get("/{rest_of_path:path}")