mirror of
https://github.com/Maks1mS/free-ozon-dpr.git
synced 2024-12-23 10:32:58 +03:00
add auto update ozon_wb_dpr
This commit is contained in:
parent
1093d592ca
commit
da2fed1fd2
@ -7,9 +7,9 @@
|
||||
37.845475,
|
||||
47.994778
|
||||
],
|
||||
"name": "ПВЗ г.Донецк, ул. Харитонова, 3",
|
||||
"name": "ПВЗ г.Донецк, ул.Харитонова, 3",
|
||||
"address": "г.Донецк, ул.Харитонова, 3",
|
||||
"link": "https://ozon.ru/point/517058",
|
||||
"address": "г.Донецк, ул. Харитонова, 3",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45"
|
||||
},
|
||||
{
|
||||
@ -17,9 +17,9 @@
|
||||
37.790642,
|
||||
47.988073
|
||||
],
|
||||
"name": "ПВЗ Донецк, пр-т. Ленинский, 4",
|
||||
"name": "ПВЗ г.Донецк, пр.Ленинский, 4",
|
||||
"address": "г.Донецк, пр.Ленинский, 4",
|
||||
"link": "https://ozon.ru/point/517054",
|
||||
"address": "г.Донецк, пр-т. Ленинский, 4",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45"
|
||||
},
|
||||
{
|
||||
@ -27,9 +27,9 @@
|
||||
37.694046,
|
||||
47.949874
|
||||
],
|
||||
"name": "ПВЗ: Донецк, ул. Петровского, 111в",
|
||||
"name": "ПВЗ г.Донецк, ул.Петровского, 111в",
|
||||
"address": "г.Донецк, ул.Петровского, 111в",
|
||||
"link": "https://ozon.ru/point/517053",
|
||||
"address": "г.Донецк, ул. Петровского, 111в",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45"
|
||||
},
|
||||
{
|
||||
@ -37,9 +37,9 @@
|
||||
37.798637,
|
||||
48.009
|
||||
],
|
||||
"name": "ПВЗ г.Донецк, ул. Университетская, 34",
|
||||
"name": "ПВЗ г.Донецк, ул.Университетская, 34",
|
||||
"address": "г.Донецк, ул.Университетская, 34",
|
||||
"link": "https://ozon.ru/point/514822",
|
||||
"address": "г.Донецк, ул. Университетская, 34",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45"
|
||||
},
|
||||
{
|
||||
@ -47,9 +47,9 @@
|
||||
37.899868,
|
||||
47.991365
|
||||
],
|
||||
"name": "ПВЗ г.Донецк, ул. Полоцкая, 9",
|
||||
"name": "ПВЗ г.Донецк, ул.Полоцкая, 9",
|
||||
"address": "г.Донецк, ул.Полоцкая, 9",
|
||||
"link": "https://ozon.ru/point/517056",
|
||||
"address": "г.Донецк, ул. Полоцкая, 9",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45"
|
||||
},
|
||||
{
|
||||
@ -57,9 +57,9 @@
|
||||
37.551447,
|
||||
47.106867
|
||||
],
|
||||
"name": "ПВЗ г.Мариуполь, пр. Металлургов, 94",
|
||||
"name": "ПВЗ г.Мариуполь, пр.Металлургов, 94",
|
||||
"address": "г.Мариуполь, пр.Металлургов, 94",
|
||||
"link": "https://ozon.ru/point/516734",
|
||||
"address": "г.Мариуполь, пр. Металлургов, 94",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45"
|
||||
},
|
||||
{
|
||||
@ -67,9 +67,9 @@
|
||||
37.960468,
|
||||
48.041197
|
||||
],
|
||||
"name": "ПВЗ г. Макеевка, ул.Рябцева, 1",
|
||||
"name": "ПВЗ г.Макеевка, ул.Рябцева, 1",
|
||||
"address": "г.Макеевка, ул.Рябцева, 1",
|
||||
"link": "https://ozon.ru/point/517062",
|
||||
"address": "г.Макеевка, ул. Рябцева, 1",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45"
|
||||
},
|
||||
{
|
||||
@ -77,9 +77,9 @@
|
||||
37.781488,
|
||||
48.03651
|
||||
],
|
||||
"name": "ПВЗ г.Донецк, ул. Артема, 148а",
|
||||
"name": "ПВЗ г.Донецк, ул.Артема, 148а",
|
||||
"address": "г.Донецк, ул.Артема, 148а",
|
||||
"link": "https://ozon.ru/point/517055",
|
||||
"address": "г.Донецк, ул. Артема, 148а",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45"
|
||||
},
|
||||
{
|
||||
@ -87,9 +87,9 @@
|
||||
37.7964,
|
||||
48.00381
|
||||
],
|
||||
"name": "ПВЗ Донецк, пр-т. Гурова, 7",
|
||||
"name": "ПВЗ г.Донецк, пр.Гурова, 7",
|
||||
"address": "г.Донецк, пр.Гурова, 7",
|
||||
"link": "https://ozon.ru/point/517061",
|
||||
"address": "г.Донецк, пр-т. Гурова, 7",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45"
|
||||
},
|
||||
{
|
||||
@ -97,9 +97,9 @@
|
||||
37.807934,
|
||||
48.014371
|
||||
],
|
||||
"name": "ПВЗ г.Донецк, ул. Челюскинцев, 167",
|
||||
"name": "ПВЗ г.Донецк, ул.Челюскинцев, 167",
|
||||
"address": "г.Донецк, ул.Челюскинцев, 167",
|
||||
"link": "https://ozon.ru/point/517059",
|
||||
"address": "г.Донецк, ул. Челюскинцев, 167",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45"
|
||||
},
|
||||
{
|
||||
@ -107,9 +107,9 @@
|
||||
37.835405,
|
||||
48.002471
|
||||
],
|
||||
"name": "ПВЗ г.Донецк, пр. Ильича, 32",
|
||||
"name": "ПВЗ г.Донецк, пр.Ильича, 32",
|
||||
"address": "г.Донецк, пр.Ильича, 32",
|
||||
"link": "https://ozon.ru/point/514844",
|
||||
"address": "г.Донецк, пр. Ильича, 32",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45"
|
||||
},
|
||||
{
|
||||
@ -117,9 +117,9 @@
|
||||
38.026077,
|
||||
48.045442
|
||||
],
|
||||
"name": "ПВЗ г.Макеевка, пр. Генерала Данилова, 71б",
|
||||
"name": "ПВЗ г.Макеевка, пр.Генерала Данилова, 71б",
|
||||
"address": "г.Макеевка, пр.Генерала Данилова, 71б",
|
||||
"link": "https://ozon.ru/point/534902",
|
||||
"address": "г.Макеевка, пр. Генерала Данилова, 71б",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45"
|
||||
},
|
||||
{
|
||||
@ -127,9 +127,9 @@
|
||||
37.778362,
|
||||
47.978513
|
||||
],
|
||||
"name": "ПВЗ г.Донецк, ул. Воровского, 9",
|
||||
"name": "ПВЗ г. Донецк, ул.Воровского, 9",
|
||||
"address": "г. Донецк, ул.Воровского, 9",
|
||||
"link": "https://ozon.ru/point/534899",
|
||||
"address": "г.Донецк, ул. Воровского, 9",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45"
|
||||
},
|
||||
{
|
||||
@ -137,9 +137,29 @@
|
||||
38.084391,
|
||||
47.11915
|
||||
],
|
||||
"name": "ПВЗ г.Новоазовск, ул. Ленина, 48",
|
||||
"name": "ПВЗ г.Новоазовск, ул.Ленина, 48",
|
||||
"address": "г.Новоазовск, ул.Ленина, 48",
|
||||
"link": "https://ozon.ru/point/533305",
|
||||
"address": "г.Новоазовск, ул. Ленина, 48",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45"
|
||||
},
|
||||
{
|
||||
"coordinates": [
|
||||
37.795933,
|
||||
48.021495
|
||||
],
|
||||
"name": "ПВЗ г.Донецк, ул.Университетская, 76",
|
||||
"address": "г.Донецк, ул.Университетская, 76",
|
||||
"link": "https://ozon.ru/point/538086",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45"
|
||||
},
|
||||
{
|
||||
"coordinates": [
|
||||
37.958366,
|
||||
48.084373
|
||||
],
|
||||
"name": "ПВЗ г.Макеевка, ул.Рябцева, 1",
|
||||
"address": "г.Макеевка, ул.Рябцева, 1",
|
||||
"link": "https://ozon.ru/point/517062",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45"
|
||||
},
|
||||
{
|
||||
@ -147,9 +167,29 @@
|
||||
37.907342,
|
||||
47.977482
|
||||
],
|
||||
"name": "ПВЗ г.Донецк, ул. Прожекторная, 3",
|
||||
"name": "ПВЗ г.Донецк, ул.Прожекторная, 3",
|
||||
"address": "г.Донецк, ул.Прожекторная, 3",
|
||||
"link": "https://ozon.ru/point/533308",
|
||||
"address": "г.Донецк, ул. Прожекторная, 3",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45"
|
||||
},
|
||||
{
|
||||
"coordinates": [
|
||||
37.864259,
|
||||
48.009494
|
||||
],
|
||||
"name": "ПВЗ г.Донецк, бул.Шевченко, 129",
|
||||
"address": "г.Донецк, бул.Шевченко, 129",
|
||||
"link": "https://ozon.ru/point/538180",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45"
|
||||
},
|
||||
{
|
||||
"coordinates": [
|
||||
37.963765,
|
||||
48.054088
|
||||
],
|
||||
"name": "ПВЗ г.Макеевка, ул.Рябцева, 1",
|
||||
"address": "г.Макеевка, ул.Рябцева, 1",
|
||||
"link": "https://ozon.ru/point/517062",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45"
|
||||
}
|
||||
]
|
||||
|
@ -388,9 +388,9 @@
|
||||
37.845475,
|
||||
47.994778
|
||||
],
|
||||
"name": "ПВЗ г.Донецк, ул. Харитонова, 3",
|
||||
"name": "ПВЗ г.Донецк, ул.Харитонова, 3",
|
||||
"address": "г.Донецк, ул.Харитонова, 3",
|
||||
"link": "https://ozon.ru/point/517058",
|
||||
"address": "г.Донецк, ул. Харитонова, 3",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45",
|
||||
"source": "https://t.me/ozon_wb_dpr/627",
|
||||
"provider": "ПВЗ ДНР"
|
||||
@ -400,9 +400,9 @@
|
||||
37.790642,
|
||||
47.988073
|
||||
],
|
||||
"name": "ПВЗ Донецк, пр-т. Ленинский, 4",
|
||||
"name": "ПВЗ г.Донецк, пр.Ленинский, 4",
|
||||
"address": "г.Донецк, пр.Ленинский, 4",
|
||||
"link": "https://ozon.ru/point/517054",
|
||||
"address": "г.Донецк, пр-т. Ленинский, 4",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45",
|
||||
"source": "https://t.me/ozon_wb_dpr/627",
|
||||
"provider": "ПВЗ ДНР"
|
||||
@ -412,9 +412,9 @@
|
||||
37.694046,
|
||||
47.949874
|
||||
],
|
||||
"name": "ПВЗ: Донецк, ул. Петровского, 111в",
|
||||
"name": "ПВЗ г.Донецк, ул.Петровского, 111в",
|
||||
"address": "г.Донецк, ул.Петровского, 111в",
|
||||
"link": "https://ozon.ru/point/517053",
|
||||
"address": "г.Донецк, ул. Петровского, 111в",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45",
|
||||
"source": "https://t.me/ozon_wb_dpr/627",
|
||||
"provider": "ПВЗ ДНР"
|
||||
@ -424,9 +424,9 @@
|
||||
37.798637,
|
||||
48.009
|
||||
],
|
||||
"name": "ПВЗ г.Донецк, ул. Университетская, 34",
|
||||
"name": "ПВЗ г.Донецк, ул.Университетская, 34",
|
||||
"address": "г.Донецк, ул.Университетская, 34",
|
||||
"link": "https://ozon.ru/point/514822",
|
||||
"address": "г.Донецк, ул. Университетская, 34",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45",
|
||||
"source": "https://t.me/ozon_wb_dpr/627",
|
||||
"provider": "ПВЗ ДНР"
|
||||
@ -436,9 +436,9 @@
|
||||
37.899868,
|
||||
47.991365
|
||||
],
|
||||
"name": "ПВЗ г.Донецк, ул. Полоцкая, 9",
|
||||
"name": "ПВЗ г.Донецк, ул.Полоцкая, 9",
|
||||
"address": "г.Донецк, ул.Полоцкая, 9",
|
||||
"link": "https://ozon.ru/point/517056",
|
||||
"address": "г.Донецк, ул. Полоцкая, 9",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45",
|
||||
"source": "https://t.me/ozon_wb_dpr/627",
|
||||
"provider": "ПВЗ ДНР"
|
||||
@ -448,9 +448,9 @@
|
||||
37.551447,
|
||||
47.106867
|
||||
],
|
||||
"name": "ПВЗ г.Мариуполь, пр. Металлургов, 94",
|
||||
"name": "ПВЗ г.Мариуполь, пр.Металлургов, 94",
|
||||
"address": "г.Мариуполь, пр.Металлургов, 94",
|
||||
"link": "https://ozon.ru/point/516734",
|
||||
"address": "г.Мариуполь, пр. Металлургов, 94",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45",
|
||||
"source": "https://t.me/ozon_wb_dpr/627",
|
||||
"provider": "ПВЗ ДНР"
|
||||
@ -460,9 +460,9 @@
|
||||
37.960468,
|
||||
48.041197
|
||||
],
|
||||
"name": "ПВЗ г. Макеевка, ул.Рябцева, 1",
|
||||
"name": "ПВЗ г.Макеевка, ул.Рябцева, 1",
|
||||
"address": "г.Макеевка, ул.Рябцева, 1",
|
||||
"link": "https://ozon.ru/point/517062",
|
||||
"address": "г.Макеевка, ул. Рябцева, 1",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45",
|
||||
"source": "https://t.me/ozon_wb_dpr/627",
|
||||
"provider": "ПВЗ ДНР"
|
||||
@ -472,9 +472,9 @@
|
||||
37.781488,
|
||||
48.03651
|
||||
],
|
||||
"name": "ПВЗ г.Донецк, ул. Артема, 148а",
|
||||
"name": "ПВЗ г.Донецк, ул.Артема, 148а",
|
||||
"address": "г.Донецк, ул.Артема, 148а",
|
||||
"link": "https://ozon.ru/point/517055",
|
||||
"address": "г.Донецк, ул. Артема, 148а",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45",
|
||||
"source": "https://t.me/ozon_wb_dpr/627",
|
||||
"provider": "ПВЗ ДНР"
|
||||
@ -484,9 +484,9 @@
|
||||
37.7964,
|
||||
48.00381
|
||||
],
|
||||
"name": "ПВЗ Донецк, пр-т. Гурова, 7",
|
||||
"name": "ПВЗ г.Донецк, пр.Гурова, 7",
|
||||
"address": "г.Донецк, пр.Гурова, 7",
|
||||
"link": "https://ozon.ru/point/517061",
|
||||
"address": "г.Донецк, пр-т. Гурова, 7",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45",
|
||||
"source": "https://t.me/ozon_wb_dpr/627",
|
||||
"provider": "ПВЗ ДНР"
|
||||
@ -496,9 +496,9 @@
|
||||
37.807934,
|
||||
48.014371
|
||||
],
|
||||
"name": "ПВЗ г.Донецк, ул. Челюскинцев, 167",
|
||||
"name": "ПВЗ г.Донецк, ул.Челюскинцев, 167",
|
||||
"address": "г.Донецк, ул.Челюскинцев, 167",
|
||||
"link": "https://ozon.ru/point/517059",
|
||||
"address": "г.Донецк, ул. Челюскинцев, 167",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45",
|
||||
"source": "https://t.me/ozon_wb_dpr/627",
|
||||
"provider": "ПВЗ ДНР"
|
||||
@ -508,9 +508,9 @@
|
||||
37.835405,
|
||||
48.002471
|
||||
],
|
||||
"name": "ПВЗ г.Донецк, пр. Ильича, 32",
|
||||
"name": "ПВЗ г.Донецк, пр.Ильича, 32",
|
||||
"address": "г.Донецк, пр.Ильича, 32",
|
||||
"link": "https://ozon.ru/point/514844",
|
||||
"address": "г.Донецк, пр. Ильича, 32",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45",
|
||||
"source": "https://t.me/ozon_wb_dpr/627",
|
||||
"provider": "ПВЗ ДНР"
|
||||
@ -520,9 +520,9 @@
|
||||
38.026077,
|
||||
48.045442
|
||||
],
|
||||
"name": "ПВЗ г.Макеевка, пр. Генерала Данилова, 71б",
|
||||
"name": "ПВЗ г.Макеевка, пр.Генерала Данилова, 71б",
|
||||
"address": "г.Макеевка, пр.Генерала Данилова, 71б",
|
||||
"link": "https://ozon.ru/point/534902",
|
||||
"address": "г.Макеевка, пр. Генерала Данилова, 71б",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45",
|
||||
"source": "https://t.me/ozon_wb_dpr/627",
|
||||
"provider": "ПВЗ ДНР"
|
||||
@ -532,9 +532,9 @@
|
||||
37.778362,
|
||||
47.978513
|
||||
],
|
||||
"name": "ПВЗ г.Донецк, ул. Воровского, 9",
|
||||
"name": "ПВЗ г. Донецк, ул.Воровского, 9",
|
||||
"address": "г. Донецк, ул.Воровского, 9",
|
||||
"link": "https://ozon.ru/point/534899",
|
||||
"address": "г.Донецк, ул. Воровского, 9",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45",
|
||||
"source": "https://t.me/ozon_wb_dpr/627",
|
||||
"provider": "ПВЗ ДНР"
|
||||
@ -544,9 +544,21 @@
|
||||
38.084391,
|
||||
47.11915
|
||||
],
|
||||
"name": "ПВЗ г.Новоазовск, ул. Ленина, 48",
|
||||
"name": "ПВЗ г.Новоазовск, ул.Ленина, 48",
|
||||
"address": "г.Новоазовск, ул.Ленина, 48",
|
||||
"link": "https://ozon.ru/point/533305",
|
||||
"address": "г.Новоазовск, ул. Ленина, 48",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45",
|
||||
"source": "https://t.me/ozon_wb_dpr/627",
|
||||
"provider": "ПВЗ ДНР"
|
||||
},
|
||||
{
|
||||
"coordinates": [
|
||||
37.795933,
|
||||
48.021495
|
||||
],
|
||||
"name": "ПВЗ г.Донецк, ул.Университетская, 76",
|
||||
"address": "г.Донецк, ул.Университетская, 76",
|
||||
"link": "https://ozon.ru/point/538086",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45",
|
||||
"source": "https://t.me/ozon_wb_dpr/627",
|
||||
"provider": "ПВЗ ДНР"
|
||||
@ -556,9 +568,21 @@
|
||||
37.907342,
|
||||
47.977482
|
||||
],
|
||||
"name": "ПВЗ г.Донецк, ул. Прожекторная, 3",
|
||||
"name": "ПВЗ г.Донецк, ул.Прожекторная, 3",
|
||||
"address": "г.Донецк, ул.Прожекторная, 3",
|
||||
"link": "https://ozon.ru/point/533308",
|
||||
"address": "г.Донецк, ул. Прожекторная, 3",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45",
|
||||
"source": "https://t.me/ozon_wb_dpr/627",
|
||||
"provider": "ПВЗ ДНР"
|
||||
},
|
||||
{
|
||||
"coordinates": [
|
||||
37.864259,
|
||||
48.009494
|
||||
],
|
||||
"name": "ПВЗ г.Донецк, бул.Шевченко, 129",
|
||||
"address": "г.Донецк, бул.Шевченко, 129",
|
||||
"link": "https://ozon.ru/point/538180",
|
||||
"operationTime": "пн-вс с 9:00 до 17:45",
|
||||
"source": "https://t.me/ozon_wb_dpr/627",
|
||||
"provider": "ПВЗ ДНР"
|
||||
|
9
package-lock.json
generated
9
package-lock.json
generated
@ -8,6 +8,7 @@
|
||||
"name": "free-ozon-dpr",
|
||||
"version": "0.0.0",
|
||||
"dependencies": {
|
||||
"fastest-levenshtein": "^1.0.16",
|
||||
"jsdom": "^24.1.0",
|
||||
"modern-async": "^2.0.0",
|
||||
"node-fetch": "^3.3.2",
|
||||
@ -918,6 +919,14 @@
|
||||
"@esbuild/win32-x64": "0.20.2"
|
||||
}
|
||||
},
|
||||
"node_modules/fastest-levenshtein": {
|
||||
"version": "1.0.16",
|
||||
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
|
||||
"integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
|
||||
"engines": {
|
||||
"node": ">= 4.9.1"
|
||||
}
|
||||
},
|
||||
"node_modules/fetch-blob": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
|
||||
|
@ -14,6 +14,7 @@
|
||||
"vite-plugin-webfont-dl": "^3.9.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"fastest-levenshtein": "^1.0.16",
|
||||
"jsdom": "^24.1.0",
|
||||
"modern-async": "^2.0.0",
|
||||
"node-fetch": "^3.3.2",
|
||||
|
@ -2,6 +2,7 @@ import fs from "node:fs/promises";
|
||||
import { asyncMap } from "modern-async";
|
||||
import { JSDOM } from "jsdom";
|
||||
import { getFinalURL } from "./utils.js";
|
||||
import ozonWbDpr from "./update/ozon-wb-dpr.js";
|
||||
|
||||
async function woyag() {
|
||||
const apiResponse = await fetch("https://login.woyag.ru/ajax/pvz-list");
|
||||
@ -84,6 +85,7 @@ async function sevenDostavka() {
|
||||
async function main() {
|
||||
await woyag();
|
||||
await sevenDostavka();
|
||||
await ozonWbDpr();
|
||||
}
|
||||
|
||||
main();
|
||||
|
0
scripts/update/index.js
Normal file
0
scripts/update/index.js
Normal file
124
scripts/update/ozon-wb-dpr.js
Normal file
124
scripts/update/ozon-wb-dpr.js
Normal file
@ -0,0 +1,124 @@
|
||||
import { distance } from "fastest-levenshtein";
|
||||
import { getFinalURL, getTelegramMessage } from "../utils.js";
|
||||
import { JSDOM } from "jsdom";
|
||||
import { asyncMap } from "modern-async";
|
||||
import fs from "node:fs/promises";
|
||||
|
||||
const MAIN_URL = "https://t.me/ozon_wb_dpr/627";
|
||||
|
||||
const QR_FOR_PVZ_STRING = "QR для ПВЗ";
|
||||
|
||||
const closestObj = (str, arr, key) => {
|
||||
let min_distance = Infinity;
|
||||
let min_index = 0;
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
const dist = distance(str, arr[i][key]);
|
||||
if (dist < min_distance) {
|
||||
min_distance = dist;
|
||||
min_index = i;
|
||||
}
|
||||
}
|
||||
return arr[min_index];
|
||||
};
|
||||
|
||||
async function getPVZFromPost(post) {
|
||||
const message = await getTelegramMessage(post);
|
||||
const dom = new JSDOM(message.text);
|
||||
const document = dom.window.document;
|
||||
|
||||
const linkElement = document.querySelector(
|
||||
'a[href*="vk.cc"],a[href*="ozon.ru"]'
|
||||
);
|
||||
|
||||
const link = await getFinalURL(linkElement["href"]).then((u) => {
|
||||
const final = new URL(u);
|
||||
final.search = "";
|
||||
return final.toString();
|
||||
});
|
||||
|
||||
return link;
|
||||
}
|
||||
|
||||
async function getFromTelegram() {
|
||||
const message = await getTelegramMessage(MAIN_URL);
|
||||
|
||||
const dom = new JSDOM(message.text);
|
||||
const document = dom.window.document;
|
||||
|
||||
const links = document.querySelectorAll("a");
|
||||
|
||||
return (
|
||||
await asyncMap(links, async (link) => {
|
||||
const textContent = link.textContent;
|
||||
|
||||
if (textContent.startsWith(QR_FOR_PVZ_STRING)) {
|
||||
const address = textContent.replace(QR_FOR_PVZ_STRING, "").trim();
|
||||
|
||||
let postLink = link["href"];
|
||||
// TEMP FIX
|
||||
if (address === "г.Донецк, ул.Университетская, 76") {
|
||||
postLink = "https://t.me/ozon_wb_dpr/774";
|
||||
}
|
||||
|
||||
return {
|
||||
name: `ПВЗ ${address}`,
|
||||
address,
|
||||
link: await getPVZFromPost(postLink),
|
||||
operationTime: "пн-вс с 9:00 до 17:45",
|
||||
};
|
||||
}
|
||||
})
|
||||
).filter(Boolean);
|
||||
}
|
||||
|
||||
async function getFromSite() {
|
||||
const res = await fetch("https://ozon-wb-dpr.ru/");
|
||||
const html = await res.text();
|
||||
|
||||
const dom = new JSDOM(html);
|
||||
const document = dom.window.document;
|
||||
|
||||
const scripts = document.querySelectorAll("script");
|
||||
|
||||
for (let script of scripts) {
|
||||
if (script.textContent.includes('descr: "Бесплатный озон')) {
|
||||
let x = script.textContent.split("[\n{\n").pop().split("\n},\n]")[0];
|
||||
|
||||
if (x) {
|
||||
const points = new Function(`return [{${x}}]`)();
|
||||
return points;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function ozonWbDpr() {
|
||||
const telegramPoints = await getFromTelegram();
|
||||
let points = (await getFromSite()).map((point) => ({
|
||||
coordinates: [parseFloat(point["lng"]), parseFloat(point["lat"])],
|
||||
name: point.title,
|
||||
}));
|
||||
|
||||
points = points.map((point) => {
|
||||
const obj = closestObj(point.name, telegramPoints, "name");
|
||||
return {
|
||||
coordinates: point.coordinates,
|
||||
...obj,
|
||||
};
|
||||
});
|
||||
|
||||
await fs.writeFile(
|
||||
"data/03_ozon-wb-dpr.json",
|
||||
JSON.stringify(
|
||||
{
|
||||
name: "ПВЗ ДНР",
|
||||
source: MAIN_URL,
|
||||
points,
|
||||
},
|
||||
undefined,
|
||||
4
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
export default ozonWbDpr;
|
@ -1,23 +1,65 @@
|
||||
import { JSDOM } from "jsdom";
|
||||
|
||||
async function resolveVKcc(url) {
|
||||
const response = await fetch(url);
|
||||
const text = await response.text();
|
||||
|
||||
const match = new RegExp(/value=["']([^"']+)["']/).exec(text);
|
||||
|
||||
if (match && match.length > 1) {
|
||||
return match[1];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
export async function getFinalURL(url) {
|
||||
let response = await fetch(url, {
|
||||
if (url?.startsWith('https://vk.cc')) {
|
||||
url = await resolveVKcc(url);
|
||||
}
|
||||
|
||||
if (!url) {
|
||||
return;
|
||||
}
|
||||
|
||||
let response = await fetch(url, {
|
||||
method: "HEAD",
|
||||
redirect: "manual",
|
||||
});
|
||||
while (
|
||||
response.status >= 300 &&
|
||||
response.status < 400 &&
|
||||
response.headers.get("location") &&
|
||||
!url.startsWith('https://ozon.ru/point/')
|
||||
) {
|
||||
url = response.headers.get("location");
|
||||
if (!url.startsWith("http")) {
|
||||
const baseUrl = new URL(response.url);
|
||||
url = `${baseUrl.protocol}//${baseUrl.host}${url}`;
|
||||
}
|
||||
response = await fetch(url, {
|
||||
method: "HEAD",
|
||||
redirect: "manual",
|
||||
});
|
||||
while (
|
||||
response.status >= 300 &&
|
||||
response.status < 400 &&
|
||||
response.headers.get("location") &&
|
||||
new URL(url).hostname !== 'ozon.ru'
|
||||
) {
|
||||
url = response.headers.get("location");
|
||||
if (!url.startsWith("http")) {
|
||||
const baseUrl = new URL(response.url);
|
||||
url = `${baseUrl.protocol}//${baseUrl.host}${url}`;
|
||||
}
|
||||
response = await fetch(url, {
|
||||
method: "HEAD",
|
||||
redirect: "manual",
|
||||
});
|
||||
}
|
||||
return url;
|
||||
}
|
||||
}
|
||||
return url;
|
||||
}
|
||||
|
||||
export async function getTelegramMessage(input) {
|
||||
const url = new URL(input);
|
||||
|
||||
url.search = "?embed=1&mode=tme";
|
||||
|
||||
const res = await fetch(url);
|
||||
const htmlText = await res.text();
|
||||
|
||||
const dom = new JSDOM(htmlText);
|
||||
|
||||
const document = dom.window.document;
|
||||
const message = document.querySelector(".tgme_widget_message");
|
||||
|
||||
return {
|
||||
text: message.querySelector("div.tgme_widget_message_text.js-message_text")
|
||||
.innerHTML,
|
||||
};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user