add skill
This commit is contained in:
75
SKILL.md
Normal file
75
SKILL.md
Normal file
@@ -0,0 +1,75 @@
|
||||
---
|
||||
name: busan-airport-limousine
|
||||
description: Answers questions about Gimhae Airport (Busan, Korea) limousine bus schedules. Use this skill whenever the user asks about airport bus times, which limousine line stops at a place, when to catch the airport bus from Haeundae, Gijang, Seomyeon, Bujeon, or any named hotel/landmark stop (e.g. 한화리조트, 벡스코, 파크하얏트, 장산역, 부전역). Also triggers for questions like "공항리무진 시간표", "공항버스 몇 시에", "김해공항 리무진 정류장", or similar Korean phrasing.
|
||||
---
|
||||
|
||||
# Busan Airport Limousine Schedule
|
||||
|
||||
Gimhae Airport (김해공항) is served by two limousine bus lines:
|
||||
- **Line 1** — Haeundae/Gijang (해운대/기장) ↔ Airport
|
||||
- **Line 2** — Seomyeon/Bujeon (서면/부전) ↔ Airport
|
||||
|
||||
The schedule is bundled in `data/schedule.jsonl` (relative to this skill). It is current as of the last scrape — **do not re-scrape unless the user explicitly asks for a refresh** (the schedule rarely changes and scraping takes time).
|
||||
|
||||
---
|
||||
|
||||
## Step 1: Identify the line and direction
|
||||
|
||||
Read `references/stops-index.md` to find which line a named stop belongs to. This is faster than searching the JSONL. Key facts:
|
||||
|
||||
- Line 1 to-airport stops include: 반얀트리, 아난티코브, 오시리아, 장산역, 해운대온천사거리, 해운대해수욕장, 동백섬입구, **한화리조트해운대**, 파크하얏트부산, 요트경기장, 벡스코, 신세계센텀시티, 상수도남부사업소
|
||||
- Line 2 to-airport stops include: 부전시장, 부전역, 서면/롯데호텔백화점, 동의대역, 주례역
|
||||
- From-airport trips don't have per-neighborhood-stop times — only airport departure times + estimated final arrival.
|
||||
|
||||
---
|
||||
|
||||
## Step 2: Run the query script
|
||||
|
||||
The script is at `scripts/query.js` (inside this skill directory). Run it with `node`:
|
||||
|
||||
```bash
|
||||
# Show full schedule for a stop (to-airport + from-airport for that line)
|
||||
node <skill-dir>/scripts/query.js 한화리조트
|
||||
|
||||
# To-airport only
|
||||
node <skill-dir>/scripts/query.js 한화리조트 --to
|
||||
|
||||
# From-airport only
|
||||
node <skill-dir>/scripts/query.js 한화리조트 --from
|
||||
|
||||
# From-airport by line number (no stop name needed)
|
||||
node <skill-dir>/scripts/query.js --from-airport --line 1
|
||||
node <skill-dir>/scripts/query.js --from-airport --line 2
|
||||
```
|
||||
|
||||
The script does partial Korean substring matching, so "한화리조트" matches "한화리조트해운대".
|
||||
|
||||
**The skill dir** is: `/home/allen/.claude/plugins/cache/local/busan-airport-limousine/1.0.0/skills/busan-airport-limousine`
|
||||
|
||||
---
|
||||
|
||||
## Step 3: Present the output
|
||||
|
||||
The script prints a compact table. Show it to the user as-is or summarize the key departure/arrival pairs. For estimated arrivals, mention they are estimates (the source site doesn't publish destination arrival times).
|
||||
|
||||
**Arrival time method:**
|
||||
- To-airport: last published stop + 15 min (Line 1) or 10 min (Line 2)
|
||||
- From-airport: airport departure + 110 min (Line 1) or 50 min (Line 2), sourced from airportkobus.com
|
||||
|
||||
---
|
||||
|
||||
## Refreshing the schedule
|
||||
|
||||
If the user says the schedule is outdated or explicitly asks to refresh, run:
|
||||
|
||||
```bash
|
||||
cd /home/allen/projects/bullish && node scrape.js
|
||||
```
|
||||
|
||||
Then copy the updated file into the skill:
|
||||
|
||||
```bash
|
||||
cp /home/allen/projects/bullish/schedule.jsonl <skill-dir>/data/schedule.jsonl
|
||||
```
|
||||
|
||||
**Do not do this proactively.** The schedule is stable and scraping requires a network round-trip.
|
||||
99
data/schedule.jsonl
Normal file
99
data/schedule.jsonl
Normal file
@@ -0,0 +1,99 @@
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":0,"departure":{"stop":"반얀트리","time":"4:50"},"arrival":{"stop":"Gimhae Airport","time":"6:00"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 5:45 + 15 min","all_stops":[{"stop":"반얀트리","time":"4:50"},{"stop":"아난티코브","time":"4:53"},{"stop":"오시리아","time":"4:56"},{"stop":"장산역","time":"5:12"},{"stop":"해운대온천사거리","time":"5:16"},{"stop":"해운대해수욕장","time":"5:17"},{"stop":"동백섬입구","time":"5:18"},{"stop":"한화리조트해운대","time":"5:24"},{"stop":"파크하얏트부산","time":"5:25"},{"stop":"요트경기장","time":"5:28"},{"stop":"벡스코","time":"5:34"},{"stop":"신세계센텀시티","time":"5:35"},{"stop":"상수도남부사업소","time":"5:45"}]}
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":1,"departure":{"stop":"반얀트리","time":"6:00"},"arrival":{"stop":"Gimhae Airport","time":"6:18"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 6:03 + 15 min","all_stops":[{"stop":"반얀트리","time":"6:00"},{"stop":"아난티코브","time":"6:03"},{"stop":"오시리아","time":"6:06"},{"stop":"장산역","time":"5:30"},{"stop":"해운대온천사거리","time":"5:34"},{"stop":"해운대해수욕장","time":"5:35"},{"stop":"동백섬입구","time":"5:36"},{"stop":"한화리조트해운대","time":"5:42"},{"stop":"파크하얏트부산","time":"5:43"},{"stop":"요트경기장","time":"5:46"},{"stop":"벡스코","time":"5:52"},{"stop":"신세계센텀시티","time":"5:53"},{"stop":"상수도남부사업소","time":"6:03"}]}
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":2,"departure":{"stop":"반얀트리","time":"6:30"},"arrival":{"stop":"Gimhae Airport","time":"7:10"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 6:55 + 15 min","all_stops":[{"stop":"반얀트리","time":"6:30"},{"stop":"아난티코브","time":"6:33"},{"stop":"오시리아","time":"6:36"},{"stop":"장산역","time":"6:22"},{"stop":"해운대온천사거리","time":"6:26"},{"stop":"해운대해수욕장","time":"6:27"},{"stop":"동백섬입구","time":"6:28"},{"stop":"한화리조트해운대","time":"6:34"},{"stop":"파크하얏트부산","time":"6:35"},{"stop":"요트경기장","time":"6:38"},{"stop":"벡스코","time":"6:44"},{"stop":"신세계센텀시티","time":"6:45"},{"stop":"상수도남부사업소","time":"6:55"}]}
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":3,"departure":{"stop":"반얀트리","time":"7:00"},"arrival":{"stop":"Gimhae Airport","time":"7:40"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 7:25 + 15 min","all_stops":[{"stop":"반얀트리","time":"7:00"},{"stop":"아난티코브","time":"7:03"},{"stop":"오시리아","time":"7:06"},{"stop":"장산역","time":"6:52"},{"stop":"해운대온천사거리","time":"6:56"},{"stop":"해운대해수욕장","time":"6:57"},{"stop":"동백섬입구","time":"6:58"},{"stop":"한화리조트해운대","time":"7:04"},{"stop":"파크하얏트부산","time":"7:05"},{"stop":"요트경기장","time":"7:08"},{"stop":"벡스코","time":"7:14"},{"stop":"신세계센텀시티","time":"7:15"},{"stop":"상수도남부사업소","time":"7:25"}]}
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":4,"departure":{"stop":"반얀트리","time":"7:30"},"arrival":{"stop":"Gimhae Airport","time":"8:10"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 7:55 + 15 min","all_stops":[{"stop":"반얀트리","time":"7:30"},{"stop":"아난티코브","time":"7:33"},{"stop":"오시리아","time":"7:36"},{"stop":"장산역","time":"7:22"},{"stop":"해운대온천사거리","time":"7:26"},{"stop":"해운대해수욕장","time":"7:27"},{"stop":"동백섬입구","time":"7:28"},{"stop":"한화리조트해운대","time":"7:34"},{"stop":"파크하얏트부산","time":"7:35"},{"stop":"요트경기장","time":"7:38"},{"stop":"벡스코","time":"7:44"},{"stop":"신세계센텀시티","time":"7:45"},{"stop":"상수도남부사업소","time":"7:55"}]}
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":5,"departure":{"stop":"반얀트리","time":"8:00"},"arrival":{"stop":"Gimhae Airport","time":"8:40"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 8:25 + 15 min","all_stops":[{"stop":"반얀트리","time":"8:00"},{"stop":"아난티코브","time":"8:03"},{"stop":"오시리아","time":"8:06"},{"stop":"장산역","time":"7:52"},{"stop":"해운대온천사거리","time":"7:56"},{"stop":"해운대해수욕장","time":"7:57"},{"stop":"동백섬입구","time":"7:58"},{"stop":"한화리조트해운대","time":"8:04"},{"stop":"파크하얏트부산","time":"8:05"},{"stop":"요트경기장","time":"8:08"},{"stop":"벡스코","time":"8:14"},{"stop":"신세계센텀시티","time":"8:15"},{"stop":"상수도남부사업소","time":"8:25"}]}
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":6,"departure":{"stop":"반얀트리","time":"12:40"},"arrival":{"stop":"Gimhae Airport","time":"9:10"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 8:55 + 15 min","all_stops":[{"stop":"반얀트리","time":"12:40"},{"stop":"아난티코브","time":"12:43"},{"stop":"오시리아","time":"12:46"},{"stop":"장산역","time":"8:22"},{"stop":"해운대온천사거리","time":"8:26"},{"stop":"해운대해수욕장","time":"8:27"},{"stop":"동백섬입구","time":"8:28"},{"stop":"한화리조트해운대","time":"8:34"},{"stop":"파크하얏트부산","time":"8:35"},{"stop":"요트경기장","time":"8:38"},{"stop":"벡스코","time":"8:44"},{"stop":"신세계센텀시티","time":"8:45"},{"stop":"상수도남부사업소","time":"8:55"}]}
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":7,"departure":{"stop":"반얀트리","time":"13:20"},"arrival":{"stop":"Gimhae Airport","time":"9:48"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 9:33 + 15 min","all_stops":[{"stop":"반얀트리","time":"13:20"},{"stop":"아난티코브","time":"13:23"},{"stop":"오시리아","time":"13:26"},{"stop":"장산역","time":"9:00"},{"stop":"해운대온천사거리","time":"9:04"},{"stop":"해운대해수욕장","time":"9:05"},{"stop":"동백섬입구","time":"9:06"},{"stop":"한화리조트해운대","time":"9:12"},{"stop":"파크하얏트부산","time":"9:13"},{"stop":"요트경기장","time":"9:16"},{"stop":"벡스코","time":"9:22"},{"stop":"신세계센텀시티","time":"9:23"},{"stop":"상수도남부사업소","time":"9:33"}]}
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":8,"departure":{"stop":"반얀트리","time":"14:00"},"arrival":{"stop":"Gimhae Airport","time":"10:28"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 10:13 + 15 min","all_stops":[{"stop":"반얀트리","time":"14:00"},{"stop":"아난티코브","time":"14:03"},{"stop":"오시리아","time":"14:06"},{"stop":"장산역","time":"9:40"},{"stop":"해운대온천사거리","time":"9:44"},{"stop":"해운대해수욕장","time":"9:45"},{"stop":"동백섬입구","time":"9:46"},{"stop":"한화리조트해운대","time":"9:52"},{"stop":"파크하얏트부산","time":"9:53"},{"stop":"요트경기장","time":"9:56"},{"stop":"벡스코","time":"10:02"},{"stop":"신세계센텀시티","time":"10:03"},{"stop":"상수도남부사업소","time":"10:13"}]}
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":9,"departure":{"stop":"반얀트리","time":"14:40"},"arrival":{"stop":"Gimhae Airport","time":"11:08"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 10:53 + 15 min","all_stops":[{"stop":"반얀트리","time":"14:40"},{"stop":"아난티코브","time":"14:43"},{"stop":"오시리아","time":"14:46"},{"stop":"장산역","time":"10:20"},{"stop":"해운대온천사거리","time":"10:24"},{"stop":"해운대해수욕장","time":"10:25"},{"stop":"동백섬입구","time":"10:26"},{"stop":"한화리조트해운대","time":"10:32"},{"stop":"파크하얏트부산","time":"10:33"},{"stop":"요트경기장","time":"10:36"},{"stop":"벡스코","time":"10:42"},{"stop":"신세계센텀시티","time":"10:43"},{"stop":"상수도남부사업소","time":"10:53"}]}
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":10,"departure":{"stop":"반얀트리","time":"15:00"},"arrival":{"stop":"Gimhae Airport","time":"11:48"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 11:33 + 15 min","all_stops":[{"stop":"반얀트리","time":"15:00"},{"stop":"아난티코브","time":"15:03"},{"stop":"오시리아","time":"15:06"},{"stop":"장산역","time":"11:00"},{"stop":"해운대온천사거리","time":"11:04"},{"stop":"해운대해수욕장","time":"11:05"},{"stop":"동백섬입구","time":"11:06"},{"stop":"한화리조트해운대","time":"11:12"},{"stop":"파크하얏트부산","time":"11:13"},{"stop":"요트경기장","time":"11:16"},{"stop":"벡스코","time":"11:22"},{"stop":"신세계센텀시티","time":"11:23"},{"stop":"상수도남부사업소","time":"11:33"}]}
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":11,"departure":{"stop":"반얀트리","time":"15:40"},"arrival":{"stop":"Gimhae Airport","time":"13:50"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 13:35 + 15 min","all_stops":[{"stop":"반얀트리","time":"15:40"},{"stop":"아난티코브","time":"15:43"},{"stop":"오시리아","time":"15:46"},{"stop":"장산역","time":"13:02"},{"stop":"해운대온천사거리","time":"13:06"},{"stop":"해운대해수욕장","time":"13:07"},{"stop":"동백섬입구","time":"13:08"},{"stop":"한화리조트해운대","time":"13:14"},{"stop":"파크하얏트부산","time":"13:15"},{"stop":"요트경기장","time":"13:18"},{"stop":"벡스코","time":"13:24"},{"stop":"신세계센텀시티","time":"13:25"},{"stop":"상수도남부사업소","time":"13:35"}]}
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":12,"departure":{"stop":"반얀트리","time":"16:30"},"arrival":{"stop":"Gimhae Airport","time":"14:30"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 14:15 + 15 min","all_stops":[{"stop":"반얀트리","time":"16:30"},{"stop":"아난티코브","time":"16:33"},{"stop":"오시리아","time":"16:36"},{"stop":"장산역","time":"13:42"},{"stop":"해운대온천사거리","time":"13:46"},{"stop":"해운대해수욕장","time":"13:47"},{"stop":"동백섬입구","time":"13:48"},{"stop":"한화리조트해운대","time":"13:54"},{"stop":"파크하얏트부산","time":"13:55"},{"stop":"요트경기장","time":"13:58"},{"stop":"벡스코","time":"14:04"},{"stop":"신세계센텀시티","time":"14:05"},{"stop":"상수도남부사업소","time":"14:15"}]}
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":13,"departure":{"stop":"장산역","time":"14:22"},"arrival":{"stop":"Gimhae Airport","time":"15:10"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 14:55 + 15 min","all_stops":[{"stop":"장산역","time":"14:22"},{"stop":"해운대온천사거리","time":"14:26"},{"stop":"해운대해수욕장","time":"14:27"},{"stop":"동백섬입구","time":"14:28"},{"stop":"한화리조트해운대","time":"14:34"},{"stop":"파크하얏트부산","time":"14:35"},{"stop":"요트경기장","time":"14:38"},{"stop":"벡스코","time":"14:44"},{"stop":"신세계센텀시티","time":"14:45"},{"stop":"상수도남부사업소","time":"14:55"}]}
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":14,"departure":{"stop":"장산역","time":"15:02"},"arrival":{"stop":"Gimhae Airport","time":"15:50"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 15:35 + 15 min","all_stops":[{"stop":"장산역","time":"15:02"},{"stop":"해운대온천사거리","time":"15:06"},{"stop":"해운대해수욕장","time":"15:07"},{"stop":"동백섬입구","time":"15:08"},{"stop":"한화리조트해운대","time":"15:14"},{"stop":"파크하얏트부산","time":"15:15"},{"stop":"요트경기장","time":"15:18"},{"stop":"벡스코","time":"15:24"},{"stop":"신세계센텀시티","time":"15:25"},{"stop":"상수도남부사업소","time":"15:35"}]}
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":15,"departure":{"stop":"장산역","time":"15:22"},"arrival":{"stop":"Gimhae Airport","time":"16:10"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 15:55 + 15 min","all_stops":[{"stop":"장산역","time":"15:22"},{"stop":"해운대온천사거리","time":"15:26"},{"stop":"해운대해수욕장","time":"15:27"},{"stop":"동백섬입구","time":"15:28"},{"stop":"한화리조트해운대","time":"15:34"},{"stop":"파크하얏트부산","time":"15:35"},{"stop":"요트경기장","time":"15:38"},{"stop":"벡스코","time":"15:44"},{"stop":"신세계센텀시티","time":"15:45"},{"stop":"상수도남부사업소","time":"15:55"}]}
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":16,"departure":{"stop":"장산역","time":"16:02"},"arrival":{"stop":"Gimhae Airport","time":"16:50"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 16:35 + 15 min","all_stops":[{"stop":"장산역","time":"16:02"},{"stop":"해운대온천사거리","time":"16:06"},{"stop":"해운대해수욕장","time":"16:07"},{"stop":"동백섬입구","time":"16:08"},{"stop":"한화리조트해운대","time":"16:14"},{"stop":"파크하얏트부산","time":"16:15"},{"stop":"요트경기장","time":"16:18"},{"stop":"벡스코","time":"16:24"},{"stop":"신세계센텀시티","time":"16:25"},{"stop":"상수도남부사업소","time":"16:35"}]}
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":17,"departure":{"stop":"장산역","time":"16:52"},"arrival":{"stop":"Gimhae Airport","time":"17:40"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 17:25 + 15 min","all_stops":[{"stop":"장산역","time":"16:52"},{"stop":"해운대온천사거리","time":"16:56"},{"stop":"해운대해수욕장","time":"16:57"},{"stop":"동백섬입구","time":"16:58"},{"stop":"한화리조트해운대","time":"17:04"},{"stop":"파크하얏트부산","time":"17:05"},{"stop":"요트경기장","time":"17:08"},{"stop":"벡스코","time":"17:14"},{"stop":"신세계센텀시티","time":"17:15"},{"stop":"상수도남부사업소","time":"17:25"}]}
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":18,"departure":{"stop":"장산역","time":"17:20"},"arrival":{"stop":"Gimhae Airport","time":"18:08"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 17:53 + 15 min","all_stops":[{"stop":"장산역","time":"17:20"},{"stop":"해운대온천사거리","time":"17:24"},{"stop":"해운대해수욕장","time":"17:25"},{"stop":"동백섬입구","time":"17:26"},{"stop":"한화리조트해운대","time":"17:32"},{"stop":"파크하얏트부산","time":"17:33"},{"stop":"요트경기장","time":"17:36"},{"stop":"벡스코","time":"17:42"},{"stop":"신세계센텀시티","time":"17:43"},{"stop":"상수도남부사업소","time":"17:53"}]}
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":19,"departure":{"stop":"장산역","time":"18:00"},"arrival":{"stop":"Gimhae Airport","time":"18:48"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 18:33 + 15 min","all_stops":[{"stop":"장산역","time":"18:00"},{"stop":"해운대온천사거리","time":"18:04"},{"stop":"해운대해수욕장","time":"18:05"},{"stop":"동백섬입구","time":"18:06"},{"stop":"한화리조트해운대","time":"18:12"},{"stop":"파크하얏트부산","time":"18:13"},{"stop":"요트경기장","time":"18:16"},{"stop":"벡스코","time":"18:22"},{"stop":"신세계센텀시티","time":"18:23"},{"stop":"상수도남부사업소","time":"18:33"}]}
|
||||
{"route":"Haeundae/Gijang -> Gimhae Airport","page":1,"direction":"to_airport","trip_index":20,"departure":{"stop":"장산역","time":"19:00"},"arrival":{"stop":"Gimhae Airport","time":"19:48"},"arrival_note":"estimated: last published stop \"상수도남부사업소\" @ 19:33 + 15 min","all_stops":[{"stop":"장산역","time":"19:00"},{"stop":"해운대온천사거리","time":"19:04"},{"stop":"해운대해수욕장","time":"19:05"},{"stop":"동백섬입구","time":"19:06"},{"stop":"한화리조트해운대","time":"19:12"},{"stop":"파크하얏트부산","time":"19:13"},{"stop":"요트경기장","time":"19:16"},{"stop":"벡스코","time":"19:22"},{"stop":"신세계센텀시티","time":"19:23"},{"stop":"상수도남부사업소","time":"19:33"}]}
|
||||
{"route":"Seomyeon/Bujeon -> Gimhae Airport","page":2,"direction":"to_airport","trip_index":0,"departure":{"stop":"부전시장","time":"6:00"},"arrival":{"stop":"Gimhae Airport","time":"6:29"},"arrival_note":"estimated: last published stop \"주례역\" @ 6:19 + 10 min","all_stops":[{"stop":"부전시장","time":"6:00"},{"stop":"부전역","time":"6:01"},{"stop":"서면/롯데호텔백화점","time":"6:05"},{"stop":"동의대역","time":"6:12"},{"stop":"주례역","time":"6:19"}]}
|
||||
{"route":"Seomyeon/Bujeon -> Gimhae Airport","page":2,"direction":"to_airport","trip_index":1,"departure":{"stop":"부전시장","time":"7:00"},"arrival":{"stop":"Gimhae Airport","time":"7:29"},"arrival_note":"estimated: last published stop \"주례역\" @ 7:19 + 10 min","all_stops":[{"stop":"부전시장","time":"7:00"},{"stop":"부전역","time":"7:01"},{"stop":"서면/롯데호텔백화점","time":"7:05"},{"stop":"동의대역","time":"7:12"},{"stop":"주례역","time":"7:19"}]}
|
||||
{"route":"Seomyeon/Bujeon -> Gimhae Airport","page":2,"direction":"to_airport","trip_index":2,"departure":{"stop":"부전시장","time":"8:20"},"arrival":{"stop":"Gimhae Airport","time":"8:49"},"arrival_note":"estimated: last published stop \"주례역\" @ 8:39 + 10 min","all_stops":[{"stop":"부전시장","time":"8:20"},{"stop":"부전역","time":"8:21"},{"stop":"서면/롯데호텔백화점","time":"8:25"},{"stop":"동의대역","time":"8:32"},{"stop":"주례역","time":"8:39"}]}
|
||||
{"route":"Seomyeon/Bujeon -> Gimhae Airport","page":2,"direction":"to_airport","trip_index":3,"departure":{"stop":"부전시장","time":"9:40"},"arrival":{"stop":"Gimhae Airport","time":"10:09"},"arrival_note":"estimated: last published stop \"주례역\" @ 9:59 + 10 min","all_stops":[{"stop":"부전시장","time":"9:40"},{"stop":"부전역","time":"9:41"},{"stop":"서면/롯데호텔백화점","time":"9:45"},{"stop":"동의대역","time":"9:52"},{"stop":"주례역","time":"9:59"}]}
|
||||
{"route":"Seomyeon/Bujeon -> Gimhae Airport","page":2,"direction":"to_airport","trip_index":4,"departure":{"stop":"부전시장","time":"11:00"},"arrival":{"stop":"Gimhae Airport","time":"11:29"},"arrival_note":"estimated: last published stop \"주례역\" @ 11:19 + 10 min","all_stops":[{"stop":"부전시장","time":"11:00"},{"stop":"부전역","time":"11:01"},{"stop":"서면/롯데호텔백화점","time":"11:05"},{"stop":"동의대역","time":"11:12"},{"stop":"주례역","time":"11:19"}]}
|
||||
{"route":"Seomyeon/Bujeon -> Gimhae Airport","page":2,"direction":"to_airport","trip_index":5,"departure":{"stop":"부전시장","time":"12:20"},"arrival":{"stop":"Gimhae Airport","time":"12:49"},"arrival_note":"estimated: last published stop \"주례역\" @ 12:39 + 10 min","all_stops":[{"stop":"부전시장","time":"12:20"},{"stop":"부전역","time":"12:21"},{"stop":"서면/롯데호텔백화점","time":"12:25"},{"stop":"동의대역","time":"12:32"},{"stop":"주례역","time":"12:39"}]}
|
||||
{"route":"Seomyeon/Bujeon -> Gimhae Airport","page":2,"direction":"to_airport","trip_index":6,"departure":{"stop":"부전시장","time":"13:40"},"arrival":{"stop":"Gimhae Airport","time":"14:09"},"arrival_note":"estimated: last published stop \"주례역\" @ 13:59 + 10 min","all_stops":[{"stop":"부전시장","time":"13:40"},{"stop":"부전역","time":"13:41"},{"stop":"서면/롯데호텔백화점","time":"13:45"},{"stop":"동의대역","time":"13:52"},{"stop":"주례역","time":"13:59"}]}
|
||||
{"route":"Seomyeon/Bujeon -> Gimhae Airport","page":2,"direction":"to_airport","trip_index":7,"departure":{"stop":"부전시장","time":"15:00"},"arrival":{"stop":"Gimhae Airport","time":"15:29"},"arrival_note":"estimated: last published stop \"주례역\" @ 15:19 + 10 min","all_stops":[{"stop":"부전시장","time":"15:00"},{"stop":"부전역","time":"15:01"},{"stop":"서면/롯데호텔백화점","time":"15:05"},{"stop":"동의대역","time":"15:12"},{"stop":"주례역","time":"15:19"}]}
|
||||
{"route":"Seomyeon/Bujeon -> Gimhae Airport","page":2,"direction":"to_airport","trip_index":8,"departure":{"stop":"부전시장","time":"16:20"},"arrival":{"stop":"Gimhae Airport","time":"16:49"},"arrival_note":"estimated: last published stop \"주례역\" @ 16:39 + 10 min","all_stops":[{"stop":"부전시장","time":"16:20"},{"stop":"부전역","time":"16:21"},{"stop":"서면/롯데호텔백화점","time":"16:25"},{"stop":"동의대역","time":"16:32"},{"stop":"주례역","time":"16:39"}]}
|
||||
{"route":"Seomyeon/Bujeon -> Gimhae Airport","page":2,"direction":"to_airport","trip_index":9,"departure":{"stop":"부전시장","time":"17:40"},"arrival":{"stop":"Gimhae Airport","time":"18:09"},"arrival_note":"estimated: last published stop \"주례역\" @ 17:59 + 10 min","all_stops":[{"stop":"부전시장","time":"17:40"},{"stop":"부전역","time":"17:41"},{"stop":"서면/롯데호텔백화점","time":"17:45"},{"stop":"동의대역","time":"17:52"},{"stop":"주례역","time":"17:59"}]}
|
||||
{"route":"Seomyeon/Bujeon -> Gimhae Airport","page":2,"direction":"to_airport","trip_index":10,"departure":{"stop":"부전시장","time":"18:50"},"arrival":{"stop":"Gimhae Airport","time":"19:19"},"arrival_note":"estimated: last published stop \"주례역\" @ 19:09 + 10 min","all_stops":[{"stop":"부전시장","time":"18:50"},{"stop":"부전역","time":"18:51"},{"stop":"서면/롯데호텔백화점","time":"18:55"},{"stop":"동의대역","time":"19:02"},{"stop":"주례역","time":"19:09"}]}
|
||||
{"route":"Seomyeon/Bujeon -> Gimhae Airport","page":2,"direction":"to_airport","trip_index":11,"departure":{"stop":"부전시장","time":"20:00"},"arrival":{"stop":"Gimhae Airport","time":"20:29"},"arrival_note":"estimated: last published stop \"주례역\" @ 20:19 + 10 min","all_stops":[{"stop":"부전시장","time":"20:00"},{"stop":"부전역","time":"20:01"},{"stop":"서면/롯데호텔백화점","time":"20:05"},{"stop":"동의대역","time":"20:12"},{"stop":"주례역","time":"20:19"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":0,"departure":{"stop":"Gimhae Airport","time":"7:15"},"arrival":{"stop":"Haeundae/Gijang","time":"9:05"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"7:15"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":1,"departure":{"stop":"Gimhae Airport","time":"7:55"},"arrival":{"stop":"Haeundae/Gijang","time":"9:45"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"7:55"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":2,"departure":{"stop":"Gimhae Airport","time":"8:35"},"arrival":{"stop":"Haeundae/Gijang","time":"10:25"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"8:35"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":3,"departure":{"stop":"Gimhae Airport","time":"9:15"},"arrival":{"stop":"Haeundae/Gijang","time":"11:05"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"9:15"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":4,"departure":{"stop":"Gimhae Airport","time":"10:15"},"arrival":{"stop":"Haeundae/Gijang","time":"12:05"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"10:15"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":5,"departure":{"stop":"Gimhae Airport","time":"10:55"},"arrival":{"stop":"Haeundae/Gijang","time":"12:45"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"10:55"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":6,"departure":{"stop":"Gimhae Airport","time":"11:35"},"arrival":{"stop":"Haeundae/Gijang","time":"13:25"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"11:35"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":7,"departure":{"stop":"Gimhae Airport","time":"12:15"},"arrival":{"stop":"Haeundae/Gijang","time":"14:05"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"12:15"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":8,"departure":{"stop":"Gimhae Airport","time":"12:35"},"arrival":{"stop":"Haeundae/Gijang","time":"14:25"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"12:35"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":9,"departure":{"stop":"Gimhae Airport","time":"13:15"},"arrival":{"stop":"Haeundae/Gijang","time":"15:05"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"13:15"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":10,"departure":{"stop":"Gimhae Airport","time":"14:15"},"arrival":{"stop":"Haeundae/Gijang","time":"16:05"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"14:15"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":11,"departure":{"stop":"Gimhae Airport","time":"15:35"},"arrival":{"stop":"Haeundae/Gijang","time":"17:25"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"15:35"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":12,"departure":{"stop":"Gimhae Airport","time":"16:15"},"arrival":{"stop":"Haeundae/Gijang","time":"18:05"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"16:15"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":13,"departure":{"stop":"Gimhae Airport","time":"16:55"},"arrival":{"stop":"Haeundae/Gijang","time":"18:45"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"16:55"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":14,"departure":{"stop":"Gimhae Airport","time":"17:15"},"arrival":{"stop":"Haeundae/Gijang","time":"19:05"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"17:15"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":15,"departure":{"stop":"Gimhae Airport","time":"17:35"},"arrival":{"stop":"Haeundae/Gijang","time":"19:25"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"17:35"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":16,"departure":{"stop":"Gimhae Airport","time":"18:05"},"arrival":{"stop":"Haeundae/Gijang","time":"19:55"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"18:05"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":17,"departure":{"stop":"Gimhae Airport","time":"18:55"},"arrival":{"stop":"Haeundae/Gijang","time":"20:45"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"18:55"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":18,"departure":{"stop":"Gimhae Airport","time":"19:35"},"arrival":{"stop":"Haeundae/Gijang","time":"21:25"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"19:35"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":19,"departure":{"stop":"Gimhae Airport","time":"20:35"},"arrival":{"stop":"Haeundae/Gijang","time":"22:25"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"20:35"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Haeundae/Gijang","page":3,"direction":"from_airport","trip_index":20,"departure":{"stop":"Gimhae Airport","time":"21:45"},"arrival":{"stop":"Haeundae/Gijang","time":"23:35"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"21:45"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":0,"departure":{"stop":"Gimhae Airport","time":"7:10"},"arrival":{"stop":"Haeundae/Gijang","time":"9:00"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"7:10"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":1,"departure":{"stop":"Gimhae Airport","time":"7:50"},"arrival":{"stop":"Haeundae/Gijang","time":"9:40"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"7:50"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":2,"departure":{"stop":"Gimhae Airport","time":"8:30"},"arrival":{"stop":"Haeundae/Gijang","time":"10:20"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"8:30"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":3,"departure":{"stop":"Gimhae Airport","time":"9:10"},"arrival":{"stop":"Haeundae/Gijang","time":"11:00"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"9:10"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":4,"departure":{"stop":"Gimhae Airport","time":"10:10"},"arrival":{"stop":"Haeundae/Gijang","time":"12:00"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"10:10"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":5,"departure":{"stop":"Gimhae Airport","time":"10:50"},"arrival":{"stop":"Haeundae/Gijang","time":"12:40"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"10:50"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":6,"departure":{"stop":"Gimhae Airport","time":"11:30"},"arrival":{"stop":"Haeundae/Gijang","time":"13:20"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"11:30"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":7,"departure":{"stop":"Gimhae Airport","time":"12:10"},"arrival":{"stop":"Haeundae/Gijang","time":"14:00"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"12:10"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":8,"departure":{"stop":"Gimhae Airport","time":"12:30"},"arrival":{"stop":"Haeundae/Gijang","time":"14:20"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"12:30"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":9,"departure":{"stop":"Gimhae Airport","time":"13:10"},"arrival":{"stop":"Haeundae/Gijang","time":"15:00"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"13:10"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":10,"departure":{"stop":"Gimhae Airport","time":"14:10"},"arrival":{"stop":"Haeundae/Gijang","time":"16:00"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"14:10"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":11,"departure":{"stop":"Gimhae Airport","time":"15:30"},"arrival":{"stop":"Haeundae/Gijang","time":"17:20"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"15:30"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":12,"departure":{"stop":"Gimhae Airport","time":"16:10"},"arrival":{"stop":"Haeundae/Gijang","time":"18:00"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"16:10"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":13,"departure":{"stop":"Gimhae Airport","time":"16:50"},"arrival":{"stop":"Haeundae/Gijang","time":"18:40"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"16:50"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":14,"departure":{"stop":"Gimhae Airport","time":"17:10"},"arrival":{"stop":"Haeundae/Gijang","time":"19:00"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"17:10"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":15,"departure":{"stop":"Gimhae Airport","time":"17:30"},"arrival":{"stop":"Haeundae/Gijang","time":"19:20"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"17:30"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":16,"departure":{"stop":"Gimhae Airport","time":"18:00"},"arrival":{"stop":"Haeundae/Gijang","time":"19:50"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"18:00"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":17,"departure":{"stop":"Gimhae Airport","time":"18:50"},"arrival":{"stop":"Haeundae/Gijang","time":"20:40"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"18:50"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":18,"departure":{"stop":"Gimhae Airport","time":"19:30"},"arrival":{"stop":"Haeundae/Gijang","time":"21:20"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"19:30"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":19,"departure":{"stop":"Gimhae Airport","time":"20:30"},"arrival":{"stop":"Haeundae/Gijang","time":"22:20"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"20:30"}]}
|
||||
{"route":"Gimhae Airport (International) -> Haeundae/Gijang","page":4,"direction":"from_airport","trip_index":20,"departure":{"stop":"Gimhae Airport","time":"21:40"},"arrival":{"stop":"Haeundae/Gijang","time":"23:30"},"arrival_note":"estimated: departure + 110 min total journey (source: airportkobus.com)","all_stops":[{"stop":"해운대 운행시간(배차 횟수)-하행","time":"21:40"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Seomyeon/Bujeon","page":5,"direction":"from_airport","trip_index":0,"departure":{"stop":"Gimhae Airport","time":"7:25"},"arrival":{"stop":"Seomyeon/Bujeon","time":"8:15"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"7:25"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Seomyeon/Bujeon","page":5,"direction":"from_airport","trip_index":1,"departure":{"stop":"Gimhae Airport","time":"8:45"},"arrival":{"stop":"Seomyeon/Bujeon","time":"9:35"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"8:45"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Seomyeon/Bujeon","page":5,"direction":"from_airport","trip_index":2,"departure":{"stop":"Gimhae Airport","time":"10:05"},"arrival":{"stop":"Seomyeon/Bujeon","time":"10:55"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"10:05"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Seomyeon/Bujeon","page":5,"direction":"from_airport","trip_index":3,"departure":{"stop":"Gimhae Airport","time":"11:25"},"arrival":{"stop":"Seomyeon/Bujeon","time":"12:15"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"11:25"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Seomyeon/Bujeon","page":5,"direction":"from_airport","trip_index":4,"departure":{"stop":"Gimhae Airport","time":"12:45"},"arrival":{"stop":"Seomyeon/Bujeon","time":"13:35"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"12:45"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Seomyeon/Bujeon","page":5,"direction":"from_airport","trip_index":5,"departure":{"stop":"Gimhae Airport","time":"14:05"},"arrival":{"stop":"Seomyeon/Bujeon","time":"14:55"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"14:05"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Seomyeon/Bujeon","page":5,"direction":"from_airport","trip_index":6,"departure":{"stop":"Gimhae Airport","time":"15:25"},"arrival":{"stop":"Seomyeon/Bujeon","time":"16:15"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"15:25"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Seomyeon/Bujeon","page":5,"direction":"from_airport","trip_index":7,"departure":{"stop":"Gimhae Airport","time":"16:45"},"arrival":{"stop":"Seomyeon/Bujeon","time":"17:35"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"16:45"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Seomyeon/Bujeon","page":5,"direction":"from_airport","trip_index":8,"departure":{"stop":"Gimhae Airport","time":"17:55"},"arrival":{"stop":"Seomyeon/Bujeon","time":"18:45"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"17:55"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Seomyeon/Bujeon","page":5,"direction":"from_airport","trip_index":9,"departure":{"stop":"Gimhae Airport","time":"19:05"},"arrival":{"stop":"Seomyeon/Bujeon","time":"19:55"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"19:05"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Seomyeon/Bujeon","page":5,"direction":"from_airport","trip_index":10,"departure":{"stop":"Gimhae Airport","time":"20:25"},"arrival":{"stop":"Seomyeon/Bujeon","time":"21:15"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"20:25"}]}
|
||||
{"route":"Gimhae Airport (Domestic) -> Seomyeon/Bujeon","page":5,"direction":"from_airport","trip_index":11,"departure":{"stop":"Gimhae Airport","time":"21:35"},"arrival":{"stop":"Seomyeon/Bujeon","time":"22:25"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"21:35"}]}
|
||||
{"route":"Gimhae Airport (International) -> Seomyeon/Bujeon","page":6,"direction":"from_airport","trip_index":0,"departure":{"stop":"Gimhae Airport","time":"7:20"},"arrival":{"stop":"Seomyeon/Bujeon","time":"8:10"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"7:20"}]}
|
||||
{"route":"Gimhae Airport (International) -> Seomyeon/Bujeon","page":6,"direction":"from_airport","trip_index":1,"departure":{"stop":"Gimhae Airport","time":"8:40"},"arrival":{"stop":"Seomyeon/Bujeon","time":"9:30"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"8:40"}]}
|
||||
{"route":"Gimhae Airport (International) -> Seomyeon/Bujeon","page":6,"direction":"from_airport","trip_index":2,"departure":{"stop":"Gimhae Airport","time":"10:00"},"arrival":{"stop":"Seomyeon/Bujeon","time":"10:50"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"10:00"}]}
|
||||
{"route":"Gimhae Airport (International) -> Seomyeon/Bujeon","page":6,"direction":"from_airport","trip_index":3,"departure":{"stop":"Gimhae Airport","time":"11:20"},"arrival":{"stop":"Seomyeon/Bujeon","time":"12:10"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"11:20"}]}
|
||||
{"route":"Gimhae Airport (International) -> Seomyeon/Bujeon","page":6,"direction":"from_airport","trip_index":4,"departure":{"stop":"Gimhae Airport","time":"12:40"},"arrival":{"stop":"Seomyeon/Bujeon","time":"13:30"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"12:40"}]}
|
||||
{"route":"Gimhae Airport (International) -> Seomyeon/Bujeon","page":6,"direction":"from_airport","trip_index":5,"departure":{"stop":"Gimhae Airport","time":"14:00"},"arrival":{"stop":"Seomyeon/Bujeon","time":"14:50"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"14:00"}]}
|
||||
{"route":"Gimhae Airport (International) -> Seomyeon/Bujeon","page":6,"direction":"from_airport","trip_index":6,"departure":{"stop":"Gimhae Airport","time":"15:20"},"arrival":{"stop":"Seomyeon/Bujeon","time":"16:10"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"15:20"}]}
|
||||
{"route":"Gimhae Airport (International) -> Seomyeon/Bujeon","page":6,"direction":"from_airport","trip_index":7,"departure":{"stop":"Gimhae Airport","time":"16:40"},"arrival":{"stop":"Seomyeon/Bujeon","time":"17:30"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"16:40"}]}
|
||||
{"route":"Gimhae Airport (International) -> Seomyeon/Bujeon","page":6,"direction":"from_airport","trip_index":8,"departure":{"stop":"Gimhae Airport","time":"17:50"},"arrival":{"stop":"Seomyeon/Bujeon","time":"18:40"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"17:50"}]}
|
||||
{"route":"Gimhae Airport (International) -> Seomyeon/Bujeon","page":6,"direction":"from_airport","trip_index":9,"departure":{"stop":"Gimhae Airport","time":"19:00"},"arrival":{"stop":"Seomyeon/Bujeon","time":"19:50"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"19:00"}]}
|
||||
{"route":"Gimhae Airport (International) -> Seomyeon/Bujeon","page":6,"direction":"from_airport","trip_index":10,"departure":{"stop":"Gimhae Airport","time":"20:20"},"arrival":{"stop":"Seomyeon/Bujeon","time":"21:10"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"20:20"}]}
|
||||
{"route":"Gimhae Airport (International) -> Seomyeon/Bujeon","page":6,"direction":"from_airport","trip_index":11,"departure":{"stop":"Gimhae Airport","time":"21:30"},"arrival":{"stop":"Seomyeon/Bujeon","time":"22:20"},"arrival_note":"estimated: departure + 50 min total journey (source: airportkobus.com)","all_stops":[{"stop":"서면, 부전 운행시간(배차 횟수)-하행","time":"21:30"}]}
|
||||
23
references/stops-index.md
Normal file
23
references/stops-index.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# Stop Index by Route
|
||||
|
||||
## Line 1 — Haeundae/Gijang (해운대/기장)
|
||||
|
||||
**To Airport (page 1):** 반얀트리, 아난티코브, 오시리아, 장산역, 해운대온천사거리, 해운대해수욕장, 동백섬입구, 한화리조트해운대, 파크하얏트부산, 요트경기장, 벡스코, 신세계센텀시티, 상수도남부사업소
|
||||
|
||||
**From Airport (pages 3–4):** No per-stop data — only airport departure times. Page 3 = Domestic terminal, Page 4 = International terminal.
|
||||
|
||||
---
|
||||
|
||||
## Line 2 — Seomyeon/Bujeon (서면/부전)
|
||||
|
||||
**To Airport (page 2):** 부전시장, 부전역, 서면/롯데호텔백화점, 동의대역, 주례역
|
||||
|
||||
**From Airport (pages 5–6):** No per-stop data — only airport departure times. Page 5 = Domestic terminal, Page 6 = International terminal.
|
||||
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
||||
- All neighborhood stops (with individual timetables) belong to **to_airport** trips only.
|
||||
- For **from_airport** queries, identify the line based on the neighborhood the user mentions (Haeundae/Gijang area → Line 1; Seomyeon/Bujeon area → Line 2), then show airport departure times for that line.
|
||||
- Stop names use Korean. Partial/substring matching works — "한화리조트" matches "한화리조트해운대".
|
||||
149
scripts/query.js
Normal file
149
scripts/query.js
Normal file
@@ -0,0 +1,149 @@
|
||||
#!/usr/bin/env node
|
||||
/**
|
||||
* Busan Airport Limousine Schedule Query Tool
|
||||
*
|
||||
* Usage:
|
||||
* node query.js <stop-name> # to-airport + from-airport for that stop's line
|
||||
* node query.js <stop-name> --to # to-airport only
|
||||
* node query.js <stop-name> --from # from-airport only
|
||||
* node query.js --from-airport --line 1 # all from-airport departures, line 1
|
||||
* node query.js --from-airport --line 2 # all from-airport departures, line 2
|
||||
*/
|
||||
|
||||
import { readFileSync } from 'node:fs';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import { dirname, join } from 'node:path';
|
||||
|
||||
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||
const DATA = join(__dirname, '../data/schedule.jsonl');
|
||||
|
||||
const trips = readFileSync(DATA, 'utf8')
|
||||
.trim().split('\n')
|
||||
.map(l => JSON.parse(l));
|
||||
|
||||
const args = process.argv.slice(2);
|
||||
if (args.length === 0) {
|
||||
console.error('Usage: node query.js <stop-name>');
|
||||
console.error(' node query.js --from-airport --line 1|2');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const fromAirportFlag = args.includes('--from-airport');
|
||||
const lineFlag = args.includes('--line') ? args[args.indexOf('--line') + 1] : null;
|
||||
const toOnly = args.includes('--to');
|
||||
const fromOnly = args.includes('--from');
|
||||
const stopQuery = args.find(a => !a.startsWith('--') && a !== lineFlag) || null;
|
||||
|
||||
// ── Helper ──────────────────────────────────────────────────────────────────
|
||||
|
||||
function pad(s, n) {
|
||||
return String(s).padEnd(n);
|
||||
}
|
||||
|
||||
function header(title) {
|
||||
console.log(`\n${title}`);
|
||||
console.log('─'.repeat(title.length));
|
||||
}
|
||||
|
||||
// ── From-airport by line (--from-airport --line N) ──────────────────────────
|
||||
|
||||
if (fromAirportFlag && lineFlag) {
|
||||
const line = parseInt(lineFlag);
|
||||
if (line !== 1 && line !== 2) {
|
||||
console.error('--line must be 1 or 2'); process.exit(1);
|
||||
}
|
||||
// Line 1 = pages 3–4, Line 2 = pages 5–6
|
||||
const pages = line === 1 ? [3, 4] : [5, 6];
|
||||
const termLabels = { 3: 'Domestic', 4: 'International', 5: 'Domestic', 6: 'International' };
|
||||
const dest = line === 1 ? 'Haeundae/Gijang' : 'Seomyeon/Bujeon';
|
||||
|
||||
header(`[From Airport] Line ${line}: Gimhae Airport → ${dest}`);
|
||||
console.log(`${'Airport dep'.padEnd(14)} ${'Est. arrival'.padEnd(14)} Terminal`);
|
||||
console.log(`${'─'.repeat(14)} ${'─'.repeat(14)} ─────────────`);
|
||||
|
||||
for (const page of pages) {
|
||||
const pageTrips = trips.filter(t => t.page === page).sort((a, b) => {
|
||||
const [ah, am] = a.departure.time.split(':').map(Number);
|
||||
const [bh, bm] = b.departure.time.split(':').map(Number);
|
||||
return (ah * 60 + am) - (bh * 60 + bm);
|
||||
});
|
||||
for (const t of pageTrips) {
|
||||
console.log(`${pad(t.departure.time, 14)} ${pad(t.arrival.time, 14)} ${termLabels[page]}`);
|
||||
}
|
||||
}
|
||||
console.log('\n(arrival times estimated — see arrival_note in schedule.jsonl)');
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
// ── Stop lookup ──────────────────────────────────────────────────────────────
|
||||
|
||||
if (!stopQuery) {
|
||||
console.error('Provide a stop name or use --from-airport --line 1|2');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// Find all to-airport trips where the stop appears (partial match)
|
||||
const matchedTrips = trips.filter(t =>
|
||||
t.direction === 'to_airport' &&
|
||||
t.all_stops.some(s => s.stop.includes(stopQuery))
|
||||
);
|
||||
|
||||
if (matchedTrips.length === 0) {
|
||||
console.error(`No stops found matching "${stopQuery}"`);
|
||||
console.error('Line 1 stops: 반얀트리 아난티코브 오시리아 장산역 해운대온천사거리 해운대해수욕장 동백섬입구 한화리조트해운대 파크하얏트부산 요트경기장 벡스코 신세계센텀시티 상수도남부사업소');
|
||||
console.error('Line 2 stops: 부전시장 부전역 서면/롯데호텔백화점 동의대역 주례역');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// Determine which line this stop belongs to
|
||||
const line = matchedTrips[0].page === 1 ? 1 : 2;
|
||||
const dest = line === 1 ? 'Haeundae/Gijang' : 'Seomyeon/Bujeon';
|
||||
|
||||
// Find the canonical matched stop name
|
||||
const matchedStopName = matchedTrips[0].all_stops.find(s => s.stop.includes(stopQuery)).stop;
|
||||
|
||||
// ── To-airport section ───────────────────────────────────────────────────────
|
||||
|
||||
if (!fromOnly) {
|
||||
const sorted = [...matchedTrips].sort((a, b) => {
|
||||
const sa = a.all_stops.find(s => s.stop.includes(stopQuery));
|
||||
const sb = b.all_stops.find(s => s.stop.includes(stopQuery));
|
||||
const [ah, am] = sa.time.split(':').map(Number);
|
||||
const [bh, bm] = sb.time.split(':').map(Number);
|
||||
return (ah * 60 + am) - (bh * 60 + bm);
|
||||
});
|
||||
|
||||
header(`[To Airport] Line ${line}: ${matchedStopName} → Gimhae Airport`);
|
||||
console.log(`${'Dep'.padEnd(10)} ${'Airport arr (est)'.padEnd(18)}`);
|
||||
console.log(`${'─'.repeat(10)} ${'─'.repeat(18)}`);
|
||||
|
||||
for (const t of sorted) {
|
||||
const stopEntry = t.all_stops.find(s => s.stop.includes(stopQuery));
|
||||
console.log(`${pad(stopEntry.time, 10)} ${t.arrival.time}`);
|
||||
}
|
||||
}
|
||||
|
||||
// ── From-airport section ─────────────────────────────────────────────────────
|
||||
|
||||
if (!toOnly) {
|
||||
const pages = line === 1 ? [3, 4] : [5, 6];
|
||||
const termLabels = { 3: 'Dom', 4: 'Int\'l', 5: 'Dom', 6: 'Int\'l' };
|
||||
|
||||
header(`[From Airport] Line ${line}: Gimhae Airport → ${dest}`);
|
||||
console.log(`${'Airport dep'.padEnd(14)} ${'Est. arrival'.padEnd(14)} Terminal`);
|
||||
console.log(`${'─'.repeat(14)} ${'─'.repeat(14)} ────────`);
|
||||
|
||||
const fromTrips = trips
|
||||
.filter(t => pages.includes(t.page))
|
||||
.sort((a, b) => {
|
||||
const [ah, am] = a.departure.time.split(':').map(Number);
|
||||
const [bh, bm] = b.departure.time.split(':').map(Number);
|
||||
return (ah * 60 + am) - (bh * 60 + bm);
|
||||
});
|
||||
|
||||
for (const t of fromTrips) {
|
||||
console.log(`${pad(t.departure.time, 14)} ${pad(t.arrival.time, 14)} ${termLabels[t.page]}`);
|
||||
}
|
||||
|
||||
console.log('\n(arrival times estimated)');
|
||||
}
|
||||
Reference in New Issue
Block a user