跳转到主要内容

Python的Korail(www.letskorail.com)包装器

项目描述

PyPi version PyPi downloads PyPi status PyPi license

Korail (www.letskorail.com) 的Python包装器。

本项目灵感来源于 devxoul的korail

文档

文档可在 此处 找到

安装

要安装korail2,只需

$ pip install korail2

或者,您可以使用

$ easy_install korail2

或者,您也可以手动安装

$ git clone git://github.com/carpedm20/korail2.git
$ cd korail2
$ python setup.py install

使用

1. 登录

首先,您需要创建一个Korail对象。

>>> from korail2 import *
>>> korail = Korail("12345678", YOUR_PASSWORD) # with membership number
>>> korail = Korail("carpedm20@gmail.com", YOUR_PASSWORD) # with email
>>> korail = Korail("010-9964-xxxx", YOUR_PASSWORD) # with phone number

如果您不想自动登录,

>>> korail = Korail("12345678", YOUR_PASSWORD, auto_login=False)
>>> korail.login()
True

当您想使用现有对象更改ID时,

>>> korail.login(ANOTHER_ID, ANOTHER_PASSWORD)
True

2. 搜索列车

您可以使用 search_trainsearch_train_allday 方法搜索列车时刻表。

  • search_train 返回最多10个结果。比 search_train_allday 更快。

  • search_train_allday 返回所有在指定时间后的结果。

  • search_train_allday 重复使用 search_train

search_trainsearch_train_allday 方法接受以下参数

  • dep : 韩国出发站名,例如)‘서울’

  • arr : 韩国到达站名,例如)‘부산’

  • 日期:(可选)yyyyMMdd格式的出发日期

  • 时间:(可选)hhmmss格式的出发时间

  • train_type:(可选)列车类型。您可以使用TrainType类的常量。默认值为TrainType.ALL。

    • 00: TrainType.KTX - KTX

    • 01: TrainType.SAEMAEUL - 새마을호

    • 02: TrainType.MUGUNGHWA - 무궁화호

    • 03: TrainType.TONGGEUN - 통근열차

    • 04: TrainType.NURIRO - 누리로

    • 05: TrainType.ALL - 全部

    • 06: TrainType.AIRPORT - 공항직통

    • 07: TrainType.KTX_SANCHEON - KTX-산천

    • 08: TrainType.ITX_SAEMAEUL - ITX-새마을

    • 09: TrainType.ITX_CHEONGCHUN - ITX-청춘

  • (可选)passengers=None : 乘客对象列表。None表示1位成人乘客。

  • (可选)include_no_seats=False : 当为True时,结果包括没有座位的车次。

以下是search_train的示例用法

>>> dep = '서울'
>>> arr = '동대구'
>>> date = '20140815'
>>> time = '144000'
>>> trains = korail.search_train(dep, arr, date, time)
[[KTX] 8 3, 서울~부산(11:00~13:42) 특실,일반실 예약가능,
 [ITX-새마을] 8 3, 서울~부산(11:04~16:00) 일반실 예약가능,
 [KTX] 8 3, 서울~부산(12:00~14:43) 특실,일반실 예약가능,
 [KTX] 8 3, 서울~부산(12:30~15:13) 특실,일반실 예약가능,
 [KTX] 8 3, 서울~부산(12:40~15:45) 특실,일반실 예약가능,
 [KTX] 8 3, 서울~부산(12:55~15:26) 특실,일반실 예약가능,
 [KTX] 8 3, 서울~부산(13:00~15:37) 특실,일반실 예약가능,
 [KTX] 8 3, 서울~부산(13:10~15:58) 특실,일반실 예약가능]

当你想查看售罄的列车时。

>>> trains = korail.search_train(dep, arr, date, time, include_no_seats=True)
[[KTX] 8 3, 서울~부산(11:00~13:42) 특실,일반실 예약가능,
 [ITX-새마을] 8 3, 서울~부산(11:04~16:00) 일반실 예약가능,
 [무궁화호] 8 3, 서울~부산(11:08~16:54) 입석 역발매중,
 [ITX-새마을] 8 3, 서울~부산(11:50~16:50) 입석 역발매중,
 [KTX] 8 3, 서울~부산(12:00~14:43) 특실,일반실 예약가능,
 [KTX] 8 3, 서울~부산(12:30~15:13) 특실,일반실 예약가능,
 [KTX] 8 3, 서울~부산(12:40~15:45) 특실,일반실 예약가능,
 [KTX] 8 3, 서울~부산(12:55~15:26) 특실,일반실 예약가능,
 [KTX] 8 3, 서울~부산(13:00~15:37) 특실,일반실 예약가능,
 [KTX] 8 3, 서울~부산(13:10~15:58) 특실,일반실 예약가능]

2-1. 关于passengers参数

passengers是一个乘客对象列表(或元组)。通过这种方式,您可以搜索多个乘客。目前有三种类型的乘客,成人乘客、儿童乘客和老年乘客。

# for 1 adult, 1 child
>>> psgrs = [AdultPassenger(), ChildPassenger()]

# for 2 adults, 1 child
>>> psgrs = [AdultPassenger(2), ChildPassenger(1)]
# ditto. They are being added each other by same group.
>>> psgrs = [AdultPassenger(), AdultPassenger(), ChildPassenger()]

# for 2 adults, 1 child, 1 senior
>>> psgrs = [AdultPassenger(2), ChildPassenger(), SeniorPassenger()]

# for 1 adult, It supports negative count or zero count.
# But it uses passengers which the sum is greater than zero.
>>> psgrs = [AdultPassenger(2), AdultPassenger(-1)]
>>> psgrs = [AdultPassenger(), SeniorPassenger(0)]

# Nothing
>>> psgrs = [AdultPassenger(0), SeniorPassenger(0)]

# then search or reserve train
>>> trains = korail.search_train(dep, arr, date, time, passengers=psgrs)
...
>>> korail.reserve(trains[0], psgrs)
...

3. 预订

您可以使用tickets方法获取您的票。

>>> trains = korail.search_train(dep, arr, date, time)
>>> seat = korail.reserve(trains[0])
>>> seat
[KTX] 8 23, 서울~동대구(15:30~17:19) 42500(1), 구입기한 8 18 14:05

多个。

>>> trains = korail.search_train(dep, arr, date, time)
>>> seat = korail.reserve(trains[0], passengers=psgrs)
>>> seat
[KTX] 8 23, 서울~동대구(15:30~17:19) 42500(3), 구입기한 8 18 14:05

当票不足以供乘客时,会引发SoldOutError。

如果您想选择座位等级的优先级,一般或特别,ReserveOption类中有4个选项。

  • GENERAL_FIRST : 经济型比舒适型便宜。

  • GENERAL_ONLY : 只预订一般座位。您很穷啊;-)

  • SPECIAL_FIRST : 舒适型比经济型好。

  • SPECIAL_ONLY : 富翁。

>>> korail.reserve(trains[0], psgrs, ReserveOption.GENERAL_ONLY)

4. 显示预订

您可以使用tickets方法获取您的票。

>>> reservations = korail.reservations()
>>> reservations
[[KTX] 8 23, 서울~동대구(14:55~16:45) 42500(1), 구입기한 8 18 14:03,
 [무궁화호] 8 23, 서울~동대구(15:03~18:48) 21100(1), 구입기한 8 18 14:03,
 [KTX] 8 23, 서울~동대구(15:30~17:19) 42500(1), 구입기한 8 18 14:05]

5. 取消预订

您也可以使用reservations()调用中的Reservation对象取消预订。

>>> korail.cancel(reservations[0])

6. 获取已支付票

您可以使用tickets方法查看您的票列表。您可以使用tickets方法获取已付款票的列表。

>>> korail = Korail("12345678", YOUR_PASSWORD, want_feedback=True)
>>> tickets = korail.tickets()
정상발매처리,정상발권처리  # You can see these feedbacks when `want_feedback` is True.
>>> print tickets
[[KTX] 8 10, 동대구~울산(09:26~09:54) => 5 4A, 13900]

如何获取Korail API

  1. 从手机提取Korail apk

  2. 使用dex2jar反编译apk

  3. 使用jdgui阅读jar代码

  4. 编辑smaili代码

  5. 使用apktool重新编译新的Korail apk

  6. 使用motizen-sign进行密钥签名

  7. 上传和运行新的Korail apk

  8. 捕获数据包和分析API

待办事项

  1. 实现支付API

许可证

源代码在BSD许可下分发。

作者

Kim Taehoon / [@carpedm20](http://carpedm20.github.io/about/) Kim Hanson / [@sng2c](https://github.com/sng2c)

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码发行版

korail2-0.4.0.tar.gz (19.9 kB 查看哈希值)

上传时间 源代码

由以下机构支持