mockba 0.2.2 → 0.3.1
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/MOCKBA +50 -6
- package/changes.md +9 -0
- package/index.js +212 -105
- package/package.json +3 -2
- package/readme.md +140 -23
package/MOCKBA
CHANGED
|
@@ -1,11 +1,55 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
var MOCKBA = require('.')
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
var args=process.argv
|
|
5
|
+
|
|
6
|
+
var json=process.argv.find(a=>a=='-json')
|
|
7
|
+
var js=process.argv.find(a=>a=='-js')
|
|
8
|
+
var ru=process.argv.find(a=>a=='-ru')
|
|
9
|
+
// var json=process.argv.find(a=>a=='-ru')
|
|
10
|
+
|
|
11
|
+
if(json) {
|
|
12
|
+
var москва = new MOCKBA({
|
|
13
|
+
disableIndicator:true,
|
|
14
|
+
json:true,
|
|
15
|
+
...(ru?{translate:'ru'}:void 0),
|
|
16
|
+
})
|
|
17
|
+
} else if(js) {
|
|
18
|
+
var москва = new MOCKBA({
|
|
19
|
+
disableIndicator:true,
|
|
20
|
+
js:true,
|
|
21
|
+
...(ru?{translate:'ru'}:void 0),
|
|
22
|
+
})
|
|
23
|
+
} else {
|
|
24
|
+
var москва = new MOCKBA({
|
|
25
|
+
human:true,
|
|
26
|
+
...(ru?{
|
|
27
|
+
skip:['страна','регион','местоположение'],
|
|
28
|
+
translate:'ru',
|
|
29
|
+
}:void 0),
|
|
30
|
+
})
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// if(rujson) {
|
|
34
|
+
// var москва = new MOCKBA({
|
|
35
|
+
// translate: 'ru',
|
|
36
|
+
// json:true,
|
|
37
|
+
// disableIndicator:true,
|
|
38
|
+
// })
|
|
39
|
+
// } else if(rujs) {
|
|
40
|
+
// var москва = new MOCKBA({
|
|
41
|
+
// translate: 'ru',
|
|
42
|
+
// js:true,
|
|
43
|
+
// disableIndicator:true,
|
|
44
|
+
// })
|
|
45
|
+
// }
|
|
46
|
+
// else {
|
|
47
|
+
// var москва = new MOCKBA({
|
|
48
|
+
// translate: 'ru',
|
|
49
|
+
// printRu: true,
|
|
50
|
+
// skip:['страна','регион','местоположение'],
|
|
51
|
+
// })
|
|
52
|
+
// }
|
|
53
|
+
|
|
10
54
|
|
|
11
55
|
москва()
|
package/changes.md
ADDED
package/index.js
CHANGED
|
@@ -1,92 +1,241 @@
|
|
|
1
|
-
// var Moskva = require('moskva')
|
|
2
1
|
var Moskva=require('moskva')
|
|
2
|
+
var indicatrix=require('indicatrix')
|
|
3
3
|
var{error,log}=console
|
|
4
4
|
|
|
5
5
|
class MOCKBA extends Moskva {
|
|
6
6
|
/** @type {'ru'} */
|
|
7
7
|
translate = ''
|
|
8
|
+
/** Do not print interacitve indicator of data loading */
|
|
9
|
+
disableIndicator = false
|
|
8
10
|
/** @type {boolean} */
|
|
9
11
|
logFetch = false
|
|
10
|
-
printRu = false
|
|
11
|
-
|
|
12
|
+
// printRu = false
|
|
13
|
+
human = void 0
|
|
14
|
+
json = false
|
|
12
15
|
skip=[]
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
период_осреднения=null
|
|
17
|
+
static get emojiMap() {
|
|
18
|
+
return new Map(Object.entries({ // does not have default?
|
|
16
19
|
'страна':'🌍 Страна',
|
|
17
20
|
'регион':'📍 Регион',
|
|
18
21
|
'местоположение':'📌 Местоположение',
|
|
19
|
-
'время_наблюдения':'⏰
|
|
22
|
+
'время_наблюдения':'⏰ Дата и время', // units map also?
|
|
20
23
|
'атмосферное_давление_мм_рт_ст':'🌡️ Атм. давление (мм рт.ст.)',
|
|
21
24
|
'температура_°C':'🌡️ Температура (°C)',
|
|
22
25
|
'относительная_влажность_процент':'💧 Влажность (%)',
|
|
23
26
|
'направление_ветра':'🧭 Направление ветра',
|
|
24
27
|
'средняя_скорость_ветра_м_с':'🌬️ Скорость ветра (м/с)',
|
|
25
28
|
'горизонтальная_видимость_км':'👀 Видимость (км)',
|
|
26
|
-
'долгосрочные_наблюдения':'
|
|
27
|
-
'мин_температура_°C':'
|
|
28
|
-
'год_мин_температуры':'
|
|
29
|
-
'макс_температура_°C':'
|
|
30
|
-
'год_макс_температуры':'
|
|
31
|
-
'макс_осадки_мм':'🌧️ Макс. осадки
|
|
32
|
-
'год_макс_осадков':'
|
|
33
|
-
'среднемесячные_показатели
|
|
29
|
+
'долгосрочные_наблюдения':'┬ 📈 Долгосрочные наблюдения',
|
|
30
|
+
'мин_температура_°C':'⛄️ Мин. температура (°C)',
|
|
31
|
+
'год_мин_температуры':'☃️ Год мин. температуры',
|
|
32
|
+
'макс_температура_°C':'🥵 Макс. температура (°C)',
|
|
33
|
+
'год_макс_температуры':'🔥 Год макс. температуры',
|
|
34
|
+
'макс_осадки_мм':' 🌧️ Макс. осадки',
|
|
35
|
+
'год_макс_осадков':'🌊 Год макс. осадков',
|
|
36
|
+
'среднемесячные_показатели':'📊 Среднемесячные показатели (январь)',
|
|
34
37
|
'средняя_температура_°C':'🌡️ Средняя температура (°C)',
|
|
35
38
|
'осадки_мм':'🌧️ Осадки (мм)',
|
|
36
|
-
'период_осреднения':'
|
|
37
|
-
|
|
39
|
+
'период_осреднения':'📊 Период осреднения'
|
|
40
|
+
}))
|
|
41
|
+
}
|
|
42
|
+
printWeather(obj){
|
|
43
|
+
return this.printRuWeather(obj)
|
|
44
|
+
}
|
|
45
|
+
printRuWeather(obj){
|
|
46
|
+
this.printObj(obj,'')
|
|
47
|
+
}
|
|
48
|
+
tempEmoji(t){
|
|
49
|
+
if(t<=-20) return '🥶'
|
|
50
|
+
if(t<=-10) return '🧊'
|
|
51
|
+
if(t<=0) return '😨'
|
|
52
|
+
if(t<=5) return '🧥'
|
|
53
|
+
if(t<=10) return '🌫️'
|
|
54
|
+
if(t<=15) return '🌥️'
|
|
55
|
+
if(t<=18) return '🌤️'
|
|
56
|
+
if(t<=22) return '🙂'
|
|
57
|
+
if(t<=25) return '😎'
|
|
58
|
+
if(t<=28) return '😅'
|
|
59
|
+
if(t<=32) return '🔥'
|
|
60
|
+
return '🥵'
|
|
61
|
+
}
|
|
38
62
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
63
|
+
printObj(o,prefix){
|
|
64
|
+
// период_осреднения =
|
|
65
|
+
for(var k in o){
|
|
66
|
+
if(this.skip.includes(k)) {
|
|
67
|
+
continue
|
|
68
|
+
}
|
|
69
|
+
var logNl=console.log
|
|
70
|
+
var log=data=>{
|
|
71
|
+
process.stdout.write(data)
|
|
72
|
+
}
|
|
73
|
+
// var log1=process.stdout.write;
|
|
74
|
+
if(typeof o[k]=='object'&&o[k]!=null){
|
|
75
|
+
// console.log(321,k)
|
|
76
|
+
switch(k){
|
|
77
|
+
case 'среднемесячные_показатели':
|
|
78
|
+
logNl('┬ 📊 Среднемесячные показатели с '+o[k].период_осреднения+':')
|
|
79
|
+
this.printObj(o[k],prefix+' ')
|
|
80
|
+
break
|
|
81
|
+
default:
|
|
82
|
+
logNl(prefix+(MOCKBA.emojiMap.get(k)||k))
|
|
83
|
+
this.printObj(o[k],prefix+' ')
|
|
84
|
+
}
|
|
85
|
+
// logNl(prefix+(MOCKBA.emojiMap.get(k)||k)+':')
|
|
86
|
+
}else{
|
|
87
|
+
// console.log(123,k)
|
|
88
|
+
switch(k){
|
|
89
|
+
case 'средняя_температура_°C':
|
|
90
|
+
var v=o[k]
|
|
91
|
+
logNl('├─🌡️ \tТемпература\t'+v+'°C')
|
|
92
|
+
break
|
|
93
|
+
case 'осадки_мм':
|
|
94
|
+
logNl('└─ 🌧️ \tОсадки\t\t'+o[k]+'мм')
|
|
95
|
+
break
|
|
96
|
+
case 'атмосферное_давление_мм_рт_ст':
|
|
97
|
+
// logNl('🌡️ Атм. давление\t\t'+o[k]+' мм рт.ст.')
|
|
98
|
+
logNl('⬇️ Атм. давление\t'+o[k]+' мм рт.ст.')
|
|
99
|
+
break
|
|
100
|
+
case 'температура_°C':
|
|
101
|
+
var температура=parseFloat(o[k])
|
|
102
|
+
logNl(this.tempEmoji(температура)+' Температура\t\t'+температура+'°C')
|
|
103
|
+
break
|
|
104
|
+
case 'период_осреднения':
|
|
105
|
+
// this.период_осреднения = o[k]
|
|
106
|
+
// logNl(' 💧 Влажность: '+o[k]+'%')
|
|
107
|
+
break
|
|
108
|
+
case 'относительная_влажность_процент':
|
|
109
|
+
logNl('💧 Влажность\t\t'+o[k]+'%')
|
|
110
|
+
break
|
|
111
|
+
case 'горизонтальная_видимость_км':
|
|
112
|
+
logNl('👀 Видимость\t\t'+o[k]+'км')
|
|
113
|
+
break
|
|
114
|
+
case 'средняя_скорость_ветра_м_с':
|
|
115
|
+
// convert english into ru
|
|
116
|
+
logNl('🌬️ Скорость ветра\t'+o[k]+' м/с')
|
|
117
|
+
break
|
|
118
|
+
case 'направление_ветра':
|
|
119
|
+
var windMap={
|
|
120
|
+
N:'северный',
|
|
121
|
+
NNE:'северо-северо-восточный',
|
|
122
|
+
NE:'северо-восточный',
|
|
123
|
+
ENE:'вост.-сев.-восточный',
|
|
124
|
+
E:'восточный',
|
|
125
|
+
ESE:'вост.-юго-восточный',
|
|
126
|
+
SE:'юго-восточный',
|
|
127
|
+
SSE:'юго-юго-восточный',
|
|
128
|
+
S:'южный',
|
|
129
|
+
SSW:'юго-юго-западный',
|
|
130
|
+
SW:'юго-западный',
|
|
131
|
+
WSW:'зап.-юго-западный',
|
|
132
|
+
W:'западный',
|
|
133
|
+
WNW:'зап.-сев.-западный',
|
|
134
|
+
NW:'северо-западный',
|
|
135
|
+
NNW:'сев.-сев.-западный'
|
|
136
|
+
}
|
|
137
|
+
// convert english into ru
|
|
138
|
+
// var V=o[k]
|
|
139
|
+
var V=o[k]
|
|
140
|
+
var ru=windMap[V]||V
|
|
141
|
+
logNl('🧭 Ветер\t\t'+ru)
|
|
142
|
+
break
|
|
143
|
+
case 'время_наблюдения':
|
|
144
|
+
let d_val=this.parseDate(o[k]) // store date on this
|
|
145
|
+
let val=this.printDateRu(d_val);
|
|
146
|
+
logNl(prefix+(MOCKBA.emojiMap.get(k)||k)+'\t\t'+val)
|
|
147
|
+
break
|
|
148
|
+
case 'макс_температура_°C': // need to see when was min
|
|
149
|
+
// let d_val=this.parseDate(o[k]) // store date on this
|
|
150
|
+
var V=`${o[k]}`.padStart(5,' ')
|
|
151
|
+
log('├─ 🥵\t'+V+'°C')
|
|
152
|
+
break
|
|
153
|
+
case 'макс_осадки_мм':
|
|
154
|
+
var V=`+${o[k]}`.padStart(5,' ')
|
|
155
|
+
log('└─ 🌧️ \t'+V+'мм')
|
|
156
|
+
break
|
|
157
|
+
case 'мин_температура_°C':
|
|
158
|
+
var V=`${o[k]}`.padStart(4,' ')
|
|
159
|
+
log('├─ ⛄️\t'+V+'°C')
|
|
160
|
+
break
|
|
161
|
+
case 'год_мин_температуры':
|
|
162
|
+
case 'год_макс_температуры':
|
|
163
|
+
case 'год_макс_осадков':
|
|
164
|
+
log(' в '+o[k])
|
|
165
|
+
let y_val=this.yearsAgo(o[k])
|
|
166
|
+
logNl(', '+y_val+' лет назад')
|
|
167
|
+
break
|
|
168
|
+
default:
|
|
169
|
+
logNl(prefix+(MOCKBA.emojiMap.get(k)||k)+': '+o[k])
|
|
54
170
|
}
|
|
55
171
|
}
|
|
56
172
|
}
|
|
57
|
-
|
|
58
|
-
printObj(obj,'')
|
|
59
173
|
}
|
|
174
|
+
yearsAgo(year){
|
|
175
|
+
if(!year) return null
|
|
176
|
+
var now=new Date().getFullYear()
|
|
177
|
+
return now-parseInt(year)
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/** --- @arg {Date} _val */
|
|
60
181
|
printDateRu(_val){
|
|
61
|
-
var val=_val?_val.toLocaleString('ru',{
|
|
62
|
-
|
|
182
|
+
var val=_val?_val.toLocaleString('ru',{
|
|
183
|
+
year:'numeric',month:'short',day:'2-digit',hour:'2-digit',minute:'2-digit',
|
|
184
|
+
hour12:false,
|
|
185
|
+
}):_val
|
|
186
|
+
val=val.replace(',','')
|
|
63
187
|
return val
|
|
64
188
|
}
|
|
65
189
|
|
|
66
190
|
|
|
67
191
|
async вып() {
|
|
68
192
|
if(!this.printRu){
|
|
69
|
-
super.вып()
|
|
70
|
-
log('🔺МОСКВА🔺 runtime on Moskva')
|
|
193
|
+
// super.вып()
|
|
194
|
+
// log('🔺МОСКВА🔺 runtime on Moskva')
|
|
71
195
|
}
|
|
72
196
|
try {
|
|
73
197
|
if(this.logFetch) {
|
|
74
198
|
super._log=true
|
|
75
199
|
}
|
|
76
|
-
|
|
200
|
+
if(!this.disableIndicator) {
|
|
201
|
+
var t = await indicatrix('Загружаем данные по Москве',super.fetchMoscow())
|
|
202
|
+
}else {
|
|
203
|
+
var t = await super.fetchMoscow()
|
|
204
|
+
}
|
|
77
205
|
}finally {
|
|
78
206
|
super._log = false
|
|
79
207
|
}
|
|
80
208
|
var data = this.process(t)
|
|
81
209
|
// послеВып
|
|
82
210
|
if(this.translate=='ru') {
|
|
83
|
-
data=
|
|
211
|
+
data=this.convertToRussianFull(data)
|
|
84
212
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
213
|
+
|
|
214
|
+
// if(this.human) {
|
|
215
|
+
// if(!this.translate) {
|
|
216
|
+
// this.printWeather(data)
|
|
217
|
+
// }else if(this.translate=='ru') {
|
|
218
|
+
// this.printRuWeather(data)
|
|
219
|
+
// }else {
|
|
220
|
+
// throw new Error('Translate not supported '+this.translate)
|
|
221
|
+
// }
|
|
222
|
+
// }else
|
|
223
|
+
if (this.json) {
|
|
224
|
+
log(JSON.stringify(data,null,1))
|
|
225
|
+
} else if (this.js) {
|
|
88
226
|
log(data)
|
|
227
|
+
} else {
|
|
228
|
+
if(!this.translate) {
|
|
229
|
+
this.printWeather(data)
|
|
230
|
+
}else if(this.translate=='ru') {
|
|
231
|
+
this.printRuWeather(data)
|
|
232
|
+
}else {
|
|
233
|
+
throw new Error('Translate not supported '+this.translate)
|
|
234
|
+
}
|
|
89
235
|
}
|
|
236
|
+
// else {
|
|
237
|
+
// // log(JSON.stringify(data,null,1))
|
|
238
|
+
// }
|
|
90
239
|
// return data // if print then show print
|
|
91
240
|
}
|
|
92
241
|
parseDate(str){
|
|
@@ -144,8 +293,8 @@ class MOCKBA extends Moskva {
|
|
|
144
293
|
}
|
|
145
294
|
|
|
146
295
|
var monthly_averages = {
|
|
147
|
-
temperature_C: parseFloat(matchSingle(
|
|
148
|
-
precipitation_mm: parseFloat(matchSingle(
|
|
296
|
+
temperature_C: parseFloat(matchSingle(/<td>Temperature<\/td><td[^>]*>([^&]+)/i, html)),
|
|
297
|
+
precipitation_mm: parseFloat(matchSingle(/<td>Amount of precipitation<\/td><td[^>]*>([^ ]+)/i, html)),
|
|
149
298
|
averaging_period: matchSingle(/The averaging period: ([^<]+)/i, html)
|
|
150
299
|
}
|
|
151
300
|
|
|
@@ -156,8 +305,6 @@ class MOCKBA extends Moskva {
|
|
|
156
305
|
long_term_obs, monthly_averages
|
|
157
306
|
}
|
|
158
307
|
return result
|
|
159
|
-
// console.log(JSON.stringify(data, null, 2))
|
|
160
|
-
|
|
161
308
|
}
|
|
162
309
|
convertToRussianFull(eng){
|
|
163
310
|
var dict={
|
|
@@ -172,7 +319,7 @@ class MOCKBA extends Moskva {
|
|
|
172
319
|
wind_speed_m_s:'средняя_скорость_ветра_м_с',
|
|
173
320
|
horizontal_visibility_km:'горизонтальная_видимость_км',
|
|
174
321
|
long_term_obs:'долгосрочные_наблюдения',
|
|
175
|
-
monthly_averages:'среднемесячные_показатели
|
|
322
|
+
monthly_averages:'среднемесячные_показатели'
|
|
176
323
|
}
|
|
177
324
|
|
|
178
325
|
var innerDicts={
|
|
@@ -191,67 +338,30 @@ class MOCKBA extends Moskva {
|
|
|
191
338
|
}
|
|
192
339
|
}
|
|
193
340
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
out[d[key]]=obj[key]
|
|
341
|
+
|
|
342
|
+
return this.$translate(eng,dict,innerDicts)
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
$translate(obj,d,innerDicts){
|
|
346
|
+
var out={}
|
|
347
|
+
for(var key in d){
|
|
348
|
+
if(obj[key]!=null){
|
|
349
|
+
if(typeof obj[key]=='object'&&!Array.isArray(obj[key])&&innerDicts[key]!=null){
|
|
350
|
+
out[d[key]]={}
|
|
351
|
+
for(var sub in obj[key]){
|
|
352
|
+
if(innerDicts[key][sub]!=null) out[d[key]][innerDicts[key][sub]]=obj[key][sub]
|
|
353
|
+
else out[d[key]][sub]=obj[key][sub]
|
|
206
354
|
}
|
|
355
|
+
}else{
|
|
356
|
+
out[d[key]]=obj[key]
|
|
207
357
|
}
|
|
208
358
|
}
|
|
209
|
-
return out
|
|
210
359
|
}
|
|
211
|
-
|
|
212
|
-
return translate(eng,dict)
|
|
360
|
+
return out
|
|
213
361
|
}
|
|
214
|
-
// convertToRu(eng) {
|
|
215
|
-
// var dict = {
|
|
216
|
-
// country: 'страна',
|
|
217
|
-
// region: 'регион',
|
|
218
|
-
// location: 'местоположение',
|
|
219
|
-
// observation_time: 'время_наблюдения',
|
|
220
|
-
// atmospheric_pressure_mm: 'атмосферное_давление_мм_рт_ст',
|
|
221
|
-
// temperature_C: 'температура_°C',
|
|
222
|
-
// relative_humidity_percent: 'относительная_влажность_процент',
|
|
223
|
-
// wind_direction: 'направление_ветра',
|
|
224
|
-
// wind_speed_m_s: 'средняя_скорость_ветра_м_с',
|
|
225
|
-
// horizontal_visibility_km: 'горизонтальная_видимость_км',
|
|
226
|
-
// long_term_obs: 'долгосрочные_наблюдения',
|
|
227
|
-
// monthly_averages: 'среднемесячные_показатели_январь'
|
|
228
|
-
// }
|
|
229
|
-
|
|
230
|
-
// var ru = {}
|
|
231
|
-
// for (var key in dict) {
|
|
232
|
-
// if (eng[key] != null) {
|
|
233
|
-
// if (typeof eng[key] == 'object' && !Array.isArray(eng[key])) {
|
|
234
|
-
// ru[dict[key]] = {}
|
|
235
|
-
// for (var sub in eng[key]) {
|
|
236
|
-
// ru[dict[key]][sub] = eng[key][sub]
|
|
237
|
-
// }
|
|
238
|
-
// } else {
|
|
239
|
-
// ru[dict[key]] = eng[key]
|
|
240
|
-
// }
|
|
241
|
-
// }
|
|
242
|
-
// }
|
|
243
|
-
// return ru
|
|
244
|
-
// }
|
|
245
|
-
// #convertToRu(engWeather) {
|
|
246
|
-
// // пример использования
|
|
247
|
-
// var ruWeather = this.convertToRussianAuto(engWeather)
|
|
248
|
-
// return ruWeather
|
|
249
|
-
// }
|
|
250
|
-
// перевод(engWeather){
|
|
251
|
-
// return this.#convertToRu(engWeather)
|
|
252
|
-
// }
|
|
253
362
|
}
|
|
254
363
|
|
|
364
|
+
|
|
255
365
|
module.exports = MOCKBA
|
|
256
366
|
|
|
257
367
|
Object.defineProperties(module.exports,{
|
|
@@ -264,6 +374,3 @@ Object.defineProperties(module.exports,{
|
|
|
264
374
|
}
|
|
265
375
|
}
|
|
266
376
|
})
|
|
267
|
-
|
|
268
|
-
// // i thought the proxy was smarter?
|
|
269
|
-
// москва()
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mockba",
|
|
3
3
|
"homepage": "https://рантайм.москва",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.3.1",
|
|
5
5
|
"license": "CC-BY-ND-4.0",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"
|
|
7
|
+
"indicatrix": "^1.4.1",
|
|
8
|
+
"moskva": "^0.1.4"
|
|
8
9
|
},
|
|
9
10
|
"bin": {
|
|
10
11
|
"MOCKBA": "MOCKBA"
|
package/readme.md
CHANGED
|
@@ -6,8 +6,13 @@
|
|
|
6
6
|
|
|
7
7
|
```sh
|
|
8
8
|
yarn add mockba
|
|
9
|
+
yarn MOCKBA # use
|
|
9
10
|
```
|
|
10
11
|
|
|
12
|
+
###
|
|
13
|
+
|
|
14
|
+
The package can be imported directly and run with configuration:
|
|
15
|
+
|
|
11
16
|
```js
|
|
12
17
|
var МОСКВА=require('MOCKBA')
|
|
13
18
|
|
|
@@ -19,35 +24,147 @@ var москва = new MOCKBA({
|
|
|
19
24
|
москва()
|
|
20
25
|
```
|
|
21
26
|
|
|
22
|
-
|
|
27
|
+
## CLI
|
|
28
|
+
|
|
29
|
+
By default, the package' binary MOCKBA outputs the relevant meteorological
|
|
30
|
+
information about the city in the local human-readable format which is
|
|
31
|
+
equivalent to invoking the API example above.
|
|
23
32
|
|
|
24
33
|
```sh
|
|
25
|
-
⏰
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
💧 Влажность
|
|
29
|
-
🧭
|
|
30
|
-
🌬️ Скорость ветра
|
|
31
|
-
👀 Видимость
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
📆 Среднемесячные показатели (январь):
|
|
40
|
-
🌡️ Средняя температура (°C): -35.7
|
|
41
|
-
🌧️ Осадки (мм): 10
|
|
42
|
-
📅 Период осреднения: 1981-2010
|
|
34
|
+
⏰ Дата и время 30 янв. 2026 г. 21:00
|
|
35
|
+
⬇️ Атм. давление 752 мм рт.ст.
|
|
36
|
+
🧊 Температура -15.8°C
|
|
37
|
+
💧 Влажность 76.4%
|
|
38
|
+
🧭 Ветер северный
|
|
39
|
+
🌬️ Скорость ветра 1 м/с
|
|
40
|
+
👀 Видимость 20км
|
|
41
|
+
┬ 📈 Долгосрочные наблюдения
|
|
42
|
+
├─ ⛄️ -35.7°C в 1956, 70 лет назад
|
|
43
|
+
├─ 🥵 3°C в 2016, 10 лет назад
|
|
44
|
+
└─ 🌧️ +10мм в 1983, 43 лет назад
|
|
45
|
+
┬ 📊 Среднемесячные показатели с 1981-2010:
|
|
46
|
+
├─🌡️ Температура -6.5°C
|
|
47
|
+
└─ 🌧️ Осадки 52мм
|
|
43
48
|
```
|
|
44
49
|
|
|
45
|
-
|
|
50
|
+
### MOCKBA -json
|
|
46
51
|
|
|
47
|
-
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"country": "RUSSIA",
|
|
55
|
+
"region": "RUSSIA",
|
|
56
|
+
"location": "RUSSIA",
|
|
57
|
+
"observation_time": "January, 30 21:00",
|
|
58
|
+
"atmospheric_pressure_mm": 752,
|
|
59
|
+
"temperature_C": -15.8,
|
|
60
|
+
"relative_humidity_percent": 76.4,
|
|
61
|
+
"wind_direction": "N",
|
|
62
|
+
"wind_speed_m_s": 1,
|
|
63
|
+
"horizontal_visibility_km": 20,
|
|
64
|
+
"long_term_obs": {
|
|
65
|
+
"min_temperature": -35.7,
|
|
66
|
+
"min_temp_year": "1956",
|
|
67
|
+
"max_temperature": 3,
|
|
68
|
+
"max_temp_year": "2016",
|
|
69
|
+
"max_precipitation_mm": 10,
|
|
70
|
+
"max_precip_year": "1983"
|
|
71
|
+
},
|
|
72
|
+
"monthly_averages": {
|
|
73
|
+
"temperature_C": -6.5,
|
|
74
|
+
"precipitation_mm": 52,
|
|
75
|
+
"averaging_period": "1981-2010"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### MOCKBA -json -ru
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"страна": "RUSSIA",
|
|
85
|
+
"регион": "RUSSIA",
|
|
86
|
+
"местоположение": "RUSSIA",
|
|
87
|
+
"время_наблюдения": "January, 30 21:00",
|
|
88
|
+
"атмосферное_давление_мм_рт_ст": 752,
|
|
89
|
+
"температура_°C": -15.9,
|
|
90
|
+
"относительная_влажность_процент": 75,
|
|
91
|
+
"направление_ветра": "N",
|
|
92
|
+
"средняя_скорость_ветра_м_с": 1,
|
|
93
|
+
"горизонтальная_видимость_км": 20,
|
|
94
|
+
"долгосрочные_наблюдения": {
|
|
95
|
+
"мин_температура_°C": -35.7,
|
|
96
|
+
"год_мин_температуры": "1956",
|
|
97
|
+
"макс_температура_°C": 3,
|
|
98
|
+
"год_макс_температуры": "2016",
|
|
99
|
+
"макс_осадки_мм": 10,
|
|
100
|
+
"год_макс_осадков": "1983"
|
|
101
|
+
},
|
|
102
|
+
"среднемесячные_показатели": {
|
|
103
|
+
"средняя_температура_°C": -6.5,
|
|
104
|
+
"осадки_мм": 52,
|
|
105
|
+
"период_осреднения": "1981-2010"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
```
|
|
48
109
|
|
|
49
|
-
|
|
110
|
+
### MOCKBA -js
|
|
50
111
|
|
|
51
|
-
|
|
112
|
+
```js
|
|
113
|
+
{
|
|
114
|
+
country: 'RUSSIA',
|
|
115
|
+
region: 'RUSSIA',
|
|
116
|
+
location: 'RUSSIA',
|
|
117
|
+
observation_time: 'January, 30 21:00',
|
|
118
|
+
atmospheric_pressure_mm: 752,
|
|
119
|
+
temperature_C: -15.9,
|
|
120
|
+
relative_humidity_percent: 75,
|
|
121
|
+
wind_direction: 'N',
|
|
122
|
+
wind_speed_m_s: 1,
|
|
123
|
+
horizontal_visibility_km: 20,
|
|
124
|
+
long_term_obs: {
|
|
125
|
+
min_temperature: -35.7,
|
|
126
|
+
min_temp_year: '1956',
|
|
127
|
+
max_temperature: 3,
|
|
128
|
+
max_temp_year: '2016',
|
|
129
|
+
max_precipitation_mm: 10,
|
|
130
|
+
max_precip_year: '1983'
|
|
131
|
+
},
|
|
132
|
+
monthly_averages: {
|
|
133
|
+
temperature_C: -6.5,
|
|
134
|
+
precipitation_mm: 52,
|
|
135
|
+
averaging_period: '1981-2010'
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### MOCKBA -js -ru
|
|
141
|
+
|
|
142
|
+
```js
|
|
143
|
+
{
|
|
144
|
+
'страна': 'RUSSIA',
|
|
145
|
+
'регион': 'RUSSIA',
|
|
146
|
+
'местоположение': 'RUSSIA',
|
|
147
|
+
'время_наблюдения': 'January, 30 21:00',
|
|
148
|
+
'атмосферное_давление_мм_рт_ст': 752,
|
|
149
|
+
'температура_°C': -15.8,
|
|
150
|
+
'относительная_влажность_процент': 76.4,
|
|
151
|
+
'направление_ветра': 'N',
|
|
152
|
+
'средняя_скорость_ветра_м_с': 1,
|
|
153
|
+
'горизонтальная_видимость_км': 20,
|
|
154
|
+
'долгосрочные_наблюдения': {
|
|
155
|
+
'мин_температура_°C': -35.7,
|
|
156
|
+
'год_мин_температуры': '1956',
|
|
157
|
+
'макс_температура_°C': 3,
|
|
158
|
+
'год_макс_температуры': '2016',
|
|
159
|
+
'макс_осадки_мм': 10,
|
|
160
|
+
'год_макс_осадков': '1983'
|
|
161
|
+
},
|
|
162
|
+
'среднемесячные_показатели': {
|
|
163
|
+
'средняя_температура_°C': -6.5,
|
|
164
|
+
'осадки_мм': 52,
|
|
165
|
+
'период_осреднения': '1981-2010'
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
```
|
|
52
169
|
|
|
53
170
|
<!-- https://xn--80aa1amcqq.xn--80adxhks/img/MOCKBA-npm.jpg -->
|