This commit is contained in:
114
docs/json.md
Normal file
114
docs/json.md
Normal file
@@ -0,0 +1,114 @@
|
||||
# Результаты в формате JSON
|
||||
|
||||
Результаты проверки могут быть выведены в формате JSON.
|
||||
Для этого необходимо указать аргумент `-j` перед вызовом программы.
|
||||
|
||||
Структуры описаны файлах:
|
||||
- [Канал](../app/playlist/channel.go)
|
||||
- [Группа](../app/playlist/group.go)
|
||||
- [Плейлист](../app/playlist/playlist.go)
|
||||
|
||||
Ниже описан пример результата проверки плейлиста с четырьмя каналами:
|
||||
1. `01df21bb720e46fa8b3a1c064effa41f` доступен для просмотра, сервер отдаёт m3u с разными потоками;
|
||||
2. `36a32a9741e869d182c21beb38dce0c9` доступен для просмотра, сервер отдаёт сразу один поток с бинарными данными, в ответе они скрыты строкой `"binary"`;
|
||||
3. `2dab47162d78814e2a55b65c292d91e7` не доступен для просмотра, сервер отдаёт ошибку 403 и html страницы-заглушки;
|
||||
4. `d5e815a6cb24221b317afc3eb436b537` не доступен для просмотра, произошла ошибка при проверке.
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"code": "ru",
|
||||
"name": "[iptv-org] Российские",
|
||||
"description": "",
|
||||
"url": "https://raw.githubusercontent.com/iptv-org/iptv/master/streams/ru.m3u",
|
||||
"source": "https://github.com/iptv-org/iptv",
|
||||
"content": "#EXTM3U\n#EXTINF:-1 tvg-id=\"vijuPlusComedy.ru\",viju+ Comedy (1080p)\nhttp://77.235.1.17/vip_comedy/index.m3u8\n#EXTINF:-1 tvg-id=\"NanoHD.ru\",Нано ТВ HD\nhttp://s1.tv-nano.com/Nano_rec/index.m3u8\n#EXTINF:-1 tvg-id=\"\",TRK 555 (720p)\nhttp://trk555.tv:8888/live\n#EXTINF:-1 tvg-id=\"NizhniyNovgorod24.ru\",Нижний Новгород 24 (720p) [Not 24/7]\nhttps://live-vestinn.cdnvideo.ru/vestinn/nn24-khl/playlist.m3u8\n",
|
||||
"isOnline": true,
|
||||
"attributes": null,
|
||||
"groups": {},
|
||||
"channels": {
|
||||
"01df21bb720e46fa8b3a1c064effa41f": {
|
||||
"id": "01df21bb720e46fa8b3a1c064effa41f",
|
||||
"title": "Нано ТВ HD",
|
||||
"url": "http://s1.tv-nano.com/Nano_rec/index.m3u8",
|
||||
"groupId": "",
|
||||
"attributes": {
|
||||
"tvg-id": "NanoHD.ru"
|
||||
},
|
||||
"status": 200,
|
||||
"isOnline": true,
|
||||
"error": "",
|
||||
"content": "#EXTM3U\n#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=670000,BANDWIDTH=840000,RESOLUTION=480x270,FRAME-RATE=25.000,CODECS=\"avc1.4d400d,mp4a.40.2\",CLOSED-CAPTIONS=NONE\ntracks-v3a1/mono.ts.m3u8\n#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1320000,BANDWIDTH=1650000,RESOLUTION=640x360,FRAME-RATE=25.000,CODECS=\"avc1.4d4015,mp4a.40.2\",CLOSED-CAPTIONS=NONE\ntracks-v2a1/mono.ts.m3u8\n#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=2380000,BANDWIDTH=2980000,RESOLUTION=1024x576,FRAME-RATE=25.000,CODECS=\"avc1.4d401e,mp4a.40.2\",CLOSED-CAPTIONS=NONE\ntracks-v1a1/mono.ts.m3u8\n",
|
||||
"contentType": "application/vnd.apple.mpegurl",
|
||||
"tags": [
|
||||
"untagged"
|
||||
],
|
||||
"checkedAt": 1234567890
|
||||
},
|
||||
"36a32a9741e869d182c21beb38dce0c9": {
|
||||
"id": "36a32a9741e869d182c21beb38dce0c9",
|
||||
"title": "TRK 555 (720p)",
|
||||
"url": "http://trk555.tv:8888/live",
|
||||
"groupId": "",
|
||||
"attributes": {
|
||||
"tvg-id": ""
|
||||
},
|
||||
"status": 200,
|
||||
"isOnline": true,
|
||||
"error": "",
|
||||
"content": "\u003cbinary\u003e",
|
||||
"contentType": "application/octet-stream",
|
||||
"tags": [
|
||||
"untagged"
|
||||
],
|
||||
"checkedAt": 1234567890
|
||||
},
|
||||
"2dab47162d78814e2a55b65c292d91e7": {
|
||||
"id": "2dab47162d78814e2a55b65c292d91e7",
|
||||
"title": "Нижний Новгород 24 (720p) [Not 24/7]",
|
||||
"url": "https://live-vestinn.cdnvideo.ru/vestinn/nn24-khl/playlist.m3u8",
|
||||
"groupId": "",
|
||||
"attributes": {
|
||||
"tvg-id": "NizhniyNovgorod24.ru"
|
||||
},
|
||||
"status": 403,
|
||||
"isOnline": false,
|
||||
"error": "\u003chtml\u003e\r\n\u003chead\u003e\u003ctitle\u003e403 Forbidden\u003c/title\u003e\u003c/head\u003e\r\n\u003cbody\u003e\r\n\u003ccenter\u003e\u003ch1\u003e403 Forbidden\u003c/h1\u003e\u003c/center\u003e\r\n\u003chr\u003e\u003ccenter\u003enginx\u003c/center\u003e\r\n\u003c/body\u003e\r\n\u003c/html\u003e\r\n",
|
||||
"content": "",
|
||||
"contentType": "text/html",
|
||||
"tags": [
|
||||
"RU",
|
||||
"local",
|
||||
"news"
|
||||
],
|
||||
"checkedAt": 1234567890
|
||||
},
|
||||
"d5e815a6cb24221b317afc3eb436b537": {
|
||||
"id": "d5e815a6cb24221b317afc3eb436b537",
|
||||
"title": "viju+ Comedy (1080p)",
|
||||
"url": "http://77.235.1.17/vip_comedy/index.m3u8",
|
||||
"groupId": "",
|
||||
"attributes": {
|
||||
"tvg-id": "vijuPlusComedy.ru"
|
||||
},
|
||||
"status": 0,
|
||||
"isOnline": false,
|
||||
"error": "",
|
||||
"content": "",
|
||||
"contentType": "",
|
||||
"tags": [
|
||||
"untagged"
|
||||
],
|
||||
"checkedAt": 1234567890
|
||||
}
|
||||
},
|
||||
"onlineCount": 2,
|
||||
"offlineCount": 2,
|
||||
"checkedAt": 1234567890
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
На этом примере видно, что:
|
||||
- `channels` не массив, а объект, в котором ключи равны идентификаторам каналов `id`;
|
||||
- `attributes` не массив, а объект, в котором ключи есть названия атрибутов.
|
||||
Reference in New Issue
Block a user