turkiyem 1.6.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 +426 -151
- package/package.json +7 -2
- package/src/commands/deprem.js +44 -6
- 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 +9 -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/utils/banner.js +12 -8
- package/src/utils/display.js +264 -1
package/README.md
CHANGED
|
@@ -1,258 +1,533 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
-
|
|
29
|
-
- Hat
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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)
|
|
51
121
|
|
|
52
122
|
```bash
|
|
53
123
|
npm install -g turkiyem
|
|
54
124
|
```
|
|
55
125
|
|
|
56
|
-
|
|
126
|
+
Kurulumdan sonra herhangi bir terminalde:
|
|
57
127
|
|
|
58
128
|
```bash
|
|
59
|
-
|
|
60
|
-
|
|
129
|
+
turkiyem
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Yerel Geliştirme
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
git clone https://github.com/<kullanici>/turkiyem.git
|
|
136
|
+
cd turkiyem
|
|
61
137
|
npm install
|
|
62
|
-
npm link
|
|
138
|
+
npm link # Global olarak `turkiyem` komutunu aktif eder
|
|
63
139
|
```
|
|
64
140
|
|
|
65
|
-
###
|
|
141
|
+
### Gereksinimler
|
|
66
142
|
|
|
67
|
-
|
|
143
|
+
| Gereksinim | Minimum Versiyon |
|
|
144
|
+
|-----------|:----------------:|
|
|
145
|
+
| Node.js | `≥ 20.0.0` |
|
|
146
|
+
| npm | `≥ 9.0.0` |
|
|
68
147
|
|
|
69
|
-
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## 🚀 Hızlı Başlangıç
|
|
70
151
|
|
|
71
152
|
```bash
|
|
153
|
+
# 1. İnteraktif menüyü aç
|
|
72
154
|
turkiyem
|
|
155
|
+
|
|
156
|
+
# 2. Şehir seç
|
|
73
157
|
turkiyem sehir istanbul
|
|
158
|
+
|
|
159
|
+
# 3. Hat sorgula
|
|
74
160
|
turkiyem hat 34AS
|
|
161
|
+
|
|
162
|
+
# 4. Deprem kontrol
|
|
75
163
|
turkiyem deprem son24
|
|
164
|
+
|
|
165
|
+
# 5. Hava durumu
|
|
76
166
|
turkiyem hava guncel
|
|
167
|
+
|
|
168
|
+
# 6. Döviz kurları
|
|
77
169
|
turkiyem doviz
|
|
78
170
|
```
|
|
79
171
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
### Genel
|
|
172
|
+
---
|
|
83
173
|
|
|
84
|
-
|
|
85
|
-
turkiyem
|
|
86
|
-
turkiyem help
|
|
87
|
-
turkiyem --version
|
|
88
|
-
turkiyem temizle
|
|
89
|
-
```
|
|
174
|
+
## 📚 Komut Referansı
|
|
90
175
|
|
|
91
|
-
### Şehir
|
|
176
|
+
### Şehir Seçimi
|
|
92
177
|
|
|
93
178
|
```bash
|
|
94
|
-
turkiyem sehir
|
|
95
|
-
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
|
|
96
186
|
```
|
|
97
187
|
|
|
98
|
-
> `hat` komutları seçili şehre göre çalışır.
|
|
188
|
+
> 💡 `hat` ve `durak` komutları her zaman seçili şehre göre çalışır.
|
|
99
189
|
|
|
100
|
-
### Hat
|
|
190
|
+
### Hat Sorgulama
|
|
101
191
|
|
|
102
192
|
```bash
|
|
103
|
-
# Ankara (EGO)
|
|
193
|
+
# Ankara (EGO) — Hat bilgisi + gün tipine göre sefer saatleri
|
|
104
194
|
turkiyem sehir ankara
|
|
105
195
|
turkiyem hat 340
|
|
106
196
|
|
|
107
|
-
# İstanbul (IETT)
|
|
197
|
+
# İstanbul (IETT) — GTFS özeti + SOAP planlanan saatler
|
|
108
198
|
turkiyem sehir istanbul
|
|
109
199
|
turkiyem hat 34AS
|
|
200
|
+
|
|
201
|
+
# Adana — Hat bilgisi + sefer saatleri + durak listesi
|
|
202
|
+
turkiyem sehir adana
|
|
203
|
+
turkiyem hat KM02
|
|
204
|
+
|
|
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
|
|
110
216
|
```
|
|
111
217
|
|
|
112
|
-
|
|
113
|
-
- 1) GTFS hat özeti
|
|
114
|
-
- 2) SOAP planlanan sefer saatleri
|
|
115
|
-
- 3) SOAP erişilemezse GTFS özeti + bilgilendirme mesajı
|
|
218
|
+
> Birden fazla eşleşen hat varsa interaktif bir seçim menüsü sunulur.
|
|
116
219
|
|
|
117
|
-
###
|
|
220
|
+
### Durak Sorgulama
|
|
118
221
|
|
|
119
222
|
```bash
|
|
120
|
-
#
|
|
121
|
-
turkiyem
|
|
223
|
+
# Adana — Durak detayı + geçen hatlar
|
|
224
|
+
turkiyem sehir adana
|
|
225
|
+
turkiyem durak 43681
|
|
226
|
+
|
|
227
|
+
# Antalya — Durak tarifesi (gün ve yön seçimli)
|
|
228
|
+
turkiyem sehir antalya
|
|
229
|
+
turkiyem durak 1234
|
|
230
|
+
|
|
231
|
+
# Bursa — Durağa yaklaşan araçlar ve kalan süre
|
|
232
|
+
turkiyem sehir bursa
|
|
233
|
+
turkiyem durak 5678
|
|
122
234
|
|
|
123
|
-
#
|
|
124
|
-
turkiyem
|
|
235
|
+
# İzmir — Durak araması + geçecek hatlar ve saatler
|
|
236
|
+
turkiyem sehir izmir
|
|
237
|
+
turkiyem durak konak
|
|
125
238
|
```
|
|
126
239
|
|
|
127
|
-
|
|
240
|
+
### Canlı Konum
|
|
241
|
+
|
|
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ı
|
|
251
|
+
```
|
|
128
252
|
|
|
129
253
|
### Deprem (AFAD)
|
|
130
254
|
|
|
131
255
|
```bash
|
|
132
|
-
turkiyem deprem son24
|
|
133
|
-
turkiyem deprem 7gun
|
|
134
|
-
turkiyem deprem buyukluk 4.0
|
|
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
|
|
135
259
|
```
|
|
136
260
|
|
|
137
|
-
|
|
261
|
+
> ⚠️ Büyüklüğü ≥ 4.0 olan depremler kırmızı uyarı kutusuyla vurgulanır.
|
|
262
|
+
|
|
263
|
+
### Hava Durumu & Kalite
|
|
138
264
|
|
|
139
265
|
```bash
|
|
140
266
|
# Seçili şehir
|
|
141
|
-
turkiyem hava guncel
|
|
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₂)
|
|
142
270
|
|
|
143
271
|
# Şehir adıyla
|
|
144
272
|
turkiyem hava guncel istanbul
|
|
145
|
-
turkiyem hava saatlik ankara --gun
|
|
273
|
+
turkiyem hava saatlik ankara --gun 5 # 5 günlük saatlik tahmin
|
|
146
274
|
turkiyem hava kalite izmir
|
|
147
275
|
|
|
148
276
|
# Koordinatla
|
|
149
277
|
turkiyem hava guncel 41.0082,28.9784
|
|
150
278
|
```
|
|
151
279
|
|
|
152
|
-
###
|
|
280
|
+
### Döviz Kurları (TCMB)
|
|
153
281
|
|
|
154
282
|
```bash
|
|
155
|
-
#
|
|
156
|
-
turkiyem doviz
|
|
283
|
+
turkiyem doviz # Popüler kurlar (USD, EUR, GBP vb.)
|
|
284
|
+
turkiyem doviz --tum # Tüm döviz kurları
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### Yardımcı Komutlar
|
|
288
|
+
|
|
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
|
|
294
|
+
```
|
|
295
|
+
|
|
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 |
|
|
157
312
|
|
|
158
|
-
|
|
159
|
-
|
|
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
|
|
160
348
|
```
|
|
161
349
|
|
|
162
|
-
|
|
350
|
+
### Mimari Prensipler
|
|
163
351
|
|
|
164
|
-
|
|
|
165
|
-
|
|
166
|
-
|
|
|
167
|
-
|
|
|
168
|
-
|
|
|
169
|
-
|
|
|
170
|
-
|
|
|
171
|
-
| Open-Meteo Forecast | Güncel hava + saatlik tahmin |
|
|
172
|
-
| Open-Meteo Air Quality | Hava kalitesi |
|
|
173
|
-
| TCMB | Döviz kurları |
|
|
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 |
|
|
174
359
|
|
|
175
|
-
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
## ⚙️ Yapılandırma & Önbellek
|
|
363
|
+
|
|
364
|
+
### Yapılandırma Dosyası
|
|
176
365
|
|
|
177
366
|
```text
|
|
178
|
-
|
|
179
|
-
commands/ # CLI komut handler'ları
|
|
180
|
-
services/ # Dış API / scraping / SOAP katmanı
|
|
181
|
-
utils/ # Tablo, cache, config, banner yardımcıları
|
|
182
|
-
index.js # Commander giriş noktası
|
|
367
|
+
~/.turkiyem/config.json
|
|
183
368
|
```
|
|
184
369
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
370
|
+
```json
|
|
371
|
+
{
|
|
372
|
+
"city": "istanbul"
|
|
373
|
+
}
|
|
374
|
+
```
|
|
190
375
|
|
|
191
|
-
|
|
376
|
+
### Önbellek Katmanları
|
|
192
377
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
-
|
|
196
|
-
|
|
197
|
-
|
|
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 |
|
|
198
383
|
|
|
199
|
-
Temizleme
|
|
384
|
+
### Temizleme
|
|
200
385
|
|
|
201
386
|
```bash
|
|
202
|
-
turkiyem temizle
|
|
387
|
+
turkiyem temizle # Tüm cache ve yapılandırmayı sıfırlar
|
|
203
388
|
```
|
|
204
389
|
|
|
205
|
-
|
|
390
|
+
---
|
|
206
391
|
|
|
207
|
-
|
|
208
|
-
- `unhandledRejection` ve `uncaughtException` yakalanır
|
|
209
|
-
- API hataları kullanıcı dostu mesajlara çevrilir
|
|
210
|
-
- Ağ timeout / bağlantı sorunları için özel açıklamalar verilir
|
|
211
|
-
- Erişilemeyen kaynaklarda mümkün olan yerlerde fallback uygulanır
|
|
392
|
+
## 🛡️ Hata Yönetimi & Güvenilirlik
|
|
212
393
|
|
|
213
|
-
|
|
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
|
|
400
|
+
|
|
401
|
+
---
|
|
402
|
+
|
|
403
|
+
## 🔧 Geliştirme
|
|
404
|
+
|
|
405
|
+
### Ortam Hazırlığı
|
|
214
406
|
|
|
215
407
|
```bash
|
|
408
|
+
git clone https://github.com/<kullanici>/turkiyem.git
|
|
409
|
+
cd turkiyem
|
|
216
410
|
npm install
|
|
217
|
-
npm
|
|
411
|
+
npm link
|
|
218
412
|
```
|
|
219
413
|
|
|
220
|
-
|
|
414
|
+
### Geliştirme Komutları
|
|
221
415
|
|
|
222
416
|
```bash
|
|
417
|
+
# Doğrudan çalıştır
|
|
223
418
|
node src/index.js help
|
|
224
419
|
node src/index.js deprem son24
|
|
225
420
|
node src/index.js hava guncel istanbul
|
|
226
|
-
node src/index.js
|
|
421
|
+
node src/index.js sehir izmir
|
|
422
|
+
node src/index.js hat 34
|
|
423
|
+
|
|
424
|
+
# npm start ile
|
|
425
|
+
npm start
|
|
227
426
|
```
|
|
228
427
|
|
|
229
|
-
|
|
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)
|
|
230
441
|
|
|
231
442
|
```bash
|
|
232
|
-
# 1
|
|
233
|
-
npm version patch
|
|
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)
|
|
234
447
|
|
|
235
|
-
# 2
|
|
448
|
+
# 2. Yayınla
|
|
236
449
|
npm publish --access public
|
|
237
450
|
|
|
238
|
-
# 3
|
|
451
|
+
# 3. Doğrula
|
|
239
452
|
npm view turkiyem version
|
|
240
453
|
```
|
|
241
454
|
|
|
242
|
-
|
|
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.
|
|
480
|
+
|
|
481
|
+
```bash
|
|
482
|
+
npm version patch
|
|
483
|
+
npm publish --access public
|
|
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.
|
|
243
522
|
|
|
244
|
-
|
|
245
|
-
Önceden yayınlanmış bir sürüm numarasını tekrar gönderemezsiniz.
|
|
246
|
-
Çözüm: `npm version patch|minor|major` sonrası tekrar publish.
|
|
523
|
+
---
|
|
247
524
|
|
|
248
|
-
|
|
249
|
-
NPM hesabınız için 2FA veya granular token gereksinimi olabilir.
|
|
250
|
-
Çözüm: NPM hesabında token/2FA ayarlarını tamamlayın.
|
|
525
|
+
## 📄 Lisans
|
|
251
526
|
|
|
252
|
-
|
|
253
|
-
SOAP servis tarafı geçici olarak hata döndürebilir.
|
|
254
|
-
Bu durumda kısa süre sonra tekrar deneyin.
|
|
527
|
+
Bu proje [MIT Lisansı](https://opensource.org/licenses/MIT) altında lisanslanmıştır.
|
|
255
528
|
|
|
256
|
-
|
|
529
|
+
---
|
|
257
530
|
|
|
258
|
-
|
|
531
|
+
<p align="center">
|
|
532
|
+
<sub>Built with ❤️ for Türkiye 🇹🇷</sub>
|
|
533
|
+
</p>
|