Skip to main content
Glama

e代驾 MCP Server

by fengfengsu
EdjApi.cpython-311.pyc13.3 kB
� Z]rh�1��V�ddlZddlZddlZddlmZddlmZGd�d��ZdgZdS)�N�)�EdjSystemParams)� EdjSignUtilsc�T�eZdZd d�Zd d�Zd�Z dd�Z dd�Zd �Zd �Z d �Z dS)�EdjApiNc�0�||_||_||_dS)u�初始化API服务 Args: appkey: str, 合作方标识,不传则使用默认值 secret: str, e代驾分配的SECRET,不传则使用默认值 api_base_url: str, API基础URL,不传则使用默认值 N)�appkey�secret� api_base_url)�selfr r r s �4/Users/dongfengsu/Dev/edaijiamcp/edjserver/EdjApi.py�__init__zEdjApi.__init__ s ���� ��� �(�����c���|s|std���|r"t|��dkrtd���ddi}|r||d<|r||d<|r||d<|r||d <|�|��}tj|j��}|�d �}|�||��}td |����|d d k�r|�r|dd} tj | ��} td| ����tj � tj � t��d��} tj �| ��stj| ��tj � | |�d���} t#| d��5} | �| ��ddd��n #1swxYwYtd| ����|S)uh获取用户认证token Args: phone: str, 11位真实用户手机号(非虚拟号必传) third_user_id: str, 合作方用户id(虚拟号必传) randomkey: str, 16位AES对称密钥,用于解密返回token user_os: str, 用户手机系统(可选) mac: str, 用户mac地址(可选) Returns: dict: { 'code': str, # 0成功,10授权token已过期 'message': str, 'data': { 'encrypt_authentoken': str # AES加密的token } } u$phone或third_user_id必须传一个� �phone必须是11位手机号� randomkey�1234567890abcdef�phone� third_user_id�os�macz/customer/getAuthenTokenu API响应: �code�0�data�encrypt_authentokenu解密后的token: �tokens�.token�wNuToken已保存到: )� ValueError�len�_add_system_params_and_signr�get_api_base_urlr �_post�printr� decrypt_tokenr�path�join�dirname�__file__�exists�makedirs�open�write)r rr�user_osr�params�base_url�url�responser� authentoken� token_dir� token_file�fs r �get_authen_tokenzEdjApi.get_authen_tokensL��"� E�� E��C�D�D� D� � =�S��Z�Z�2�%�%��;�<�<� <� �+� �� � $�#�F�7�O� � 4�&3�F�?� #� � #�"�F�4�L� � ��F�5�M��1�1�&�9�9��#�3�D�4E�F�F���3�3�3���:�:�c�6�*�*�� �&�H�&�&�'�'�'� �F� �s� "� "�u� "�"*�6�"2�3H�"I� �&�4�5H�I�I�K� �5� �5�5� 6� 6� 6��� � �R�W�_�_�X�%>�%>��I�I�I��7�>�>�)�,�,� '�� �I�&�&�&�����i�E�1A�1A�1A�B�B�J��j�#�&�&� %�!���� �$�$�$� %� %� %� %� %� %� %� %� %� %� %���� %� %� %� %� �4� �4�4� 5� 5� 5��s�G�G�Gc���t|||g��std���|||d�}|�|��}tj|j��}|�d�}|�||��}|S)u�获取城市价格列表 Args: longitude: float, 经度,例如: 116.476169 latitude: float, 纬度,例如: 40.018682 city_name: str, 所在城市名,例如: 北京 Returns: dict: { 'code': str, # 接口返回码 'message': str, # 接口返回信息 'data': list # 价格列表数据 } u-经度、纬度和城市名称都不能为空)� longitude�latitude� city_namez/city/price/list��allr r"rr#r r$)r r:r;r<r0r1r2r3s r �get_city_price_listzEdjApi.get_city_price_listUs����I�x��3�4�4� N��L�M�M� M�#� �"� � �� �1�1�&�9�9��#�3�D�4E�F�F���+�+�+���:�:�c�6�*�*���rc �P�t|||||g��std���|||||d�} |r|| d<|�|| d<|r|| d<| r| | d<| �| | d<| �| | d <| �| | d <|�| ��} tj|j��}|�d �}|�|| ��}|S) u获取预估费用V2 Args: token: str, 用户凭证 start_latitude: float, 起始纬度 start_longitude: float, 起始经度 end_latitude: float, 结束纬度 end_longitude: float, 结束经度 channel: str, 远程单传01007(可选) long_distance_adjust_fee: float, 远程订单补贴费(可选) bonus_sn: str, 优惠券码(可选) strategyId: str, 权益id(可选) is_use_bonus: int, 是否使用优惠券(1:使用 0:不使用,默认0)(可选) estimate_distance: int, 合作方预估距离,单位米(可选) estimate_duration: int, 合作方预估时长,单位秒(可选) Returns: dict: 接口返回结果 u)token和起终点经纬度为必填参数)�token�start_latitude�start_longitude� end_latitude� end_longitude�channelN�long_distance_adjust_fee�bonus_sn� strategyId� is_use_bonus�estimate_distance�estimate_durationz/order/costestimateV2r=)r rArBrCrDrErFrGrHrIrJrKrLr0r1r2r3s r �get_cost_estimate_v2zEdjApi.get_cost_estimate_v2ts��*�E�>�?�L�-�X�Y�Y� J��H�I�I� I��,�.�(�*�  � �� � (� '�F�9� � #� /�1I�F�-� .� � *�!)�F�:� � � .�#-�F�<� � � #�%1�F�>� "� � (�*;�F�&� '� � (�*;�F�&� '��1�1�&�9�9��#�3�D�4E�F�F���0�0�0���:�:�c�6�*�*���rr�01003c��t||||||||| g ��std���||||||||| | | d� }| | ||||||||||||d�}|�d�|���D����|�|��}t j|j��}|�d�}|�||��}|S)uY下单接口 Args: phone: str, 下单用户电话(真实手机号) token: str, 用户凭证 start_address: str, 下单起始地址 start_longitude: float, 下单起始经度 start_latitude: float, 下单起始纬度 end_address: str, 下单目的地地址 end_longitude: float, 下单目的地经度 end_latitude: float, 下单目的地纬度 third_order_id: str, 第三方订单号 is_use_bonus: int, 是否使用优惠券(1:使用 0:不使用,默认0) contact_phone: str, 联系用户电话,代叫订单必传(可选) third_user_id: str, 合作商唯一userId(可选) channel: str, 渠道号,默认01003一键下单(可选) bonus_sn: str, 优惠券码(可选) driver_id: str, 司机工号,选司机下单用(可选) dynamic_fee: float, 当前动态调价金额(可选) dynamic_rate: float, 当前动态调价倍数(可选) fee_max: float, 最大动调金额(可选) strategyId: str, 权益订单策略id(可选) strategyServiceSign: str, 权益订单来源签名(可选) carNo: str, 车牌号(可选) cash_only: int, 支付方式(代叫订单需要传,0本人支付,1乘客现金支付)(可选) callLink: str, 催付短信链接(可选) prePay: int, 是否免密或者预付订单(0否,1是)(可选) multiBizEstimate: str, 多业务预估信息(可选) Returns: dict: 接口返回结果 u必填参数不能为空) rrA� start_addressrCrB� end_addressrErD�third_order_idrJrF)� contact_phonerrH� driver_id� dynamic_fee� dynamic_rate�fee_maxrI�strategyServiceSign�carNo� cash_only�callLink�prePay�multiBizEstimatec��i|] \}}|�||�� S)N�)�.0�k�vs r � <dictcomp>z'EdjApi.commit_order.<locals>.<dictcomp>�s��Q�Q�Q���1�1�=�q�!�=�=�=rz /order/commit) r>r �update�itemsr"rr#r r$)r rrArPrCrBrQrErDrRrJrSrrFrHrTrUrVrWrIrXrYrZr[r\r]r0�optional_paramsr1r2r3s r � commit_orderzEdjApi.commit_order�s'��J�E�5�-��.��� �n�N�O�O� 9��7�8�8� 8���*�.�,�&�*�(�,�(��  �  �� +�*� �"�&�(��$�#6��"� �� 0� � ��$ � � �Q�Q��(=�(=�(?�(?�Q�Q�Q�R�R�R��1�1�&�9�9��#�3�D�4E�F�F���(�(�(���:�:�c�6�*�*���rc��tj��}|�|��tj|d��}||d<|S)u�添加系统参数和签名 Args: params: dict, 原始参数字典 Returns: dict: 添加了系统参数和签名后的参数字典 z$0031186e-5cc6-45a6-a090-3e88ec220452�sig)r�get_system_paramsrdr� generate_sig)r r0� system_paramsris r r"z"EdjApi._add_system_params_and_signsE��(�9�;�;� �� � �m�$�$�$��'��0V�W�W����u� �� rc��|rt|��dkrtd���tj�tj�t ��d��}tj�||�d���}tj�|��rbt|d��5}|� ��� ��}td|����|cddd��S#1swxYwYdS)u�根据手机号获取本地存储的token Args: phone: str, 11位手机号 Returns: str: token字符串,不存在则返回None rrrr�ru获取到的token: N) r!r rr'r(r)r*r+r-�read�stripr%)r rr5r6r7rAs r �get_token_by_phonezEdjApi.get_token_by_phones%��� =��E� � �b�(�(��;�<�<� <��G�L�L������!:�!:�H�E�E� ��W�\�\�)��-=�-=�-=�>�>� � �7�>�>�*� %� %� ��j�#�&�&� �!��������(�(���3�E�3�3�4�4�4�� � � � � � � � � � � � ���� � � � ��ts�9:D�D�Dc�J� tj||d���}|���|���S#tjj$r }ddt |����dd�cYd}~Sd}~wtj$r }ddt |����dd�cYd}~Sd}~wwxYw) u�发送POST请求 Args: url: str, 请求URL params: dict, 请求参数 Returns: dict: 响应结果 �)r�timeoutz-1u请求失败: N)r�messagerz-2u响应解析失败: )�requests�post�raise_for_status�json� exceptions�RequestException�str�JSONDecodeError)r r2r0r3�es r r$z EdjApi._post,s��� ��}�S�v�r�B�B�B�H� � %� %� '� '� '��=�=�?�?� "���"�3� � � ��4�C��F�F�4�4���� � � � � � ����� �#� � � ��:�#�a�&�&�:�:���� � � � � � ����� ���s/�>A�B"�A0�*B"�0B"�B�B"�B")NNN)NNNN)NNNNNNN)rNNrNNNNNNNNNNNNN) �__name__� __module__� __qualname__rr8r?rMrgr"rqr$r_rr rr s������� )� )� )� )�>�>�>�>�@���@ae�VZ�8�8�8�8�z]^�W[�RV�VZ�BF� U�U�U�U�n � � ����,����rr)ryrrvrrr�__all__r_rr �<module>r�s��� � � � � � � � �����,�,�,�,�,�,�&�&�&�&�&�&�z�z�z�z�z�z�z�z�| �*���r

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/fengfengsu/edaijiamcp-project'

If you have feedback or need assistance with the MCP directory API, please join our Discord server