turkiyem 1.5.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +447 -89
- package/package.json +8 -3
- package/src/commands/deprem.js +44 -6
- package/src/commands/doviz.js +26 -0
- package/src/commands/durak.js +168 -0
- package/src/commands/hat.js +321 -24
- package/src/commands/menu.js +86 -0
- package/src/commands/sehir.js +5 -1
- package/src/index.js +18 -1
- package/src/services/adanaService.js +122 -0
- package/src/services/antalyaService.js +114 -0
- package/src/services/bursaService.js +78 -0
- package/src/services/izmirService.js +253 -0
- package/src/services/tcmbService.js +47 -0
- package/src/utils/banner.js +13 -8
- package/src/utils/display.js +289 -1
package/README.md
CHANGED
|
@@ -1,175 +1,533 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://img.shields.io/npm/v/turkiyem?style=for-the-badge&logo=npm&logoColor=white&color=CB3837" alt="npm version" />
|
|
3
|
+
<img src="https://img.shields.io/badge/node-%3E%3D20-339933?style=for-the-badge&logo=node.js&logoColor=white" alt="node" />
|
|
4
|
+
<img src="https://img.shields.io/npm/l/turkiyem?style=for-the-badge&color=blue" alt="license" />
|
|
5
|
+
<img src="https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey?style=for-the-badge" alt="platform" />
|
|
6
|
+
</p>
|
|
7
|
+
|
|
8
|
+
<h1 align="center">🇹🇷 turkiyem</h1>
|
|
9
|
+
|
|
10
|
+
<p align="center">
|
|
11
|
+
<strong>Türkiye'nin en kapsamlı terminal tabanlı toplu taşıma, deprem, hava durumu ve ekonomi CLI aracı.</strong>
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
<p align="center">
|
|
15
|
+
6 şehrin toplu taşıma verileri, AFAD deprem bilgileri, Open-Meteo hava durumu, TCMB döviz kurları — hepsi tek bir <code>npm</code> paketi içinde.
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 📖 İçindekiler
|
|
21
|
+
|
|
22
|
+
- [Neden turkiyem?](#-neden-turkiyem)
|
|
23
|
+
- [Desteklenen Şehirler](#-desteklenen-şehirler)
|
|
24
|
+
- [Özellikler](#-özellikler)
|
|
25
|
+
- [Kurulum](#-kurulum)
|
|
26
|
+
- [Hızlı Başlangıç](#-hızlı-başlangıç)
|
|
27
|
+
- [Komut Referansı](#-komut-referansı)
|
|
28
|
+
- [Şehir Seçimi](#şehir-seçimi)
|
|
29
|
+
- [Hat Sorgulama](#hat-sorgulama)
|
|
30
|
+
- [Durak Sorgulama](#durak-sorgulama)
|
|
31
|
+
- [Canlı Konum](#canlı-konum)
|
|
32
|
+
- [Deprem (AFAD)](#deprem-afad)
|
|
33
|
+
- [Hava Durumu & Kalite](#hava-durumu--kalite)
|
|
34
|
+
- [Döviz Kurları (TCMB)](#döviz-kurları-tcmb)
|
|
35
|
+
- [Yardımcı Komutlar](#yardımcı-komutlar)
|
|
36
|
+
- [Veri Kaynakları & Lisanslar](#-veri-kaynakları--lisanslar)
|
|
37
|
+
- [Mimari & Proje Yapısı](#-mimari--proje-yapısı)
|
|
38
|
+
- [Yapılandırma & Önbellek](#-yapılandırma--önbellek)
|
|
39
|
+
- [Hata Yönetimi & Güvenilirlik](#-hata-yönetimi--güvenilirlik)
|
|
40
|
+
- [Geliştirme](#-geliştirme)
|
|
41
|
+
- [Yayınlama (npm)](#-yayınlama-npm)
|
|
42
|
+
- [Yol Haritası](#-yol-haritası)
|
|
43
|
+
- [Sık Karşılaşılan Sorunlar](#-sık-karşılaşılan-sorunlar)
|
|
44
|
+
- [Katkıda Bulunma](#-katkıda-bulunma)
|
|
45
|
+
- [Lisans](#-lisans)
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 🎯 Neden turkiyem?
|
|
50
|
+
|
|
51
|
+
Türkiye'de toplu taşıma verileri onlarca farklı belediye sitesi, API ve veri formatına dağılmış durumda. **turkiyem**, bu dağınık verileri tek bir CLI arayüzü altında birleştirir:
|
|
52
|
+
|
|
53
|
+
- 🔎 Tarayıcı açmadan **hat ve durak sorgulama**
|
|
54
|
+
- 📍 Terminal üzerinden **canlı araç takibi** (İstanbul, Bursa)
|
|
55
|
+
- 🌍 **Deprem bildirimleri** renkli uyarılarla
|
|
56
|
+
- ⛅ **Hava durumu** ve **hava kalitesi** API key gerektirmeden
|
|
57
|
+
- 💱 **TCMB döviz kurları** tek komutla
|
|
58
|
+
- 🖥️ Sunucu, Raspberry Pi veya herhangi bir terminal ortamında çalışır
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## 🏙️ Desteklenen Şehirler
|
|
63
|
+
|
|
64
|
+
| Şehir | Kaynak | Hat | Durak | Canlı Konum | Sefer Saatleri |
|
|
65
|
+
|-------|--------|:---:|:-----:|:-----------:|:--------------:|
|
|
66
|
+
| **Ankara** | EGO Genel Müdürlüğü | ✅ | — | — | ✅ |
|
|
67
|
+
| **İstanbul** | IETT (GTFS + SOAP) | ✅ | — | ✅ | ✅ |
|
|
68
|
+
| **Adana** | Adana Büyükşehir Belediyesi | ✅ | ✅ | — | ✅ |
|
|
69
|
+
| **Antalya** | Antalya Büyükşehir Belediyesi | ✅ | ✅ | — | ✅ |
|
|
70
|
+
| **Bursa** | Burulaş (Bursakart API) | ✅ | ✅ | ✅ | ✅ |
|
|
71
|
+
| **İzmir** | ESHOT (GTFS Açık Veri) | ✅ | ✅ | — | ✅ |
|
|
72
|
+
|
|
73
|
+
> Yeni şehir entegrasyonları için [yol haritasına](#-yol-haritası) bakın.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## ✨ Özellikler
|
|
78
|
+
|
|
79
|
+
### 🚌 Toplu Taşıma (6 Şehir)
|
|
80
|
+
- Hat numarası veya adıyla arama
|
|
81
|
+
- Durak listesi ve sıralı güzergah görüntüleme
|
|
82
|
+
- Sefer saatleri (gün tipi ve yöne göre)
|
|
83
|
+
- Durak bazlı geçen hat ve zaman sorgulama
|
|
84
|
+
- Birden fazla sonuçta interaktif seçim menüsü
|
|
85
|
+
|
|
86
|
+
### 📍 Canlı Araç Takibi
|
|
87
|
+
- **İstanbul (IETT):** Anlık araç konumu, yön, yakın durak bilgisi
|
|
88
|
+
- **Bursa (Burulaş):** Plaka, hız, doluluk oranı gösterimi
|
|
89
|
+
|
|
90
|
+
### 🌍 Deprem Bilgileri (AFAD)
|
|
91
|
+
- Son 24 saat / Son 7 gün deprem listesi
|
|
92
|
+
- Büyüklüğe göre filtreleme (`turkiyem deprem buyukluk 4.0`)
|
|
93
|
+
- ≥ 4.0 büyüklüğündeki depremler için kırmızı uyarı kutusu
|
|
94
|
+
- Sayfalı listeleme (15'erli)
|
|
95
|
+
|
|
96
|
+
### ⛅ Hava Durumu & Kalite (Open-Meteo)
|
|
97
|
+
- Güncel sıcaklık, rüzgar, nem
|
|
98
|
+
- 1-7 günlük saatlik tahmin + ASCII sıcaklık grafiği
|
|
99
|
+
- Hava kalitesi: PM10, PM2.5, CO, NO₂
|
|
100
|
+
- Şehir adı veya koordinat ile sorgulama
|
|
101
|
+
- **API key gerektirmez**
|
|
102
|
+
|
|
103
|
+
### 💱 Ekonomi (TCMB)
|
|
104
|
+
- Güncel döviz kurları (alış/satış)
|
|
105
|
+
- Popüler kurlar veya tüm kurlar gösterimi
|
|
106
|
+
- Doğrudan TCMB XML'den çekim
|
|
107
|
+
|
|
108
|
+
### 🖥️ CLI Deneyimi
|
|
109
|
+
- Renkli ve tablo formatında çıktı (`cli-table3`, `chalk`)
|
|
110
|
+
- Komut bazlı spinner (`ora`)
|
|
111
|
+
- İnteraktif menü sistemi (argümansız `turkiyem` çalıştırıldığında)
|
|
112
|
+
- ASCII banner + gradient başlık
|
|
113
|
+
- Global şehir yapılandırması (`~/.turkiyem/config.json`)
|
|
114
|
+
- Bellek içi önbellek (`node-cache`) ile hızlı tekrar sorgulama
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## 📦 Kurulum
|
|
119
|
+
|
|
120
|
+
### Global Kurulum (önerilen)
|
|
2
121
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
Open-Meteo ile API key gerektirmeden guncel hava, saatlik tahmin ve hava kalitesi sorgulayabilirsiniz.
|
|
122
|
+
```bash
|
|
123
|
+
npm install -g turkiyem
|
|
124
|
+
```
|
|
7
125
|
|
|
8
|
-
|
|
126
|
+
Kurulumdan sonra herhangi bir terminalde:
|
|
9
127
|
|
|
10
128
|
```bash
|
|
11
|
-
|
|
129
|
+
turkiyem
|
|
12
130
|
```
|
|
13
131
|
|
|
14
|
-
|
|
132
|
+
### Yerel Geliştirme
|
|
15
133
|
|
|
16
134
|
```bash
|
|
17
|
-
git clone
|
|
18
|
-
cd
|
|
135
|
+
git clone https://github.com/<kullanici>/turkiyem.git
|
|
136
|
+
cd turkiyem
|
|
19
137
|
npm install
|
|
20
|
-
npm link
|
|
138
|
+
npm link # Global olarak `turkiyem` komutunu aktif eder
|
|
21
139
|
```
|
|
22
140
|
|
|
23
|
-
|
|
141
|
+
### Gereksinimler
|
|
24
142
|
|
|
25
|
-
|
|
143
|
+
| Gereksinim | Minimum Versiyon |
|
|
144
|
+
|-----------|:----------------:|
|
|
145
|
+
| Node.js | `≥ 20.0.0` |
|
|
146
|
+
| npm | `≥ 9.0.0` |
|
|
26
147
|
|
|
27
|
-
|
|
148
|
+
---
|
|
28
149
|
|
|
29
|
-
|
|
150
|
+
## 🚀 Hızlı Başlangıç
|
|
30
151
|
|
|
31
152
|
```bash
|
|
153
|
+
# 1. İnteraktif menüyü aç
|
|
32
154
|
turkiyem
|
|
33
|
-
|
|
155
|
+
|
|
156
|
+
# 2. Şehir seç
|
|
157
|
+
turkiyem sehir istanbul
|
|
158
|
+
|
|
159
|
+
# 3. Hat sorgula
|
|
160
|
+
turkiyem hat 34AS
|
|
161
|
+
|
|
162
|
+
# 4. Deprem kontrol
|
|
163
|
+
turkiyem deprem son24
|
|
164
|
+
|
|
165
|
+
# 5. Hava durumu
|
|
166
|
+
turkiyem hava guncel
|
|
167
|
+
|
|
168
|
+
# 6. Döviz kurları
|
|
169
|
+
turkiyem doviz
|
|
34
170
|
```
|
|
35
171
|
|
|
36
|
-
|
|
172
|
+
---
|
|
37
173
|
|
|
38
|
-
|
|
174
|
+
## 📚 Komut Referansı
|
|
175
|
+
|
|
176
|
+
### Şehir Seçimi
|
|
39
177
|
|
|
40
178
|
```bash
|
|
41
|
-
turkiyem sehir
|
|
42
|
-
turkiyem sehir
|
|
179
|
+
turkiyem sehir # Mevcut seçili şehri göster
|
|
180
|
+
turkiyem sehir ankara # Şehri Ankara olarak ayarla
|
|
181
|
+
turkiyem sehir istanbul # Şehri İstanbul olarak ayarla
|
|
182
|
+
turkiyem sehir adana # Şehri Adana olarak ayarla
|
|
183
|
+
turkiyem sehir antalya # Şehri Antalya olarak ayarla
|
|
184
|
+
turkiyem sehir bursa # Şehri Bursa olarak ayarla
|
|
185
|
+
turkiyem sehir izmir # Şehri İzmir olarak ayarla
|
|
43
186
|
```
|
|
44
187
|
|
|
45
|
-
|
|
188
|
+
> 💡 `hat` ve `durak` komutları her zaman seçili şehre göre çalışır.
|
|
46
189
|
|
|
47
|
-
|
|
190
|
+
### Hat Sorgulama
|
|
48
191
|
|
|
49
192
|
```bash
|
|
50
|
-
# Ankara (EGO)
|
|
193
|
+
# Ankara (EGO) — Hat bilgisi + gün tipine göre sefer saatleri
|
|
51
194
|
turkiyem sehir ankara
|
|
52
195
|
turkiyem hat 340
|
|
53
196
|
|
|
54
|
-
#
|
|
197
|
+
# İstanbul (IETT) — GTFS özeti + SOAP planlanan saatler
|
|
55
198
|
turkiyem sehir istanbul
|
|
56
199
|
turkiyem hat 34AS
|
|
57
200
|
|
|
58
|
-
#
|
|
59
|
-
turkiyem
|
|
201
|
+
# Adana — Hat bilgisi + sefer saatleri + durak listesi
|
|
202
|
+
turkiyem sehir adana
|
|
203
|
+
turkiyem hat KM02
|
|
60
204
|
|
|
61
|
-
#
|
|
62
|
-
turkiyem
|
|
205
|
+
# Antalya — Hat güzergahı + gün ve yön bazlı tarife
|
|
206
|
+
turkiyem sehir antalya
|
|
207
|
+
turkiyem hat KC06
|
|
208
|
+
|
|
209
|
+
# Bursa (Burulaş) — Hat durakları + yön seçimi
|
|
210
|
+
turkiyem sehir bursa
|
|
211
|
+
turkiyem hat 17
|
|
212
|
+
|
|
213
|
+
# İzmir (ESHOT GTFS) — Hat durakları + sefer saatleri
|
|
214
|
+
turkiyem sehir izmir
|
|
215
|
+
turkiyem hat 34
|
|
63
216
|
```
|
|
64
217
|
|
|
65
|
-
|
|
66
|
-
Istanbul icin once IETT SOAP Planlanan Sefer Saati servisi ile kalkis saatleri getirilir.
|
|
67
|
-
SOAP servisi gecici olarak erisilemezse otomatik olarak GTFS ozet verisine dusulur.
|
|
218
|
+
> Birden fazla eşleşen hat varsa interaktif bir seçim menüsü sunulur.
|
|
68
219
|
|
|
69
|
-
|
|
70
|
-
- Hat bilgileri (GTFS)
|
|
71
|
-
- Planlanan sefer saatleri (SOAP)
|
|
72
|
-
- SOAP hatasinda: yalnizca GTFS ozet + uyari
|
|
220
|
+
### Durak Sorgulama
|
|
73
221
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
222
|
+
```bash
|
|
223
|
+
# Adana — Durak detayı + geçen hatlar
|
|
224
|
+
turkiyem sehir adana
|
|
225
|
+
turkiyem durak 43681
|
|
78
226
|
|
|
79
|
-
|
|
227
|
+
# Antalya — Durak tarifesi (gün ve yön seçimli)
|
|
228
|
+
turkiyem sehir antalya
|
|
229
|
+
turkiyem durak 1234
|
|
80
230
|
|
|
81
|
-
|
|
231
|
+
# Bursa — Durağa yaklaşan araçlar ve kalan süre
|
|
232
|
+
turkiyem sehir bursa
|
|
233
|
+
turkiyem durak 5678
|
|
82
234
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
turkiyem
|
|
235
|
+
# İzmir — Durak araması + geçecek hatlar ve saatler
|
|
236
|
+
turkiyem sehir izmir
|
|
237
|
+
turkiyem durak konak
|
|
238
|
+
```
|
|
86
239
|
|
|
87
|
-
|
|
88
|
-
turkiyem deprem 7gun
|
|
240
|
+
### Canlı Konum
|
|
89
241
|
|
|
90
|
-
|
|
91
|
-
|
|
242
|
+
```bash
|
|
243
|
+
# İstanbul (IETT) — Anlık araç konumları
|
|
244
|
+
turkiyem sehir istanbul
|
|
245
|
+
turkiyem hat canli 34AS # Özet (aktif araç sayısı, yön dağılımı)
|
|
246
|
+
turkiyem hat canli 34AS --detay # Detay (araç bazlı konum, yakın durak)
|
|
247
|
+
|
|
248
|
+
# Bursa (Burulaş) — Anlık araç bilgileri
|
|
249
|
+
turkiyem sehir bursa
|
|
250
|
+
turkiyem hat canli 17 # Plaka, hız, doluluk oranı
|
|
92
251
|
```
|
|
93
252
|
|
|
94
|
-
|
|
253
|
+
### Deprem (AFAD)
|
|
95
254
|
|
|
96
|
-
|
|
255
|
+
```bash
|
|
256
|
+
turkiyem deprem son24 # Son 24 saat depremleri
|
|
257
|
+
turkiyem deprem 7gun # Son 7 gün depremleri
|
|
258
|
+
turkiyem deprem buyukluk 4.0 # ≥ 4.0 büyüklüğündeki depremler
|
|
259
|
+
```
|
|
97
260
|
|
|
98
|
-
|
|
261
|
+
> ⚠️ Büyüklüğü ≥ 4.0 olan depremler kırmızı uyarı kutusuyla vurgulanır.
|
|
262
|
+
|
|
263
|
+
### Hava Durumu & Kalite
|
|
99
264
|
|
|
100
265
|
```bash
|
|
101
|
-
#
|
|
102
|
-
turkiyem hava guncel
|
|
266
|
+
# Seçili şehir
|
|
267
|
+
turkiyem hava guncel # Güncel hava
|
|
268
|
+
turkiyem hava saatlik # 2 günlük saatlik tahmin
|
|
269
|
+
turkiyem hava kalite # Hava kalitesi (PM10, PM2.5, CO, NO₂)
|
|
103
270
|
|
|
104
|
-
#
|
|
271
|
+
# Şehir adıyla
|
|
105
272
|
turkiyem hava guncel istanbul
|
|
273
|
+
turkiyem hava saatlik ankara --gun 5 # 5 günlük saatlik tahmin
|
|
274
|
+
turkiyem hava kalite izmir
|
|
106
275
|
|
|
107
|
-
#
|
|
276
|
+
# Koordinatla
|
|
108
277
|
turkiyem hava guncel 41.0082,28.9784
|
|
278
|
+
```
|
|
109
279
|
|
|
110
|
-
|
|
111
|
-
|
|
280
|
+
### Döviz Kurları (TCMB)
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
turkiyem doviz # Popüler kurlar (USD, EUR, GBP vb.)
|
|
284
|
+
turkiyem doviz --tum # Tüm döviz kurları
|
|
285
|
+
```
|
|
112
286
|
|
|
113
|
-
|
|
114
|
-
turkiyem hava saatlik istanbul --gun 3
|
|
287
|
+
### Yardımcı Komutlar
|
|
115
288
|
|
|
116
|
-
|
|
117
|
-
turkiyem
|
|
289
|
+
```bash
|
|
290
|
+
turkiyem # İnteraktif menü
|
|
291
|
+
turkiyem help # Yardım
|
|
292
|
+
turkiyem --version # Versiyon bilgisi
|
|
293
|
+
turkiyem temizle # Cache ve yapılandırmayı sıfırla
|
|
118
294
|
```
|
|
119
295
|
|
|
120
|
-
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
## 📡 Veri Kaynakları & Lisanslar
|
|
299
|
+
|
|
300
|
+
| Kaynak | Veri Tipi | Şehir / Modül | Lisans |
|
|
301
|
+
|--------|-----------|---------------|--------|
|
|
302
|
+
| [AFAD](https://deprem.afad.gov.tr) | Deprem verileri | Tüm Türkiye | Kamu verisi |
|
|
303
|
+
| [EGO Genel Müdürlüğü](https://www.ego.gov.tr) | Hat / sefer saatleri | Ankara | Kamu verisi |
|
|
304
|
+
| [IETT GTFS](https://data.ibb.gov.tr) | Hat özeti / durak | İstanbul | İBB Açık Veri |
|
|
305
|
+
| [IETT SOAP](https://iett.istanbul) | Planlanan saatler, canlı konum | İstanbul | Kamu API |
|
|
306
|
+
| [Adana Büyükşehir](https://www.adana.bel.tr) | Hat / durak / tarife | Adana | Kamu verisi |
|
|
307
|
+
| [Antalya Büyükşehir](https://www.antalya.bel.tr) | Hat / tarife | Antalya | Kamu verisi |
|
|
308
|
+
| [Burulaş (Bursakart)](https://www.bursakart.com.tr) | Hat / durak / canlı konum | Bursa | Kamu API |
|
|
309
|
+
| [ESHOT GTFS](https://acikveri.bizizmir.com) | Hat / durak / sefer saatleri | İzmir | İzmir Açık Veri Lisansı |
|
|
310
|
+
| [Open-Meteo](https://open-meteo.com) | Hava durumu, hava kalitesi | Tüm dünya | CC BY 4.0 |
|
|
311
|
+
| [TCMB](https://www.tcmb.gov.tr) | Döviz kurları | — | Kamu verisi |
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## 🏗️ Mimari & Proje Yapısı
|
|
316
|
+
|
|
317
|
+
```text
|
|
318
|
+
turkiyem/
|
|
319
|
+
├── src/
|
|
320
|
+
│ ├── index.js # Commander.js giriş noktası
|
|
321
|
+
│ ├── commands/
|
|
322
|
+
│ │ ├── sehir.js # Şehir seçim komutu
|
|
323
|
+
│ │ ├── hat.js # Hat sorgulama (6 şehir)
|
|
324
|
+
│ │ ├── durak.js # Durak sorgulama (4 şehir)
|
|
325
|
+
│ │ ├── deprem.js # AFAD deprem komutları
|
|
326
|
+
│ │ ├── hava.js # Hava durumu komutları
|
|
327
|
+
│ │ ├── doviz.js # TCMB döviz komutu
|
|
328
|
+
│ │ ├── menu.js # İnteraktif menü sistemi
|
|
329
|
+
│ │ └── temizle.js # Cache temizleme
|
|
330
|
+
│ ├── services/
|
|
331
|
+
│ │ ├── egoService.js # Ankara EGO API
|
|
332
|
+
│ │ ├── iettService.js # İstanbul IETT GTFS + SOAP
|
|
333
|
+
│ │ ├── adanaService.js # Adana belediye scraping
|
|
334
|
+
│ │ ├── antalyaService.js # Antalya belediye API
|
|
335
|
+
│ │ ├── bursaService.js # Bursa Burulaş API
|
|
336
|
+
│ │ ├── izmirService.js # İzmir ESHOT GTFS
|
|
337
|
+
│ │ ├── afadService.js # AFAD deprem API
|
|
338
|
+
│ │ ├── weatherService.js # Open-Meteo API
|
|
339
|
+
│ │ └── tcmbService.js # TCMB döviz XML
|
|
340
|
+
│ └── utils/
|
|
341
|
+
│ ├── display.js # Tablo oluşturma fonksiyonları
|
|
342
|
+
│ ├── config.js # Yapılandırma yönetimi
|
|
343
|
+
│ ├── cache.js # Bellek içi önbellek
|
|
344
|
+
│ └── banner.js # ASCII banner & yardım
|
|
345
|
+
├── package.json
|
|
346
|
+
├── TODO.md # Yol haritası
|
|
347
|
+
└── README.md # Bu dosya
|
|
348
|
+
```
|
|
121
349
|
|
|
122
|
-
|
|
350
|
+
### Mimari Prensipler
|
|
123
351
|
|
|
124
|
-
|
|
125
|
-
|
|
352
|
+
| Prensip | Açıklama |
|
|
353
|
+
|---------|----------|
|
|
354
|
+
| **Katmanlı Ayrım** | `commands/` → kullanıcı etkileşimi, `services/` → veri çekimi, `utils/` → ortak yardımcılar |
|
|
355
|
+
| **Servis İzolasyonu** | Her şehir / veri kaynağı kendi servis dosyasında izole edilir |
|
|
356
|
+
| **Graceful Degradation** | SOAP başarısızsa GTFS'e fallback, ağ hatalarında kullanıcı dostu mesajlar |
|
|
357
|
+
| **Önbellek Stratejisi** | Bellek içi TTL tabanlı cache + disk tabanlı GTFS cache (haftalık) |
|
|
358
|
+
| **Sıfır Yapılandırma** | API key gerektirmez, kurun ve kullanın |
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
## ⚙️ Yapılandırma & Önbellek
|
|
363
|
+
|
|
364
|
+
### Yapılandırma Dosyası
|
|
365
|
+
|
|
366
|
+
```text
|
|
367
|
+
~/.turkiyem/config.json
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
```json
|
|
371
|
+
{
|
|
372
|
+
"city": "istanbul"
|
|
373
|
+
}
|
|
126
374
|
```
|
|
127
375
|
|
|
128
|
-
###
|
|
376
|
+
### Önbellek Katmanları
|
|
377
|
+
|
|
378
|
+
| Katman | Konum | Süre | Kullanım |
|
|
379
|
+
|--------|-------|------|----------|
|
|
380
|
+
| **Bellek İçi** | RAM (`node-cache`) | Kaynak bazlı TTL | API yanıtları (hava, deprem vb.) |
|
|
381
|
+
| **Disk (GTFS)** | `~/.turkiyem/izmir_gtfs/` | 7 gün | İzmir ESHOT GTFS ZIP (~18 MB) |
|
|
382
|
+
| **Disk (IETT)** | `~/.turkiyem/` | Oturum bazlı | İstanbul IETT GTFS |
|
|
383
|
+
|
|
384
|
+
### Temizleme
|
|
129
385
|
|
|
130
386
|
```bash
|
|
131
|
-
turkiyem
|
|
387
|
+
turkiyem temizle # Tüm cache ve yapılandırmayı sıfırlar
|
|
132
388
|
```
|
|
133
389
|
|
|
134
|
-
|
|
390
|
+
---
|
|
135
391
|
|
|
136
|
-
|
|
392
|
+
## 🛡️ Hata Yönetimi & Güvenilirlik
|
|
137
393
|
|
|
138
|
-
|
|
394
|
+
- **Global hata yakalama:** `unhandledRejection` ve `uncaughtException` dinleyicileri
|
|
395
|
+
- **API timeout:** Tüm dış isteklerde timeout + anlamlı hata mesajı
|
|
396
|
+
- **Fallback mekanizması:** IETT SOAP erişilemezse GTFS özetine otomatik geçiş
|
|
397
|
+
- **Ağ hataları:** Bağlantı sorunlarında kullanıcı dostu açıklamalar
|
|
398
|
+
- **Veri doğrulama:** Boş veya hatalı veri döndüğünde bilgilendirme mesajı
|
|
399
|
+
- **Spinner durumu:** Hata anında spinner durum göstergesinin doğru güncellenmesi
|
|
139
400
|
|
|
140
|
-
|
|
141
|
-
|--------|----------|
|
|
142
|
-
| AFAD | Deprem verileri (deprem.afad.gov.tr) |
|
|
143
|
-
| EGO | Ankara otobus sefer saatleri (ego.gov.tr) |
|
|
144
|
-
| IETT | Istanbul GTFS hat verileri (data.ibb.gov.tr) |
|
|
145
|
-
| IETT SOAP | Planlanan sefer saatleri (api.ibb.gov.tr) |
|
|
146
|
-
| IETT Live SOAP | Hat bazli canli arac konumu (api.ibb.gov.tr) |
|
|
147
|
-
| Open-Meteo | Guncel hava ve saatlik tahmin (api.open-meteo.com) |
|
|
148
|
-
| Open-Meteo AQ | Hava kalitesi (air-quality-api.open-meteo.com) |
|
|
401
|
+
---
|
|
149
402
|
|
|
150
|
-
##
|
|
403
|
+
## 🔧 Geliştirme
|
|
151
404
|
|
|
152
|
-
|
|
405
|
+
### Ortam Hazırlığı
|
|
153
406
|
|
|
154
407
|
```bash
|
|
155
|
-
|
|
408
|
+
git clone https://github.com/<kullanici>/turkiyem.git
|
|
409
|
+
cd turkiyem
|
|
410
|
+
npm install
|
|
411
|
+
npm link
|
|
156
412
|
```
|
|
157
413
|
|
|
158
|
-
|
|
414
|
+
### Geliştirme Komutları
|
|
159
415
|
|
|
160
|
-
|
|
416
|
+
```bash
|
|
417
|
+
# Doğrudan çalıştır
|
|
418
|
+
node src/index.js help
|
|
419
|
+
node src/index.js deprem son24
|
|
420
|
+
node src/index.js hava guncel istanbul
|
|
421
|
+
node src/index.js sehir izmir
|
|
422
|
+
node src/index.js hat 34
|
|
423
|
+
|
|
424
|
+
# npm start ile
|
|
425
|
+
npm start
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
### Yeni Şehir Ekleme Rehberi
|
|
429
|
+
|
|
430
|
+
1. `src/services/<sehir>Service.js` — Veri çekme servisi oluştur
|
|
431
|
+
2. `src/utils/display.js` — İlgili tablo fonksiyonlarını ekle
|
|
432
|
+
3. `src/commands/hat.js` — `queryYeniSehir()` fonksiyonu ekle
|
|
433
|
+
4. `src/commands/durak.js` — Durak desteği varsa `queryYeniSehirStop()` ekle
|
|
434
|
+
5. `src/commands/sehir.js` — `SUPPORTED_CITIES` dizisine ekle
|
|
435
|
+
6. `src/commands/menu.js` — İnteraktif menüye ekle
|
|
436
|
+
7. `README.md` — Dokümantasyonu güncelle
|
|
437
|
+
|
|
438
|
+
---
|
|
439
|
+
|
|
440
|
+
## 📤 Yayınlama (npm)
|
|
161
441
|
|
|
162
442
|
```bash
|
|
163
|
-
|
|
443
|
+
# 1. Sürüm artır
|
|
444
|
+
npm version patch # 1.6.0 → 1.6.1 (hata düzeltme)
|
|
445
|
+
npm version minor # 1.6.0 → 1.7.0 (yeni özellik)
|
|
446
|
+
npm version major # 1.6.0 → 2.0.0 (breaking change)
|
|
447
|
+
|
|
448
|
+
# 2. Yayınla
|
|
449
|
+
npm publish --access public
|
|
450
|
+
|
|
451
|
+
# 3. Doğrula
|
|
452
|
+
npm view turkiyem version
|
|
164
453
|
```
|
|
165
454
|
|
|
166
|
-
|
|
455
|
+
---
|
|
456
|
+
|
|
457
|
+
## 🗺️ Yol Haritası
|
|
458
|
+
|
|
459
|
+
Detaylı yol haritası için [`TODO.md`](./TODO.md) dosyasına bakın.
|
|
460
|
+
|
|
461
|
+
| Özellik | Durum |
|
|
462
|
+
|---------|-------|
|
|
463
|
+
| Kocaeli GTFS Verileri | 📋 Planlandı |
|
|
464
|
+
| Konya GTFS Verileri | 📋 Planlandı |
|
|
465
|
+
| Mersin Ulaşım Tarifeleri | 📋 Planlandı |
|
|
466
|
+
| Samsun Otobüs Bilgileri | 📋 Planlandı |
|
|
467
|
+
| Trabzon Ulaşım Bilgileri | 📋 Planlandı |
|
|
468
|
+
| İzmir Nöbetçi Eczane | 📋 Planlandı |
|
|
469
|
+
| Kayseri Nöbetçi Eczane | 📋 Planlandı |
|
|
470
|
+
| e-Nabız / e-Sağlık | 📋 Planlandı |
|
|
471
|
+
|
|
472
|
+
---
|
|
473
|
+
|
|
474
|
+
## ❓ Sık Karşılaşılan Sorunlar
|
|
475
|
+
|
|
476
|
+
<details>
|
|
477
|
+
<summary><strong><code>npm publish</code> 403 — Aynı sürüm</strong></summary>
|
|
478
|
+
|
|
479
|
+
Önceden yayınlanmış bir sürüm numarasını tekrar gönderemezsiniz.
|
|
167
480
|
|
|
168
481
|
```bash
|
|
169
482
|
npm version patch
|
|
170
|
-
npm publish
|
|
483
|
+
npm publish --access public
|
|
171
484
|
```
|
|
485
|
+
</details>
|
|
486
|
+
|
|
487
|
+
<details>
|
|
488
|
+
<summary><strong><code>npm publish</code> 403 — 2FA / Token</strong></summary>
|
|
489
|
+
|
|
490
|
+
NPM hesabınız için 2FA veya granular token gereksinimi olabilir. NPM hesabında token/2FA ayarlarını tamamlayın.
|
|
491
|
+
</details>
|
|
492
|
+
|
|
493
|
+
<details>
|
|
494
|
+
<summary><strong>IETT canlı konum 500 hatası</strong></summary>
|
|
495
|
+
|
|
496
|
+
IETT SOAP servisi geçici olarak erişilemez olabilir. Kısa süre sonra tekrar deneyin.
|
|
497
|
+
</details>
|
|
498
|
+
|
|
499
|
+
<details>
|
|
500
|
+
<summary><strong>İzmir GTFS indirme uzun sürüyor</strong></summary>
|
|
501
|
+
|
|
502
|
+
İlk kullanımda ~18 MB'lık GTFS dosyası indirilir. Bu işlem internet hızınıza bağlı olarak 1-5 dakika sürebilir. İndirme tamamlandıktan sonra veriler 7 gün boyunca önbellekten okunur.
|
|
503
|
+
</details>
|
|
504
|
+
|
|
505
|
+
<details>
|
|
506
|
+
<summary><strong>Bursa API 400/415 hatası</strong></summary>
|
|
507
|
+
|
|
508
|
+
Burulaş API, `Origin` header'ı gerektirir. turkiyem bu header'ı otomatik olarak ekler. Eğer hata devam ediyorsa API tarafında geçici sorun olabilir.
|
|
509
|
+
</details>
|
|
510
|
+
|
|
511
|
+
---
|
|
512
|
+
|
|
513
|
+
## 🤝 Katkıda Bulunma
|
|
514
|
+
|
|
515
|
+
1. Bu repoyu **fork** edin
|
|
516
|
+
2. Yeni bir **feature branch** oluşturun (`git checkout -b feat/yeni-sehir`)
|
|
517
|
+
3. Değişikliklerinizi **commit** edin (`git commit -m 'feat: yeni şehir desteği eklendi'`)
|
|
518
|
+
4. Branch'inizi **push** edin (`git push origin feat/yeni-sehir`)
|
|
519
|
+
5. Bir **Pull Request** açın
|
|
520
|
+
|
|
521
|
+
> Her yeni özellik için ilgili servis, komut ve tablo güncellemelerinin birlikte gelmesi beklenir. [Yeni Şehir Ekleme Rehberi](#yeni-şehir-ekleme-rehberi) bölümüne göz atın.
|
|
522
|
+
|
|
523
|
+
---
|
|
524
|
+
|
|
525
|
+
## 📄 Lisans
|
|
526
|
+
|
|
527
|
+
Bu proje [MIT Lisansı](https://opensource.org/licenses/MIT) altında lisanslanmıştır.
|
|
172
528
|
|
|
173
|
-
|
|
529
|
+
---
|
|
174
530
|
|
|
175
|
-
|
|
531
|
+
<p align="center">
|
|
532
|
+
<sub>Built with ❤️ for Türkiye 🇹🇷</sub>
|
|
533
|
+
</p>
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "turkiyem",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Türkiye Toplu Taşıma ve Deprem CLI aracı - AFAD deprem verileri, EGO hat saatleri ve IETT SOAP/GTFS bilgileri",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./src/index.js",
|
|
7
7
|
"bin": {
|
|
8
|
-
"turkiyem": "
|
|
8
|
+
"turkiyem": "src/index.js"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
11
|
"start": "node src/index.js",
|
|
@@ -32,15 +32,20 @@
|
|
|
32
32
|
"node": ">=20.0.0"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
+
"adm-zip": "^0.5.16",
|
|
36
|
+
"asciichart": "^1.5.25",
|
|
35
37
|
"axios": "^1.7.9",
|
|
38
|
+
"boxen": "^8.0.1",
|
|
36
39
|
"chalk": "^5.4.1",
|
|
37
40
|
"cheerio": "^1.0.0",
|
|
38
41
|
"cli-table3": "^0.6.5",
|
|
39
42
|
"commander": "^13.1.0",
|
|
40
43
|
"csv-parse": "^5.6.0",
|
|
41
44
|
"dotenv": "^16.4.7",
|
|
45
|
+
"gradient-string": "^3.0.0",
|
|
42
46
|
"node-cache": "^5.1.2",
|
|
43
|
-
"ora": "^8.2.0"
|
|
47
|
+
"ora": "^8.2.0",
|
|
48
|
+
"prompts": "^2.4.2"
|
|
44
49
|
},
|
|
45
50
|
"files": [
|
|
46
51
|
"src/**/*",
|