National Rail的一个简单的python包装器查询ldbs soap webservice

nre-darwin-p的Python项目详细描述


https://travis-ci.org/robert-b-clarke/nre-darwin-py.svg?branch=masterDownloads

简介

nre darwin py为通过ldb soap web服务访问国家铁路查询达尔文服务提供了一个抽象层。这项服务为所有英国火车站提供实时离站信息。

本模块的目标如下:

  • 允许开发人员避免SOAP的复杂性和选择Python SOAP客户端
  • 所涉及的决策
  • 提供更多pythonic接口到站板和服务详细信息
  • 通过pydoc或python shell中的help命令提供有用的文档
  • 方便您轻松创建登机牌网站和网络服务

开始

您需要注册达尔文通道,您可以通过国家铁路查询developer site来完成。

然后安装nre darwin py:

pip install nre-darwin-py

基本用法

启动会话:

>>> from nredarwin.webservice import DarwinLdbSession
>>> darwin_sesh = DarwinLdbSession(wsdl="https://lite.realtime.nationalrail.co.uk/OpenLDBWS/wsdl.aspx", api_key="YOUR_KEY")

取回曼彻斯特皮卡迪利车站的发车牌:

>>> board = darwin_sesh.get_station_board('MAN')
>>> board.location_name
'Manchester Piccadilly'
>> board.train_services[0].destination_text
'Rose Hill Marple'

检索有关特定服务的详细信息:

>>> service_id = board.train_services[0].service_id
>>> service = darwin_sesh.get_service_details(service_id)
>>> [cp.location_name for cp in service.subsequent_calling_points]
[Gorton, Fairfield, Guide Bridge, Hyde Central, Woodley, Romiley, Rose Hill Marple]

提供的example.py脚本显示了一个简单的离港板实现,供您参考

实用性

  • 环境变量Darwin Web Service_wsdlDarwin Web Service_api_key可用于设置wsdl URL和API key,因此在启动Darwinldbsession时不必指定它们。
  • ldb webservice的wsdl url可能会不时更改,而且在过去是这样。你的申请应该考虑到这一点。
  • 任何调用get_station_board或get_service_details都将导致对ldb webservice的查询,从而导致对外部服务的http请求。您的应用程序需要自己处理缓存和故障模式。
  • 创建darwinldbsession时会涉及开销,因为必须检索和解析wsdl。

学分

乔治·戈德伯格的额外贡献。Pete Barking对肥皂水代理问题的建议。

待办事项

  • 将出发和到达时间作为时区感知的日期时间对象提供
  • 更详细的异常处理
  • 更多示例

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在通过url读取csv文件时,我想用数据映射列名   java在没有类型转换的情况下访问父类型的arraylist中的特定子类型方法,子类型的创建只有在运行时才知道   java扩展UIComponentBase时如何保存状态   java如何使用字符串作为Velocity模板?   用于调试远程/本地java应用程序的自定义调试器   JavaFx和浮动按钮   java如何修改列表中的对象?在迭代时扩展MyObject>?   java Spring框架如何避免控制器中的重复代码?   java代码名1 IOS签名   一点Bitly API有Java库吗?   jasper报告将Highcharts图表添加到使用JavaAPI生成的JasperReport模板中   swing如何在java中更改按键的颜色   java Javax Websocket使用路径参数提交登录数据,好的做法?