motc-tdx-proxy


Namemotc-tdx-proxy JSON
Version 0.1.0 PyPI version JSON
download
home_pagehttps://github.com/chihsuanwu/tdx-proxy
Summary台灣交通部「TDX運輸資料流通服務平臺」之python介接套件
upload_time2024-02-12 04:02:34
maintainer
docs_urlNone
authorChi-Hsuan Wu
requires_python>=3.10, <4
license
keywords tdx
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # TDX Proxy

[English docs](https://github.com/chihsuanwu/tdx-proxy/blob/main/README.en.md)

台灣交通部「[TDX運輸資料流通服務平臺](https://tdx.transportdata.tw/)」之python介接套件

TDX Proxy 將與 TDX 平台之介接流程簡化,只要給予 Client ID 與 Secret Key,
便能直接對 TDX 平台之 API 進行呼叫。

TDX Proxy 支援不使用 API 金鑰呼叫 TDX 平台,但含有部分
[限制](https://tdx.transportdata.tw/api-service/swagger),如每個呼叫來源端IP的上限為每日50次等。

一個簡單範例:

```python
from tdx_proxy import TDXProxy

proxy = TDXProxy(app_id=YOUR_TDX_ID, app_key=YOUR_TDX_KEY)

result = proxy.get(TDX_SERVICE_URL)
```

# Installing TDX Proxy

TDX Proxy 可透過 [PyPI](https://pypi.org/project/motc-tdx-proxy/) 安裝

```console
$ pip install motc-tdx-proxy
```

需求 python 3.9+

# Features

- 自動進行身分驗證並取得 **Access Token**
- **Access Token** 快取機制,只在過期或驗證錯誤時再自動重新取得 Token
- 自動處理 [TDX 呼叫頻率限制](https://github.com/tdxmotc/SampleCode#api%E4%BD%BF%E7%94%A8%E6%AC%A1%E6%95%B8%E9%99%90%E5%88%B6)
- 支援不使用 API 金鑰呼叫 TDX 平台 [(含部分限制)](https://tdx.transportdata.tw/api-service/swagger)

# Documentation

## Initialize Proxy

初始化 Proxy 可將 ID 與 KEY 直接作為參數帶入,或使用 credential 檔案

```python
# 直接帶入參數
proxy = TDXProxy(app_id=YOUR_TDX_ID, app_key=YOUR_TDX_KEY)

# 使用 credential 檔案
# file_name 若不指定,將會使用環境變數 TDX_CREDENTIALS_FILE 作為預設路徑
proxy = TDXProxy.from_credential_file(file_name=YOUR_CREDENTAIL_FILE)
```

其中 credential 檔案為 Json 檔,格式如下
```json
{
    "app_id": "YOUR_ID",
    "app_key": "YOUR_KEY"
}
```

也可以不使用 API 金鑰初始化 proxy,但含有部分
[限制](https://tdx.transportdata.tw/api-service/swagger),如每個呼叫來源端IP的上限為每日50次等。

```python
# 不使用 API 金鑰
proxy = TDXProxy.no_auth()
```

## Calling TDX API

使用 `TDXProxy.get()` 呼叫 TDX API,
回傳為 [requests.Response](https://requests.readthedocs.io/en/latest/api/#requests.Response) 物件

```python
result = proxy.get('v3/Rail/TRA/DailyTrainTimetable/TrainDates')
```

### **Parameters:**
- **url** - TDX API URL,不須包含 base 以及 parameter ,如下所述
- **url_base** - (Optional) 預設為 `https://tdx.transportdata.tw/api/basic/`
- **params** - (Optional) Dict,額外的參數,預設為 `{ 'format': 'JSON' }`
- **headers** - (Optional) Dict,額外的 headers 如 `If-Modified-Since`,authorization header 會在呼叫 API 時自動加入

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/chihsuanwu/tdx-proxy",
    "name": "motc-tdx-proxy",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.10, <4",
    "maintainer_email": "",
    "keywords": "tdx",
    "author": "Chi-Hsuan Wu",
    "author_email": "chihsuanw@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/8a/4d/9b4ea0a73a9b6f3fbbdb865b33c03be3433de78ddf2a7d25884a52e99387/motc-tdx-proxy-0.1.0.tar.gz",
    "platform": null,
    "description": "# TDX Proxy\n\n[English docs](https://github.com/chihsuanwu/tdx-proxy/blob/main/README.en.md)\n\n\u53f0\u7063\u4ea4\u901a\u90e8\u300c[TDX\u904b\u8f38\u8cc7\u6599\u6d41\u901a\u670d\u52d9\u5e73\u81fa](https://tdx.transportdata.tw/)\u300d\u4e4bpython\u4ecb\u63a5\u5957\u4ef6\n\nTDX Proxy \u5c07\u8207 TDX \u5e73\u53f0\u4e4b\u4ecb\u63a5\u6d41\u7a0b\u7c21\u5316\uff0c\u53ea\u8981\u7d66\u4e88 Client ID \u8207 Secret Key\uff0c\n\u4fbf\u80fd\u76f4\u63a5\u5c0d TDX \u5e73\u53f0\u4e4b API \u9032\u884c\u547c\u53eb\u3002\n\nTDX Proxy \u652f\u63f4\u4e0d\u4f7f\u7528 API \u91d1\u9470\u547c\u53eb TDX \u5e73\u53f0\uff0c\u4f46\u542b\u6709\u90e8\u5206\n[\u9650\u5236](https://tdx.transportdata.tw/api-service/swagger)\uff0c\u5982\u6bcf\u500b\u547c\u53eb\u4f86\u6e90\u7aefIP\u7684\u4e0a\u9650\u70ba\u6bcf\u65e550\u6b21\u7b49\u3002\n\n\u4e00\u500b\u7c21\u55ae\u7bc4\u4f8b\uff1a\n\n```python\nfrom tdx_proxy import TDXProxy\n\nproxy = TDXProxy(app_id=YOUR_TDX_ID, app_key=YOUR_TDX_KEY)\n\nresult = proxy.get(TDX_SERVICE_URL)\n```\n\n# Installing TDX Proxy\n\nTDX Proxy \u53ef\u900f\u904e [PyPI](https://pypi.org/project/motc-tdx-proxy/) \u5b89\u88dd\n\n```console\n$ pip install motc-tdx-proxy\n```\n\n\u9700\u6c42 python 3.9+\n\n# Features\n\n- \u81ea\u52d5\u9032\u884c\u8eab\u5206\u9a57\u8b49\u4e26\u53d6\u5f97 **Access Token**\n- **Access Token** \u5feb\u53d6\u6a5f\u5236\uff0c\u53ea\u5728\u904e\u671f\u6216\u9a57\u8b49\u932f\u8aa4\u6642\u518d\u81ea\u52d5\u91cd\u65b0\u53d6\u5f97 Token\n- \u81ea\u52d5\u8655\u7406 [TDX \u547c\u53eb\u983b\u7387\u9650\u5236](https://github.com/tdxmotc/SampleCode#api%E4%BD%BF%E7%94%A8%E6%AC%A1%E6%95%B8%E9%99%90%E5%88%B6)\n- \u652f\u63f4\u4e0d\u4f7f\u7528 API \u91d1\u9470\u547c\u53eb TDX \u5e73\u53f0 [(\u542b\u90e8\u5206\u9650\u5236)](https://tdx.transportdata.tw/api-service/swagger)\n\n# Documentation\n\n## Initialize Proxy\n\n\u521d\u59cb\u5316 Proxy \u53ef\u5c07 ID \u8207 KEY \u76f4\u63a5\u4f5c\u70ba\u53c3\u6578\u5e36\u5165\uff0c\u6216\u4f7f\u7528 credential \u6a94\u6848\n\n```python\n# \u76f4\u63a5\u5e36\u5165\u53c3\u6578\nproxy = TDXProxy(app_id=YOUR_TDX_ID, app_key=YOUR_TDX_KEY)\n\n# \u4f7f\u7528 credential \u6a94\u6848\n# file_name \u82e5\u4e0d\u6307\u5b9a\uff0c\u5c07\u6703\u4f7f\u7528\u74b0\u5883\u8b8a\u6578 TDX_CREDENTIALS_FILE \u4f5c\u70ba\u9810\u8a2d\u8def\u5f91\nproxy = TDXProxy.from_credential_file(file_name=YOUR_CREDENTAIL_FILE)\n```\n\n\u5176\u4e2d credential \u6a94\u6848\u70ba Json \u6a94\uff0c\u683c\u5f0f\u5982\u4e0b\n```json\n{\n    \"app_id\": \"YOUR_ID\",\n    \"app_key\": \"YOUR_KEY\"\n}\n```\n\n\u4e5f\u53ef\u4ee5\u4e0d\u4f7f\u7528 API \u91d1\u9470\u521d\u59cb\u5316 proxy\uff0c\u4f46\u542b\u6709\u90e8\u5206\n[\u9650\u5236](https://tdx.transportdata.tw/api-service/swagger)\uff0c\u5982\u6bcf\u500b\u547c\u53eb\u4f86\u6e90\u7aefIP\u7684\u4e0a\u9650\u70ba\u6bcf\u65e550\u6b21\u7b49\u3002\n\n```python\n# \u4e0d\u4f7f\u7528 API \u91d1\u9470\nproxy = TDXProxy.no_auth()\n```\n\n## Calling TDX API\n\n\u4f7f\u7528 `TDXProxy.get()` \u547c\u53eb TDX API\uff0c\n\u56de\u50b3\u70ba [requests.Response](https://requests.readthedocs.io/en/latest/api/#requests.Response) \u7269\u4ef6\n\n```python\nresult = proxy.get('v3/Rail/TRA/DailyTrainTimetable/TrainDates')\n```\n\n### **Parameters:**\n- **url** - TDX API URL\uff0c\u4e0d\u9808\u5305\u542b base \u4ee5\u53ca parameter \uff0c\u5982\u4e0b\u6240\u8ff0\n- **url_base** - (Optional) \u9810\u8a2d\u70ba `https://tdx.transportdata.tw/api/basic/`\n- **params** - (Optional) Dict\uff0c\u984d\u5916\u7684\u53c3\u6578\uff0c\u9810\u8a2d\u70ba `{ 'format': 'JSON' }`\n- **headers** - (Optional) Dict\uff0c\u984d\u5916\u7684 headers \u5982 `If-Modified-Since`\uff0cauthorization header \u6703\u5728\u547c\u53eb API \u6642\u81ea\u52d5\u52a0\u5165\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "\u53f0\u7063\u4ea4\u901a\u90e8\u300cTDX\u904b\u8f38\u8cc7\u6599\u6d41\u901a\u670d\u52d9\u5e73\u81fa\u300d\u4e4bpython\u4ecb\u63a5\u5957\u4ef6",
    "version": "0.1.0",
    "project_urls": {
        "Bug Reports": "https://github.com/chihsuanwu/tdx-proxy/issues",
        "Homepage": "https://github.com/chihsuanwu/tdx-proxy",
        "Source": "https://github.com/chihsuanwu/tdx-proxy/"
    },
    "split_keywords": [
        "tdx"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e820ef03cf30b67c72a49abd7e579607dc6a625986b74aa9d8d487bebef58761",
                "md5": "8c45f6cc52b7c146e5c36391cf5bf7ca",
                "sha256": "8a4880c44d5975977f15baf8b337dcfb437696a7cd2eb5b790d7d00b22707664"
            },
            "downloads": -1,
            "filename": "motc_tdx_proxy-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8c45f6cc52b7c146e5c36391cf5bf7ca",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10, <4",
            "size": 5822,
            "upload_time": "2024-02-12T04:02:32",
            "upload_time_iso_8601": "2024-02-12T04:02:32.998215Z",
            "url": "https://files.pythonhosted.org/packages/e8/20/ef03cf30b67c72a49abd7e579607dc6a625986b74aa9d8d487bebef58761/motc_tdx_proxy-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8a4d9b4ea0a73a9b6f3fbbdb865b33c03be3433de78ddf2a7d25884a52e99387",
                "md5": "046501e59b5d2c06ede4fcb504b58a74",
                "sha256": "4a046aec564af3f0da7883301f746fcaa2dd7009c237cad5fec6f73e519a2011"
            },
            "downloads": -1,
            "filename": "motc-tdx-proxy-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "046501e59b5d2c06ede4fcb504b58a74",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10, <4",
            "size": 6153,
            "upload_time": "2024-02-12T04:02:34",
            "upload_time_iso_8601": "2024-02-12T04:02:34.619479Z",
            "url": "https://files.pythonhosted.org/packages/8a/4d/9b4ea0a73a9b6f3fbbdb865b33c03be3433de78ddf2a7d25884a52e99387/motc-tdx-proxy-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-12 04:02:34",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "chihsuanwu",
    "github_project": "tdx-proxy",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "motc-tdx-proxy"
}
        
Elapsed time: 0.18770s